************************ * * * Disk Modifier * * Copyright 08/03/84 * * * ************************ ORG $8500 OBJ $8500 TRACK EQU $0001 SECTOR EQU $0002 REWR EQU $0004 TEMP EQU $0005 TEMP1 EQU $0006 POINT EQU $0008 LENGTH EQU $0009 FLAG EQU $000A LOCN EQU $0010 LEFTFRZ EQU $0020 WIDTH EQU $0021 TOPFRZ EQU $0022 CH EQU $0024 SCRNPOS EQU $0028 PROMPT EQU $0033 SBUF EQU $0200 DOS EQU $03D0 RWTS EQU $03D9 DOS1 EQU $03EA AMP EQU $03F5 BUF EQU $8000 BUF1 EQU $8000-5 BUF2 EQU $8100-5 IOB EQU $B7E8 DEVCHAR EQU $B7FB PRINTER EQU $FDED BASCALC EQU $FBC1 HOME EQU $FC58 WAIT EQU $FCA8 GETKEY EQU $FD0C RDKEY EQU $FD1B GETLN EQU $FD6A CROUT EQU $FD8E HEXOUT EQU $FDDA COUT EQU $FDED NIBOUT EQU $FDE3 NORMAL EQU $FE84 INVERSE EQU $FE80 OFF EQU $FE93 TURNON EQU $FE95 LDA #$4C STA AMP LDA #STT STA AMP+2 STT JSR HOME LDX #0 LOOP LDA TITLEASC,X CMP #"@" BEQ END INX JSR COUT JMP LOOP END LDA #$FF JSR WAIT JSR WAIT JSR WAIT JSR WAIT JSR WAIT JSR WAIT JSR WAIT JSR WAIT JSR WAIT JSR WAIT JSR HOME LDX #0 LOOPR1 LDA PRINTAS,X CMP #"@" BEQ ENDR1 INX JSR COUT JMP LOOPR1 ENDR1 JSR GETKEY AND #%00001111 STA PRINT+1 JSR NIBOUT LDX #0 LOOPR LDA PRESS,X CMP #"@" BEQ ENDR INX JSR COUT JMP LOOPR ENDR JSR GETKEY JSR HOME SETUP LDA #"R" STA REWR LDA #$01 STA IOB LDA #$60 STA IOB+1 LDA #$01 STA IOB+2 LDA #$00 STA IOB+3 LDA #$00 STA IOB+4 STA IOB+5 LDA #DEVCHAR STA IOB+7 LDA #BUF STA IOB+9 LDA #$01 STA IOB+12 LDA #$00 STA IOB+13 LDA #0 STA TRACK STA SECTOR WRITEIT LDA #$B7 LDY #$E8 JSR RWTS MNLOOP LDA #0 STA LEFTFRZ STA TOPFRZ LDA #40 STA WIDTH JSR HOME JSR PRLINE LDA #"T" JSR COUT LDA #$A0 JSR COUT LDA TRACK JSR HEXOUT LDA #$A0 JSR COUT JSR COUT JSR COUT LDA #"S" JSR COUT LDA SECTOR JSR HEXOUT LDA #$A0 JSR COUT JSR COUT JSR COUT LDA #"D" JSR COUT LDA #$A0 JSR COUT LDA IOB+2 JSR HEXOUT LDA #$A0 JSR COUT JSR COUT LDA #"M" JSR COUT LDA #"O" JSR COUT LDA #"D" JSR COUT LDA #"E" JSR COUT LDA #$A0 JSR COUT LDA REWR JSR COUT LDA #$8D JSR COUT JSR PRLINE JSR CROUT LDA #$A0 JSR COUT JSR COUT JSR COUT JSR COUT JSR COUT JSR COUT JSR COUT JSR COUT LDX #0 LOOP4 STX TEMP TXA JSR HEXOUT JSR INVERSE LDX TEMP INX STX TEMP TXA JSR HEXOUT JSR NORMAL LDX TEMP INX CPX #$10 BNE LOOP4 JSR PRLINE LDA #6 JSR BASCALC LDA #$00 JSR HEXOUT JSR CROUT1 LDA #$01 JSR HEXOUT JSR CROUT1 LDA #$02 JSR HEXOUT JSR CROUT1 LDA #$03 JSR HEXOUT JSR CROUT1 LDA #$04 JSR HEXOUT JSR CROUT1 LDA #$05 JSR HEXOUT JSR CROUT1 LDA #$06 JSR HEXOUT JSR CROUT1 LDA #$07 JSR HEXOUT JSR CROUT1 LDA #$08 JSR HEXOUT JSR CROUT1 LDA #$09 JSR HEXOUT JSR CROUT1 LDA #$0A JSR HEXOUT JSR CROUT1 LDA #$0B JSR HEXOUT JSR CROUT1 LDA #$0C JSR HEXOUT JSR CROUT1 LDA #$0D JSR HEXOUT JSR CROUT1 LDA #$0E JSR HEXOUT JSR CROUT1 LDA #$0F JSR HEXOUT JSR CROUT1 LDA #$8 STA LEFTFRZ LDA #6 STA TOPFRZ LDA #$20 STA WIDTH JSR HOME LDA POINT CMP #"C" BEQ NEW LDX #0 LOOP1 LDA BUF,X PHA STX TEMP PLA JSR HEXOUT JSR INVERSE INC TEMP LDX TEMP LDA BUF,X JSR HEXOUT JSR NORMAL INC TEMP LDX TEMP BNE LOOP1 LDA BUF2 JSR HEXOUT JSR INVERSE LDA BUF2+1 JSR HEXOUT JSR NORMAL LDA BUF2+2 JSR HEXOUT JSR INVERSE LDA BUF2+3 JSR HEXOUT JSR NORMAL LDA BUF2+4 JSR HEXOUT JMP END7 CHG0D LDA #$0D JMP CONTIT3 CHG09 LDA #$09 JMP CONTIT3 CHG0D1 LDA #$0D JMP CONTIT4 CHG091 LDA #$09 JMP CONTIT4 NEW LDX #0 LOOP6 LDA BUF,X CMP #$8D BEQ CHG0D CMP #$89 BEQ CHG09 CONTIT3 JSR COUT LDA #$A0 JSR COUT INX LDA BUF,X CMP #$8D BEQ CHG0D1 CMP #$89 BEQ CHG091 CONTIT4 JSR COUT LDA #$A0 JSR COUT INX BNE LOOP6 LDA BUF2 JSR COUT LDA #$A0 JSR COUT LDA BUF2+1 JSR COUT LDA #$A0 JSR COUT LDA BUF2+2 JSR COUT LDA #$A0 JSR COUT LDA BUF2+3 JSR COUT JMP END7 PRINT LDA #1 JSR TURNON JSR CROUT LDA #" " JSR COUT LDA #"S" JSR COUT JSR OFF JMP MNLOOP END7 LDA #3 JSR BASCALC LDA #0 STA CH JSR RDKEY CMP #"P" BEQ PRINT CMP #"" BEQ EDIT CMP #"D" BEQ DRTOGG CMP #"R" BEQ RWTOGG CMP #"Q" BEQ QUIT CMP #"A" BEQ DOASCIT CMP #"E" BEQ EOR CMP #"" BEQ WRTI CMP #"" BEQ UP CMP #"" BEQ DOWN CMP #" " BEQ UPTRACK CMP #" " BEQ DOWNTRK CMP #"S" BEQ SEARCH CMP #"" BEQ CDOS CMP #"V" BEQ DOVTOC JMP MNLOOP UPTRACK JMP UPTRK DOWNTRK JMP DOWNTRK1 QUIT JSR HOME JMP DOS SEARCH JMP SEARCH1 DOASCIT JMP DOASC1 CDOS JMP COPYDOS DOVTOC JMP DOVTOC1 EOR JMP EOR1 RWTOGG LDA REWR CMP #"R" BEQ MKWR LDA #1 STA IOB+12 LDA #"R" STA REWR JMP MNLOOP WRTI JMP WRITEIT MKWR LDA #2 STA IOB+12 LDA #"W" STA REWR JMP MNLOOP EDIT JMP EDIT1 DRTOGG LDA IOB+2 CMP #2 BEQ MK1 LDA #2 STA IOB+2 JMP MNLOOP UP JSR CHECK LDX IOB+5 INX TXA AND #%00001111 STA IOB+5 STA SECTOR JMP WRITEIT DOWN JSR CHECK LDX IOB+5 DEX TXA AND #%00001111 STA IOB+5 STA SECTOR JMP WRITEIT OTHER LDA #"D" STA POINT JMP MNLOOP MAKE0 LDA #0 STA TRACK STA IOB+4 JMP WRITEIT MK1 LDA #1 STA IOB+2 JMP MNLOOP UPTRK JSR CHECK LDX TRACK INX CPX #$23 BEQ MAKE0 INC IOB+4 STX TRACK JMP WRITEIT DOASC1 LDA POINT CMP #"C" BEQ OTHER LDA #"C" STA POINT JMP MNLOOP DOWNTRK1 JSR CHECK LDX TRACK DEX CPX #$FF BEQ MAKE22 STX TRACK STX IOB+4 JMP WRITEIT MAKE22 LDA #$22 STA TRACK STA IOB+4 JMP WRITEIT LETT CLC ADC #$09 JMP RTNN LETT1 CLC ADC #$09 JMP RTNN1 GOBACK JMP MNLOOP EDIT1 LDA #3 JSR BASCALC LDA #0 STA CH LDA #"B" JSR COUT LDA #"Y" JSR COUT LDA #"T" JSR COUT LDA #"E" JSR COUT LDA #":" JSR COUT JSR GETKEY CMP #"" BEQ GOBACK CMP #$C0 BGE LETT RTNN AND #%00001111 PHA JSR NIBOUT PLA ASL ASL ASL ASL STA TEMP JSR GETKEY CMP #$C0 BGE LETT1 RTNN1 AND #%00001111 PHA JSR NIBOUT PLA CLC ADC TEMP STA TEMP ;TEMP is location to edit CON LDA #3 JSR BASCALC LDA #10 STA CH LDA TEMP JSR HEXOUT LDA #"(" JSR COUT LDX TEMP LDA BUF,X JSR HEXOUT LDA #$A0 JSR COUT LDA BUF,X JSR COUT LDA #")" JSR COUT LDA POINT CMP #"C" BEQ NEWENT JSR GETKEY CMP #"" BEQ GOBACK1 CMP #$C0 BGE LETT2 RTNN2 AND #%00001111 PHA JSR NIBOUT PLA ASL ASL ASL ASL TAX STX TEMP1 JSR GETKEY CMP #$C0 BGE LETT3 RTNN3 AND #%00001111 CLC ADC TEMP1 LDX TEMP STA BUF,X INC TEMP JMP CON GOBACK1 JMP MNLOOP NEWENT JSR GETKEY CMP #"" BEQ GOBACK1 LDX TEMP STA BUF,X INC TEMP JMP CON LETT2 CLC ADC #$09 JMP RTNN2 LETT3 CLC ADC #$09 JMP RTNN3 CHECK LDA REWR CMP #"W" BEQ OHOO RTS OHOO LDA #"R" STA REWR LDA #$01 STA IOB+12 RTS SEARCH1 LDA #0 STA TRACK STA SECTOR STA IOB+4 STA IOB+5 STA FLAG JSR HOME LDX #0 SLOOP6 LDA PRINTQ,X CMP #"@" BEQ SEND2 INX JSR COUT JMP SLOOP6 SEND2 JSR GETKEY CMP #"Y" BNE SCONT LDA #1 JSR TURNON JSR CROUT LDA #$FF JSR WAIT LDA #"O" STA FLAG SCONT LDX #0 JSR CROUT SLOOP LDA SASC,X CMP #"@" BEQ SEND INX JSR COUT JMP SLOOP SEND LDA #$A0 STA PROMPT JSR GETLN STX LENGTH SLOOP1 LDA #$B7 LDY #$E8 JSR RWTS LDA FLAG CMP #"O" BNE SCONT1 LDA #1 JSR TURNON LDA #$FF JSR WAIT SCONT1 LDX #0 SLOOP2 LDA BUF,X CMP SBUF BEQ MAYBE INX BNE SLOOP2 DOSEC LDX SECTOR INX CPX #$10 BEQ INTRK STX SECTOR STX IOB+5 JMP SLOOP1 INTRK LDX TRACK INX CPX #$23 BEQ SOVER INC TRACK INC IOB+4 LDX #0 STX SECTOR STX IOB+5 JMP SLOOP1 MAYBE LDY #1 INX BEQ DOSEC SLOOP3 LDA BUF,X CMP SBUF,Y BNE SLOOP2 INY INX CPX #0 BEQ DOSEC CPY LENGTH BNE SLOOP3 STX TEMP STY TEMP1 LDA #"T" JSR COUT LDA TRACK JSR HEXOUT LDA #"," JSR COUT LDA #"S" JSR COUT LDA SECTOR JSR HEXOUT LDA #$A0 JSR COUT LDA #"B" JSR COUT LDA #"Y" JSR COUT LDA #"T" JSR COUT LDA #":" JSR COUT LDA TEMP SEC SBC LENGTH JSR HEXOUT JSR CROUT LDX LENGTH SLOOP4 INC TEMP BNE DOSEC1 DEX BNE SLOOP4 LDX TEMP LDY TEMP1 CPX #0 BEQ DOSEC1 JMP SLOOP2 DOSEC1 JMP DOSEC SOVER LDA #0 STA TRACK STA SECTOR STA IOB+4 STA IOB+5 LDA #"R" STA REWR LDA #$01 STA IOB+12 JSR OFF LDX #0 SLOOP5 LDA PRESS1,X CMP #"@" BEQ SEND1 INX JSR COUT JMP SLOOP5 SEND1 JSR GETKEY JMP WRITEIT COPYDOS LDA #2 STA TRACK STA IOB+4 LDA #$0F STA SECTOR STA IOB+5 DLOOP LDA #$B7 LDY #$E8 LDX #1 STX IOB+2 STX IOB+12 JSR RWTS LDA #2 STA IOB+2 STA IOB+12 LDA #$B7 LDY #$E8 JSR RWTS LDX SECTOR DEX STX SECTOR STX IOB+5 BNE DLOOP LDX TRACK DEX STX IOB+4 STX TRACK BNE DLOOP LDA #1 STA IOB+2 STA IOB+12 JMP MNLOOP DOVTOC1 LDX #$FF VLOOP LDA VTOC,X STA BUF,X DEX BNE VLOOP JSR HOME LDX #0 VLOOP1 LDA VASC,X CMP #"@" BEQ GETKY INX JSR COUT JMP VLOOP1 GETKY JSR GETKEY LDA #2 STA IOB+12 LDA #$11 STA IOB+4 LDA #0 STA IOB+5 LDA #$B7 LDY #$E8 JSR RWTS JMP SETUP CROUT1 LDA #$A0 JSR COUT JSR COUT JSR COUT JSR COUT JSR COUT JSR CROUT RTS EOR1 LDX #$FF ELOOP LDA BUF,X EOR #$FF STA BUF,X DEX CPX #$FF BNE ELOOP JMP MNLOOP TITLEASC HEX 8D8D8D8D8D8D ASC " " INV "DISK MODIFIER" HEX 8D8D8D ASC " By Matt Pharr@" PRESS HEX 8D8D8D INV "INSERT DISK AND PRESS ANY KEY" ASC " @" PRINTAS HEX 8D8D8D8D8D8D8D ASC "Enter printer slot :@" SASC ASC "Enter string to search for.@" PRESS1 ASC "Press a key to continue:@" PRINTQ ASC "Do you want to print out the track/" HEX 8D ASC "sector numbers on a printer ?@" VASC ASC "Insert disk to copy VTOC to and hit any key:@" PRLINE LDY #40 LOOP3 LDA #"-" JSR COUT DEY BNE LOOP3 RTS VTOC HEX 04110F030000FE HEX 00000000000000000000000000 HEX 000000000000000000000000000000000000007A HEX 0000000000000000120100002310000100000000 HEX 0000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 HEX 000000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 HEX 0000000000000000000000000000000000000000 CHK LST OFF