buffer EQU &600 oldst EQU &54 ; 2 oldlen EQU &56 ; 1 newst EQU &57 ; 2 oldpos EQU &59 ; 1 newpos EQU &5A ; 1 pspce EQU &5B ; 1 pnwlln EQU &5C ; 1 pstflg EQU &5D ; 1 code EQU &5E ; 1 pvar EQU &60 ; 1 newlen EQU &61 ; 1 passm EQU &62 ; 1 olposo EQU &63 ; 1 pack LDA &18 STA oldst+1 STA newst+1 LDA #0 STA oldst STA newst STA code LDY #3 LDA (newst),Y STA oldlen LDA #4 STA oldpos LDA #0 STA olposo LDA #&FF STA passm packm1 LDA #4 STA newpos LDY #0 packl1 LDA (oldst),Y STA buffer,Y INY CPY #3 BNE packl1 LDA buffer+1 STA &2B LDA buffer+2 STA &2A JSR plnum0 LDA #13 JSR &FFEE JSR pgtnxt LDA #0 STA pspce STA pnwlln STA pvar LDA #&FF STA pstflg packm2 LDA pvar AND passm STA pvar LDA code CMP #32 BNE ntrds JSR prdspc ntrds LDA code CMP #'!' BCC clvar CMP #&3A BCC stvar CMP #'A' BCC clvar CMP #'Z'+1 BCC stvar CMP #'_' BCC clvar CMP #'z'+1 BCS clvar stvar LDA #&FF BNE varov clvar LDA #0 varov STA pvar LDA code AND pstflg CMP #'[' BNE ntass LDA #0 STA passm ntass LDA code AND pstflg CMP #']' BNE ntase LDA #&FF STA passm ntase LDA passm BNE ntasmr LDA code CMP #'\' BNE ntasmo JSR fndcol LDA #0 STA pstflg BEQ ntasmr ntasmo CMP #'.' BNE ntasmr JSR rdtosp LDA #0 STA pstflg ntasmr LDA code AND pstflg CMP #':' BNE ntrdcl JMP rdcoln ntrdcl LDA code CMP #&DE ;DIM BNE ntdim LDA #&FF STA pspce ntdim LDA code AND pstflg CMP #'*' BNE pntos LDA #0 STA pstflg JMP rdtend pntos LDA code CMP #&F4 ;REM BEQ pstnew CMP #13 BNE pntnew pstnew LDA #&FF STA pnwlln JMP pcont pntnew CMP #&DC ;DATA BNE pntdat LDA #&FF STA pnwlln JMP rdtend pntdat CMP #&22 ;QUOTE BNE pntq JMP rdquot pntq CMP #&26 BNE pnthex JMP rdhex pnthex CMP #&8C ;THEN BEQ psetst CMP #&8B ;ELSE BEQ psetst CMP #':' BEQ psetst LDA #0 BEQ pstov psetst LDA #&FF pstov STA pstflg JSR ptranc JSR pgtnxt pcont LDA pnwlln BNE pem2 LDA olposo BNE pem2 LDA oldpos CMP oldlen BEQ ntpem2 BCS pem2 ntpem2 JMP packm2 pem2 LDY newpos DEY LDA buffer,Y CMP #':' BNE olntc DEC newpos olntc LDA newpos INC newpos STA newlen LDY #0 packl2 LDA buffer,Y STA (newst),Y INY CPY newpos BNE packl2 LDY #3 LDA newlen STA (newst),Y CLC ADC newst STA newst BCC packov INC newst+1 packov JSR pstpoi LDY #0 LDA #13 STA (newst),Y LDY #1 LDA (oldst),Y CMP #&FF BEQ pem1 JMP packm1 pem1 STA (newst),Y JSR &FFE7 JMP settop prdspc LDA pspce BNE erdspc rdspcl LDA code CMP #32 BNE erdspl JSR pgtnxt JMP rdspcl erdspl LDA pvar BEQ erdspc LDA code CMP #128 BCS erdspc CMP #'!' BCC erdspc CMP #&3A BCC pinspc CMP #'A' BCC erdspc CMP #'Z'+1 BCC pinspc CMP #'_' BCC erdspc CMP #'z'+1 BCS erdspc pinspc LDA code PHA LDA #32 STA code JSR ptranc PLA STA code LDA #0 STA pvar erdspc RTS rdtend LDY oldpos JSR ptranc JSR pgtnxt LDA olposo BNE erdtnd INY CPY oldlen BEQ rdtend BCC rdtend erdtnd JMP pcont rdquot JSR ptranc JSR pgtnxt LDA code CMP #'"' BEQ erdq CMP #13 BNE rdquot LDA #&FF STA pnwlln JMP erdquo erdq JSR ptranc JSR pgtnxt erdquo JMP pcont rdhex JSR ptranc JSR pgtnxt LDA code CMP #'0' BCC erdhex CMP #'9'+1 BCC rdhex CMP #'A' BCC erdhex CMP #'G' BCC rdhex erdhex JMP pcont pgtnxt TYA PHA LDY oldpos LDA (oldst),Y STA code PLA TAY INC oldpos BNE pgtno INC olposo pgtno RTS ptranc TYA PHA LDA code LDY newpos STA buffer,Y INC newpos PLA TAY RTS rdcoln LDA code AND pstflg CMP #':' BNE rdntc JSR pgtnxt JMP rdcoln rdntc JMP pcont pstpoi LDA #4 STA oldpos LDA #0 STA olposo LDA oldlen CLC ADC oldst STA oldst BCC pstpo INC oldst+1 pstpo LDY #3 LDA (oldst),Y STA oldlen RTS fndcol JSR pgtnxt LDA code CMP #13 BEQ efndcl CMP #':' BNE fndcol efndcl RTS rdtosp JSR ptranc JSR pgtnxt LDA code CMP #13 BEQ efndcl CMP #':' BEQ efndcl CMP #' ' BEQ efndcl BNE rdtosp ASC "Thanks to Peter Chapman"