diff --git a/bin/d15_utilities.dsk b/bin/d15_utilities.dsk new file mode 100644 index 0000000..fded5e9 Binary files /dev/null and b/bin/d15_utilities.dsk differ diff --git a/bin/d10_minidisk_A.dsk b/bin/d16_integrated_demo_disk_A.dsk similarity index 56% rename from bin/d10_minidisk_A.dsk rename to bin/d16_integrated_demo_disk_A.dsk index 7d7176c..5953607 100644 Binary files a/bin/d10_minidisk_A.dsk and b/bin/d16_integrated_demo_disk_A.dsk differ diff --git a/bin/d1_stdio.dsk b/bin/d1_stdio.dsk index 79c9454..9c129ad 100644 Binary files a/bin/d1_stdio.dsk and b/bin/d1_stdio.dsk differ diff --git a/bin/d20_minidisk_A.dsk b/bin/d20_minidisk_A.dsk new file mode 100644 index 0000000..0fe2eb5 Binary files /dev/null and b/bin/d20_minidisk_A.dsk differ diff --git a/bin/d2_common.dsk b/bin/d2_common.dsk index 27663ac..b4c9e03 100644 Binary files a/bin/d2_common.dsk and b/bin/d2_common.dsk differ diff --git a/bin/d3_arrays.dsk b/bin/d3_arrays.dsk index 065fbee..3d80e0b 100644 Binary files a/bin/d3_arrays.dsk and b/bin/d3_arrays.dsk differ diff --git a/bin/d4_math.dsk b/bin/d4_math.dsk index 5ffe563..17015f5 100644 Binary files a/bin/d4_math.dsk and b/bin/d4_math.dsk differ diff --git a/bin/d5_strings.dsk b/bin/d5_strings.dsk index e3000e1..fd3418b 100644 Binary files a/bin/d5_strings.dsk and b/bin/d5_strings.dsk differ diff --git a/bin/d6_fileio.dsk b/bin/d6_fileio.dsk index 4f08b83..6f84867 100644 Binary files a/bin/d6_fileio.dsk and b/bin/d6_fileio.dsk differ diff --git a/disks/disk5_strings/T.REQUIRED.LIB.MIN b/disks/disk5_strings/T.REQUIRED.LIB.MIN deleted file mode 100644 index 1267342..0000000 --- a/disks/disk5_strings/T.REQUIRED.LIB.MIN +++ /dev/null @@ -1,358 +0,0 @@ -__GETRET - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA RETURN,Y - STA (ADDR1),Y - CPY RETLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__SETPARM - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA (ADDR1),Y - STA PARAM,Y - CPY PARLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__DUMP - PLA - STA :RET - PLA - STA :RET+1 - PLA - STA :LENGTH - PLA - STA ADDR3 - PLA - STA ADDR3+1 - LDA #$8D - JSR $FDF0 - LDA ADDR3+1 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3+1 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA #186 ; : - JSR $FDF0 - LDA #160 ; SPC - JSR $FDF0 - LDY #0 -:LP - LDA (ADDR3),Y - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA (ADDR3),Y - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - LDA #160 - JSR $FDF0 - INY - CPY :LENGTH - BNE :LP - LDA :RET+1 - PHA - LDA :RET - PHA - RTS -:RET DS 2 -:RIGHT DS 1 -:LEFT DS 1 -:LENGTH DS 1 -__P - PLA - STA ADDR1 - PLA - STA ADDR1+1 - LDY #1 -:LP LDA (ADDR1),Y - BEQ :DONE - JSR $FDF0 - INY - BNE :LP -:DONE CLC - TYA - ADC ADDR1 - STA ADDR1 - LDA ADDR1+1 - ADC #0 - PHA - LDA ADDR1 - PHA - RTS -__W - JSR $FD0C - RTS -__RSAV - STA ERRA - STX ERRX - STY ERRY -:C BCC :C0 - BCS :C1 -:Z BEQ :Z1 - BNE :Z0 -:N BMI :N1 - BPL :N0 -:O BVC :O0 - BVS :O1 - JMP :EXIT -:C0 LDA #0 - STA ERRCARRY - JMP :Z -:C1 LDA #1 - STA ERRCARRY - JMP :Z -:Z1 LDA #1 - STA ERRZERO - JMP :N -:Z0 LDA #0 - STA ERRZERO - JMP :N -:N1 LDA #1 - STA ERRNEG - JMP :O -:N0 LDA #0 - STA ERRNEG - JMP :O -:O0 LDA #0 - STA ERROVF - JMP :EXIT -:O1 LDA #1 - STA ERROVF -:EXIT - RTS -__RDMP - _PRNT " ",8D8D - _PRNT "REGISTRY DUMP",8D - _PRNT "=============",8D - _PRNT "A: " - LDA ERRA - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRA - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "X: " - LDA ERRX - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRX - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "Y: " - LDA ERRY - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRY - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D8D - _PRNT "STATUS FLAGS",8D - _PRNT "============",8D8D - LDA #0 - CMP ERRCARRY - BEQ :CARCLR - _PRNT "CARRY: SET",8D - JMP :TESTN -:CARCLR _PRNT "CARRY: CLEAR",8D -:TESTN LDA #0 - CMP ERRNEG - BEQ :NEGCLR - _PRNT "NEGATIVE: SET",8D - JMP :TESTZ -:NEGCLR _PRNT "NEGATIVE: CLEAR",8D -:TESTZ LDA #0 - CMP ERRZERO - BEQ :ZCLR - _PRNT "ZERO: SET",8D - JMP :TESTO -:ZCLR _PRNT "ZERO: CLEAR",8D -:TESTO - LDA #0 - CMP ERROVF - BEQ :OCLR - _PRNT "OVERFLOW: SET",8D - JMP :FIN -:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D -:FIN - RTS -:LEFT DS 1 -:RIGHT DS 1 -HEXTAB ASC "0123456789ABCDEF" -__ERR - JSR __RSAV - PLA - STA RETADR - PLA - STA RETADR+1 - PLA - STA :DUMPLEN ; LENGTH OF DUMP - PLA - STA :DUMP ; DUMP ADDRESS LO - PLA - STA :DUMP+1 ; DUMP HI - PLA - STA :DMPMSG - PLA - STA :DMPMSG+1 - PLA - STA :MESG ; ERROR MESSAGE ADDR LO - PLA - STA :MESG+1 ; HI - PLA - STA :SRID ; SUBROUTINE ID ADDR LO - PLA - STA :SRID+1 ; SUB ID HI - _PRNT " ",87878787878D8D - _PRNT "ERROR!",8D8D - _PRNT "SUBROUTINE: " - LDY #0 - LDA :SRID - STA ADDR1 - LDA :SRID+1 - STA ADDR1+1 -:LP1 - LDA (ADDR1),Y - BEQ :LPX1 - JSR $FDF0 - INY - BNE :LP1 -:LPX1 - _PRNT " ",8D - _PRNT "MESSAGE: " - LDY #0 - LDA :MESG - STA ADDR1 - LDA :MESG+1 - STA ADDR1+1 -:LP2 - LDA (ADDR1),Y - BEQ :LPX2 - JSR $FDF0 - INY - BNE :LP2 -:LPX2 - _PRNT " ",8D8D - _WAIT - LDY #0 - LDA :DMPMSG - STA ADDR1 - LDA :DMPMSG+1 - STA ADDR1+1 -:LP3 - LDA (ADDR1),Y - BEQ :LPX3 - JSR $FDF0 - INY - BNE :LP3 -:LPX3 - _PRNT " ",8D - LDA :DUMP+1 - PHA - LDA :DUMP - PHA - LDA :DUMPLEN - PHA - JSR __DUMP - _WAIT - LDA RETADR+1 - PHA - LDA RETADR - PHA - _PRNT " ",8D8D - _WAIT - _RDUMP - _WAIT - LDA ERRSTOP - CMP #1 - BEQ :KILL - RTS -:KILL - JMP $3D0 -:DUMPLEN DS 1 -:DUMP DS 2 -:DMPMSG DS 2 -:MESG DS 2 -:SRID DS 2 diff --git a/disks/disk6_fileio/T.REQUIRED.LIB.MIN b/disks/disk6_fileio/T.REQUIRED.LIB.MIN deleted file mode 100644 index 1267342..0000000 --- a/disks/disk6_fileio/T.REQUIRED.LIB.MIN +++ /dev/null @@ -1,358 +0,0 @@ -__GETRET - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA RETURN,Y - STA (ADDR1),Y - CPY RETLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__SETPARM - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA (ADDR1),Y - STA PARAM,Y - CPY PARLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__DUMP - PLA - STA :RET - PLA - STA :RET+1 - PLA - STA :LENGTH - PLA - STA ADDR3 - PLA - STA ADDR3+1 - LDA #$8D - JSR $FDF0 - LDA ADDR3+1 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3+1 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA #186 ; : - JSR $FDF0 - LDA #160 ; SPC - JSR $FDF0 - LDY #0 -:LP - LDA (ADDR3),Y - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA (ADDR3),Y - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - LDA #160 - JSR $FDF0 - INY - CPY :LENGTH - BNE :LP - LDA :RET+1 - PHA - LDA :RET - PHA - RTS -:RET DS 2 -:RIGHT DS 1 -:LEFT DS 1 -:LENGTH DS 1 -__P - PLA - STA ADDR1 - PLA - STA ADDR1+1 - LDY #1 -:LP LDA (ADDR1),Y - BEQ :DONE - JSR $FDF0 - INY - BNE :LP -:DONE CLC - TYA - ADC ADDR1 - STA ADDR1 - LDA ADDR1+1 - ADC #0 - PHA - LDA ADDR1 - PHA - RTS -__W - JSR $FD0C - RTS -__RSAV - STA ERRA - STX ERRX - STY ERRY -:C BCC :C0 - BCS :C1 -:Z BEQ :Z1 - BNE :Z0 -:N BMI :N1 - BPL :N0 -:O BVC :O0 - BVS :O1 - JMP :EXIT -:C0 LDA #0 - STA ERRCARRY - JMP :Z -:C1 LDA #1 - STA ERRCARRY - JMP :Z -:Z1 LDA #1 - STA ERRZERO - JMP :N -:Z0 LDA #0 - STA ERRZERO - JMP :N -:N1 LDA #1 - STA ERRNEG - JMP :O -:N0 LDA #0 - STA ERRNEG - JMP :O -:O0 LDA #0 - STA ERROVF - JMP :EXIT -:O1 LDA #1 - STA ERROVF -:EXIT - RTS -__RDMP - _PRNT " ",8D8D - _PRNT "REGISTRY DUMP",8D - _PRNT "=============",8D - _PRNT "A: " - LDA ERRA - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRA - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "X: " - LDA ERRX - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRX - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "Y: " - LDA ERRY - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRY - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D8D - _PRNT "STATUS FLAGS",8D - _PRNT "============",8D8D - LDA #0 - CMP ERRCARRY - BEQ :CARCLR - _PRNT "CARRY: SET",8D - JMP :TESTN -:CARCLR _PRNT "CARRY: CLEAR",8D -:TESTN LDA #0 - CMP ERRNEG - BEQ :NEGCLR - _PRNT "NEGATIVE: SET",8D - JMP :TESTZ -:NEGCLR _PRNT "NEGATIVE: CLEAR",8D -:TESTZ LDA #0 - CMP ERRZERO - BEQ :ZCLR - _PRNT "ZERO: SET",8D - JMP :TESTO -:ZCLR _PRNT "ZERO: CLEAR",8D -:TESTO - LDA #0 - CMP ERROVF - BEQ :OCLR - _PRNT "OVERFLOW: SET",8D - JMP :FIN -:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D -:FIN - RTS -:LEFT DS 1 -:RIGHT DS 1 -HEXTAB ASC "0123456789ABCDEF" -__ERR - JSR __RSAV - PLA - STA RETADR - PLA - STA RETADR+1 - PLA - STA :DUMPLEN ; LENGTH OF DUMP - PLA - STA :DUMP ; DUMP ADDRESS LO - PLA - STA :DUMP+1 ; DUMP HI - PLA - STA :DMPMSG - PLA - STA :DMPMSG+1 - PLA - STA :MESG ; ERROR MESSAGE ADDR LO - PLA - STA :MESG+1 ; HI - PLA - STA :SRID ; SUBROUTINE ID ADDR LO - PLA - STA :SRID+1 ; SUB ID HI - _PRNT " ",87878787878D8D - _PRNT "ERROR!",8D8D - _PRNT "SUBROUTINE: " - LDY #0 - LDA :SRID - STA ADDR1 - LDA :SRID+1 - STA ADDR1+1 -:LP1 - LDA (ADDR1),Y - BEQ :LPX1 - JSR $FDF0 - INY - BNE :LP1 -:LPX1 - _PRNT " ",8D - _PRNT "MESSAGE: " - LDY #0 - LDA :MESG - STA ADDR1 - LDA :MESG+1 - STA ADDR1+1 -:LP2 - LDA (ADDR1),Y - BEQ :LPX2 - JSR $FDF0 - INY - BNE :LP2 -:LPX2 - _PRNT " ",8D8D - _WAIT - LDY #0 - LDA :DMPMSG - STA ADDR1 - LDA :DMPMSG+1 - STA ADDR1+1 -:LP3 - LDA (ADDR1),Y - BEQ :LPX3 - JSR $FDF0 - INY - BNE :LP3 -:LPX3 - _PRNT " ",8D - LDA :DUMP+1 - PHA - LDA :DUMP - PHA - LDA :DUMPLEN - PHA - JSR __DUMP - _WAIT - LDA RETADR+1 - PHA - LDA RETADR - PHA - _PRNT " ",8D8D - _WAIT - _RDUMP - _WAIT - LDA ERRSTOP - CMP #1 - BEQ :KILL - RTS -:KILL - JMP $3D0 -:DUMPLEN DS 1 -:DUMP DS 2 -:DMPMSG DS 2 -:MESG DS 2 -:SRID DS 2 diff --git a/disks/disk6_fileio/MAKEEXEC b/source/disk15_utilities/MAKEEXEC similarity index 100% rename from disks/disk6_fileio/MAKEEXEC rename to source/disk15_utilities/MAKEEXEC diff --git a/disks/disk1_stdio/MINIFY b/source/disk15_utilities/MINIFY similarity index 100% rename from disks/disk1_stdio/MINIFY rename to source/disk15_utilities/MINIFY diff --git a/source/disk16_integrated_demos/MAKEMAZE b/source/disk16_integrated_demos/MAKEMAZE new file mode 100644 index 0000000..d81d91a --- /dev/null +++ b/source/disk16_integrated_demos/MAKEMAZE @@ -0,0 +1,2848 @@ +6000- 4C 4A 62 JMP $624A +6003- 00 BRK +6004- 00 BRK +6005- 00 BRK +6006- 00 BRK +6007- 00 BRK +6008- 00 BRK +6009- 00 BRK +600A- 00 BRK +600B- 00 BRK +600C- 00 BRK +600D- 00 BRK +600E- 00 BRK +600F- 00 BRK +6010- 00 BRK +6011- 00 BRK +6012- 00 BRK +6013- 00 BRK +6014- 00 BRK +6015- 00 BRK +6016- 00 BRK +6017- 00 BRK +6018- 00 BRK +6019- 00 BRK +601A- 00 BRK +601B- 00 BRK +601C- 00 BRK +601D- 00 BRK +601E- 00 BRK +601F- 00 BRK +6020- 00 BRK +6021- 00 BRK +6022- 00 BRK +6023- 00 BRK +6024- 00 BRK +6025- 00 BRK +6026- 00 BRK +6027- 00 BRK +6028- 00 BRK +6029- 00 BRK +602A- 00 BRK +602B- 00 BRK +602C- 00 BRK +602D- 00 BRK +602E- 00 BRK +602F- 00 BRK +6030- 00 BRK +6031- 00 BRK +6032- 00 BRK +6033- 00 BRK +6034- 00 BRK +6035- 00 BRK +6036- 00 BRK +6037- 00 BRK +6038- 00 BRK +6039- 00 BRK +603A- 00 BRK +603B- 00 BRK +603C- 00 BRK +603D- 00 BRK +603E- 00 BRK +603F- 00 BRK +6040- 00 BRK +6041- 00 BRK +6042- 00 BRK +6043- 00 BRK +6044- 00 BRK +6045- 00 BRK +6046- 00 BRK +6047- 00 BRK +6048- 00 BRK +6049- 00 BRK +604A- 00 BRK +604B- 00 BRK +604C- 00 BRK +604D- 00 BRK +604E- 00 BRK +604F- 00 BRK +6050- 00 BRK +6051- 00 BRK +6052- 00 BRK +6053- 00 BRK +6054- 00 BRK +6055- 00 BRK +6056- 00 BRK +6057- 00 BRK +6058- 00 BRK +6059- 00 BRK +605A- 00 BRK +605B- 00 BRK +605C- 00 BRK +605D- 00 BRK +605E- 00 BRK +605F- 00 BRK +6060- 00 BRK +6061- 00 BRK +6062- 00 BRK +6063- 00 BRK +6064- 00 BRK +6065- 00 BRK +6066- 00 BRK +6067- 00 BRK +6068- 00 BRK +6069- 00 BRK +606A- 00 BRK +606B- 00 BRK +606C- 00 BRK +606D- 00 BRK +606E- 00 BRK +606F- 00 BRK +6070- 00 BRK +6071- 00 BRK +6072- 00 BRK +6073- 00 BRK +6074- 00 BRK +6075- 00 BRK +6076- 00 BRK +6077- 00 BRK +6078- 00 BRK +6079- 00 BRK +607A- 00 BRK +607B- 00 BRK +607C- 00 BRK +607D- 00 BRK +607E- 00 BRK +607F- 00 BRK +6080- 00 BRK +6081- 00 BRK +6082- 00 BRK +6083- 00 BRK +6084- 00 BRK +6085- 00 BRK +6086- 00 BRK +6087- 00 BRK +6088- 00 BRK +6089- 00 BRK +608A- 00 BRK +608B- 00 BRK +608C- 00 BRK +608D- 00 BRK +608E- 00 BRK +608F- 00 BRK +6090- 00 BRK +6091- 00 BRK +6092- 00 BRK +6093- 00 BRK +6094- 00 BRK +6095- 00 BRK +6096- 00 BRK +6097- 00 BRK +6098- 00 BRK +6099- 00 BRK +609A- 00 BRK +609B- 00 BRK +609C- 00 BRK +609D- 00 BRK +609E- 00 BRK +609F- 00 BRK +60A0- 00 BRK +60A1- 00 BRK +60A2- 00 BRK +60A3- 00 BRK +60A4- 00 BRK +60A5- 00 BRK +60A6- 00 BRK +60A7- 00 BRK +60A8- 00 BRK +60A9- 00 BRK +60AA- 00 BRK +60AB- 00 BRK +60AC- 00 BRK +60AD- 00 BRK +60AE- 00 BRK +60AF- 00 BRK +60B0- 00 BRK +60B1- 00 BRK +60B2- 00 BRK +60B3- 00 BRK +60B4- 00 BRK +60B5- 00 BRK +60B6- 00 BRK +60B7- 00 BRK +60B8- 00 BRK +60B9- 00 BRK +60BA- 00 BRK +60BB- 00 BRK +60BC- 00 BRK +60BD- 00 BRK +60BE- 00 BRK +60BF- 00 BRK +60C0- 00 BRK +60C1- 00 BRK +60C2- 00 BRK +60C3- 00 BRK +60C4- 00 BRK +60C5- 00 BRK +60C6- 00 BRK +60C7- 00 BRK +60C8- 00 BRK +60C9- 00 BRK +60CA- 00 BRK +60CB- 00 BRK +60CC- 00 BRK +60CD- 00 BRK +60CE- 00 BRK +60CF- 00 BRK +60D0- 00 BRK +60D1- 00 BRK +60D2- 00 BRK +60D3- 00 BRK +60D4- 00 BRK +60D5- 00 BRK +60D6- 00 BRK +60D7- 00 BRK +60D8- 00 BRK +60D9- 00 BRK +60DA- 00 BRK +60DB- 00 BRK +60DC- 00 BRK +60DD- 00 BRK +60DE- 00 BRK +60DF- 00 BRK +60E0- 00 BRK +60E1- 00 BRK +60E2- 00 BRK +60E3- 00 BRK +60E4- 00 BRK +60E5- 00 BRK +60E6- 00 BRK +60E7- 00 BRK +60E8- 00 BRK +60E9- 00 BRK +60EA- 00 BRK +60EB- 00 BRK +60EC- 00 BRK +60ED- 00 BRK +60EE- 00 BRK +60EF- 00 BRK +60F0- 00 BRK +60F1- 00 BRK +60F2- 00 BRK +60F3- 00 BRK +60F4- 00 BRK +60F5- 00 BRK +60F6- 00 BRK +60F7- 00 BRK +60F8- 00 BRK +60F9- 00 BRK +60FA- 00 BRK +60FB- 00 BRK +60FC- 00 BRK +60FD- 00 BRK +60FE- 00 BRK +60FF- 00 BRK +6100- 00 BRK +6101- 00 BRK +6102- 00 BRK +6103- 00 BRK +6104- 00 BRK +6105- 00 BRK +6106- 00 BRK +6107- 00 BRK +6108- 00 BRK +6109- 00 BRK +610A- 00 BRK +610B- 00 BRK +610C- 00 BRK +610D- 00 BRK +610E- 00 BRK +610F- 00 BRK +6110- 00 BRK +6111- 00 BRK +6112- 00 BRK +6113- 00 BRK +6114- 00 BRK +6115- 00 BRK +6116- 00 BRK +6117- 00 BRK +6118- 00 BRK +6119- 00 BRK +611A- 00 BRK +611B- 00 BRK +611C- 00 BRK +611D- 00 BRK +611E- 00 BRK +611F- 00 BRK +6120- 00 BRK +6121- 00 BRK +6122- 00 BRK +6123- 00 BRK +6124- 00 BRK +6125- 00 BRK +6126- 00 BRK +6127- 00 BRK +6128- 00 BRK +6129- 00 BRK +612A- 00 BRK +612B- 00 BRK +612C- 00 BRK +612D- 00 BRK +612E- 00 BRK +612F- 00 BRK +6130- 00 BRK +6131- 00 BRK +6132- 00 BRK +6133- 00 BRK +6134- 00 BRK +6135- 00 BRK +6136- 00 BRK +6137- 00 BRK +6138- 00 BRK +6139- 00 BRK +613A- 00 BRK +613B- 00 BRK +613C- 00 BRK +613D- 00 BRK +613E- 00 BRK +613F- 00 BRK +6140- 00 BRK +6141- 00 BRK +6142- 00 BRK +6143- 00 BRK +6144- 00 BRK +6145- 00 BRK +6146- 00 BRK +6147- 00 BRK +6148- 00 BRK +6149- 00 BRK +614A- 00 BRK +614B- 00 BRK +614C- 00 BRK +614D- 00 BRK +614E- 00 BRK +614F- 00 BRK +6150- 00 BRK +6151- 00 BRK +6152- 00 BRK +6153- 00 BRK +6154- 00 BRK +6155- 00 BRK +6156- 00 BRK +6157- 00 BRK +6158- 00 BRK +6159- 00 BRK +615A- 00 BRK +615B- 00 BRK +615C- 00 BRK +615D- 00 BRK +615E- 00 BRK +615F- 00 BRK +6160- 00 BRK +6161- 00 BRK +6162- 00 BRK +6163- 00 BRK +6164- 00 BRK +6165- 00 BRK +6166- 00 BRK +6167- 00 BRK +6168- 00 BRK +6169- 00 BRK +616A- 00 BRK +616B- 00 BRK +616C- 00 BRK +616D- 00 BRK +616E- 00 BRK +616F- 00 BRK +6170- 00 BRK +6171- 00 BRK +6172- 00 BRK +6173- 00 BRK +6174- 00 BRK +6175- 00 BRK +6176- 00 BRK +6177- 00 BRK +6178- 00 BRK +6179- 00 BRK +617A- 00 BRK +617B- 00 BRK +617C- 00 BRK +617D- 00 BRK +617E- 00 BRK +617F- 00 BRK +6180- 00 BRK +6181- 00 BRK +6182- 00 BRK +6183- 00 BRK +6184- 00 BRK +6185- 00 BRK +6186- 00 BRK +6187- 00 BRK +6188- 00 BRK +6189- 00 BRK +618A- 00 BRK +618B- 00 BRK +618C- 00 BRK +618D- 00 BRK +618E- 00 BRK +618F- 00 BRK +6190- 00 BRK +6191- 00 BRK +6192- 00 BRK +6193- 00 BRK +6194- 00 BRK +6195- 00 BRK +6196- 00 BRK +6197- 00 BRK +6198- 00 BRK +6199- 00 BRK +619A- 00 BRK +619B- 00 BRK +619C- 00 BRK +619D- 00 BRK +619E- 00 BRK +619F- 00 BRK +61A0- 00 BRK +61A1- 00 BRK +61A2- 00 BRK +61A3- 00 BRK +61A4- 00 BRK +61A5- 00 BRK +61A6- 00 BRK +61A7- 00 BRK +61A8- 00 BRK +61A9- 00 BRK +61AA- 00 BRK +61AB- 00 BRK +61AC- 00 BRK +61AD- 00 BRK +61AE- 00 BRK +61AF- 00 BRK +61B0- 00 BRK +61B1- 00 BRK +61B2- 00 BRK +61B3- 00 BRK +61B4- 00 BRK +61B5- 00 BRK +61B6- 00 BRK +61B7- 00 BRK +61B8- 00 BRK +61B9- 00 BRK +61BA- 00 BRK +61BB- 00 BRK +61BC- 00 BRK +61BD- 00 BRK +61BE- 00 BRK +61BF- 00 BRK +61C0- 00 BRK +61C1- 00 BRK +61C2- 00 BRK +61C3- 00 BRK +61C4- 00 BRK +61C5- 00 BRK +61C6- 00 BRK +61C7- 00 BRK +61C8- 00 BRK +61C9- 00 BRK +61CA- 00 BRK +61CB- 00 BRK +61CC- 00 BRK +61CD- 00 BRK +61CE- 00 BRK +61CF- 00 BRK +61D0- 00 BRK +61D1- 00 BRK +61D2- 00 BRK +61D3- 00 BRK +61D4- 00 BRK +61D5- 00 BRK +61D6- 00 BRK +61D7- 00 BRK +61D8- 00 BRK +61D9- 00 BRK +61DA- 00 BRK +61DB- 00 BRK +61DC- 00 BRK +61DD- 00 BRK +61DE- 00 BRK +61DF- 00 BRK +61E0- 00 BRK +61E1- 00 BRK +61E2- 00 BRK +61E3- 00 BRK +61E4- 00 BRK +61E5- 00 BRK +61E6- 00 BRK +61E7- 00 BRK +61E8- 00 BRK +61E9- 00 BRK +61EA- 00 BRK +61EB- 00 BRK +61EC- 00 BRK +61ED- 00 BRK +61EE- 00 BRK +61EF- 00 BRK +61F0- 00 BRK +61F1- 00 BRK +61F2- 00 BRK +61F3- 00 BRK +61F4- 00 BRK +61F5- 00 BRK +61F6- 00 BRK +61F7- 00 BRK +61F8- 00 BRK +61F9- 00 BRK +61FA- 00 BRK +61FB- 00 BRK +61FC- 00 BRK +61FD- 00 BRK +61FE- 00 BRK +61FF- 00 BRK +6200- 00 BRK +6201- 00 BRK +6202- 00 BRK +6203- 00 BRK +6204- 00 BRK +6205- 00 BRK +6206- 00 BRK +6207- 00 BRK +6208- 00 BRK +6209- 00 BRK +620A- 00 BRK +620B- 00 BRK +620C- 00 BRK +620D- 00 BRK +620E- 00 BRK +620F- 00 BRK +6210- 00 BRK +6211- 00 BRK +6212- 00 BRK +6213- 00 BRK +6214- 00 BRK +6215- 00 BRK +6216- 00 BRK +6217- 00 BRK +6218- 00 BRK +6219- 00 BRK +621A- 00 BRK +621B- 00 BRK +621C- 00 BRK +621D- 00 BRK +621E- 00 BRK +621F- 00 BRK +6220- 00 BRK +6221- 00 BRK +6222- 00 BRK +6223- 00 BRK +6224- 00 BRK +6225- 00 BRK +6226- 00 BRK +6227- 00 BRK +6228- 00 BRK +6229- 00 BRK +622A- 00 BRK +622B- 00 BRK +622C- 00 BRK +622D- 00 BRK +622E- 00 BRK +622F- 00 BRK +6230- 00 BRK +6231- 00 BRK +6232- 00 BRK +6233- 00 BRK +6234- 00 BRK +6235- 00 BRK +6236- 00 BRK +6237- 00 BRK +6238- 00 BRK +6239- 00 BRK +623A- 00 BRK +623B- 00 BRK +623C- 00 BRK +623D- 00 BRK +623E- 00 BRK +623F- 00 BRK +6240- 00 BRK +6241- 00 BRK +6242- 00 BRK +6243- 00 BRK +6244- 00 BRK +6245- 00 BRK +6246- 00 BRK +6247- 00 BRK +6248- 00 BRK +6249- 00 BRK +624A- A9 01 LDA #$01 +624C- 8D 41 62 STA $6241 +624F- A9 01 LDA #$01 +6251- 8D 42 62 STA $6242 +6254- 20 58 FC JSR $FC58 F8ROM:HOME +6257- 20 A7 73 JSR $73A7 +625A- C9 CE CMP #$CE +625C- C9 D4 CMP #$D4 +625E- C9 C1 CMP #$C1 +6260- CC C9 DA CPY $DAC9 +6263- C9 CE CMP #$CE +6265- C7 ??? +6266- AE AE AE LDX $AEAE +6269- 8D 00 20 STA $2000 +626C- 8C 62 20 STY $2062 +626F- FD 62 A9 SBC $A962,X +6272- 02 ??? +6273- 48 PHA +6274- A9 0F LDA #$0F +6276- 48 PHA +6277- 20 AF 72 JSR $72AF +627A- 8D 56 66 STA $6656 +627D- A9 02 LDA #$02 +627F- 48 PHA +6280- A9 0F LDA #$0F +6282- 48 PHA +6283- 20 AF 72 JSR $72AF +6286- 8D 57 66 STA $6657 +6289- 4C 72 63 JMP $6372 +628C- A9 20 LDA #$20 +628E- 48 PHA +628F- A9 00 LDA #$00 +6291- 48 PHA +6292- A9 11 LDA #$11 +6294- 48 PHA +6295- A9 11 LDA #$11 +6297- 48 PHA +6298- A9 01 LDA #$01 +629A- 48 PHA +629B- A9 01 LDA #$01 +629D- 48 PHA +629E- 20 15 6B JSR $6B15 +62A1- A9 21 LDA #$21 +62A3- 48 PHA +62A4- A9 25 LDA #$25 +62A6- 48 PHA +62A7- A9 11 LDA #$11 +62A9- 48 PHA +62AA- A9 11 LDA #$11 +62AC- 48 PHA +62AD- A9 01 LDA #$01 +62AF- 48 PHA +62B0- A9 01 LDA #$01 +62B2- 48 PHA +62B3- 20 15 6B JSR $6B15 +62B6- A9 22 LDA #$22 +62B8- 48 PHA +62B9- A9 4A LDA #$4A +62BB- 48 PHA +62BC- A9 11 LDA #$11 +62BE- 48 PHA +62BF- A9 11 LDA #$11 +62C1- 48 PHA +62C2- A9 01 LDA #$01 +62C4- 48 PHA +62C5- A9 00 LDA #$00 +62C7- 48 PHA +62C8- 20 15 6B JSR $6B15 +62CB- A9 23 LDA #$23 +62CD- 48 PHA +62CE- A9 6F LDA #$6F +62D0- 48 PHA +62D1- A9 25 LDA #$25 +62D3- 48 PHA +62D4- A9 01 LDA #$01 +62D6- 48 PHA +62D7- A9 00 LDA #$00 +62D9- 48 PHA +62DA- 20 79 6A JSR $6A79 +62DD- A9 24 LDA #$24 +62DF- 48 PHA +62E0- A9 94 LDA #$94 +62E2- 48 PHA +62E3- A9 25 LDA #$25 +62E5- 48 PHA +62E6- A9 01 LDA #$01 +62E8- 48 PHA +62E9- A9 00 LDA #$00 +62EB- 48 PHA +62EC- 20 79 6A JSR $6A79 +62EF- A9 00 LDA #$00 +62F1- 8D 58 66 STA $6658 +62F4- 8D 54 66 STA $6654 +62F7- A9 01 LDA #$01 +62F9- 8D 55 66 STA $6655 +62FC- 60 RTS +62FD- A9 00 LDA #$00 +62FF- 8D 56 66 STA $6656 +6302- 8D 57 66 STA $6657 +6305- EE 56 66 INC $6656 +6308- A9 66 LDA #$66 +630A- 48 PHA +630B- A9 55 LDA #$55 +630D- 48 PHA +630E- A9 22 LDA #$22 +6310- 48 PHA +6311- A9 4A LDA #$4A +6313- 48 PHA +6314- AD 56 66 LDA $6656 +6317- 48 PHA +6318- A9 01 LDA #$01 +631A- 48 PHA +631B- 20 94 70 JSR $7094 +631E- A9 66 LDA #$66 +6320- 48 PHA +6321- A9 55 LDA #$55 +6323- 48 PHA +6324- A9 22 LDA #$22 +6326- 48 PHA +6327- A9 4A LDA #$4A +6329- 48 PHA +632A- AD 56 66 LDA $6656 +632D- 48 PHA +632E- A9 11 LDA #$11 +6330- 48 PHA +6331- 20 94 70 JSR $7094 +6334- AD 56 66 LDA $6656 +6337- C9 11 CMP #$11 +6339- D0 CA BNE $6305 +633B- EE 57 66 INC $6657 +633E- A9 66 LDA #$66 +6340- 48 PHA +6341- A9 55 LDA #$55 +6343- 48 PHA +6344- A9 22 LDA #$22 +6346- 48 PHA +6347- A9 4A LDA #$4A +6349- 48 PHA +634A- A9 01 LDA #$01 +634C- 48 PHA +634D- AD 57 66 LDA $6657 +6350- 48 PHA +6351- 20 94 70 JSR $7094 +6354- A9 66 LDA #$66 +6356- 48 PHA +6357- A9 55 LDA #$55 +6359- 48 PHA +635A- A9 22 LDA #$22 +635C- 48 PHA +635D- A9 4A LDA #$4A +635F- 48 PHA +6360- A9 11 LDA #$11 +6362- 48 PHA +6363- AD 57 66 LDA $6657 +6366- 48 PHA +6367- 20 94 70 JSR $7094 +636A- AD 57 66 LDA $6657 +636D- C9 11 CMP #$11 +636F- D0 CA BNE $633B +6371- 60 RTS +6372- 20 A7 73 JSR $73A7 +6375- C2 ??? +6376- D5 C9 CMP $C9,X +6378- CC C4 C9 CPY $C9C4 +637B- CE C7 A0 DEC $A0C7 +637E- CD C1 DA CMP $DAC1 +6381- C5 AE CMP $AE +6383- AE AE 8D LDX $8DAE +6386- 8D 00 EE STA $EE00 +6389- 58 CLI +638A- 66 A9 ROR $A9 +638C- 66 48 ROR $48 +638E- A9 56 LDA #$56 +6390- 48 PHA +6391- A9 23 LDA #$23 +6393- 48 PHA +6394- A9 6F LDA #$6F +6396- 48 PHA +6397- AD 58 66 LDA $6658 +639A- 48 PHA +639B- 20 44 6F JSR $6F44 +639E- A9 66 LDA #$66 +63A0- 48 PHA +63A1- A9 57 LDA #$57 +63A3- 48 PHA +63A4- A9 24 LDA #$24 +63A6- 48 PHA +63A7- A9 94 LDA #$94 +63A9- 48 PHA +63AA- AD 58 66 LDA $6658 +63AD- 48 PHA +63AE- 20 44 6F JSR $6F44 +63B1- A9 66 LDA #$66 +63B3- 48 PHA +63B4- A9 55 LDA #$55 +63B6- 48 PHA +63B7- A9 22 LDA #$22 +63B9- 48 PHA +63BA- A9 4A LDA #$4A +63BC- 48 PHA +63BD- AD 56 66 LDA $6656 +63C0- 48 PHA +63C1- AD 57 66 LDA $6657 +63C4- 48 PHA +63C5- 20 94 70 JSR $7094 +63C8- AD 57 66 LDA $6657 +63CB- 8D 5B 66 STA $665B +63CE- 8D 5C 66 STA $665C +63D1- AD 56 66 LDA $6656 +63D4- 8D 59 66 STA $6659 +63D7- 8D 5A 66 STA $665A +63DA- EE 5B 66 INC $665B +63DD- EE 59 66 INC $6659 +63E0- CE 5A 66 DEC $665A +63E3- CE 5C 66 DEC $665C +63E6- A9 22 LDA #$22 +63E8- 48 PHA +63E9- A9 4A LDA #$4A +63EB- 48 PHA +63EC- AD 56 66 LDA $6656 +63EF- 48 PHA +63F0- AD 5B 66 LDA $665B +63F3- 48 PHA +63F4- 20 43 6D JSR $6D43 +63F7- AD 40 60 LDA $6040 +63FA- C9 01 CMP #$01 +63FC- F0 03 BEQ $6401 +63FE- 4C 92 64 JMP $6492 +6401- A9 22 LDA #$22 +6403- 48 PHA +6404- A9 4A LDA #$4A +6406- 48 PHA +6407- AD 59 66 LDA $6659 +640A- 48 PHA +640B- AD 57 66 LDA $6657 +640E- 48 PHA +640F- 20 43 6D JSR $6D43 +6412- AD 40 60 LDA $6040 +6415- C9 01 CMP #$01 +6417- F0 03 BEQ $641C +6419- 4C 92 64 JMP $6492 +641C- AD 5C 66 LDA $665C +641F- C9 00 CMP #$00 +6421- D0 03 BNE $6426 +6423- 4C 41 64 JMP $6441 +6426- A9 22 LDA #$22 +6428- 48 PHA +6429- A9 4A LDA #$4A +642B- 48 PHA +642C- AD 56 66 LDA $6656 +642F- 48 PHA +6430- AD 5C 66 LDA $665C +6433- 48 PHA +6434- 20 43 6D JSR $6D43 +6437- AD 40 60 LDA $6040 +643A- C9 01 CMP #$01 +643C- F0 03 BEQ $6441 +643E- 4C 92 64 JMP $6492 +6441- A9 22 LDA #$22 +6443- 48 PHA +6444- A9 4A LDA #$4A +6446- 48 PHA +6447- AD 5A 66 LDA $665A +644A- 48 PHA +644B- AD 57 66 LDA $6657 +644E- 48 PHA +644F- 20 43 6D JSR $6D43 +6452- AD 40 60 LDA $6040 +6455- C9 01 CMP #$01 +6457- F0 03 BEQ $645C +6459- 4C 92 64 JMP $6492 +645C- A9 23 LDA #$23 +645E- 48 PHA +645F- A9 6F LDA #$6F +6461- 48 PHA +6462- AD 58 66 LDA $6658 +6465- 48 PHA +6466- 20 12 6C JSR $6C12 +6469- AD 40 60 LDA $6040 +646C- 8D 56 66 STA $6656 +646F- A9 24 LDA #$24 +6471- 48 PHA +6472- A9 94 LDA #$94 +6474- 48 PHA +6475- AD 58 66 LDA $6658 +6478- 48 PHA +6479- 20 12 6C JSR $6C12 +647C- AD 40 60 LDA $6040 +647F- 8D 57 66 STA $6657 +6482- CE 58 66 DEC $6658 +6485- AD 58 66 LDA $6658 +6488- C9 01 CMP #$01 +648A- B0 03 BCS $648F +648C- 4C 8B 65 JMP $658B +648F- 4C C8 63 JMP $63C8 +6492- 20 94 72 JSR $7294 +6495- C9 40 CMP #$40 +6497- 90 0B BCC $64A4 +6499- C9 80 CMP #$80 +649B- 90 3F BCC $64DC +649D- C9 C0 CMP #$C0 +649F- 90 73 BCC $6514 +64A1- 4C 53 65 JMP $6553 +64A4- A9 22 LDA #$22 +64A6- 48 PHA +64A7- A9 4A LDA #$4A +64A9- 48 PHA +64AA- AD 56 66 LDA $6656 +64AD- 48 PHA +64AE- AD 5B 66 LDA $665B +64B1- 48 PHA +64B2- 20 43 6D JSR $6D43 +64B5- AD 40 60 LDA $6040 +64B8- C9 00 CMP #$00 +64BA- F0 03 BEQ $64BF +64BC- 4C 92 64 JMP $6492 +64BF- A9 66 LDA #$66 +64C1- 48 PHA +64C2- A9 54 LDA #$54 +64C4- 48 PHA +64C5- A9 20 LDA #$20 +64C7- 48 PHA +64C8- A9 00 LDA #$00 +64CA- 48 PHA +64CB- AD 56 66 LDA $6656 +64CE- 48 PHA +64CF- AD 57 66 LDA $6657 +64D2- 48 PHA +64D3- 20 94 70 JSR $7094 +64D6- EE 57 66 INC $6657 +64D9- 4C 88 63 JMP $6388 +64DC- A9 22 LDA #$22 +64DE- 48 PHA +64DF- A9 4A LDA #$4A +64E1- 48 PHA +64E2- AD 59 66 LDA $6659 +64E5- 48 PHA +64E6- AD 57 66 LDA $6657 +64E9- 48 PHA +64EA- 20 43 6D JSR $6D43 +64ED- AD 40 60 LDA $6040 +64F0- C9 00 CMP #$00 +64F2- F0 03 BEQ $64F7 +64F4- 4C 92 64 JMP $6492 +64F7- A9 66 LDA #$66 +64F9- 48 PHA +64FA- A9 54 LDA #$54 +64FC- 48 PHA +64FD- A9 21 LDA #$21 +64FF- 48 PHA +6500- A9 25 LDA #$25 +6502- 48 PHA +6503- AD 59 66 LDA $6659 +6506- 48 PHA +6507- AD 57 66 LDA $6657 +650A- 48 PHA +650B- 20 94 70 JSR $7094 +650E- EE 56 66 INC $6656 +6511- 4C 88 63 JMP $6388 +6514- AD 5C 66 LDA $665C +6517- C9 00 CMP #$00 +6519- F0 18 BEQ $6533 +651B- A9 22 LDA #$22 +651D- 48 PHA +651E- A9 4A LDA #$4A +6520- 48 PHA +6521- AD 56 66 LDA $6656 +6524- 48 PHA +6525- AD 5C 66 LDA $665C +6528- 48 PHA +6529- 20 43 6D JSR $6D43 +652C- AD 40 60 LDA $6040 +652F- C9 00 CMP #$00 +6531- F0 03 BEQ $6536 +6533- 4C 92 64 JMP $6492 +6536- A9 66 LDA #$66 +6538- 48 PHA +6539- A9 54 LDA #$54 +653B- 48 PHA +653C- A9 20 LDA #$20 +653E- 48 PHA +653F- A9 00 LDA #$00 +6541- 48 PHA +6542- AD 56 66 LDA $6656 +6545- 48 PHA +6546- AD 5C 66 LDA $665C +6549- 48 PHA +654A- 20 94 70 JSR $7094 +654D- CE 57 66 DEC $6657 +6550- 4C 88 63 JMP $6388 +6553- A9 22 LDA #$22 +6555- 48 PHA +6556- A9 4A LDA #$4A +6558- 48 PHA +6559- AD 5A 66 LDA $665A +655C- 48 PHA +655D- AD 57 66 LDA $6657 +6560- 48 PHA +6561- 20 43 6D JSR $6D43 +6564- AD 40 60 LDA $6040 +6567- C9 00 CMP #$00 +6569- F0 03 BEQ $656E +656B- 4C 92 64 JMP $6492 +656E- A9 66 LDA #$66 +6570- 48 PHA +6571- A9 54 LDA #$54 +6573- 48 PHA +6574- A9 21 LDA #$21 +6576- 48 PHA +6577- A9 25 LDA #$25 +6579- 48 PHA +657A- AD 56 66 LDA $6656 +657D- 48 PHA +657E- AD 57 66 LDA $6657 +6581- 48 PHA +6582- 20 94 70 JSR $7094 +6585- CE 56 66 DEC $6656 +6588- 4C 88 63 JMP $6388 +658B- 20 A7 73 JSR $73A7 +658E- D0 D2 BNE $6562 +6590- C9 CE CMP #$CE +6592- D4 ??? +6593- C9 CE CMP #$CE +6595- C7 ??? +6596- AE AE AE LDX $AEAE +6599- 8D 00 20 STA $2000 +659C- A7 ??? +659D- 73 ??? +659E- A0 8D LDY #$8D +65A0- 00 BRK +65A1- A9 01 LDA #$01 +65A3- 8D 56 66 STA $6656 +65A6- EE 56 66 INC $6656 +65A9- 20 A7 73 JSR $73A7 +65AC- D8 CLD +65AD- 00 BRK +65AE- AD 56 66 LDA $6656 +65B1- C9 20 CMP #$20 +65B3- D0 F1 BNE $65A6 +65B5- 20 A7 73 JSR $73A7 +65B8- A0 8D LDY #$8D +65BA- 00 BRK +65BB- A9 02 LDA #$02 +65BD- 8D 56 66 STA $6656 +65C0- 8D 57 66 STA $6657 +65C3- A9 21 LDA #$21 +65C5- 48 PHA +65C6- A9 25 LDA #$25 +65C8- 48 PHA +65C9- AD 56 66 LDA $6656 +65CC- 48 PHA +65CD- AD 57 66 LDA $6657 +65D0- 48 PHA +65D1- 20 43 6D JSR $6D43 +65D4- AD 40 60 LDA $6040 +65D7- C9 00 CMP #$00 +65D9- F0 09 BEQ $65E4 +65DB- 20 A7 73 JSR $73A7 +65DE- D8 CLD +65DF- A0 00 LDY #$00 +65E1- 4C EA 65 JMP $65EA +65E4- 20 A7 73 JSR $73A7 +65E7- A0 A0 LDY #$A0 +65E9- 00 BRK +65EA- EE 56 66 INC $6656 +65ED- AD 56 66 LDA $6656 +65F0- C9 11 CMP #$11 +65F2- F0 03 BEQ $65F7 +65F4- 4C C3 65 JMP $65C3 +65F7- 20 A7 73 JSR $73A7 +65FA- D8 CLD +65FB- 8D 00 A9 STA $A900 +65FE- 02 ??? +65FF- 8D 56 66 STA $6656 +6602- A9 20 LDA #$20 +6604- 48 PHA +6605- A9 00 LDA #$00 +6607- 48 PHA +6608- AD 56 66 LDA $6656 +660B- 48 PHA +660C- AD 57 66 LDA $6657 +660F- 48 PHA +6610- 20 43 6D JSR $6D43 +6613- AD 40 60 LDA $6040 +6616- C9 00 CMP #$00 +6618- F0 09 BEQ $6623 +661A- 20 A7 73 JSR $73A7 +661D- D8 CLD +661E- D8 CLD +661F- 00 BRK +6620- 4C 29 66 JMP $6629 +6623- 20 A7 73 JSR $73A7 +6626- D8 CLD +6627- A0 00 LDY #$00 +6629- EE 56 66 INC $6656 +662C- AD 56 66 LDA $6656 +662F- C9 11 CMP #$11 +6631- F0 03 BEQ $6636 +6633- 4C 02 66 JMP $6602 +6636- 20 A7 73 JSR $73A7 +6639- D8 CLD +663A- 8D 00 A9 STA $A900 +663D- 02 ??? +663E- 8D 56 66 STA $6656 +6641- EE 57 66 INC $6657 +6644- AD 57 66 LDA $6657 +6647- C9 11 CMP #$11 +6649- F0 03 BEQ $664E +664B- 4C C3 65 JMP $65C3 +664E- 20 46 67 JSR $6746 +6651- 4C D0 03 JMP $03D0 +6654- 00 BRK +6655- 00 BRK +6656- 00 BRK +6657- 00 BRK +6658- 00 BRK +6659- 00 BRK +665A- 00 BRK +665B- 00 BRK +665C- 00 BRK +665D- A0 FF LDY #$FF +665F- 68 PLA +6660- 85 06 STA $06 +6662- 68 PLA +6663- 85 07 STA $07 +6665- C8 INY +6666- B9 40 60 LDA $6040,Y +6669- 91 06 STA ($06),Y +666B- CC 3F 60 CPY $603F +666E- D0 F5 BNE $6665 +6670- A5 07 LDA $07 +6672- 48 PHA +6673- A5 06 LDA $06 +6675- 48 PHA +6676- 60 RTS +6677- A0 FF LDY #$FF +6679- 68 PLA +667A- 85 06 STA $06 +667C- 68 PLA +667D- 85 07 STA $07 +667F- C8 INY +6680- B1 06 LDA ($06),Y +6682- 99 41 61 STA $6141,Y +6685- CC 40 61 CPY $6140 +6688- D0 F5 BNE $667F +668A- A5 07 LDA $07 +668C- 48 PHA +668D- A5 06 LDA $06 +668F- 48 PHA +6690- 60 RTS +6691- 68 PLA +6692- 8D 20 67 STA $6720 +6695- 68 PLA +6696- 8D 21 67 STA $6721 +6699- 68 PLA +669A- 8D 24 67 STA $6724 +669D- 68 PLA +669E- 85 EB STA $EB +66A0- 68 PLA +66A1- 85 EC STA $EC +66A3- A9 8D LDA #$8D +66A5- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66A8- A5 EC LDA $EC +66AA- 29 F0 AND #$F0 +66AC- 4A LSR +66AD- 4A LSR +66AE- 4A LSR +66AF- 4A LSR +66B0- AA TAX +66B1- BD 43 69 LDA $6943,X +66B4- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66B7- A5 EC LDA $EC +66B9- 29 0F AND #$0F +66BB- AA TAX +66BC- BD 43 69 LDA $6943,X +66BF- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66C2- A5 EB LDA $EB +66C4- 29 F0 AND #$F0 +66C6- 4A LSR +66C7- 4A LSR +66C8- 4A LSR +66C9- 4A LSR +66CA- AA TAX +66CB- BD 43 69 LDA $6943,X +66CE- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66D1- A5 EB LDA $EB +66D3- 29 0F AND #$0F +66D5- AA TAX +66D6- BD 43 69 LDA $6943,X +66D9- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66DC- A9 BA LDA #$BA +66DE- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66E1- A9 A0 LDA #$A0 +66E3- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66E6- A0 00 LDY #$00 +66E8- B1 EB LDA ($EB),Y +66EA- 29 F0 AND #$F0 +66EC- 4A LSR +66ED- 4A LSR +66EE- 4A LSR +66EF- 4A LSR +66F0- 8D 23 67 STA $6723 +66F3- B1 EB LDA ($EB),Y +66F5- 29 0F AND #$0F +66F7- 8D 22 67 STA $6722 +66FA- AE 23 67 LDX $6723 +66FD- BD 43 69 LDA $6943,X +6700- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6703- AE 22 67 LDX $6722 +6706- BD 43 69 LDA $6943,X +6709- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +670C- A9 A0 LDA #$A0 +670E- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6711- C8 INY +6712- CC 24 67 CPY $6724 +6715- D0 D1 BNE $66E8 +6717- AD 21 67 LDA $6721 +671A- 48 PHA +671B- AD 20 67 LDA $6720 +671E- 48 PHA +671F- 60 RTS +6720- 00 BRK +6721- 00 BRK +6722- 00 BRK +6723- 00 BRK +6724- 00 BRK +6725- 68 PLA +6726- 85 06 STA $06 +6728- 68 PLA +6729- 85 07 STA $07 +672B- A0 01 LDY #$01 +672D- B1 06 LDA ($06),Y +672F- F0 06 BEQ $6737 +6731- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6734- C8 INY +6735- D0 F6 BNE $672D +6737- 18 CLC +6738- 98 TYA +6739- 65 06 ADC $06 +673B- 85 06 STA $06 +673D- A5 07 LDA $07 +673F- 69 00 ADC #$00 +6741- 48 PHA +6742- A5 06 LDA $06 +6744- 48 PHA +6745- 60 RTS +6746- 20 0C FD JSR $FD0C F8ROM:RDKEY +6749- 60 RTS +674A- 8D 43 62 STA $6243 +674D- 8E 44 62 STX $6244 +6750- 8C 45 62 STY $6245 +6753- 90 11 BCC $6766 +6755- B0 17 BCS $676E +6757- F0 1D BEQ $6776 +6759- D0 23 BNE $677E +675B- 30 29 BMI $6786 +675D- 10 2F BPL $678E +675F- 50 35 BVC $6796 +6761- 70 3B BVS $679E +6763- 4C A3 67 JMP $67A3 +6766- A9 00 LDA #$00 +6768- 8D 46 62 STA $6246 +676B- 4C 57 67 JMP $6757 +676E- A9 01 LDA #$01 +6770- 8D 46 62 STA $6246 +6773- 4C 57 67 JMP $6757 +6776- A9 01 LDA #$01 +6778- 8D 48 62 STA $6248 +677B- 4C 5B 67 JMP $675B +677E- A9 00 LDA #$00 +6780- 8D 48 62 STA $6248 +6783- 4C 5B 67 JMP $675B +6786- A9 01 LDA #$01 +6788- 8D 47 62 STA $6247 +678B- 4C 5F 67 JMP $675F +678E- A9 00 LDA #$00 +6790- 8D 47 62 STA $6247 +6793- 4C 5F 67 JMP $675F +6796- A9 00 LDA #$00 +6798- 8D 49 62 STA $6249 +679B- 4C A3 67 JMP $67A3 +679E- A9 01 LDA #$01 +67A0- 8D 49 62 STA $6249 +67A3- 60 RTS +67A4- 20 25 67 JSR $6725 +67A7- A0 8D LDY #$8D +67A9- 8D 00 20 STA $2000 +67AC- 25 67 AND $67 +67AE- D2 C5 CMP ($C5) +67B0- C7 ??? +67B1- C9 D3 CMP #$D3 +67B3- D4 ??? +67B4- D2 D9 CMP ($D9) +67B6- A0 C4 LDY #$C4 +67B8- D5 CD CMP $CD,X +67BA- D0 8D BNE $6749 +67BC- 00 BRK +67BD- 20 25 67 JSR $6725 +67C0- BD BD BD LDA $BDBD,X +67C3- BD BD BD LDA $BDBD,X +67C6- BD BD BD LDA $BDBD,X +67C9- BD BD BD LDA $BDBD,X +67CC- BD 8D 00 LDA $008D,X +67CF- 20 25 67 JSR $6725 +67D2- C1 BA CMP ($BA,X) +67D4- A0 00 LDY #$00 +67D6- AD 43 62 LDA $6243 +67D9- 29 F0 AND #$F0 +67DB- 4A LSR +67DC- 4A LSR +67DD- 4A LSR +67DE- 4A LSR +67DF- 8D 41 69 STA $6941 +67E2- AD 43 62 LDA $6243 +67E5- 29 0F AND #$0F +67E7- 8D 42 69 STA $6942 +67EA- AE 41 69 LDX $6941 +67ED- BD 43 69 LDA $6943,X +67F0- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +67F3- AE 42 69 LDX $6942 +67F6- BD 43 69 LDA $6943,X +67F9- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +67FC- 20 25 67 JSR $6725 +67FF- A0 8D LDY #$8D +6801- 00 BRK +6802- 20 25 67 JSR $6725 +6805- D8 CLD +6806- BA TSX +6807- A0 00 LDY #$00 +6809- AD 44 62 LDA $6244 +680C- 29 F0 AND #$F0 +680E- 4A LSR +680F- 4A LSR +6810- 4A LSR +6811- 4A LSR +6812- 8D 41 69 STA $6941 +6815- AD 44 62 LDA $6244 +6818- 29 0F AND #$0F +681A- 8D 42 69 STA $6942 +681D- AE 41 69 LDX $6941 +6820- BD 43 69 LDA $6943,X +6823- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6826- AE 42 69 LDX $6942 +6829- BD 43 69 LDA $6943,X +682C- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +682F- 20 25 67 JSR $6725 +6832- A0 8D LDY #$8D +6834- 00 BRK +6835- 20 25 67 JSR $6725 +6838- D9 BA A0 CMP $A0BA,Y +683B- 00 BRK +683C- AD 45 62 LDA $6245 +683F- 29 F0 AND #$F0 +6841- 4A LSR +6842- 4A LSR +6843- 4A LSR +6844- 4A LSR +6845- 8D 41 69 STA $6941 +6848- AD 45 62 LDA $6245 +684B- 29 0F AND #$0F +684D- 8D 42 69 STA $6942 +6850- AE 41 69 LDX $6941 +6853- BD 43 69 LDA $6943,X +6856- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6859- AE 42 69 LDX $6942 +685C- BD 43 69 LDA $6943,X +685F- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6862- 20 25 67 JSR $6725 +6865- A0 8D LDY #$8D +6867- 8D 00 20 STA $2000 +686A- 25 67 AND $67 +686C- D3 ??? +686D- D4 ??? +686E- C1 D4 CMP ($D4,X) +6870- D5 D3 CMP $D3,X +6872- A0 C6 LDY #$C6 +6874- CC C1 C7 CPY $C7C1 +6877- D3 ??? +6878- 8D 00 20 STA $2000 +687B- 25 67 AND $67 +687D- BD BD BD LDA $BDBD,X +6880- BD BD BD LDA $BDBD,X +6883- BD BD BD LDA $BDBD,X +6886- BD BD BD LDA $BDBD,X +6889- 8D 8D 00 STA $008D +688C- A9 00 LDA #$00 +688E- CD 46 62 CMP $6246 +6891- F0 12 BEQ $68A5 +6893- 20 25 67 JSR $6725 +6896- C3 ??? +6897- C1 D2 CMP ($D2,X) +6899- D2 D9 CMP ($D9) +689B- BA TSX +689C- A0 D3 LDY #$D3 +689E- C5 D4 CMP $D4 +68A0- 8D 00 4C STA $4C00 +68A3- B6 68 LDX $68,Y +68A5- 20 25 67 JSR $6725 +68A8- C3 ??? +68A9- C1 D2 CMP ($D2,X) +68AB- D2 D9 CMP ($D9) +68AD- BA TSX +68AE- A0 C3 LDY #$C3 +68B0- CC C5 C1 CPY $C1C5 +68B3- D2 8D CMP ($8D) +68B5- 00 BRK +68B6- A9 00 LDA #$00 +68B8- CD 47 62 CMP $6247 +68BB- F0 15 BEQ $68D2 +68BD- 20 25 67 JSR $6725 +68C0- CE C5 C7 DEC $C7C5 +68C3- C1 D4 CMP ($D4,X) +68C5- C9 D6 CMP #$D6 +68C7- C5 BA CMP $BA +68C9- A0 D3 LDY #$D3 +68CB- C5 D4 CMP $D4 +68CD- 8D 00 4C STA $4C00 +68D0- E6 68 INC $68 +68D2- 20 25 67 JSR $6725 +68D5- CE C5 C7 DEC $C7C5 +68D8- C1 D4 CMP ($D4,X) +68DA- C9 D6 CMP #$D6 +68DC- C5 BA CMP $BA +68DE- A0 C3 LDY #$C3 +68E0- CC C5 C1 CPY $C1C5 +68E3- D2 8D CMP ($8D) +68E5- 00 BRK +68E6- A9 00 LDA #$00 +68E8- CD 48 62 CMP $6248 +68EB- F0 11 BEQ $68FE +68ED- 20 25 67 JSR $6725 +68F0- DA PHX +68F1- C5 D2 CMP $D2 +68F3- CF ??? +68F4- BA TSX +68F5- A0 D3 LDY #$D3 +68F7- C5 D4 CMP $D4 +68F9- 8D 00 4C STA $4C00 +68FC- 0E 69 20 ASL $2069 +68FF- 25 67 AND $67 +6901- DA PHX +6902- C5 D2 CMP $D2 +6904- CF ??? +6905- BA TSX +6906- A0 C3 LDY #$C3 +6908- CC C5 C1 CPY $C1C5 +690B- D2 8D CMP ($8D) +690D- 00 BRK +690E- A9 00 LDA #$00 +6910- CD 49 62 CMP $6249 +6913- F0 15 BEQ $692A +6915- 20 25 67 JSR $6725 +6918- CF ??? +6919- D6 C5 DEC $C5,X +691B- D2 C6 CMP ($C6) +691D- CC CF D7 CPY $D7CF +6920- BA TSX +6921- A0 D3 LDY #$D3 +6923- C5 D4 CMP $D4 +6925- 8D 00 4C STA $4C00 +6928- 40 RTI +6929- 69 20 ADC #$20 +692B- 25 67 AND $67 +692D- CF ??? +692E- D6 C5 DEC $C5,X +6930- D2 C6 CMP ($C6) +6932- CC CF D7 CPY $D7CF +6935- BA TSX +6936- A0 C3 LDY #$C3 +6938- CC C5 C1 CPY $C1C5 +693B- D2 8D CMP ($8D) +693D- 8D 8D 00 STA $008D +6940- 60 RTS +6941- 00 BRK +6942- 00 BRK +6943- B0 B1 BCS $68F6 +6945- B2 B3 LDA ($B3) +6947- B4 B5 LDY $B5,X +6949- B6 B7 LDX $B7,Y +694B- B8 CLV +694C- B9 C1 C2 LDA $C2C1,Y +694F- C3 ??? +6950- C4 C5 CPY $C5 +6952- C6 A0 DEC $A0 +6954- 00 BRK +6955- B1 FE LDA ($FE),Y +6957- 8D 77 6A STA $6A77 +695A- C8 INY +695B- B1 FE LDA ($FE),Y +695D- 8D 78 6A STA $6A78 +6960- 20 4A 67 JSR $674A +6963- 68 PLA +6964- 85 FE STA $FE +6966- 68 PLA +6967- 85 FF STA $FF +6969- 68 PLA +696A- 8D 6E 6A STA $6A6E +696D- 68 PLA +696E- 8D 6F 6A STA $6A6F +6971- 68 PLA +6972- 8D 70 6A STA $6A70 +6975- 68 PLA +6976- 8D 71 6A STA $6A71 +6979- 68 PLA +697A- 8D 72 6A STA $6A72 +697D- 68 PLA +697E- 8D 73 6A STA $6A73 +6981- 68 PLA +6982- 8D 74 6A STA $6A74 +6985- 68 PLA +6986- 8D 75 6A STA $6A75 +6989- 68 PLA +698A- 8D 76 6A STA $6A76 +698D- 20 25 67 JSR $6725 +6990- A0 87 LDY #$87 +6992- 87 ??? +6993- 87 ??? +6994- 87 ??? +6995- 87 ??? +6996- 8D 8D 00 STA $008D +6999- 20 25 67 JSR $6725 +699C- C5 D2 CMP $D2 +699E- D2 CF CMP ($CF) +69A0- D2 A1 CMP ($A1) +69A2- 8D 8D 00 STA $008D +69A5- 20 25 67 JSR $6725 +69A8- D3 ??? +69A9- D5 C2 CMP $C2,X +69AB- D2 CF CMP ($CF) +69AD- D5 D4 CMP $D4,X +69AF- C9 CE CMP #$CE +69B1- C5 BA CMP $BA +69B3- A0 00 LDY #$00 +69B5- A0 00 LDY #$00 +69B7- AD 75 6A LDA $6A75 +69BA- 85 06 STA $06 +69BC- AD 76 6A LDA $6A76 +69BF- 85 07 STA $07 +69C1- B1 06 LDA ($06),Y +69C3- F0 06 BEQ $69CB +69C5- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +69C8- C8 INY +69C9- D0 F6 BNE $69C1 +69CB- 20 25 67 JSR $6725 +69CE- A0 8D LDY #$8D +69D0- 00 BRK +69D1- 20 25 67 JSR $6725 +69D4- CD C5 D3 CMP $D3C5 +69D7- D3 ??? +69D8- C1 C7 CMP ($C7,X) +69DA- C5 BA CMP $BA +69DC- A0 00 LDY #$00 +69DE- A0 00 LDY #$00 +69E0- AD 73 6A LDA $6A73 +69E3- 85 06 STA $06 +69E5- AD 74 6A LDA $6A74 +69E8- 85 07 STA $07 +69EA- B1 06 LDA ($06),Y +69EC- F0 06 BEQ $69F4 +69EE- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +69F1- C8 INY +69F2- D0 F6 BNE $69EA +69F4- 20 25 67 JSR $6725 +69F7- A0 8D LDY #$8D +69F9- 8D 00 20 STA $2000 +69FC- 46 67 LSR $67 +69FE- A0 00 LDY #$00 +6A00- AD 71 6A LDA $6A71 +6A03- 85 06 STA $06 +6A05- AD 72 6A LDA $6A72 +6A08- 85 07 STA $07 +6A0A- B1 06 LDA ($06),Y +6A0C- F0 06 BEQ $6A14 +6A0E- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6A11- C8 INY +6A12- D0 F6 BNE $6A0A +6A14- 20 25 67 JSR $6725 +6A17- A0 8D LDY #$8D +6A19- 00 BRK +6A1A- AD 70 6A LDA $6A70 +6A1D- 48 PHA +6A1E- AD 6F 6A LDA $6A6F +6A21- 48 PHA +6A22- AD 6E 6A LDA $6A6E +6A25- 48 PHA +6A26- 20 91 66 JSR $6691 +6A29- 20 46 67 JSR $6746 +6A2C- A5 FF LDA $FF +6A2E- 48 PHA +6A2F- A5 FE LDA $FE +6A31- 48 PHA +6A32- 20 25 67 JSR $6725 +6A35- A0 8D LDY #$8D +6A37- 8D 00 20 STA $2000 +6A3A- 46 67 LSR $67 +6A3C- 20 A4 67 JSR $67A4 +6A3F- 20 46 67 JSR $6746 +6A42- AD 41 62 LDA $6241 +6A45- C9 01 CMP #$01 +6A47- F0 01 BEQ $6A4A +6A49- 60 RTS +6A4A- 20 25 67 JSR $6725 +6A4D- A0 8D LDY #$8D +6A4F- 8D 00 20 STA $2000 +6A52- 25 67 AND $67 +6A54- C2 ??? +6A55- D2 C5 CMP ($C5) +6A57- C1 CB CMP ($CB,X) +6A59- A0 C1 LDY #$C1 +6A5B- D4 ??? +6A5C- BA TSX +6A5D- A0 00 LDY #$00 +6A5F- A9 6A LDA #$6A +6A61- 48 PHA +6A62- A9 77 LDA #$77 +6A64- 48 PHA +6A65- A9 02 LDA #$02 +6A67- 48 PHA +6A68- 20 91 66 JSR $6691 +6A6B- 4C D0 03 JMP $03D0 +6A6E- 00 BRK +6A6F- 00 BRK +6A70- 00 BRK +6A71- 00 BRK +6A72- 00 BRK +6A73- 00 BRK +6A74- 00 BRK +6A75- 00 BRK +6A76- 00 BRK +6A77- 00 BRK +6A78- 00 BRK +6A79- 68 PLA +6A7A- 85 FE STA $FE +6A7C- 68 PLA +6A7D- 85 FF STA $FF +6A7F- 68 PLA +6A80- 8D 14 6B STA $6B14 +6A83- 68 PLA +6A84- 8D 11 6B STA $6B11 +6A87- 8D 13 6B STA $6B13 +6A8A- 68 PLA +6A8B- 8D 10 6B STA $6B10 +6A8E- 8D 12 6B STA $6B12 +6A91- 68 PLA +6A92- 85 06 STA $06 +6A94- 68 PLA +6A95- 85 07 STA $07 +6A97- A0 00 LDY #$00 +6A99- A9 00 LDA #$00 +6A9B- 84 19 STY $19 +6A9D- F0 0F BEQ $6AAE +6A9F- 18 CLC +6AA0- 6D 10 6B ADC $6B10 +6AA3- AA TAX +6AA4- 98 TYA +6AA5- 65 19 ADC $19 +6AA7- A8 TAY +6AA8- 8A TXA +6AA9- 0E 10 6B ASL $6B10 +6AAC- 26 19 ROL $19 +6AAE- 4E 11 6B LSR $6B11 +6AB1- B0 EC BCS $6A9F +6AB3- D0 F4 BNE $6AA9 +6AB5- 18 CLC +6AB6- E8 INX +6AB7- E8 INX +6AB8- 90 01 BCC $6ABB +6ABA- C8 INY +6ABB- 8E 0E 6B STX $6B0E +6ABE- 8C 0F 6B STY $6B0F +6AC1- AD 14 6B LDA $6B14 +6AC4- AE 0F 6B LDX $6B0F +6AC7- F0 0C BEQ $6AD5 +6AC9- A0 00 LDY #$00 +6ACB- 91 06 STA ($06),Y +6ACD- C8 INY +6ACE- D0 FB BNE $6ACB +6AD0- E6 07 INC $07 +6AD2- CA DEX +6AD3- D0 F6 BNE $6ACB +6AD5- AE 0E 6B LDX $6B0E +6AD8- F0 08 BEQ $6AE2 +6ADA- A0 00 LDY #$00 +6ADC- 91 06 STA ($06),Y +6ADE- C8 INY +6ADF- CA DEX +6AE0- D0 FA BNE $6ADC +6AE2- A0 00 LDY #$00 +6AE4- AD 12 6B LDA $6B12 +6AE7- 91 06 STA ($06),Y +6AE9- C8 INY +6AEA- AD 13 6B LDA $6B13 +6AED- 91 06 STA ($06),Y +6AEF- A5 FF LDA $FF +6AF1- 48 PHA +6AF2- A5 FE LDA $FE +6AF4- 48 PHA +6AF5- A4 06 LDY $06 +6AF7- A6 07 LDX $07 +6AF9- AD 12 6B LDA $6B12 +6AFC- AD 0E 6B LDA $6B0E +6AFF- 8D 40 60 STA $6040 +6B02- AD 0F 6B LDA $6B0F +6B05- 8D 41 60 STA $6041 +6B08- A9 02 LDA #$02 +6B0A- 8D 3F 60 STA $603F +6B0D- 60 RTS +6B0E- 00 BRK +6B0F- 00 BRK +6B10- 00 BRK +6B11- 00 BRK +6B12- 00 BRK +6B13- 00 BRK +6B14- 00 BRK +6B15- 68 PLA +6B16- 85 FE STA $FE +6B18- 68 PLA +6B19- 85 FF STA $FF +6B1B- 68 PLA +6B1C- 8D 11 6C STA $6C11 +6B1F- 68 PLA +6B20- 8D 0F 6C STA $6C0F +6B23- 68 PLA +6B24- 8D 0A 6C STA $6C0A +6B27- 8D 0C 6C STA $6C0C +6B2A- 68 PLA +6B2B- 8D 09 6C STA $6C09 +6B2E- 8D 0B 6C STA $6C0B +6B31- 68 PLA +6B32- 85 06 STA $06 +6B34- 68 PLA +6B35- 85 07 STA $07 +6B37- A9 00 LDA #$00 +6B39- 8D 10 6C STA $6C10 +6B3C- A9 00 LDA #$00 +6B3E- A8 TAY +6B3F- 84 19 STY $19 +6B41- F0 0F BEQ $6B52 +6B43- 18 CLC +6B44- 6D 09 6C ADC $6C09 +6B47- AA TAX +6B48- 98 TYA +6B49- 65 19 ADC $19 +6B4B- A8 TAY +6B4C- 8A TXA +6B4D- 0E 09 6C ASL $6C09 +6B50- 26 19 ROL $19 +6B52- 4E 0A 6C LSR $6C0A +6B55- B0 EC BCS $6B43 +6B57- D0 F4 BNE $6B4D +6B59- 8E 0D 6C STX $6C0D +6B5C- 8C 0E 6C STY $6C0E +6B5F- A9 00 LDA #$00 +6B61- 8D 05 6C STA $6C05 +6B64- 8D 06 6C STA $6C06 +6B67- 8D 07 6C STA $6C07 +6B6A- 8D 08 6C STA $6C08 +6B6D- A2 10 LDX #$10 +6B6F- 4E 0E 6C LSR $6C0E +6B72- 6E 0D 6C ROR $6C0D +6B75- 90 10 BCC $6B87 +6B77- AD 07 6C LDA $6C07 +6B7A- 18 CLC +6B7B- 6D 0F 6C ADC $6C0F +6B7E- 8D 07 6C STA $6C07 +6B81- AD 08 6C LDA $6C08 +6B84- 6D 10 6C ADC $6C10 +6B87- 6A ROR +6B88- 8D 08 6C STA $6C08 +6B8B- 6E 07 6C ROR $6C07 +6B8E- 6E 06 6C ROR $6C06 +6B91- 6E 05 6C ROR $6C05 +6B94- CA DEX +6B95- D0 D8 BNE $6B6F +6B97- 18 CLC +6B98- EE 05 6C INC $6C05 +6B9B- EE 05 6C INC $6C05 +6B9E- EE 05 6C INC $6C05 +6BA1- 90 03 BCC $6BA6 +6BA3- EE 06 6C INC $6C06 +6BA6- AD 11 6C LDA $6C11 +6BA9- AE 06 6C LDX $6C06 +6BAC- F0 0C BEQ $6BBA +6BAE- A0 00 LDY #$00 +6BB0- 91 06 STA ($06),Y +6BB2- C8 INY +6BB3- D0 FB BNE $6BB0 +6BB5- E6 07 INC $07 +6BB7- CA DEX +6BB8- D0 F6 BNE $6BB0 +6BBA- AE 05 6C LDX $6C05 +6BBD- F0 08 BEQ $6BC7 +6BBF- A0 00 LDY #$00 +6BC1- 91 06 STA ($06),Y +6BC3- C8 INY +6BC4- CA DEX +6BC5- D0 FA BNE $6BC1 +6BC7- A0 00 LDY #$00 +6BC9- AD 0B 6C LDA $6C0B +6BCC- 91 06 STA ($06),Y +6BCE- C8 INY +6BCF- AD 0C 6C LDA $6C0C +6BD2- 91 06 STA ($06),Y +6BD4- C8 INY +6BD5- AD 0F 6C LDA $6C0F +6BD8- 91 06 STA ($06),Y +6BDA- A5 FF LDA $FF +6BDC- 48 PHA +6BDD- A5 FE LDA $FE +6BDF- 48 PHA +6BE0- A4 06 LDY $06 +6BE2- A6 07 LDX $07 +6BE4- AD 05 6C LDA $6C05 +6BE7- 8D 40 60 STA $6040 +6BEA- AD 06 6C LDA $6C06 +6BED- 8D 41 60 STA $6041 +6BF0- AD 07 6C LDA $6C07 +6BF3- 8D 42 60 STA $6042 +6BF6- AD 08 6C LDA $6C08 +6BF9- 8D 43 60 STA $6043 +6BFC- A9 04 LDA #$04 +6BFE- 8D 3F 60 STA $603F +6C01- AD 0F 6C LDA $6C0F +6C04- 60 RTS +6C05- 00 BRK +6C06- 00 BRK +6C07- 00 BRK +6C08- 00 BRK +6C09- 00 BRK +6C0A- 00 BRK +6C0B- 00 BRK +6C0C- 00 BRK +6C0D- 00 BRK +6C0E- 00 BRK +6C0F- 00 BRK +6C10- 00 BRK +6C11- 00 BRK +6C12- 68 PLA +6C13- 85 FE STA $FE +6C15- 68 PLA +6C16- 85 FF STA $FF +6C18- 68 PLA +6C19- 8D DF 6C STA $6CDF +6C1C- CE DF 6C DEC $6CDF +6C1F- 68 PLA +6C20- 85 06 STA $06 +6C22- 68 PLA +6C23- 85 07 STA $07 +6C25- A9 00 LDA #$00 +6C27- 8D E0 6C STA $6CE0 +6C2A- A0 01 LDY #$01 +6C2C- B1 06 LDA ($06),Y +6C2E- 8D E1 6C STA $6CE1 +6C31- 8D 3F 60 STA $603F +6C34- 88 DEY +6C35- B1 06 LDA ($06),Y +6C37- 8D E2 6C STA $6CE2 +6C3A- AD 42 62 LDA $6242 +6C3D- C9 01 CMP #$01 +6C3F- F0 03 BEQ $6C44 +6C41- 4C 6D 6C JMP $6C6D +6C44- AD DF 6C LDA $6CDF +6C47- CD E2 6C CMP $6CE2 +6C4A- B0 03 BCS $6C4F +6C4C- 4C 6D 6C JMP $6C6D +6C4F- A9 6C LDA #$6C +6C51- 48 PHA +6C52- A9 E3 LDA #$E3 +6C54- 48 PHA +6C55- A9 6D LDA #$6D +6C57- 48 PHA +6C58- A9 1F LDA #$1F +6C5A- 48 PHA +6C5B- A9 6C LDA #$6C +6C5D- 48 PHA +6C5E- A9 F8 LDA #$F8 +6C60- 48 PHA +6C61- A9 6C LDA #$6C +6C63- 48 PHA +6C64- A9 DD LDA #$DD +6C66- 48 PHA +6C67- A9 06 LDA #$06 +6C69- 48 PHA +6C6A- 20 53 69 JSR $6953 +6C6D- A0 00 LDY #$00 +6C6F- A9 00 LDA #$00 +6C71- A8 TAY +6C72- 84 19 STY $19 +6C74- F0 0F BEQ $6C85 +6C76- 18 CLC +6C77- 6D DF 6C ADC $6CDF +6C7A- AA TAX +6C7B- 98 TYA +6C7C- 65 19 ADC $19 +6C7E- A8 TAY +6C7F- 8A TXA +6C80- 0E DF 6C ASL $6CDF +6C83- 26 19 ROL $19 +6C85- 4E E1 6C LSR $6CE1 +6C88- B0 EC BCS $6C76 +6C8A- D0 F4 BNE $6C80 +6C8C- 8E DF 6C STX $6CDF +6C8F- 8C E0 6C STY $6CE0 +6C92- 18 CLC +6C93- A9 02 LDA #$02 +6C95- 6D DF 6C ADC $6CDF +6C98- 8D DD 6C STA $6CDD +6C9B- A9 00 LDA #$00 +6C9D- 6D E0 6C ADC $6CE0 +6CA0- 8D DE 6C STA $6CDE +6CA3- 18 CLC +6CA4- AD DD 6C LDA $6CDD +6CA7- 65 06 ADC $06 +6CA9- 8D DD 6C STA $6CDD +6CAC- AD DE 6C LDA $6CDE +6CAF- 65 07 ADC $07 +6CB1- 8D DE 6C STA $6CDE +6CB4- A0 00 LDY #$00 +6CB6- AD DD 6C LDA $6CDD +6CB9- 85 06 STA $06 +6CBB- AD DE 6C LDA $6CDE +6CBE- 85 07 STA $07 +6CC0- B1 06 LDA ($06),Y +6CC2- 99 40 60 STA $6040,Y +6CC5- C8 INY +6CC6- CC 3F 60 CPY $603F +6CC9- 90 F5 BCC $6CC0 +6CCB- F0 F3 BEQ $6CC0 +6CCD- A5 FF LDA $FF +6CCF- 48 PHA +6CD0- A5 FE LDA $FE +6CD2- 48 PHA +6CD3- AC DD 6C LDY $6CDD +6CD6- AE DE 6C LDX $6CDE +6CD9- AD 3F 60 LDA $603F +6CDC- 60 RTS +6CDD- 00 BRK +6CDE- 00 BRK +6CDF- 00 BRK +6CE0- 00 BRK +6CE1- 00 BRK +6CE2- 00 BRK +6CE3- C1 C7 CMP ($C7,X) +6CE5- C5 D4 CMP $D4 +6CE7- B8 CLV +6CE8- B1 A0 LDA ($A0),Y +6CEA- A8 TAY +6CEB- C7 ??? +6CEC- C5 D4 CMP $D4 +6CEE- B8 CLV +6CEF- B1 A0 LDA ($A0),Y +6CF1- CD C1 C3 CMP $C3C1 +6CF4- D2 CF CMP ($CF) +6CF6- A9 00 LDA #$00 +6CF8- C4 D5 CPY $D5 +6CFA- CD D0 C9 CMP $C9D0 +6CFD- CE C7 A0 DEC $A0C7 +6D00- D2 C5 CMP ($C5) +6D02- D3 ??? +6D03- A8 TAY +6D04- B2 A9 LDA ($A9) +6D06- A0 C9 LDY #$C9 +6D08- C4 D8 CPY $D8 +6D0A- A8 TAY +6D0B- B2 A9 LDA ($A9) +6D0D- A0 C5 LDY #$C5 +6D0F- D3 ??? +6D10- C9 DA CMP #$DA +6D12- C5 A8 CMP $A8 +6D14- B1 A9 LDA ($A9),Y +6D16- A0 C1 LDY #$C1 +6D18- CC C5 CE CPY $CEC5 +6D1B- A8 TAY +6D1C- B1 A9 LDA ($A9),Y +6D1E- 00 BRK +6D1F- CF ??? +6D20- D5 D4 CMP $D4,X +6D22- A0 CF LDY #$CF +6D24- C6 A0 DEC $A0 +6D26- C2 ??? +6D27- CF ??? +6D28- D5 CE CMP $CE,X +6D2A- C4 D3 CPY $D3 +6D2C- A1 A0 LDA ($A0,X) +6D2E- C9 CE CMP #$CE +6D30- C4 C5 CPY $C5 +6D32- D8 CLD +6D33- A0 BE LDY #$BE +6D35- A0 C1 LDY #$C1 +6D37- D2 D2 CMP ($D2) +6D39- C1 D9 CMP ($D9,X) +6D3B- A0 CC LDY #$CC +6D3D- C5 CE CMP $CE +6D3F- C7 ??? +6D40- D4 ??? +6D41- C8 INY +6D42- 00 BRK +6D43- 68 PLA +6D44- 85 FE STA $FE +6D46- 68 PLA +6D47- 85 FF STA $FF +6D49- 68 PLA +6D4A- 8D 98 6E STA $6E98 +6D4D- 68 PLA +6D4E- 8D 96 6E STA $6E96 +6D51- 68 PLA +6D52- 85 06 STA $06 +6D54- 68 PLA +6D55- 85 07 STA $07 +6D57- CE 96 6E DEC $6E96 +6D5A- CE 98 6E DEC $6E98 +6D5D- A0 02 LDY #$02 +6D5F- B1 06 LDA ($06),Y +6D61- 8D A2 6E STA $6EA2 +6D64- 8D A4 6E STA $6EA4 +6D67- 88 DEY +6D68- B1 06 LDA ($06),Y +6D6A- 8D 9B 6E STA $6E9B +6D6D- 88 DEY +6D6E- B1 06 LDA ($06),Y +6D70- 8D 9A 6E STA $6E9A +6D73- A9 00 LDA #$00 +6D75- 8D A3 6E STA $6EA3 +6D78- AD 42 62 LDA $6242 +6D7B- C9 01 CMP #$01 +6D7D- F0 03 BEQ $6D82 +6D7F- 4C E2 6D JMP $6DE2 +6D82- AD 96 6E LDA $6E96 +6D85- CD 9A 6E CMP $6E9A +6D88- B0 03 BCS $6D8D +6D8A- 4C AB 6D JMP $6DAB +6D8D- A9 6E LDA #$6E +6D8F- 48 PHA +6D90- A9 A5 LDA #$A5 +6D92- 48 PHA +6D93- A9 6F LDA #$6F +6D95- 48 PHA +6D96- A9 03 LDA #$03 +6D98- 48 PHA +6D99- A9 6E LDA #$6E +6D9B- 48 PHA +6D9C- A9 BA LDA #$BA +6D9E- 48 PHA +6D9F- A9 6E LDA #$6E +6DA1- 48 PHA +6DA2- A9 96 LDA #$96 +6DA4- 48 PHA +6DA5- A9 0F LDA #$0F +6DA7- 48 PHA +6DA8- 20 53 69 JSR $6953 +6DAB- AD 98 6E LDA $6E98 +6DAE- CD 9B 6E CMP $6E9B +6DB1- B0 03 BCS $6DB6 +6DB3- 4C D4 6D JMP $6DD4 +6DB6- A9 6E LDA #$6E +6DB8- 48 PHA +6DB9- A9 A5 LDA #$A5 +6DBB- 48 PHA +6DBC- A9 6F LDA #$6F +6DBE- 48 PHA +6DBF- A9 24 LDA #$24 +6DC1- 48 PHA +6DC2- A9 6E LDA #$6E +6DC4- 48 PHA +6DC5- A9 BA LDA #$BA +6DC7- 48 PHA +6DC8- A9 6E LDA #$6E +6DCA- 48 PHA +6DCB- A9 96 LDA #$96 +6DCD- 48 PHA +6DCE- A9 0F LDA #$0F +6DD0- 48 PHA +6DD1- 20 53 69 JSR $6953 +6DD4- AD 96 6E LDA $6E96 +6DD7- C9 FF CMP #$FF +6DD9- F0 B2 BEQ $6D8D +6DDB- AD 98 6E LDA $6E98 +6DDE- C9 FF CMP #$FF +6DE0- F0 D4 BEQ $6DB6 +6DE2- A9 00 LDA #$00 +6DE4- A8 TAY +6DE5- 84 19 STY $19 +6DE7- F0 0F BEQ $6DF8 +6DE9- 18 CLC +6DEA- 6D 98 6E ADC $6E98 +6DED- AA TAX +6DEE- 98 TYA +6DEF- 65 19 ADC $19 +6DF1- A8 TAY +6DF2- 8A TXA +6DF3- 0E 98 6E ASL $6E98 +6DF6- 26 19 ROL $19 +6DF8- 4E 9B 6E LSR $6E9B +6DFB- B0 EC BCS $6DE9 +6DFD- D0 F4 BNE $6DF3 +6DFF- 8E A0 6E STX $6EA0 +6E02- 8C A1 6E STY $6EA1 +6E05- 18 CLC +6E06- AD A0 6E LDA $6EA0 +6E09- 6D 96 6E ADC $6E96 +6E0C- 8D A0 6E STA $6EA0 +6E0F- 90 08 BCC $6E19 +6E11- AD A1 6E LDA $6EA1 +6E14- 69 01 ADC #$01 +6E16- 8D A1 6E STA $6EA1 +6E19- A9 00 LDA #$00 +6E1B- 8D 9E 6E STA $6E9E +6E1E- 8D 9F 6E STA $6E9F +6E21- A2 10 LDX #$10 +6E23- 4E A1 6E LSR $6EA1 +6E26- 6E A0 6E ROR $6EA0 +6E29- 90 10 BCC $6E3B +6E2B- AD 9E 6E LDA $6E9E +6E2E- 18 CLC +6E2F- 6D A2 6E ADC $6EA2 +6E32- 8D 9E 6E STA $6E9E +6E35- AD 9F 6E LDA $6E9F +6E38- 6D A3 6E ADC $6EA3 +6E3B- 6A ROR +6E3C- 8D 9F 6E STA $6E9F +6E3F- 6E 9E 6E ROR $6E9E +6E42- 6E 9D 6E ROR $6E9D +6E45- 6E 9C 6E ROR $6E9C +6E48- CA DEX +6E49- D0 D8 BNE $6E23 +6E4B- 18 CLC +6E4C- EE 9C 6E INC $6E9C +6E4F- EE 9C 6E INC $6E9C +6E52- EE 9C 6E INC $6E9C +6E55- 90 03 BCC $6E5A +6E57- EE 9D 6E INC $6E9D +6E5A- 18 CLC +6E5B- AD 9C 6E LDA $6E9C +6E5E- 65 06 ADC $06 +6E60- 8D 9C 6E STA $6E9C +6E63- AD 9D 6E LDA $6E9D +6E66- 65 07 ADC $07 +6E68- 8D 9D 6E STA $6E9D +6E6B- AC 9C 6E LDY $6E9C +6E6E- AE 9D 6E LDX $6E9D +6E71- 84 06 STY $06 +6E73- 86 07 STX $07 +6E75- A0 00 LDY #$00 +6E77- B1 06 LDA ($06),Y +6E79- 99 40 60 STA $6040,Y +6E7C- C8 INY +6E7D- CC A4 6E CPY $6EA4 +6E80- D0 F5 BNE $6E77 +6E82- AD A4 6E LDA $6EA4 +6E85- 8D 3F 60 STA $603F +6E88- A5 FF LDA $FF +6E8A- 48 PHA +6E8B- A5 FE LDA $FE +6E8D- 48 PHA +6E8E- AD 3F 60 LDA $603F +6E91- A4 06 LDY $06 +6E93- A6 07 LDX $07 +6E95- 60 RTS +6E96- 00 BRK +6E97- 00 BRK +6E98- 00 BRK +6E99- 00 BRK +6E9A- 00 BRK +6E9B- 00 BRK +6E9C- 00 BRK +6E9D- 00 BRK +6E9E- 00 BRK +6E9F- 00 BRK +6EA0- 00 BRK +6EA1- 00 BRK +6EA2- 00 BRK +6EA3- 00 BRK +6EA4- 00 BRK +6EA5- C1 C7 CMP ($C7,X) +6EA7- C5 D4 CMP $D4 +6EA9- B8 CLV +6EAA- B2 A0 LDA ($A0) +6EAC- A8 TAY +6EAD- C7 ??? +6EAE- C5 D4 CMP $D4 +6EB0- B8 CLV +6EB1- B2 A0 LDA ($A0) +6EB3- CD C1 C3 CMP $C3C1 +6EB6- D2 CF CMP ($CF) +6EB8- A9 00 LDA #$00 +6EBA- BA TSX +6EBB- D8 CLD +6EBC- C9 C4 CMP #$C4 +6EBE- D8 CLD +6EBF- A8 TAY +6EC0- B2 A9 LDA ($A9) +6EC2- A0 BA LDY #$BA +6EC4- D9 C9 C4 CMP $C4C9,Y +6EC7- D8 CLD +6EC8- A8 TAY +6EC9- B2 A9 LDA ($A9) +6ECB- A0 BA LDY #$BA +6ECD- D8 CLD +6ECE- CC C5 CE CPY $CEC5 +6ED1- A8 TAY +6ED2- B1 A9 LDA ($A9),Y +6ED4- A0 BA LDY #$BA +6ED6- D9 CC C5 CMP $C5CC,Y +6ED9- CE A8 B1 DEC $B1A8 +6EDC- A9 BA LDA #$BA +6EDE- D0 D2 BNE $6EB2 +6EE0- CF ??? +6EE1- C4 A8 CPY $A8 +6EE3- B4 A9 LDY $A9,X +6EE5- A0 BA LDY #$BA +6EE7- CD CC C9 CMP $C9CC +6EEA- C5 D2 CMP $D2 +6EEC- A8 TAY +6EED- B2 A9 LDA ($A9) +6EEF- A0 BA LDY #$BA +6EF1- CD C3 C1 CMP $C1C3 +6EF4- CE C4 A8 DEC $A8C4 +6EF7- B2 A9 LDA ($A9) +6EF9- A0 BA LDY #$BA +6EFB- C5 CC CMP $CC +6EFD- C5 CE CMP $CE +6EFF- A8 TAY +6F00- B1 A9 LDA ($A9),Y +6F02- 00 BRK +6F03- CF ??? +6F04- D5 D4 CMP $D4,X +6F06- A0 CF LDY #$CF +6F08- C6 A0 DEC $A0 +6F0A- C2 ??? +6F0B- CF ??? +6F0C- D5 CE CMP $CE,X +6F0E- C4 D3 CPY $D3 +6F10- A1 A0 LDA ($A0,X) +6F12- A0 D8 LDY #$D8 +6F14- A0 BE LDY #$BE +6F16- A0 CD LDY #$CD +6F18- C1 D8 CMP ($D8,X) +6F1A- A0 CF LDY #$CF +6F1C- D2 A0 CMP ($A0) +6F1E- C9 D3 CMP #$D3 +6F20- A0 B0 LDY #$B0 +6F22- AE 00 CF LDX $CF00 +6F25- D5 D4 CMP $D4,X +6F27- A0 CF LDY #$CF +6F29- C6 A0 DEC $A0 +6F2B- C2 ??? +6F2C- CF ??? +6F2D- D5 CE CMP $CE,X +6F2F- C4 D3 CPY $D3 +6F31- A1 A0 LDA ($A0,X) +6F33- D9 A0 BE CMP $BEA0,Y +6F36- A0 CD LDY #$CD +6F38- C1 D8 CMP ($D8,X) +6F3A- A0 CF LDY #$CF +6F3C- D2 A0 CMP ($A0) +6F3E- C9 D3 CMP #$D3 +6F40- A0 B0 LDY #$B0 +6F42- AE 00 68 LDX $6800 +6F45- 85 FE STA $FE +6F47- 68 PLA +6F48- 85 FF STA $FF +6F4A- 68 PLA +6F4B- 8D 14 70 STA $7014 +6F4E- 8D 16 70 STA $7016 +6F51- CE 14 70 DEC $7014 +6F54- CE 16 70 DEC $7016 +6F57- 68 PLA +6F58- 85 ED STA $ED +6F5A- 68 PLA +6F5B- 85 EE STA $EE +6F5D- 68 PLA +6F5E- 85 EB STA $EB +6F60- 68 PLA +6F61- 85 EC STA $EC +6F63- A0 00 LDY #$00 +6F65- B1 ED LDA ($ED),Y +6F67- 8D 13 70 STA $7013 +6F6A- A0 01 LDY #$01 +6F6C- B1 ED LDA ($ED),Y +6F6E- 8D 11 70 STA $7011 +6F71- 8D 12 70 STA $7012 +6F74- AD 42 62 LDA $6242 +6F77- C9 01 CMP #$01 +6F79- F0 03 BEQ $6F7E +6F7B- 4C AA 6F JMP $6FAA +6F7E- AD 16 70 LDA $7016 +6F81- 18 CLC +6F82- 69 01 ADC #$01 +6F84- CD 13 70 CMP $7013 +6F87- B0 03 BCS $6F8C +6F89- 4C AA 6F JMP $6FAA +6F8C- A9 70 LDA #$70 +6F8E- 48 PHA +6F8F- A9 1A LDA #$1A +6F91- 48 PHA +6F92- A9 70 LDA #$70 +6F94- 48 PHA +6F95- A9 70 LDA #$70 +6F97- 48 PHA +6F98- A9 70 LDA #$70 +6F9A- 48 PHA +6F9B- A9 2F LDA #$2F +6F9D- 48 PHA +6F9E- A9 70 LDA #$70 +6FA0- 48 PHA +6FA1- A9 11 LDA #$11 +6FA3- 48 PHA +6FA4- A9 09 LDA #$09 +6FA6- 48 PHA +6FA7- 20 53 69 JSR $6953 +6FAA- A0 00 LDY #$00 +6FAC- A9 00 LDA #$00 +6FAE- 84 19 STY $19 +6FB0- 84 1A STY $1A +6FB2- F0 0F BEQ $6FC3 +6FB4- 18 CLC +6FB5- 6D 14 70 ADC $7014 +6FB8- AA TAX +6FB9- 98 TYA +6FBA- 65 19 ADC $19 +6FBC- A8 TAY +6FBD- 8A TXA +6FBE- 0E 14 70 ASL $7014 +6FC1- 26 19 ROL $19 +6FC3- 4E 11 70 LSR $7011 +6FC6- B0 EC BCS $6FB4 +6FC8- D0 F4 BNE $6FBE +6FCA- 8E 16 70 STX $7016 +6FCD- 8C 17 70 STY $7017 +6FD0- 18 CLC +6FD1- A9 02 LDA #$02 +6FD3- 6D 16 70 ADC $7016 +6FD6- 8D 18 70 STA $7018 +6FD9- A9 00 LDA #$00 +6FDB- 6D 17 70 ADC $7017 +6FDE- 8D 19 70 STA $7019 +6FE1- 18 CLC +6FE2- AD 18 70 LDA $7018 +6FE5- 65 ED ADC $ED +6FE7- 8D 18 70 STA $7018 +6FEA- AD 19 70 LDA $7019 +6FED- 65 EE ADC $EE +6FEF- 8D 19 70 STA $7019 +6FF2- 85 09 STA $09 +6FF4- AD 18 70 LDA $7018 +6FF7- 85 08 STA $08 +6FF9- B1 EB LDA ($EB),Y +6FFB- 91 08 STA ($08),Y +6FFD- C8 INY +6FFE- CC 12 70 CPY $7012 +7001- D0 F6 BNE $6FF9 +7003- A5 FF LDA $FF +7005- 48 PHA +7006- A5 FE LDA $FE +7008- 48 PHA +7009- A6 09 LDX $09 +700B- A4 08 LDY $08 +700D- AD 11 70 LDA $7011 +7010- 60 RTS +7011- 00 BRK +7012- 00 BRK +7013- 00 BRK +7014- 00 BRK +7015- 00 BRK +7016- 00 BRK +7017- 00 BRK +7018- 00 BRK +7019- 00 BRK +701A- C1 D0 CMP ($D0,X) +701C- D5 D4 CMP $D4,X +701E- B8 CLV +701F- B1 A0 LDA ($A0),Y +7021- A8 TAY +7022- D0 D5 BNE $6FF9 +7024- D4 ??? +7025- B8 CLV +7026- B1 A0 LDA ($A0),Y +7028- CD C1 C3 CMP $C3C1 +702B- D2 CF CMP ($CF) +702D- A9 00 LDA #$00 +702F- C4 D5 CPY $D5 +7031- CD D0 C9 CMP $C9D0 +7034- CE C7 A0 DEC $A0C7 +7037- BA TSX +7038- C5 D3 CMP $D3 +703A- C9 DA CMP #$DA +703C- C5 A8 CMP $A8 +703E- B1 A9 LDA ($A9),Y +7040- A0 BA LDY #$BA +7042- C5 D3 CMP $D3 +7044- C9 DA CMP #$DA +7046- C5 C2 CMP $C2 +7048- C1 CB CMP ($CB,X) +704A- A8 TAY +704B- B1 A9 LDA ($A9),Y +704D- A0 BA LDY #$BA +704F- C1 D3 CMP ($D3,X) +7051- C9 DA CMP #$DA +7053- C5 A8 CMP $A8 +7055- B1 A9 LDA ($A9),Y +7057- BA TSX +7058- C1 C9 CMP ($C9,X) +705A- C4 D8 CPY $D8 +705C- A8 TAY +705D- B2 A9 LDA ($A9) +705F- A0 BA LDY #$BA +7061- C9 C4 CMP #$C4 +7063- D8 CLD +7064- A8 TAY +7065- B2 A9 LDA ($A9) +7067- A0 BA LDY #$BA +7069- D2 C5 CMP ($C5) +706B- D3 ??? +706C- A8 TAY +706D- B2 A9 LDA ($A9) +706F- 00 BRK +7070- CF ??? +7071- D5 D4 CMP $D4,X +7073- A0 CF LDY #$CF +7075- C6 A0 DEC $A0 +7077- C2 ??? +7078- CF ??? +7079- D5 CE CMP $CE,X +707B- C4 D3 CPY $D3 +707D- A1 A0 LDA ($A0,X) +707F- C9 CE CMP #$CE +7081- C4 C5 CPY $C5 +7083- D8 CLD +7084- A0 BE LDY #$BE +7086- A0 C1 LDY #$C1 +7088- D2 D2 CMP ($D2) +708A- C1 D9 CMP ($D9,X) +708C- A0 CC LDY #$CC +708E- C5 CE CMP $CE +7090- C7 ??? +7091- D4 ??? +7092- C8 INY +7093- 00 BRK +7094- 68 PLA +7095- 85 FE STA $FE +7097- 68 PLA +7098- 85 FF STA $FF +709A- 68 PLA +709B- 8D F0 71 STA $71F0 +709E- CE F0 71 DEC $71F0 +70A1- 68 PLA +70A2- 8D EF 71 STA $71EF +70A5- CE EF 71 DEC $71EF +70A8- 68 PLA +70A9- 85 ED STA $ED +70AB- 68 PLA +70AC- 85 EE STA $EE +70AE- 68 PLA +70AF- 85 EB STA $EB +70B1- 68 PLA +70B2- 85 EC STA $EC +70B4- A0 02 LDY #$02 +70B6- B1 ED LDA ($ED),Y +70B8- 8D EE 71 STA $71EE +70BB- 8D F1 71 STA $71F1 +70BE- A9 00 LDA #$00 +70C0- 8D F2 71 STA $71F2 +70C3- A0 00 LDY #$00 +70C5- B1 ED LDA ($ED),Y +70C7- 8D F9 71 STA $71F9 +70CA- C8 INY +70CB- B1 ED LDA ($ED),Y +70CD- 8D FA 71 STA $71FA +70D0- A0 00 LDY #$00 +70D2- AD 42 62 LDA $6242 +70D5- C9 01 CMP #$01 +70D7- F0 03 BEQ $70DC +70D9- 4C 3C 71 JMP $713C +70DC- AD EF 71 LDA $71EF +70DF- CD F9 71 CMP $71F9 +70E2- B0 03 BCS $70E7 +70E4- 4C 05 71 JMP $7105 +70E7- A9 71 LDA #$71 +70E9- 48 PHA +70EA- A9 FB LDA #$FB +70EC- 48 PHA +70ED- A9 72 LDA #$72 +70EF- 48 PHA +70F0- A9 50 LDA #$50 +70F2- 48 PHA +70F3- A9 72 LDA #$72 +70F5- 48 PHA +70F6- A9 10 LDA #$10 +70F8- 48 PHA +70F9- A9 71 LDA #$71 +70FB- 48 PHA +70FC- A9 EF LDA #$EF +70FE- 48 PHA +70FF- A9 0F LDA #$0F +7101- 48 PHA +7102- 20 53 69 JSR $6953 +7105- AD F0 71 LDA $71F0 +7108- CD FA 71 CMP $71FA +710B- B0 03 BCS $7110 +710D- 4C 2E 71 JMP $712E +7110- A9 71 LDA #$71 +7112- 48 PHA +7113- A9 FB LDA #$FB +7115- 48 PHA +7116- A9 72 LDA #$72 +7118- 48 PHA +7119- A9 74 LDA #$74 +711B- 48 PHA +711C- A9 72 LDA #$72 +711E- 48 PHA +711F- A9 10 LDA #$10 +7121- 48 PHA +7122- A9 71 LDA #$71 +7124- 48 PHA +7125- A9 EF LDA #$EF +7127- 48 PHA +7128- A9 0F LDA #$0F +712A- 48 PHA +712B- 20 53 69 JSR $6953 +712E- AD EF 71 LDA $71EF +7131- C9 FF CMP #$FF +7133- F0 B2 BEQ $70E7 +7135- AD F0 71 LDA $71F0 +7138- C9 FF CMP #$FF +713A- F0 D4 BEQ $7110 +713C- A9 00 LDA #$00 +713E- A8 TAY +713F- 84 19 STY $19 +7141- F0 0F BEQ $7152 +7143- 18 CLC +7144- 6D F0 71 ADC $71F0 +7147- AA TAX +7148- 98 TYA +7149- 65 19 ADC $19 +714B- A8 TAY +714C- 8A TXA +714D- 0E F0 71 ASL $71F0 +7150- 26 19 ROL $19 +7152- 4E FA 71 LSR $71FA +7155- B0 EC BCS $7143 +7157- D0 F4 BNE $714D +7159- 8E F3 71 STX $71F3 +715C- 8C F4 71 STY $71F4 +715F- 18 CLC +7160- AD F3 71 LDA $71F3 +7163- 6D EF 71 ADC $71EF +7166- 8D F3 71 STA $71F3 +7169- 90 08 BCC $7173 +716B- AD F4 71 LDA $71F4 +716E- 69 01 ADC #$01 +7170- 8D F4 71 STA $71F4 +7173- A9 00 LDA #$00 +7175- 8D F7 71 STA $71F7 +7178- 8D F8 71 STA $71F8 +717B- A2 10 LDX #$10 +717D- 4E F4 71 LSR $71F4 +7180- 6E F3 71 ROR $71F3 +7183- 90 10 BCC $7195 +7185- AD F7 71 LDA $71F7 +7188- 18 CLC +7189- 6D F1 71 ADC $71F1 +718C- 8D F7 71 STA $71F7 +718F- AD F8 71 LDA $71F8 +7192- 6D F2 71 ADC $71F2 +7195- 6A ROR +7196- 8D F8 71 STA $71F8 +7199- 6E F7 71 ROR $71F7 +719C- 6E F6 71 ROR $71F6 +719F- 6E F5 71 ROR $71F5 +71A2- CA DEX +71A3- D0 D8 BNE $717D +71A5- 18 CLC +71A6- EE F5 71 INC $71F5 +71A9- EE F5 71 INC $71F5 +71AC- EE F5 71 INC $71F5 +71AF- 90 03 BCC $71B4 +71B1- EE F6 71 INC $71F6 +71B4- 18 CLC +71B5- AD F5 71 LDA $71F5 +71B8- 65 ED ADC $ED +71BA- 8D F5 71 STA $71F5 +71BD- AD F6 71 LDA $71F6 +71C0- 65 EE ADC $EE +71C2- 8D F6 71 STA $71F6 +71C5- AD F5 71 LDA $71F5 +71C8- AC F5 71 LDY $71F5 +71CB- AE F6 71 LDX $71F6 +71CE- 84 08 STY $08 +71D0- 86 09 STX $09 +71D2- A0 00 LDY #$00 +71D4- A2 00 LDX #$00 +71D6- B1 EB LDA ($EB),Y +71D8- 91 08 STA ($08),Y +71DA- C8 INY +71DB- CC EE 71 CPY $71EE +71DE- D0 F6 BNE $71D6 +71E0- A5 FF LDA $FF +71E2- 48 PHA +71E3- A5 FE LDA $FE +71E5- 48 PHA +71E6- A6 09 LDX $09 +71E8- A4 08 LDY $08 +71EA- AD EE 71 LDA $71EE +71ED- 60 RTS +71EE- 00 BRK +71EF- 00 BRK +71F0- 00 BRK +71F1- 00 BRK +71F2- 00 BRK +71F3- 00 BRK +71F4- 00 BRK +71F5- 00 BRK +71F6- 00 BRK +71F7- 00 BRK +71F8- 00 BRK +71F9- 00 BRK +71FA- 00 BRK +71FB- C1 D0 CMP ($D0,X) +71FD- D5 D4 CMP $D4,X +71FF- B8 CLV +7200- B2 A0 LDA ($A0) +7202- A8 TAY +7203- D0 D5 BNE $71DA +7205- D4 ??? +7206- B8 CLV +7207- B2 A0 LDA ($A0) +7209- CD C1 C3 CMP $C3C1 +720C- D2 CF CMP ($CF) +720E- A9 00 LDA #$00 +7210- BA TSX +7211- D8 CLD +7212- C9 C4 CMP #$C4 +7214- D8 CLD +7215- A8 TAY +7216- B1 A9 LDA ($A9),Y +7218- A0 BA LDY #$BA +721A- D9 C9 C4 CMP $C4C9,Y +721D- D8 CLD +721E- A8 TAY +721F- B1 A9 LDA ($A9),Y +7221- A0 BA LDY #$BA +7223- CD C3 C1 CMP $C1C3 +7226- CE C4 A8 DEC $A8C4 +7229- B2 A9 LDA ($A9) +722B- A0 BA LDY #$BA +722D- CD CC C9 CMP $C9CC +7230- C5 D2 CMP $D2 +7232- A8 TAY +7233- B2 A9 LDA ($A9) +7235- BA TSX +7236- D0 D2 BNE $720A +7238- CF ??? +7239- C4 A8 CPY $A8 +723B- B4 A9 LDY $A9,X +723D- A0 BA LDY #$BA +723F- D8 CLD +7240- CC C5 CE CPY $CEC5 +7243- A8 TAY +7244- B1 A9 LDA ($A9),Y +7246- A0 BA LDY #$BA +7248- D9 CC C5 CMP $C5CC,Y +724B- CE A8 B1 DEC $B1A8 +724E- A9 00 LDA #$00 +7250- CF ??? +7251- D5 D4 CMP $D4,X +7253- A0 CF LDY #$CF +7255- C6 A0 DEC $A0 +7257- C2 ??? +7258- CF ??? +7259- D5 CE CMP $CE,X +725B- C4 D3 CPY $D3 +725D- A1 A0 LDA ($A0,X) +725F- D8 CLD +7260- A0 BE LDY #$BE +7262- A0 CD LDY #$CD +7264- C1 D8 CMP ($D8,X) +7266- C9 CD CMP #$CD +7268- D5 CD CMP $CD,X +726A- A0 CF LDY #$CF +726C- D2 A0 CMP ($A0) +726E- C9 D3 CMP #$D3 +7270- A0 B0 LDY #$B0 +7272- AE 00 CF LDX $CF00 +7275- D5 D4 CMP $D4,X +7277- A0 CF LDY #$CF +7279- C6 A0 DEC $A0 +727B- C2 ??? +727C- CF ??? +727D- D5 CE CMP $CE,X +727F- C4 D3 CPY $D3 +7281- A1 A0 LDA ($A0,X) +7283- D9 A0 BE CMP $BEA0,Y +7286- A0 CD LDY #$CD +7288- C1 D8 CMP ($D8,X) +728A- A0 CF LDY #$CF +728C- D2 A0 CMP ($A0) +728E- C9 D3 CMP #$D3 +7290- A0 B0 LDY #$B0 +7292- AE 00 A2 LDX $A200 +7295- 08 PHP +7296- A5 4E LDA $4E +7298- 0A ASL +7299- 26 4F ROL $4F +729B- 90 02 BCC $729F +729D- 49 2D EOR #$2D +729F- CA DEX +72A0- D0 F6 BNE $7298 +72A2- 85 4E STA $4E +72A4- 8D 40 60 STA $6040 +72A7- A0 01 LDY #$01 +72A9- 8C 3F 60 STY $603F +72AC- C9 00 CMP #$00 +72AE- 60 RTS +72AF- 68 PLA +72B0- 85 FE STA $FE +72B2- 68 PLA +72B3- 85 FF STA $FF +72B5- 68 PLA +72B6- 8D 82 73 STA $7382 +72B9- 68 PLA +72BA- 8D 7E 73 STA $737E +72BD- A9 01 LDA #$01 +72BF- 8D 7C 73 STA $737C +72C2- A9 FF LDA #$FF +72C4- 8D 80 73 STA $7380 +72C7- A2 08 LDX #$08 +72C9- A5 4E LDA $4E +72CB- 0A ASL +72CC- 26 4F ROL $4F +72CE- 90 02 BCC $72D2 +72D0- 49 2D EOR #$2D +72D2- CA DEX +72D3- D0 F6 BNE $72CB +72D5- 85 4E STA $4E +72D7- C9 00 CMP #$00 +72D9- 8D 78 73 STA $7378 +72DC- AD 80 73 LDA $7380 +72DF- 38 SEC +72E0- ED 7C 73 SBC $737C +72E3- 8D 6E 73 STA $736E +72E6- AD 82 73 LDA $7382 +72E9- 38 SEC +72EA- ED 7E 73 SBC $737E +72ED- 8D 70 73 STA $7370 +72F0- AD 78 73 LDA $7378 +72F3- 38 SEC +72F4- ED 7C 73 SBC $737C +72F7- 8D 76 73 STA $7376 +72FA- A9 00 LDA #$00 +72FC- A8 TAY +72FD- 8C 84 73 STY $7384 +7300- F0 11 BEQ $7313 +7302- 18 CLC +7303- 6D 76 73 ADC $7376 +7306- AA TAX +7307- 98 TYA +7308- 6D 84 73 ADC $7384 +730B- A8 TAY +730C- 8A TXA +730D- 0E 76 73 ASL $7376 +7310- 2E 84 73 ROL $7384 +7313- 4E 70 73 LSR $7370 +7316- B0 EA BCS $7302 +7318- D0 F3 BNE $730D +731A- 8D 72 73 STA $7372 +731D- 8C 73 73 STY $7373 +7320- A9 00 LDA #$00 +7322- 8D 86 73 STA $7386 +7325- 8D 87 73 STA $7387 +7328- A2 10 LDX #$10 +732A- 0E 72 73 ASL $7372 +732D- 2E 73 73 ROL $7373 +7330- 2E 86 73 ROL $7386 +7333- 2E 87 73 ROL $7387 +7336- AD 86 73 LDA $7386 +7339- 38 SEC +733A- ED 6E 73 SBC $736E +733D- A8 TAY +733E- AD 87 73 LDA $7387 +7341- ED 6F 73 SBC $736F +7344- 90 09 BCC $734F +7346- 8D 87 73 STA $7387 +7349- 8C 86 73 STY $7386 +734C- EE 74 73 INC $7374 +734F- CA DEX +7350- D0 D8 BNE $732A +7352- AD 74 73 LDA $7374 +7355- 18 CLC +7356- 6D 7E 73 ADC $737E +7359- 8D 7A 73 STA $737A +735C- A5 FF LDA $FF +735E- 48 PHA +735F- A5 FE LDA $FE +7361- 48 PHA +7362- AD 7A 73 LDA $737A +7365- 8D 40 60 STA $6040 +7368- A2 01 LDX #$01 +736A- 8E 3F 60 STX $603F +736D- 60 RTS +736E- 00 BRK +736F- 00 BRK +7370- 00 BRK +7371- 00 BRK +7372- 00 BRK +7373- 00 BRK +7374- 00 BRK +7375- 00 BRK +7376- 00 BRK +7377- 00 BRK +7378- 00 BRK +7379- 00 BRK +737A- 00 BRK +737B- 00 BRK +737C- 00 BRK +737D- 00 BRK +737E- 00 BRK +737F- 00 BRK +7380- 00 BRK +7381- 00 BRK +7382- 00 BRK +7383- 00 BRK +7384- 00 BRK +7385- 00 BRK +7386- 00 BRK +7387- 00 BRK +7388- 68 PLA +7389- 85 FE STA $FE +738B- 68 PLA +738C- 85 FF STA $FF +738E- 68 PLA +738F- 85 06 STA $06 +7391- 68 PLA +7392- 85 07 STA $07 +7394- A0 00 LDY #$00 +7396- B1 06 LDA ($06),Y +7398- F0 06 BEQ $73A0 +739A- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +739D- C8 INY +739E- D0 F6 BNE $7396 +73A0- A5 FF LDA $FF +73A2- 48 PHA +73A3- A5 FE LDA $FE +73A5- 48 PHA +73A6- 60 RTS +73A7- 68 PLA +73A8- 85 06 STA $06 +73AA- 68 PLA +73AB- 85 07 STA $07 +73AD- A0 01 LDY #$01 +73AF- B1 06 LDA ($06),Y +73B1- F0 06 BEQ $73B9 +73B3- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +73B6- C8 INY +73B7- D0 F6 BNE $73AF +73B9- 18 CLC +73BA- 98 TYA +73BB- 65 06 ADC $06 +73BD- 85 06 STA $06 +73BF- A5 07 LDA $07 +73C1- 69 00 ADC #$00 +73C3- 48 PHA +73C4- A5 06 LDA $06 +73C6- 48 PHA +73C7- 60 RTS diff --git a/source/disk16_integrated_demos/MAKEMAZE.S b/source/disk16_integrated_demos/MAKEMAZE.S new file mode 100644 index 0000000..4dd1bbe --- /dev/null +++ b/source/disk16_integrated_demos/MAKEMAZE.S @@ -0,0 +1,3686 @@ +0901- AA TAX +0902- AA TAX +0903- AA TAX +0904- AA TAX +0905- AA TAX +0906- AA TAX +0907- AA TAX +0908- AA TAX +0909- AA TAX +090A- AA TAX +090B- AA TAX +090C- AA TAX +090D- AA TAX +090E- AA TAX +090F- AA TAX +0910- AA TAX +0911- AA TAX +0912- AA TAX +0913- AA TAX +0914- AA TAX +0915- AA TAX +0916- AA TAX +0917- AA TAX +0918- AA TAX +0919- AA TAX +091A- AA TAX +091B- AA TAX +091C- AA TAX +091D- AA TAX +091E- AA TAX +091F- AA TAX +0920- AA TAX +0921- 8D AA 20 STA $20AA +0924- 20 20 20 JSR $2020 +0927- 20 20 20 JSR $2020 +092A- 20 20 20 JSR $2020 +092D- 20 20 20 JSR $2020 +0930- 20 20 20 JSR $2020 +0933- 20 20 20 JSR $2020 +0936- 20 20 20 JSR $2020 +0939- 20 20 20 JSR $2020 +093C- 20 20 20 JSR $2020 +093F- 20 20 AA JSR $AA20 +0942- 8D AA 20 STA $20AA +0945- CD C1 DA CMP $DAC1 +0948- C5 20 CMP $20 +094A- C7 ??? +094B- C5 CE CMP $CE +094D- C5 D2 CMP $D2 +094F- C1 D4 CMP ($D4,X) +0951- CF ??? +0952- D2 20 CMP ($20) +0954- 20 20 20 JSR $2020 +0957- 20 20 20 JSR $2020 +095A- 20 20 20 JSR $2020 +095D- 20 20 20 JSR $2020 +0960- 20 20 AA JSR $AA20 +0963- 8D AA 20 STA $20AA +0966- 20 20 20 JSR $2020 +0969- 20 20 20 JSR $2020 +096C- 20 20 20 JSR $2020 +096F- 20 20 20 JSR $2020 +0972- 20 20 20 JSR $2020 +0975- 20 20 20 JSR $2020 +0978- 20 20 20 JSR $2020 +097B- 20 20 20 JSR $2020 +097E- 20 20 20 JSR $2020 +0981- 20 20 AA JSR $AA20 +0984- 8D AA AA STA $AAAA +0987- AA TAX +0988- AA TAX +0989- AA TAX +098A- AA TAX +098B- AA TAX +098C- AA TAX +098D- AA TAX +098E- AA TAX +098F- AA TAX +0990- AA TAX +0991- AA TAX +0992- AA TAX +0993- AA TAX +0994- AA TAX +0995- AA TAX +0996- AA TAX +0997- AA TAX +0998- AA TAX +0999- AA TAX +099A- AA TAX +099B- AA TAX +099C- AA TAX +099D- AA TAX +099E- AA TAX +099F- AA TAX +09A0- AA TAX +09A1- AA TAX +09A2- AA TAX +09A3- AA TAX +09A4- AA TAX +09A5- 8D AA 8D STA $8DAA +09A8- AA TAX +09A9- AA TAX +09AA- 20 C1 D3 JSR $D3C1 +09AD- D3 ??? +09AE- C5 CD CMP $CD +09B0- C2 ??? +09B1- CC C5 D2 CPY $D2C5 +09B4- 20 C4 C9 JSR $C9C4 +09B7- D2 C5 CMP ($C5) +09B9- C3 ??? +09BA- D4 ??? +09BB- C9 D6 CMP #$D6 +09BD- C5 D3 CMP $D3 +09BF- 8D AA 8D STA $8DAA +09C2- A0 C3 LDY #$C3 +09C4- D9 C3 A0 CMP $A0C3,Y +09C7- C1 D6 CMP ($D6,X) +09C9- C5 8D CMP $8D +09CB- A0 C5 LDY #$C5 +09CD- D8 CLD +09CE- D0 A0 BNE $0970 +09D0- CF ??? +09D1- C6 C6 DEC $C6 +09D3- 8D A0 C4 STA $C4A0 +09D6- D3 ??? +09D7- CB ??? +09D8- A0 CD LDY #$CD +09DA- C1 CB CMP ($CB,X) +09DC- C5 CD CMP $CD +09DE- C1 DA CMP ($DA,X) +09E0- C5 8D CMP $8D +09E2- A0 D4 LDY #$D4 +09E4- D2 A0 CMP ($A0) +09E6- CF ??? +09E7- CE 8D A0 DEC $A08D +09EA- CF ??? +09EB- C2 ??? +09EC- CA DEX +09ED- A0 A4 LDY #$A4 +09EF- C2 ??? +09F0- C6 C5 DEC $C5 +09F2- B0 8D BCS $0981 +09F4- A0 CF LDY #$CF +09F6- D2 C7 CMP ($C7) +09F8- A0 A4 LDY #$A4 +09FA- B6 B0 LDX $B0,Y +09FC- B0 B0 BCS $09AE +09FE- 8D AA 8D STA $8DAA +0A01- A0 D0 LDY #$D0 +0A03- D5 D4 CMP $D4,X +0A05- A0 D2 LDY #$D2 +0A07- C5 D1 CMP $D1 +0A09- D5 C9 CMP $C9,X +0A0B- D2 C5 CMP ($C5) +0A0D- C4 AE CPY $AE +0A0F- D6 C1 DEC $C1,X +0A11- D2 D3 CMP ($D3) +0A13- 8D A0 D5 STA $D5A0 +0A16- D3 ??? +0A17- C5 A0 CMP $A0 +0A19- D2 C5 CMP ($C5) +0A1B- D1 D5 CMP ($D5),Y +0A1D- C9 D2 CMP #$D2 +0A1F- C5 C4 CMP $C4 +0A21- AE CD C1 LDX $C1CD +0A24- C3 ??? +0A25- AE CD C9 LDX $C9CD +0A28- CE 8D 20 DEC $208D +0A2B- A0 D5 LDY #$D5 +0A2D- D3 ??? +0A2E- C5 A0 CMP $A0 +0A30- C1 D2 CMP ($D2,X) +0A32- D2 C1 CMP ($C1) +0A34- D9 D3 AE CMP $AED3,Y +0A37- CD C1 C3 CMP $C3C1 +0A3A- AE CD C9 LDX $C9CD +0A3D- CE 8D 20 DEC $208D +0A40- A0 D5 LDY #$D5 +0A42- D3 ??? +0A43- C5 A0 CMP $A0 +0A45- CD C1 D4 CMP $D4C1 +0A48- C8 INY +0A49- AE CD C1 LDX $C1CD +0A4C- C3 ??? +0A4D- AE CD C9 LDX $C9CD +0A50- CE 8D A0 DEC $A08D +0A53- D5 D3 CMP $D3,X +0A55- C5 A0 CMP $A0 +0A57- D3 ??? +0A58- D4 ??? +0A59- C4 C9 CPY $C9 +0A5B- CF ??? +0A5C- AE CD C1 LDX $C1CD +0A5F- C3 ??? +0A60- AE CD C9 LDX $C9CD +0A63- CE 8D A0 DEC $A08D +0A66- D0 D5 BNE $0A3D +0A68- D4 ??? +0A69- A0 D2 LDY #$D2 +0A6B- C5 D1 CMP $D1 +0A6D- D5 C9 CMP $C9,X +0A6F- D2 C5 CMP ($C5) +0A71- C4 AE CPY $AE +0A73- C8 INY +0A74- CF ??? +0A75- CF ??? +0A76- CB ??? +0A77- D3 ??? +0A78- AE CD C9 LDX $C9CD +0A7B- CE 8D A0 DEC $A08D +0A7E- D0 D5 BNE $0A55 +0A80- D4 ??? +0A81- A0 D3 LDY #$D3 +0A83- D4 ??? +0A84- C4 C9 CPY $C9 +0A86- CF ??? +0A87- AE C8 CF LDX $CFC8 +0A8A- CF ??? +0A8B- CB ??? +0A8C- D3 ??? +0A8D- 8D A0 D0 STA $D0A0 +0A90- D5 D4 CMP $D4,X +0A92- A0 CD LDY #$CD +0A94- C1 D4 CMP ($D4,X) +0A96- C8 INY +0A97- AE C8 CF LDX $CFC8 +0A9A- CF ??? +0A9B- CB ??? +0A9C- D3 ??? +0A9D- 8D A0 D0 STA $D0A0 +0AA0- D5 D4 CMP $D4,X +0AA2- A0 C1 LDY #$C1 +0AA4- D2 D2 CMP ($D2) +0AA6- C1 D9 CMP ($D9,X) +0AA8- D3 ??? +0AA9- AE C8 CF LDX $CFC8 +0AAC- CF ??? +0AAD- CB ??? +0AAE- D3 ??? +0AAF- 8D AA 8D STA $8DAA +0AB2- AA TAX +0AB3- AA TAX +0AB4- AA TAX +0AB5- AA TAX +0AB6- AA TAX +0AB7- AA TAX +0AB8- AA TAX +0AB9- AA TAX +0ABA- AA TAX +0ABB- AA TAX +0ABC- AA TAX +0ABD- AA TAX +0ABE- AA TAX +0ABF- AA TAX +0AC0- AA TAX +0AC1- AA TAX +0AC2- AA TAX +0AC3- AA TAX +0AC4- AA TAX +0AC5- AA TAX +0AC6- AA TAX +0AC7- AA TAX +0AC8- AA TAX +0AC9- AA TAX +0ACA- AA TAX +0ACB- AA TAX +0ACC- AA TAX +0ACD- AA TAX +0ACE- AA TAX +0ACF- AA TAX +0AD0- AA TAX +0AD1- AA TAX +0AD2- 8D AA 20 STA $20AA +0AD5- 20 20 20 JSR $2020 +0AD8- 20 20 20 JSR $2020 +0ADB- 20 20 20 JSR $2020 +0ADE- 20 20 20 JSR $2020 +0AE1- 20 20 20 JSR $2020 +0AE4- 20 20 20 JSR $2020 +0AE7- 20 20 20 JSR $2020 +0AEA- 20 20 20 JSR $2020 +0AED- 20 20 20 JSR $2020 +0AF0- 20 20 AA JSR $AA20 +0AF3- 8D AA 20 STA $20AA +0AF6- C3 ??? +0AF7- CF ??? +0AF8- CE D3 D4 DEC $D4D3 +0AFB- C1 CE CMP ($CE,X) +0AFD- D4 ??? +0AFE- 20 C4 C5 JSR $C5C4 +0B01- C3 ??? +0B02- CC C1 D2 CPY $D2C1 +0B05- C1 D4 CMP ($D4,X) +0B07- C9 CF CMP #$CF +0B09- CE D3 20 DEC $20D3 +0B0C- 20 20 20 JSR $2020 +0B0F- 20 20 20 JSR $2020 +0B12- 20 AA 8D JSR $8DAA +0B15- AA TAX +0B16- 20 20 20 JSR $2020 +0B19- 20 20 20 JSR $2020 +0B1C- 20 20 20 JSR $2020 +0B1F- 20 20 20 JSR $2020 +0B22- 20 20 20 JSR $2020 +0B25- 20 20 20 JSR $2020 +0B28- 20 20 20 JSR $2020 +0B2B- 20 20 20 JSR $2020 +0B2E- 20 20 20 JSR $2020 +0B31- 20 20 20 JSR $2020 +0B34- AA TAX +0B35- 8D AA AA STA $AAAA +0B38- AA TAX +0B39- AA TAX +0B3A- AA TAX +0B3B- AA TAX +0B3C- AA TAX +0B3D- AA TAX +0B3E- AA TAX +0B3F- AA TAX +0B40- AA TAX +0B41- AA TAX +0B42- AA TAX +0B43- AA TAX +0B44- AA TAX +0B45- AA TAX +0B46- AA TAX +0B47- AA TAX +0B48- AA TAX +0B49- AA TAX +0B4A- AA TAX +0B4B- AA TAX +0B4C- AA TAX +0B4D- AA TAX +0B4E- AA TAX +0B4F- AA TAX +0B50- AA TAX +0B51- AA TAX +0B52- AA TAX +0B53- AA TAX +0B54- AA TAX +0B55- AA TAX +0B56- 8D AA 8D STA $8DAA +0B59- C2 ??? +0B5A- C1 D3 CMP ($D3,X) +0B5C- A0 C5 LDY #$C5 +0B5E- D1 D5 CMP ($D5),Y +0B60- A0 A4 LDY #$A4 +0B62- B2 B0 LDA ($B0) +0B64- B0 B0 BCS $0B16 +0B66- A0 BB LDY #$BB +0B68- 20 C2 C1 JSR $C1C2 +0B6B- D3 ??? +0B6C- C5 20 CMP $20 +0B6E- C1 C4 CMP ($C4,X) +0B70- C4 D2 CPY $D2 +0B72- C5 D3 CMP $D3 +0B74- D3 ??? +0B75- 20 C6 CF JSR $CFC6 +0B78- D2 20 CMP ($20) +0B7A- C1 D2 CMP ($D2,X) +0B7C- D2 C1 CMP ($C1) +0B7E- D9 D3 8D CMP $8DD3,Y +0B81- AA TAX +0B82- 8D AA AA STA $AAAA +0B85- 20 CE CF JSR $CFCE +0B88- D4 ??? +0B89- C5 20 CMP $20 +0B8B- D4 ??? +0B8C- C8 INY +0B8D- C1 D4 CMP ($D4,X) +0B8F- 20 D8 CC JSR $CCD8 +0B92- C5 CE CMP $CE +0B94- 20 C1 CE JSR $CEC1 +0B97- C4 20 CPY $20 +0B99- D9 CC C5 CMP $C5CC,Y +0B9C- CE 20 C3 DEC $C320 +0B9F- C1 CE CMP ($CE,X) +0BA1- CE CF D4 DEC $D4CF +0BA4- 20 C5 D8 JSR $D8C5 +0BA7- C3 ??? +0BA8- C5 C5 CMP $C5 +0BAA- C4 20 CPY $20 +0BAC- B1 B3 LDA ($B3),Y +0BAE- AC 20 C1 LDY $C120 +0BB1- D3 ??? +0BB2- 20 D4 C8 JSR $C8D4 +0BB5- C9 D3 CMP #$D3 +0BB7- 8D AA AA STA $AAAA +0BBA- 20 D7 CF JSR $CFD7 +0BBD- D5 CC CMP $CC,X +0BBF- C4 20 CPY $20 +0BC1- CD C1 CB CMP $CBC1 +0BC4- C5 20 CMP $20 +0BC6- D4 ??? +0BC7- C8 INY +0BC8- C5 20 CMP $20 +0BCA- C1 D2 CMP ($D2,X) +0BCC- D2 C1 CMP ($C1) +0BCE- D9 20 D3 CMP $D320,Y +0BD1- C9 DA CMP #$DA +0BD3- C5 D3 CMP $D3 +0BD5- 20 BE B2 JSR $B2BE +0BD8- B5 B6 LDA $B6,X +0BDA- AC 20 D7 LDY $D720 +0BDD- C8 INY +0BDE- C9 C3 CMP #$C3 +0BE0- C8 INY +0BE1- 20 C9 D3 JSR $D3C9 +0BE4- CE A7 D4 DEC $D4A7 +0BE7- 8D AA AA STA $AAAA +0BEA- 20 D7 C8 JSR $C8D7 +0BED- C1 D4 CMP ($D4,X) +0BEF- 20 B8 AD JSR $ADB8 +0BF2- C2 ??? +0BF3- C9 D4 CMP #$D4 +0BF5- 20 C1 D2 JSR $D2C1 +0BF8- D2 C1 CMP ($C1) +0BFA- D9 D3 20 CMP $20D3,Y +0BFD- C1 D2 CMP ($D2,X) +0BFF- C5 20 CMP $20 +0C01- D0 D2 BNE $0BD5 +0C03- C5 D0 CMP $D0 +0C05- C1 D2 CMP ($D2,X) +0C07- C5 C4 CMP $C4 +0C09- 20 D4 CF JSR $CFD4 +0C0C- 20 C8 C1 JSR $C1C8 +0C0F- CE C4 CC DEC $CCC4 +0C12- C5 AE CMP $AE +0C14- 8D AA 8D STA $8DAA +0C17- AA TAX +0C18- AA TAX +0C19- 20 D4 C8 JSR $C8D4 +0C1C- C5 20 CMP $20 +0C1E- CE C5 D8 DEC $D8C5 +0C21- D4 ??? +0C22- 20 D5 D0 JSR $D0D5 +0C25- C4 C1 CPY $C1 +0C27- D4 ??? +0C28- C5 20 CMP $20 +0C2A- D7 ??? +0C2B- C9 CC CMP #$CC +0C2D- CC 20 D5 CPY $D520 +0C30- D4 ??? +0C31- C9 CC CMP #$CC +0C33- C9 DA CMP #$DA +0C35- C5 20 CMP $20 +0C37- B1 B6 LDA ($B6),Y +0C39- AD C2 C9 LDA $C9C2 +0C3C- D4 ??? +0C3D- 20 C1 D2 JSR $D2C1 +0C40- D2 C1 CMP ($C1) +0C42- D9 D3 8D CMP $8DD3,Y +0C45- AA TAX +0C46- AA TAX +0C47- 20 D4 CF JSR $CFD4 +0C4A- 20 C1 C4 JSR $C4C1 +0C4D- C4 D2 CPY $D2 +0C4F- C5 D3 CMP $D3 +0C51- D3 ??? +0C52- 20 D4 C8 JSR $C8D4 +0C55- C9 D3 CMP #$D3 +0C57- 20 D0 D2 JSR $D2D0 +0C5A- CF ??? +0C5B- C2 ??? +0C5C- CC C5 CD CPY $CDC5 +0C5F- AE 8D AA LDX $AA8D +0C62- 8D D8 CC STA $CCD8 +0C65- C5 CE CMP $CE +0C67- A0 CB LDY #$CB +0C69- C2 ??? +0C6A- C4 A0 CPY $A0 +0C6C- A2 C5 LDX #$C5 +0C6E- CE D4 C5 DEC $C5D4 +0C71- D2 20 CMP ($20) +0C73- CD C1 DA CMP $DAC1 +0C76- C5 20 CMP $20 +0C78- D3 ??? +0C79- C9 DA CMP #$DA +0C7B- C5 20 CMP $20 +0C7D- A8 TAY +0C7E- BC B1 B4 LDY $B4B1,X +0C81- A9 A2 LDA #$A2 +0C83- 8D D9 CC STA $CCD9 +0C86- C5 CE CMP $CE +0C88- A0 C5 LDY #$C5 +0C8A- D1 D5 CMP ($D5),Y +0C8C- A0 D8 LDY #$D8 +0C8E- CC C5 CE CPY $CEC5 +0C91- A0 BB LDY #$BB +0C93- 20 C3 D5 JSR $D5C3 +0C96- D2 D2 CMP ($D2) +0C98- C5 CE CMP $CE +0C9A- D4 ??? +0C9B- 20 C1 CC JSR $CCC1 +0C9E- C7 ??? +0C9F- CF ??? +0CA0- 20 CF CE JSR $CECF +0CA3- CC D9 20 CPY $20D9 +0CA6- C4 CF CPY $CF +0CA8- C5 D3 CMP $D3 +0CAA- 20 D3 D1 JSR $D1D3 +0CAD- D5 C1 CMP $C1,X +0CAF- D2 C5 CMP ($C5) +0CB1- 8D D8 CD STA $CDD8 +0CB4- C1 D8 CMP ($D8,X) +0CB6- A0 C5 LDY #$C5 +0CB8- D1 D5 CMP ($D5),Y +0CBA- A0 D8 LDY #$D8 +0CBC- CC C5 CE CPY $CEC5 +0CBF- AB ??? +0CC0- B2 A0 LDA ($A0) +0CC2- BB ??? +0CC3- 20 C1 C4 JSR $C4C1 +0CC6- C4 20 CPY $20 +0CC8- C5 D8 CMP $D8 +0CCA- D4 ??? +0CCB- D2 C1 CMP ($C1) +0CCD- 20 C3 CF JSR $CFC3 +0CD0- CC D5 CD CPY $CDD5 +0CD3- CE 8D D9 DEC $D98D +0CD6- CD C1 D8 CMP $D8C1 +0CD9- A0 C5 LDY #$C5 +0CDB- D1 D5 CMP ($D5),Y +0CDD- A0 D9 LDY #$D9 +0CDF- CC C5 CE CPY $CEC5 +0CE2- AB ??? +0CE3- B2 A0 LDA ($A0) +0CE5- BB ??? +0CE6- 20 C1 C4 JSR $C4C1 +0CE9- C4 20 CPY $20 +0CEB- C5 D8 CMP $D8 +0CED- D4 ??? +0CEE- D2 C1 CMP ($C1) +0CF0- 20 D2 CF JSR $CFD2 +0CF3- D7 ??? +0CF4- 8D D8 CE STA $CED8 +0CF7- D5 CD CMP $CD,X +0CF9- A0 C5 LDY #$C5 +0CFB- D1 D5 CMP ($D5),Y +0CFD- A0 B2 LDY #$B2 +0CFF- AA TAX +0D00- D8 CLD +0D01- CC C5 CE CPY $CEC5 +0D04- AB ??? +0D05- B2 8D LDA ($8D) +0D07- C1 D3 CMP ($D3,X) +0D09- DA PHX +0D0A- A0 C5 LDY #$C5 +0D0C- D1 D5 CMP ($D5),Y +0D0E- A0 D8 LDY #$D8 +0D10- CD C1 D8 CMP $D8C1 +0D13- AA TAX +0D14- D9 CD C1 CMP $C1CD,Y +0D17- D8 CLD +0D18- AB ??? +0D19- B4 A0 LDY $A0,X +0D1B- BB ??? +0D1C- 20 C1 D2 JSR $D2C1 +0D1F- D2 C1 CMP ($C1) +0D21- D9 20 D3 CMP $D320,Y +0D24- C9 DA CMP #$DA +0D26- C5 AB CMP $AB +0D28- C9 CE CMP #$CE +0D2A- C6 CF DEC $CF +0D2C- 20 C2 D9 JSR $D9C2 +0D2F- D4 ??? +0D30- C5 D3 CMP $D3 +0D32- 8D D8 D3 STA $D3D8 +0D35- D4 ??? +0D36- C1 CB CMP ($CB,X) +0D38- D3 ??? +0D39- A0 C5 LDY #$C5 +0D3B- D1 D5 CMP ($D5),Y +0D3D- A0 C1 LDY #$C1 +0D3F- D3 ??? +0D40- DA PHX +0D41- A0 BB LDY #$BB +0D43- 20 C3 CF JSR $CFC3 +0D46- CC D5 CD CPY $CDD5 +0D49- CE 20 D3 DEC $D320 +0D4C- D4 ??? +0D4D- C1 C3 CMP ($C3,X) +0D4F- CB ??? +0D50- 20 D3 C9 JSR $C9D3 +0D53- DA PHX +0D54- C5 BB CMP $BB +0D56- 20 D8 20 JSR $20D8 +0D59- AA TAX +0D5A- 20 D9 20 JSR $20D9 +0D5D- AB ??? +0D5E- 20 B1 8D JSR $8DB1 +0D61- D9 D3 D4 CMP $D4D3,Y +0D64- C1 CB CMP ($CB,X) +0D66- D3 ??? +0D67- A0 C5 LDY #$C5 +0D69- D1 D5 CMP ($D5),Y +0D6B- A0 C1 LDY #$C1 +0D6D- D3 ??? +0D6E- DA PHX +0D6F- A0 BB LDY #$BB +0D71- 20 D2 CF JSR $CFD2 +0D74- D7 ??? +0D75- 20 D3 D4 JSR $D4D3 +0D78- C1 C3 CMP ($C3,X) +0D7A- CB ??? +0D7B- 20 D3 C9 JSR $C9D3 +0D7E- DA PHX +0D7F- C5 BB CMP $BB +0D81- 20 D8 20 JSR $20D8 +0D84- AA TAX +0D85- 20 D9 20 JSR $20D9 +0D88- AB ??? +0D89- 20 B1 8D JSR $8DB1 +0D8C- AA TAX +0D8D- 8D D3 CF STA $CFD3 +0D90- D5 D4 CMP $D4,X +0D92- C8 INY +0D93- D7 ??? +0D94- A0 C5 LDY #$C5 +0D96- D1 D5 CMP ($D5),Y +0D98- A0 C2 LDY #$C2 +0D9A- C1 D3 CMP ($D3,X) +0D9C- A0 BB LDY #$BB +0D9E- 20 D3 CF JSR $CFD3 +0DA1- D5 D4 CMP $D4,X +0DA3- C8 INY +0DA4- 20 D7 C1 JSR $C1D7 +0DA7- CC CC D3 CPY $D3CC +0DAA- 20 C1 D2 JSR $D2C1 +0DAD- D2 C1 CMP ($C1) +0DAF- D9 8D D7 CMP $D78D,Y +0DB2- C5 D3 CMP $D3 +0DB4- D4 ??? +0DB5- D7 ??? +0DB6- A0 C5 LDY #$C5 +0DB8- D1 D5 CMP ($D5),Y +0DBA- A0 C1 LDY #$C1 +0DBC- D3 ??? +0DBD- DA PHX +0DBE- AB ??? +0DBF- C2 ??? +0DC0- C1 D3 CMP ($D3,X) +0DC2- A0 BB LDY #$BB +0DC4- 20 D7 C5 JSR $C5D7 +0DC7- D3 ??? +0DC8- D4 ??? +0DC9- 20 D7 C1 JSR $C1D7 +0DCC- CC CC D3 CPY $D3CC +0DCF- 20 C1 D2 JSR $D2C1 +0DD2- D2 C1 CMP ($C1) +0DD4- D9 8D D6 CMP $D68D,Y +0DD7- C9 D3 CMP #$D3 +0DD9- C9 D4 CMP #$D4 +0DDB- C5 C4 CMP $C4 +0DDD- A0 C5 LDY #$C5 +0DDF- D1 D5 CMP ($D5),Y +0DE1- A0 B2 LDY #$B2 +0DE3- AA TAX +0DE4- C1 D3 CMP ($D3,X) +0DE6- DA PHX +0DE7- AB ??? +0DE8- C2 ??? +0DE9- C1 D3 CMP ($D3,X) +0DEB- A0 BB LDY #$BB +0DED- 20 C3 C5 JSR $C5C3 +0DF0- CC CC D3 CPY $D3CC +0DF3- 20 D6 C9 JSR $C9D6 +0DF6- D3 ??? +0DF7- C9 D4 CMP #$D4 +0DF9- C5 C4 CMP $C4 +0DFB- 8D D8 D3 STA $D3D8 +0DFE- D4 ??? +0DFF- C1 C3 CMP ($C3,X) +0E01- CB ??? +0E02- A0 C5 LDY #$C5 +0E04- D1 D5 CMP ($D5),Y +0E06- A0 B3 LDY #$B3 +0E08- AA TAX +0E09- C1 D3 CMP ($D3,X) +0E0B- DA PHX +0E0C- AB ??? +0E0D- C2 ??? +0E0E- C1 D3 CMP ($D3,X) +0E10- A0 BB LDY #$BB +0E12- 20 D3 D4 JSR $D4D3 +0E15- C1 C3 CMP ($C3,X) +0E17- CB ??? +0E18- 20 C6 CF JSR $CFC6 +0E1B- D2 20 CMP ($20) +0E1D- C3 ??? +0E1E- CF ??? +0E1F- CC D5 CD CPY $CDD5 +0E22- CE D3 8D DEC $8DD3 +0E25- D9 D3 D4 CMP $D4D3,Y +0E28- C1 C3 CMP ($C3,X) +0E2A- CB ??? +0E2B- A0 C5 LDY #$C5 +0E2D- D1 D5 CMP ($D5),Y +0E2F- A0 B4 LDY #$B4 +0E31- AA TAX +0E32- C1 D3 CMP ($D3,X) +0E34- DA PHX +0E35- AB ??? +0E36- C2 ??? +0E37- C1 D3 CMP ($D3,X) +0E39- A0 BB LDY #$BB +0E3B- 20 D3 D4 JSR $D4D3 +0E3E- C1 C3 CMP ($C3,X) +0E40- CB ??? +0E41- 20 C6 CF JSR $CFC6 +0E44- D2 20 CMP ($20) +0E46- D2 CF CMP ($CF) +0E48- D7 ??? +0E49- D3 ??? +0E4A- 8D AA 8D STA $8DAA +0E4D- AA TAX +0E4E- AA TAX +0E4F- AA TAX +0E50- AA TAX +0E51- AA TAX +0E52- AA TAX +0E53- AA TAX +0E54- AA TAX +0E55- AA TAX +0E56- AA TAX +0E57- AA TAX +0E58- AA TAX +0E59- AA TAX +0E5A- AA TAX +0E5B- AA TAX +0E5C- AA TAX +0E5D- AA TAX +0E5E- AA TAX +0E5F- AA TAX +0E60- AA TAX +0E61- AA TAX +0E62- AA TAX +0E63- AA TAX +0E64- AA TAX +0E65- AA TAX +0E66- AA TAX +0E67- AA TAX +0E68- AA TAX +0E69- AA TAX +0E6A- AA TAX +0E6B- AA TAX +0E6C- AA TAX +0E6D- 8D AA 20 STA $20AA +0E70- 20 20 20 JSR $2020 +0E73- 20 20 20 JSR $2020 +0E76- 20 20 20 JSR $2020 +0E79- 20 20 20 JSR $2020 +0E7C- 20 20 20 JSR $2020 +0E7F- 20 20 20 JSR $2020 +0E82- 20 20 20 JSR $2020 +0E85- 20 20 20 JSR $2020 +0E88- 20 20 20 JSR $2020 +0E8B- 20 20 AA JSR $AA20 +0E8E- 8D AA 20 STA $20AA +0E91- CD C1 C9 CMP $C9C1 +0E94- CE 20 D0 DEC $D020 +0E97- D2 CF CMP ($CF) +0E99- C7 ??? +0E9A- D2 C1 CMP ($C1) +0E9C- CD 20 CC CMP $CC20 +0E9F- CF ??? +0EA0- CF ??? +0EA1- D0 20 BNE $0EC3 +0EA3- 20 20 20 JSR $2020 +0EA6- 20 20 20 JSR $2020 +0EA9- 20 20 20 JSR $2020 +0EAC- 20 20 AA JSR $AA20 +0EAF- 8D AA 20 STA $20AA +0EB2- 20 20 20 JSR $2020 +0EB5- 20 20 20 JSR $2020 +0EB8- 20 20 20 JSR $2020 +0EBB- 20 20 20 JSR $2020 +0EBE- 20 20 20 JSR $2020 +0EC1- 20 20 20 JSR $2020 +0EC4- 20 20 20 JSR $2020 +0EC7- 20 20 20 JSR $2020 +0ECA- 20 20 20 JSR $2020 +0ECD- 20 20 AA JSR $AA20 +0ED0- 8D AA AA STA $AAAA +0ED3- AA TAX +0ED4- AA TAX +0ED5- AA TAX +0ED6- AA TAX +0ED7- AA TAX +0ED8- AA TAX +0ED9- AA TAX +0EDA- AA TAX +0EDB- AA TAX +0EDC- AA TAX +0EDD- AA TAX +0EDE- AA TAX +0EDF- AA TAX +0EE0- AA TAX +0EE1- AA TAX +0EE2- AA TAX +0EE3- AA TAX +0EE4- AA TAX +0EE5- AA TAX +0EE6- AA TAX +0EE7- AA TAX +0EE8- AA TAX +0EE9- AA TAX +0EEA- AA TAX +0EEB- AA TAX +0EEC- AA TAX +0EED- AA TAX +0EEE- AA TAX +0EEF- AA TAX +0EF0- AA TAX +0EF1- 8D AA 8D STA $8DAA +0EF4- C9 CE CMP #$CE +0EF6- C9 D4 CMP #$D4 +0EF8- 8D AA 8D STA $8DAA +0EFB- AA TAX +0EFC- CC C4 C1 CPY $C1C4 +0EFF- 20 A3 B0 JSR $B0A3 +0F02- 8D AA D3 STA $D3AA +0F05- D4 ??? +0F06- C1 20 CMP ($20,X) +0F08- C5 D2 CMP $D2 +0F0A- D2 C3 CMP ($C3) +0F0C- D4 ??? +0F0D- D2 CC CMP ($CC) +0F0F- 20 BB 20 JSR $20BB +0F12- D4 ??? +0F13- D5 D2 CMP $D2,X +0F15- CE 20 CF DEC $CF20 +0F18- C6 C6 DEC $C6 +0F1A- 20 C5 D2 JSR $D2C5 +0F1D- D2 CF CMP ($CF) +0F1F- D2 D3 CMP ($D3) +0F21- 8D A0 CA STA $CAA0 +0F24- D3 ??? +0F25- D2 A0 CMP ($A0) +0F27- C8 INY +0F28- CF ??? +0F29- CD C5 8D CMP $8DC5 +0F2C- A0 D0 LDY #$D0 +0F2E- D2 CE CMP ($CE) +0F30- A0 A2 LDY #$A2 +0F32- C9 CE CMP #$CE +0F34- C9 D4 CMP #$D4 +0F36- C9 C1 CMP #$C1 +0F38- CC C9 DA CPY $DAC9 +0F3B- C9 CE CMP #$CE +0F3D- C7 ??? +0F3E- AE AE AE LDX $AEAE +0F41- A2 AC LDX #$AC +0F43- B8 CLV +0F44- C4 8D CPY $8D +0F46- AA TAX +0F47- 8D A0 CA STA $CAA0 +0F4A- D3 ??? +0F4B- D2 A0 CMP ($A0) +0F4D- BA TSX +0F4E- D3 ??? +0F4F- C5 D4 CMP $D4 +0F51- D6 C1 DEC $C1,X +0F53- D2 D3 CMP ($D3) +0F55- 8D A0 CA STA $CAA0 +0F58- D3 ??? +0F59- D2 A0 CMP ($A0) +0F5B- BA TSX +0F5C- CF ??? +0F5D- D5 D4 CMP $D4,X +0F5F- D7 ??? +0F60- C1 CC CMP ($CC,X) +0F62- CC D3 8D CPY $8DD3 +0F65- AA TAX +0F66- 8D AA AA STA $AAAA +0F69- 20 C7 C5 JSR $C5C7 +0F6C- D4 ??? +0F6D- 20 D2 C1 JSR $C1D2 +0F70- CE C4 CF DEC $CFC4 +0F73- CD 20 D3 CMP $D320 +0F76- D4 ??? +0F77- C1 D2 CMP ($D2,X) +0F79- D4 ??? +0F7A- C9 CE CMP #$CE +0F7C- C7 ??? +0F7D- 20 D0 CF JSR $CFD0 +0F80- C9 CE CMP #$CE +0F82- D4 ??? +0F83- 8D AA 8D STA $8DAA +0F86- A0 D2 LDY #$D2 +0F88- CE C4 C2 DEC $C2C4 +0F8B- 20 A3 B2 JSR $B2A3 +0F8E- BB ??? +0F8F- A3 ??? +0F90- D8 CLD +0F91- CC C5 CE CPY $CEC5 +0F94- 8D A0 D3 STA $D3A0 +0F97- D4 ??? +0F98- C1 A0 CMP ($A0,X) +0F9A- D8 CLD +0F9B- D8 CLD +0F9C- 8D A0 D2 STA $D2A0 +0F9F- CE C4 C2 DEC $C2C4 +0FA2- 20 A3 B2 JSR $B2A3 +0FA5- BB ??? +0FA6- A3 ??? +0FA7- D9 CC C5 CMP $C5CC,Y +0FAA- CE 8D A0 DEC $A08D +0FAD- D3 ??? +0FAE- D4 ??? +0FAF- C1 A0 CMP ($A0,X) +0FB1- D9 D9 8D CMP $8DD9,Y +0FB4- AA TAX +0FB5- 8D A0 CA STA $CAA0 +0FB8- CD D0 A0 CMP $A0D0 +0FBB- C2 ??? +0FBC- D5 C9 CMP $C9,X +0FBE- CC C4 8D CPY $8DC4 +0FC1- AA TAX +0FC2- 8D AA AA STA $AAAA +0FC5- AA TAX +0FC6- AA TAX +0FC7- AA TAX +0FC8- AA TAX +0FC9- AA TAX +0FCA- AA TAX +0FCB- AA TAX +0FCC- AA TAX +0FCD- AA TAX +0FCE- AA TAX +0FCF- AA TAX +0FD0- AA TAX +0FD1- AA TAX +0FD2- AA TAX +0FD3- AA TAX +0FD4- AA TAX +0FD5- AA TAX +0FD6- AA TAX +0FD7- AA TAX +0FD8- AA TAX +0FD9- AA TAX +0FDA- AA TAX +0FDB- AA TAX +0FDC- AA TAX +0FDD- AA TAX +0FDE- AA TAX +0FDF- AA TAX +0FE0- AA TAX +0FE1- AA TAX +0FE2- AA TAX +0FE3- 8D AA 8D STA $8DAA +0FE6- BA TSX +0FE7- D3 ??? +0FE8- C5 D4 CMP $D4 +0FEA- D6 C1 DEC $C1,X +0FEC- D2 D3 CMP ($D3) +0FEE- 8D AA 8D STA $8DAA +0FF1- AA TAX +0FF2- AA TAX +0FF3- 20 C4 C9 JSR $C9C4 +0FF6- CD 20 C1 CMP $C120 +0FF9- D2 D2 CMP ($D2) +0FFB- C1 D9 CMP ($D9,X) +0FFD- D3 ??? +0FFE- 20 C1 CE JSR $CEC1 +1001- C4 20 CPY $20 +1003- C6 C9 DEC $C9 +1005- CC CC 8D CPY $8DCC +1008- AA TAX +1009- 8D A0 C4 STA $C4A0 +100C- C9 CD CMP #$CD +100E- B8 CLV +100F- B2 A0 LDA ($A0) +1011- D3 ??? +1012- CF ??? +1013- D5 D4 CMP $D4,X +1015- C8 INY +1016- D7 ??? +1017- BB ??? +1018- A3 ??? +1019- D8 CLD +101A- CD C1 D8 CMP $D8C1 +101D- BB ??? +101E- A3 ??? +101F- D9 CD C1 CMP $C1CD,Y +1022- D8 CLD +1023- BB ??? +1024- A3 ??? +1025- B1 BB LDA ($BB),Y +1027- A3 ??? +1028- B1 8D LDA ($8D),Y +102A- A0 C4 LDY #$C4 +102C- C9 CD CMP #$CD +102E- B8 CLV +102F- B2 20 LDA ($20) +1031- D7 ??? +1032- C5 D3 CMP $D3 +1034- D4 ??? +1035- D7 ??? +1036- BB ??? +1037- A3 ??? +1038- D8 CLD +1039- CD C1 D8 CMP $D8C1 +103C- BB ??? +103D- A3 ??? +103E- D9 CD C1 CMP $C1CD,Y +1041- D8 CLD +1042- BB ??? +1043- A3 ??? +1044- B1 BB LDA ($BB),Y +1046- A3 ??? +1047- B1 8D LDA ($8D),Y +1049- A0 C4 LDY #$C4 +104B- C9 CD CMP #$CD +104D- B8 CLV +104E- B2 20 LDA ($20) +1050- D6 C9 DEC $C9,X +1052- D3 ??? +1053- C9 D4 CMP #$D4 +1055- C5 C4 CMP $C4 +1057- BB ??? +1058- A3 ??? +1059- D8 CLD +105A- CD C1 D8 CMP $D8C1 +105D- BB ??? +105E- A3 ??? +105F- D9 CD C1 CMP $C1CD,Y +1062- D8 CLD +1063- BB ??? +1064- A3 ??? +1065- B1 BB LDA ($BB),Y +1067- A3 ??? +1068- B0 8D BCS $0FF7 +106A- A0 C4 LDY #$C4 +106C- C9 CD CMP #$CD +106E- B8 CLV +106F- B1 A0 LDA ($A0),Y +1071- D8 CLD +1072- D3 ??? +1073- D4 ??? +1074- C1 C3 CMP ($C3,X) +1076- CB ??? +1077- BB ??? +1078- A3 ??? +1079- D8 CLD +107A- D3 ??? +107B- D4 ??? +107C- C1 CB CMP ($CB,X) +107E- D3 ??? +107F- BB ??? +1080- A3 ??? +1081- B1 BB LDA ($BB),Y +1083- A3 ??? +1084- B0 8D BCS $1013 +1086- A0 C4 LDY #$C4 +1088- C9 CD CMP #$CD +108A- B8 CLV +108B- B1 A0 LDA ($A0),Y +108D- D9 D3 D4 CMP $D4D3,Y +1090- C1 C3 CMP ($C3,X) +1092- CB ??? +1093- BB ??? +1094- A3 ??? +1095- D9 D3 D4 CMP $D4D3,Y +1098- C1 CB CMP ($CB,X) +109A- D3 ??? +109B- BB ??? +109C- A3 ??? +109D- B1 BB LDA ($BB),Y +109F- A3 ??? +10A0- B0 8D BCS $102F +10A2- AA TAX +10A3- 8D AA AA STA $AAAA +10A6- 20 CE CF JSR $CFCE +10A9- D7 ??? +10AA- 20 C1 D3 JSR $D3C1 +10AD- D3 ??? +10AE- C9 C7 CMP #$C7 +10B0- CE 20 D6 DEC $D620 +10B3- C1 D2 CMP ($D2,X) +10B5- C9 C1 CMP #$C1 +10B7- C2 ??? +10B8- CC C5 20 CPY $20C5 +10BB- D6 C1 DEC $C1,X +10BD- CC D5 C5 CPY $C5D5 +10C0- D3 ??? +10C1- 8D AA 8D STA $8DAA +10C4- A0 CC LDY #$CC +10C6- C4 C1 CPY $C1 +10C8- A0 A3 LDY #$A3 +10CA- B0 8D BCS $1059 +10CC- A0 D3 LDY #$D3 +10CE- D4 ??? +10CF- C1 A0 CMP ($A0,X) +10D1- D3 ??? +10D2- D0 D4 BNE $10A8 +10D4- D2 8D CMP ($8D) +10D6- A0 D3 LDY #$D3 +10D8- D4 ??? +10D9- C1 A0 CMP ($A0,X) +10DB- D6 B0 DEC $B0,X +10DD- 8D A0 CC STA $CCA0 +10E0- C4 C1 CPY $C1 +10E2- A0 A3 LDY #$A3 +10E4- B1 8D LDA ($8D),Y +10E6- A0 D3 LDY #$D3 +10E8- D4 ??? +10E9- C1 A0 CMP ($A0,X) +10EB- D6 B1 DEC $B1,X +10ED- 8D A0 D2 STA $D2A0 +10F0- D4 ??? +10F1- D3 ??? +10F2- 8D AA 8D STA $8DAA +10F5- AA TAX +10F6- AA TAX +10F7- AA TAX +10F8- AA TAX +10F9- AA TAX +10FA- AA TAX +10FB- AA TAX +10FC- AA TAX +10FD- AA TAX +10FE- AA TAX +10FF- AA TAX +1100- AA TAX +1101- AA TAX +1102- AA TAX +1103- AA TAX +1104- AA TAX +1105- AA TAX +1106- AA TAX +1107- AA TAX +1108- AA TAX +1109- AA TAX +110A- AA TAX +110B- AA TAX +110C- AA TAX +110D- AA TAX +110E- AA TAX +110F- AA TAX +1110- AA TAX +1111- AA TAX +1112- AA TAX +1113- AA TAX +1114- AA TAX +1115- 8D AA 8D STA $8DAA +1118- BA TSX +1119- CF ??? +111A- D5 D4 CMP $D4,X +111C- D7 ??? +111D- C1 CC CMP ($CC,X) +111F- CC D3 8D CPY $8DD3 +1122- AA TAX +1123- 8D AA AA STA $AAAA +1126- 20 CD C1 JSR $C1CD +1129- CB ??? +112A- C5 20 CMP $20 +112C- C3 ??? +112D- CF ??? +112E- CC D5 CD CPY $CDD5 +1131- CE 20 CD DEC $CD20 +1134- C9 CE CMP #$CE +1136- 20 C1 CE JSR $CEC1 +1139- C4 20 CPY $20 +113B- CD C1 D8 CMP $D8C1 +113E- 20 D4 CF JSR $CFD4 +1141- 20 C2 C5 JSR $C5C2 +1144- 20 C1 CC JSR $CCC1 +1147- CC 8D AA CPY $AA8D +114A- AA TAX +114B- 20 D7 C1 JSR $C1D7 +114E- CC CC 20 CPY $20CC +1151- A8 TAY +1152- C3 ??? +1153- CF ??? +1154- C4 C5 CPY $C5 +1156- BA TSX +1157- 20 B1 A9 JSR $A9B1 +115A- AE 8D AA LDX $AA8D +115D- 8D A0 CC STA $CCA0 +1160- C4 C1 CPY $C1 +1162- A0 A3 LDY #$A3 +1164- B0 A0 BCS $1106 +1166- BB ??? +1167- 20 D3 CF JSR $CFD3 +116A- 20 D8 AC JSR $ACD8 +116D- D9 20 D7 CMP $D720,Y +1170- C9 CC CMP #$CC +1172- CC 20 C9 CPY $C920 +1175- CE C3 20 DEC $20C3 +1178- D4 ??? +1179- CF ??? +117A- 20 B1 8D JSR $8DB1 +117D- A0 D3 LDY #$D3 +117F- D4 ??? +1180- C1 A0 CMP ($A0,X) +1182- D8 CLD +1183- D8 CLD +1184- 8D A0 D3 STA $D3A0 +1187- D4 ??? +1188- C1 A0 CMP ($A0,X) +118A- D9 D9 8D CMP $8DD9,Y +118D- AA TAX +118E- 8D BA C3 STA $C3BA +1191- CF ??? +1192- CC C5 C4 CPY $C4C5 +1195- C7 ??? +1196- C5 8D CMP $8D +1198- A0 C9 LDY #$C9 +119A- CE C3 A0 DEC $A0C3 +119D- D8 CLD +119E- D8 CLD +119F- 8D A0 D0 STA $D0A0 +11A2- D5 D4 CMP $D4,X +11A4- B8 CLV +11A5- B2 A0 LDA ($A0) +11A7- D6 B1 DEC $B1,X +11A9- BB ??? +11AA- D6 C9 DEC $C9,X +11AC- D3 ??? +11AD- C9 D4 CMP #$D4 +11AF- C5 C4 CMP $C4 +11B1- BB ??? +11B2- D8 CLD +11B3- D8 CLD +11B4- BB ??? +11B5- A3 ??? +11B6- B1 8D LDA ($8D),Y +11B8- A0 D0 LDY #$D0 +11BA- D5 D4 CMP $D4,X +11BC- B8 CLV +11BD- B2 A0 LDA ($A0) +11BF- D6 B1 DEC $B1,X +11C1- BB ??? +11C2- D6 C9 DEC $C9,X +11C4- D3 ??? +11C5- C9 D4 CMP #$D4 +11C7- C5 C4 CMP $C4 +11C9- BB ??? +11CA- D8 CLD +11CB- D8 CLD +11CC- BB ??? +11CD- A3 ??? +11CE- D9 CD C1 CMP $C1CD,Y +11D1- D8 CLD +11D2- 8D A0 CC STA $CCA0 +11D5- C4 C1 CPY $C1 +11D7- A0 D8 LDY #$D8 +11D9- D8 CLD +11DA- 8D A0 C3 STA $C3A0 +11DD- CD D0 A0 CMP $A0D0 +11E0- A3 ??? +11E1- D8 CLD +11E2- CD C1 D8 CMP $D8C1 +11E5- 8D A0 C2 STA $C2A0 +11E8- CE C5 A0 DEC $A0C5 +11EB- BA TSX +11EC- C3 ??? +11ED- CF ??? +11EE- CC C5 C4 CPY $C4C5 +11F1- C7 ??? +11F2- C5 8D CMP $8D +11F4- AA TAX +11F5- 8D AA AA STA $AAAA +11F8- 20 CD C1 JSR $C1CD +11FB- CB ??? +11FC- C5 20 CMP $20 +11FE- CD C9 CE CMP $CEC9 +1201- 20 C1 CE JSR $CEC1 +1204- C4 20 CPY $20 +1206- CD C1 D8 CMP $D8C1 +1209- 20 D2 CF JSR $CFD2 +120C- D7 ??? +120D- D3 ??? +120E- 20 D4 CF JSR $CFD4 +1211- 20 C2 C5 JSR $C5C2 +1214- 20 C1 CC JSR $CCC1 +1217- CC 20 D7 CPY $D720 +121A- C1 CC CMP ($CC,X) +121C- CC 8D AA CPY $AA8D +121F- 8D BA D2 STA $D2BA +1222- CF ??? +1223- D7 ??? +1224- C5 C4 CMP $C4 +1226- C7 ??? +1227- C5 8D CMP $8D +1229- A0 C9 LDY #$C9 +122B- CE C3 A0 DEC $A0C3 +122E- D9 D9 8D CMP $8DD9,Y +1231- A0 D0 LDY #$D0 +1233- D5 D4 CMP $D4,X +1235- B8 CLV +1236- B2 A0 LDA ($A0) +1238- D6 B1 DEC $B1,X +123A- BB ??? +123B- D6 C9 DEC $C9,X +123D- D3 ??? +123E- C9 D4 CMP #$D4 +1240- C5 C4 CMP $C4 +1242- BB ??? +1243- A3 ??? +1244- B1 BB LDA ($BB),Y +1246- D9 D9 8D CMP $8DD9,Y +1249- A0 D0 LDY #$D0 +124B- D5 D4 CMP $D4,X +124D- B8 CLV +124E- B2 A0 LDA ($A0) +1250- D6 B1 DEC $B1,X +1252- BB ??? +1253- D6 C9 DEC $C9,X +1255- D3 ??? +1256- C9 D4 CMP #$D4 +1258- C5 C4 CMP $C4 +125A- BB ??? +125B- A3 ??? +125C- D8 CLD +125D- CD C1 D8 CMP $D8C1 +1260- BB ??? +1261- D9 D9 8D CMP $8DD9,Y +1264- A0 CC LDY #$CC +1266- C4 C1 CPY $C1 +1268- A0 D9 LDY #$D9 +126A- D9 8D A0 CMP $A08D,Y +126D- C3 ??? +126E- CD D0 A0 CMP $A0D0 +1271- A3 ??? +1272- D9 CD C1 CMP $C1CD,Y +1275- D8 CLD +1276- 8D A0 C2 STA $C2A0 +1279- CE C5 A0 DEC $A0C5 +127C- BA TSX +127D- D2 CF CMP ($CF) +127F- D7 ??? +1280- C5 C4 CMP $C4 +1282- C7 ??? +1283- C5 8D CMP $8D +1285- A0 D2 LDY #$D2 +1287- D4 ??? +1288- D3 ??? +1289- 8D AA 8D STA $8DAA +128C- AA TAX +128D- AA TAX +128E- AA TAX +128F- AA TAX +1290- AA TAX +1291- AA TAX +1292- AA TAX +1293- AA TAX +1294- AA TAX +1295- AA TAX +1296- AA TAX +1297- AA TAX +1298- AA TAX +1299- AA TAX +129A- AA TAX +129B- AA TAX +129C- AA TAX +129D- AA TAX +129E- AA TAX +129F- AA TAX +12A0- AA TAX +12A1- AA TAX +12A2- AA TAX +12A3- AA TAX +12A4- AA TAX +12A5- AA TAX +12A6- AA TAX +12A7- AA TAX +12A8- AA TAX +12A9- AA TAX +12AA- AA TAX +12AB- AA TAX +12AC- 8D AA 20 STA $20AA +12AF- 20 20 20 JSR $2020 +12B2- 20 20 20 JSR $2020 +12B5- 20 20 20 JSR $2020 +12B8- 20 20 20 JSR $2020 +12BB- 20 20 20 JSR $2020 +12BE- 20 20 20 JSR $2020 +12C1- 20 20 20 JSR $2020 +12C4- 20 20 20 JSR $2020 +12C7- 20 20 20 JSR $2020 +12CA- 20 20 AA JSR $AA20 +12CD- 8D AA 20 STA $20AA +12D0- 20 20 C2 JSR $C220 +12D3- D5 C9 CMP $C9,X +12D5- CC C4 20 CPY $20C4 +12D8- D4 ??? +12D9- C8 INY +12DA- C5 20 CMP $20 +12DC- CD C1 DA CMP $DAC1 +12DF- C5 20 CMP $20 +12E1- 20 20 20 JSR $2020 +12E4- 20 20 20 JSR $2020 +12E7- 20 20 20 JSR $2020 +12EA- 20 20 20 JSR $2020 +12ED- AA TAX +12EE- 8D AA 20 STA $20AA +12F1- 20 20 20 JSR $2020 +12F4- 20 20 20 JSR $2020 +12F7- 20 20 20 JSR $2020 +12FA- 20 20 20 JSR $2020 +12FD- 20 20 20 JSR $2020 +1300- 20 20 20 JSR $2020 +1303- 20 20 20 JSR $2020 +1306- 20 20 20 JSR $2020 +1309- 20 20 20 JSR $2020 +130C- 20 20 AA JSR $AA20 +130F- 8D AA AA STA $AAAA +1312- AA TAX +1313- AA TAX +1314- AA TAX +1315- AA TAX +1316- AA TAX +1317- AA TAX +1318- AA TAX +1319- AA TAX +131A- AA TAX +131B- AA TAX +131C- AA TAX +131D- AA TAX +131E- AA TAX +131F- AA TAX +1320- AA TAX +1321- AA TAX +1322- AA TAX +1323- AA TAX +1324- AA TAX +1325- AA TAX +1326- AA TAX +1327- AA TAX +1328- AA TAX +1329- AA TAX +132A- AA TAX +132B- AA TAX +132C- AA TAX +132D- AA TAX +132E- AA TAX +132F- AA TAX +1330- 8D AA 8D STA $8DAA +1333- C2 ??? +1334- D5 C9 CMP $C9,X +1336- CC C4 8D CPY $8DC4 +1339- AA TAX +133A- 8D A0 D0 STA $D0A0 +133D- D2 CE CMP ($CE) +133F- A0 A2 LDY #$A2 +1341- C2 ??? +1342- D5 C9 CMP $C9,X +1344- CC C4 C9 CPY $C9C4 +1347- CE C7 20 DEC $20C7 +134A- CD C1 DA CMP $DAC1 +134D- C5 AE CMP $AE +134F- AE AE A2 LDX $A2AE +1352- AC B8 C4 LDY $C4B8 +1355- B8 CLV +1356- C4 8D CPY $8D +1358- AA TAX +1359- 8D AA AA STA $AAAA +135C- AA TAX +135D- AA TAX +135E- AA TAX +135F- AA TAX +1360- AA TAX +1361- AA TAX +1362- AA TAX +1363- AA TAX +1364- AA TAX +1365- AA TAX +1366- AA TAX +1367- AA TAX +1368- AA TAX +1369- AA TAX +136A- AA TAX +136B- AA TAX +136C- AA TAX +136D- AA TAX +136E- AA TAX +136F- AA TAX +1370- AA TAX +1371- AA TAX +1372- AA TAX +1373- AA TAX +1374- AA TAX +1375- AA TAX +1376- AA TAX +1377- AA TAX +1378- AA TAX +1379- AA TAX +137A- 8D AA 8D STA $8DAA +137D- D3 ??? +137E- D4 ??? +137F- C1 CB CMP ($CB,X) +1381- D0 D5 BNE $1358 +1383- D3 ??? +1384- C8 INY +1385- 8D AA 8D STA $8DAA +1388- A0 C9 LDY #$C9 +138A- CE C3 A0 DEC $A0C3 +138D- D3 ??? +138E- D0 D4 BNE $1364 +1390- D2 8D CMP ($8D) +1392- A0 D0 LDY #$D0 +1394- D5 D4 CMP $D4,X +1396- B8 CLV +1397- B1 A0 LDA ($A0),Y +1399- D8 CLD +139A- D8 CLD +139B- BB ??? +139C- D8 CLD +139D- D3 ??? +139E- D4 ??? +139F- C1 C3 CMP ($C3,X) +13A1- CB ??? +13A2- BB ??? +13A3- D3 ??? +13A4- D0 D4 BNE $137A +13A6- D2 A0 CMP ($A0) +13A8- BB ??? +13A9- 20 D0 D5 JSR $D5D0 +13AC- D4 ??? +13AD- 20 C3 CF JSR $CFC3 +13B0- CC 20 CF CPY $CF20 +13B3- CE 20 D3 DEC $D320 +13B6- D4 ??? +13B7- C1 C3 CMP ($C3,X) +13B9- CB ??? +13BA- 8D A0 D0 STA $D0A0 +13BD- D5 D4 CMP $D4,X +13BF- B8 CLV +13C0- B1 A0 LDA ($A0),Y +13C2- D9 D9 BB CMP $BBD9,Y +13C5- D9 D3 D4 CMP $D4D3,Y +13C8- C1 C3 CMP ($C3,X) +13CA- CB ??? +13CB- BB ??? +13CC- D3 ??? +13CD- D0 D4 BNE $13A3 +13CF- D2 A0 CMP ($A0) +13D1- BB ??? +13D2- 20 D0 D5 JSR $D5D0 +13D5- D4 ??? +13D6- 20 D2 CF JSR $CFD2 +13D9- D7 ??? +13DA- 20 CF CE JSR $CECF +13DD- 20 D3 D4 JSR $D4D3 +13E0- C1 C3 CMP ($C3,X) +13E2- CB ??? +13E3- 8D A0 D0 STA $D0A0 +13E6- D5 D4 CMP $D4,X +13E8- B8 CLV +13E9- B2 A0 LDA ($A0) +13EB- D6 B1 DEC $B1,X +13ED- BB ??? +13EE- D6 C9 DEC $C9,X +13F0- D3 ??? +13F1- C9 D4 CMP #$D4 +13F3- C5 C4 CMP $C4 +13F5- BB ??? +13F6- D8 CLD +13F7- D8 CLD +13F8- BB ??? +13F9- D9 D9 A0 CMP $A0D9,Y +13FC- BB ??? +13FD- 20 CD C1 JSR $C1CD +1400- D2 CB CMP ($CB) +1402- 20 C2 CC JSR $CCC2 +1405- CF ??? +1406- C3 ??? +1407- CB ??? +1408- 20 C1 D3 JSR $D3C1 +140B- 20 D6 C9 JSR $C9D6 +140E- D3 ??? +140F- C9 D4 CMP #$D4 +1411- C5 C4 CMP $C4 +1413- 8D AA 8D STA $8DAA +1416- AA TAX +1417- AA TAX +1418- AA TAX +1419- AA TAX +141A- AA TAX +141B- AA TAX +141C- AA TAX +141D- AA TAX +141E- AA TAX +141F- AA TAX +1420- AA TAX +1421- AA TAX +1422- AA TAX +1423- AA TAX +1424- AA TAX +1425- AA TAX +1426- AA TAX +1427- AA TAX +1428- AA TAX +1429- AA TAX +142A- AA TAX +142B- AA TAX +142C- AA TAX +142D- AA TAX +142E- AA TAX +142F- AA TAX +1430- AA TAX +1431- AA TAX +1432- AA TAX +1433- AA TAX +1434- AA TAX +1435- AA TAX +1436- 8D AA 8D STA $8DAA +1439- C3 ??? +143A- C8 INY +143B- C5 C3 CMP $C3 +143D- CB ??? +143E- C1 CC CMP ($CC,X) +1440- CC 8D AA CPY $AA8D +1443- 8D AA AA STA $AAAA +1446- 20 C3 C8 JSR $C8C3 +1449- C5 C3 CMP $C3 +144B- CB ??? +144C- D3 ??? +144D- 20 C1 CC JSR $CCC1 +1450- CC 20 C1 CPY $C120 +1453- C4 CA CPY $CA +1455- C1 C3 CMP ($C3,X) +1457- C5 CE CMP $CE +1459- D4 ??? +145A- 20 C2 CC JSR $CCC2 +145D- CF ??? +145E- C3 ??? +145F- CB ??? +1460- D3 ??? +1461- 20 C6 CF JSR $CFC6 +1464- D2 20 CMP ($20) +1466- C1 20 CMP ($20,X) +1468- D7 ??? +1469- C1 CC CMP ($CC,X) +146B- CC AE 20 CPY $20AE +146E- C9 C6 CMP #$C6 +1470- 8D AA AA STA $AAAA +1473- 20 C3 CF JSR $CFC3 +1476- CD D0 CC CMP $CCD0 +1479- C5 D4 CMP $D4 +147B- C5 CC CMP $CC +147D- D9 20 D3 CMP $D320,Y +1480- D5 D2 CMP $D2,X +1482- D2 CF CMP ($CF) +1484- D5 CE CMP $CE,X +1486- C4 C5 CPY $C5 +1488- C4 AC CPY $AC +148A- 20 D0 CF JSR $CFD0 +148D- D0 20 BNE $14AF +148F- D4 ??? +1490- C8 INY +1491- C5 20 CMP $20 +1493- D3 ??? +1494- D4 ??? +1495- C1 C3 CMP ($C3,X) +1497- CB ??? +1498- 20 C1 CE JSR $CEC1 +149B- C4 8D CPY $8D +149D- AA TAX +149E- AA TAX +149F- 20 C1 CE JSR $CEC1 +14A2- C4 20 CPY $20 +14A4- D3 ??? +14A5- D4 ??? +14A6- C1 D2 CMP ($D2,X) +14A8- D4 ??? +14A9- 20 CF D6 JSR $D6CF +14AC- C5 D2 CMP $D2 +14AE- 20 D5 CE JSR $CED5 +14B1- D4 ??? +14B2- C9 CC CMP #$CC +14B4- AE 8D AA LDX $AA8D +14B7- 8D A0 CC STA $CCA0 +14BA- C4 C1 CPY $C1 +14BC- A0 D9 LDY #$D9 +14BE- D9 A0 BB CMP $BBA0,Y +14C1- 20 D3 D4 JSR $D4D3 +14C4- CF ??? +14C5- D2 C5 CMP ($C5) +14C7- 20 D6 C1 JSR $C1D6 +14CA- CC D5 C5 CPY $C5D5 +14CD- D3 ??? +14CE- 20 C6 CF JSR $CFC6 +14D1- D2 8D CMP ($8D) +14D3- A0 D3 LDY #$D3 +14D5- D4 ??? +14D6- C1 A0 CMP ($A0,X) +14D8- D9 D0 B1 CMP $B1D0,Y +14DB- A0 BB LDY #$BB +14DD- 20 C3 D5 JSR $D5C3 +14E0- D2 D2 CMP ($D2) +14E2- C5 CE CMP $CE +14E4- D4 ??? +14E5- 20 D2 CF JSR $CFD2 +14E8- D7 ??? +14E9- 20 CD C9 JSR $C9CD +14EC- CE D5 D3 DEC $D3D5 +14EF- 20 CF CE JSR $CECF +14F2- C5 8D CMP $8D +14F4- A0 D3 LDY #$D3 +14F6- D4 ??? +14F7- C1 A0 CMP ($A0,X) +14F9- D9 CD B1 CMP $B1CD,Y +14FC- A0 BB LDY #$BB +14FE- 20 C1 CE JSR $CEC1 +1501- C4 20 CPY $20 +1503- C3 ??? +1504- D5 D2 CMP $D2,X +1506- D2 C5 CMP ($C5) +1508- CE D4 20 DEC $20D4 +150B- D2 CF CMP ($CF) +150D- D7 ??? +150E- 20 D0 CC JSR $CCD0 +1511- D5 D3 CMP $D3,X +1513- 8D A0 CC STA $CCA0 +1516- C4 C1 CPY $C1 +1518- A0 D8 LDY #$D8 +151A- D8 CLD +151B- A0 BB LDY #$BB +151D- 20 CF CE JSR $CECF +1520- C5 AC CMP $AC +1522- 20 D4 C8 JSR $C8D4 +1525- C5 CE CMP $CE +1527- 20 C4 CF JSR $CFC4 +152A- 20 D4 C8 JSR $C8D4 +152D- C5 20 CMP $20 +152F- D3 ??? +1530- C1 CD CMP ($CD,X) +1532- C5 8D CMP $8D +1534- A0 D3 LDY #$D3 +1536- D4 ??? +1537- C1 A0 CMP ($A0,X) +1539- D8 CLD +153A- D0 B1 BNE $14ED +153C- A0 BB LDY #$BB +153E- 20 C6 CF JSR $CFC6 +1541- D2 20 CMP ($20) +1543- C3 ??? +1544- CF ??? +1545- CC D5 CD CPY $CDD5 +1548- CE D3 8D DEC $8DD3 +154B- A0 D3 LDY #$D3 +154D- D4 ??? +154E- C1 A0 CMP ($A0,X) +1550- D8 CLD +1551- CD B1 8D CMP $8DB1 +1554- AA TAX +1555- 8D A0 C9 STA $C9A0 +1558- CE C3 A0 DEC $A0C3 +155B- D9 D0 B1 CMP $B1D0,Y +155E- 8D A0 C9 STA $C9A0 +1561- CE C3 A0 DEC $A0C3 +1564- D8 CLD +1565- D0 B1 BNE $1518 +1567- 8D A0 C4 STA $C4A0 +156A- C5 C3 CMP $C3 +156C- A0 D8 LDY #$D8 +156E- CD B1 8D CMP $8DB1 +1571- A0 C4 LDY #$C4 +1573- C5 C3 CMP $C3 +1575- A0 D9 LDY #$D9 +1577- CD B1 8D CMP $8DB1 +157A- AA TAX +157B- 8D BA DF STA $DFBA +157E- C9 C6 CMP #$C6 +1580- B1 A0 LDA ($A0),Y +1582- BB ??? +1583- 20 C9 C6 JSR $C6C9 +1586- 20 D6 C9 JSR $C9D6 +1589- D3 ??? +158A- C9 D4 CMP #$D4 +158C- C5 C4 CMP $C4 +158E- A8 TAY +158F- D8 CLD +1590- D8 CLD +1591- AC D9 AB LDY $ABD9 +1594- B1 A9 LDA ($A9),Y +1596- 20 BD BD JSR $BDBD +1599- 20 B1 8D JSR $8DB1 +159C- A0 C7 LDY #$C7 +159E- C5 D4 CMP $D4 +15A0- B8 CLV +15A1- B2 A0 LDA ($A0) +15A3- D6 C9 DEC $C9,X +15A5- D3 ??? +15A6- C9 D4 CMP #$D4 +15A8- C5 C4 CMP $C4 +15AA- BB ??? +15AB- D8 CLD +15AC- D8 CLD +15AD- BB ??? +15AE- D9 D0 B1 CMP $B1D0,Y +15B1- 8D A0 CC STA $CCA0 +15B4- C4 C1 CPY $C1 +15B6- A0 D2 LDY #$D2 +15B8- C5 D4 CMP $D4 +15BA- D5 D2 CMP $D2,X +15BC- CE 8D A0 DEC $A08D +15BF- C3 ??? +15C0- CD D0 A0 CMP $A0D0 +15C3- A3 ??? +15C4- B1 8D LDA ($8D),Y +15C6- A0 C2 LDY #$C2 +15C8- C5 D1 CMP $D1 +15CA- A0 BA LDY #$BA +15CC- DF ??? +15CD- C9 C6 CMP #$C6 +15CF- B2 A0 LDA ($A0) +15D1- BB ??? +15D2- 20 C9 C6 JSR $C6C9 +15D5- 20 C3 C5 JSR $C5C3 +15D8- CC CC 20 CPY $20CC +15DB- C2 ??? +15DC- C5 CC CMP $CC +15DE- CF ??? +15DF- D7 ??? +15E0- 20 C9 D3 JSR $D3C9 +15E3- 20 C1 20 JSR $20C1 +15E6- D7 ??? +15E7- C1 CC CMP ($CC,X) +15E9- CC 8D BB CPY $BB8D +15EC- 20 C3 CF JSR $CFC3 +15EF- CE D4 C9 DEC $C9D4 +15F2- CE D5 C5 DEC $C5D5 +15F5- 20 D4 C5 JSR $C5D4 +15F8- D3 ??? +15F9- D4 ??? +15FA- C9 CE CMP #$CE +15FC- C7 ??? +15FD- 20 CF D4 JSR $D4CF +1600- C8 INY +1601- C5 D2 CMP $D2 +1603- 8D A0 BB STA $BBA0 +1606- 20 C1 C4 JSR $C4C1 +1609- CA DEX +160A- C1 C3 CMP ($C3,X) +160C- C5 CE CMP $CE +160E- D4 ??? +160F- 20 C3 C5 JSR $C5C3 +1612- CC CC D3 CPY $D3CC +1615- 8D A0 CA STA $CAA0 +1618- CD D0 A0 CMP $A0D0 +161B- C4 CF CPY $CF +161D- CD CF D6 CMP $D6CF +1620- C5 A0 CMP $A0 +1622- BB ??? +1623- 20 CF D4 JSR $D4CF +1626- C8 INY +1627- C5 D2 CMP $D2 +1629- D7 ??? +162A- C9 D3 CMP #$D3 +162C- C5 AC CMP $AC +162E- 20 C5 D8 JSR $D8C5 +1631- C9 D4 CMP #$D4 +1633- 20 C3 CF JSR $CFC3 +1636- CE C4 C9 DEC $C9C4 +1639- D4 ??? +163A- C9 CF CMP #$CF +163C- CE C1 CC DEC $CCC1 +163F- 8D BA DF STA $DFBA +1642- C9 C6 CMP #$C6 +1644- B2 A0 LDA ($A0) +1646- BB ??? +1647- 20 C1 CE JSR $CEC1 +164A- C4 20 CPY $20 +164C- D6 C9 DEC $C9,X +164E- D3 ??? +164F- C9 D4 CMP #$D4 +1651- C5 C4 CMP $C4 +1653- A8 TAY +1654- D8 CLD +1655- AB ??? +1656- B1 AC LDA ($AC),Y +1658- D9 A9 20 CMP $20A9,Y +165B- BD BD 20 LDA $20BD,X +165E- B1 8D LDA ($8D),Y +1660- AA TAX +1661- 8D A0 C7 STA $C7A0 +1664- C5 D4 CMP $D4 +1666- B8 CLV +1667- B2 A0 LDA ($A0) +1669- D6 C9 DEC $C9,X +166B- D3 ??? +166C- C9 D4 CMP #$D4 +166E- C5 C4 CMP $C4 +1670- BB ??? +1671- D8 CLD +1672- D0 B1 BNE $1625 +1674- BB ??? +1675- D9 D9 8D CMP $8DD9,Y +1678- A0 CC LDY #$CC +167A- C4 C1 CPY $C1 +167C- A0 D2 LDY #$D2 +167E- C5 D4 CMP $D4 +1680- D5 D2 CMP $D2,X +1682- CE 8D A0 DEC $A08D +1685- C3 ??? +1686- CD D0 A0 CMP $A0D0 +1689- A3 ??? +168A- B1 A0 LDA ($A0),Y +168C- BB ??? +168D- 20 D4 C5 JSR $C5D4 +1690- D3 ??? +1691- D4 ??? +1692- 20 D2 C9 JSR $C9D2 +1695- C7 ??? +1696- C8 INY +1697- D4 ??? +1698- 20 C3 C5 JSR $C5C3 +169B- CC CC 8D CPY $8DCC +169E- A0 C2 LDY #$C2 +16A0- C5 D1 CMP $D1 +16A2- A0 BA LDY #$BA +16A4- DF ??? +16A5- C9 C6 CMP #$C6 +16A7- B3 ??? +16A8- 8D A0 CA STA $CAA0 +16AB- CD D0 A0 CMP $A0D0 +16AE- C4 CF CPY $CF +16B0- CD CF D6 CMP $D6CF +16B3- C5 8D CMP $8D +16B5- AA TAX +16B6- 8D BA DF STA $DFBA +16B9- C9 C6 CMP #$C6 +16BB- B3 ??? +16BC- A0 BB LDY #$BB +16BE- 20 C1 CE JSR $CEC1 +16C1- C4 20 CPY $20 +16C3- C9 C6 CMP #$C6 +16C5- 20 D6 C9 JSR $C9D6 +16C8- D3 ??? +16C9- C9 D4 CMP #$D4 +16CB- C5 C4 CMP $C4 +16CD- A8 TAY +16CE- D8 CLD +16CF- AC D9 AD LDY $ADD9 +16D2- B1 A9 LDA ($A9),Y +16D4- 20 BD BD JSR $BDBD +16D7- 20 B1 8D JSR $8DB1 +16DA- A0 CC LDY #$CC +16DC- C4 C1 CPY $C1 +16DE- A0 D9 LDY #$D9 +16E0- CD B1 8D CMP $8DB1 +16E3- A0 C3 LDY #$C3 +16E5- CD D0 A0 CMP $A0D0 +16E8- A3 ??? +16E9- B0 A0 BCS $168B +16EB- BB ??? +16EC- 20 D4 C5 JSR $C5D4 +16EF- D3 ??? +16F0- D4 ??? +16F1- 20 C6 CF JSR $CFC6 +16F4- D2 20 CMP ($20) +16F6- D9 BD B0 CMP $B0BD,Y +16F9- 20 D4 CF JSR $CFD4 +16FC- 20 CF D6 JSR $D6CF +16FF- CF ??? +1700- C9 C4 CMP #$C4 +1702- 8D A0 C2 STA $C2A0 +1705- CE C5 A0 DEC $A0C5 +1708- BA TSX +1709- C9 C6 CMP #$C6 +170B- B3 ??? +170C- C3 ??? +170D- A0 BB LDY #$BB +170F- 20 CF D5 JSR $D5CF +1712- D4 ??? +1713- 20 CF C6 JSR $C6CF +1716- 20 C2 CF JSR $CFC2 +1719- D5 CE CMP $CE,X +171B- C4 D3 CPY $D3 +171D- 20 C5 D2 JSR $D2C5 +1720- D2 CF CMP ($CF) +1722- D2 8D CMP ($8D) +1724- A0 CA LDY #$CA +1726- CD D0 A0 CMP $A0D0 +1729- BA TSX +172A- DF ??? +172B- C9 C6 CMP #$C6 +172D- B4 8D LDY $8D,X +172F- BA TSX +1730- C9 C6 CMP #$C6 +1732- B3 ??? +1733- C3 ??? +1734- 8D A0 C7 STA $C7A0 +1737- C5 D4 CMP $D4 +1739- B8 CLV +173A- B2 A0 LDA ($A0) +173C- D6 C9 DEC $C9,X +173E- D3 ??? +173F- C9 D4 CMP #$D4 +1741- C5 C4 CMP $C4 +1743- BB ??? +1744- D8 CLD +1745- D8 CLD +1746- BB ??? +1747- D9 CD B1 CMP $B1CD,Y +174A- 8D A0 CC STA $CCA0 +174D- C4 C1 CPY $C1 +174F- A0 D2 LDY #$D2 +1751- C5 D4 CMP $D4 +1753- D5 D2 CMP $D2,X +1755- CE 8D A0 DEC $A08D +1758- C3 ??? +1759- CD D0 A0 CMP $A0D0 +175C- A3 ??? +175D- B1 A0 LDA ($A0),Y +175F- BB ??? +1760- 20 D4 C5 JSR $C5D4 +1763- D3 ??? +1764- D4 ??? +1765- 20 C3 C5 JSR $C5C3 +1768- CC CC 20 CPY $20CC +176B- C1 C2 CMP ($C2,X) +176D- CF ??? +176E- D6 C5 DEC $C5,X +1770- 8D A0 C2 STA $C2A0 +1773- C5 D1 CMP $D1 +1775- A0 BA LDY #$BA +1777- DF ??? +1778- C9 C6 CMP #$C6 +177A- B4 8D LDY $8D,X +177C- A0 CA LDY #$CA +177E- CD D0 A0 CMP $A0D0 +1781- C4 CF CPY $CF +1783- CD CF D6 CMP $D6CF +1786- C5 8D CMP $8D +1788- AA TAX +1789- 8D BA DF STA $DFBA +178C- C9 C6 CMP #$C6 +178E- B4 A0 LDY $A0,X +1790- A0 BB LDY #$BB +1792- 20 C1 CE JSR $CEC1 +1795- C4 20 CPY $20 +1797- C9 C6 CMP #$C6 +1799- 20 D6 C9 JSR $C9D6 +179C- D3 ??? +179D- C9 D4 CMP #$D4 +179F- C5 C4 CMP $C4 +17A1- A8 TAY +17A2- D8 CLD +17A3- AD B1 AC LDA $ACB1 +17A6- D9 A9 20 CMP $20A9,Y +17A9- BD BD 20 LDA $20BD,X +17AC- B1 8D LDA ($8D),Y +17AE- A0 C7 LDY #$C7 +17B0- C5 D4 CMP $D4 +17B2- B8 CLV +17B3- B2 A0 LDA ($A0) +17B5- D6 C9 DEC $C9,X +17B7- D3 ??? +17B8- C9 D4 CMP #$D4 +17BA- C5 C4 CMP $C4 +17BC- BB ??? +17BD- D8 CLD +17BE- CD B1 BB CMP $BBB1 +17C1- D9 D9 8D CMP $8DD9,Y +17C4- A0 CC LDY #$CC +17C6- C4 C1 CPY $C1 +17C8- A0 D2 LDY #$D2 +17CA- C5 D4 CMP $D4 +17CC- D5 D2 CMP $D2,X +17CE- CE 8D A0 DEC $A08D +17D1- C3 ??? +17D2- CD D0 A0 CMP $A0D0 +17D5- A3 ??? +17D6- B1 A0 LDA ($A0),Y +17D8- BB ??? +17D9- 20 D4 C8 JSR $C8D4 +17DC- C5 CE CMP $CE +17DE- 20 D0 CF JSR $CFD0 +17E1- D0 20 BNE $1803 +17E3- D3 ??? +17E4- D4 ??? +17E5- C1 C3 CMP ($C3,X) +17E7- CB ??? +17E8- D3 ??? +17E9- 20 D5 CE JSR $CED5 +17EC- D4 ??? +17ED- C9 CC CMP #$CC +17EF- 20 C4 CF JSR $CFC4 +17F2- CE C5 8D DEC $8DC5 +17F5- A0 C2 LDY #$C2 +17F7- C5 D1 CMP $D1 +17F9- A0 BA LDY #$BA +17FB- D0 CF BNE $17CC +17FD- D0 8D BNE $178C +17FF- AA TAX +1800- 8D A0 CA STA $CAA0 +1803- CD D0 A0 CMP $A0D0 +1806- C4 CF CPY $CF +1808- CD CF D6 CMP $D6CF +180B- C5 A0 CMP $A0 +180D- BB ??? +180E- 20 CF D4 JSR $D4CF +1811- C8 INY +1812- C5 D2 CMP $D2 +1814- D7 ??? +1815- C9 D3 CMP #$D3 +1817- C5 AC CMP $AC +1819- 20 C5 D8 JSR $D8C5 +181C- C9 D4 CMP #$D4 +181E- 20 D2 CF JSR $CFD2 +1821- D5 D4 CMP $D4,X +1823- C9 CE CMP #$CE +1825- C5 8D CMP $8D +1827- AA TAX +1828- 8D AA AA STA $AAAA +182B- AA TAX +182C- AA TAX +182D- AA TAX +182E- AA TAX +182F- AA TAX +1830- AA TAX +1831- AA TAX +1832- AA TAX +1833- AA TAX +1834- AA TAX +1835- AA TAX +1836- AA TAX +1837- AA TAX +1838- AA TAX +1839- AA TAX +183A- AA TAX +183B- AA TAX +183C- AA TAX +183D- AA TAX +183E- AA TAX +183F- AA TAX +1840- AA TAX +1841- AA TAX +1842- AA TAX +1843- AA TAX +1844- AA TAX +1845- AA TAX +1846- AA TAX +1847- AA TAX +1848- AA TAX +1849- 8D AA 8D STA $8DAA +184C- BA TSX +184D- D0 CF BNE $181E +184F- D0 8D BNE $17DE +1851- AA TAX +1852- 8D A0 C7 STA $C7A0 +1855- C5 D4 CMP $D4 +1857- B8 CLV +1858- B1 A0 LDA ($A0),Y +185A- D8 CLD +185B- D3 ??? +185C- D4 ??? +185D- C1 C3 CMP ($C3,X) +185F- CB ??? +1860- BB ??? +1861- D3 ??? +1862- D0 D4 BNE $1838 +1864- D2 8D CMP ($8D) +1866- A0 CC LDY #$CC +1868- C4 C1 CPY $C1 +186A- A0 D2 LDY #$D2 +186C- C5 D4 CMP $D4 +186E- D5 D2 CMP $D2,X +1870- CE 8D A0 DEC $A08D +1873- D3 ??? +1874- D4 ??? +1875- C1 A0 CMP ($A0,X) +1877- D8 CLD +1878- D8 CLD +1879- 8D A0 C7 STA $C7A0 +187C- C5 D4 CMP $D4 +187E- B8 CLV +187F- B1 A0 LDA ($A0),Y +1881- D9 D3 D4 CMP $D4D3,Y +1884- C1 C3 CMP ($C3,X) +1886- CB ??? +1887- BB ??? +1888- D3 ??? +1889- D0 D4 BNE $185F +188B- D2 8D CMP ($8D) +188D- A0 CC LDY #$CC +188F- C4 C1 CPY $C1 +1891- A0 D2 LDY #$D2 +1893- C5 D4 CMP $D4 +1895- D5 D2 CMP $D2,X +1897- CE 8D A0 DEC $A08D +189A- D3 ??? +189B- D4 ??? +189C- C1 A0 CMP ($A0,X) +189E- D9 D9 8D CMP $8DD9,Y +18A1- A0 C4 LDY #$C4 +18A3- C5 C3 CMP $C3 +18A5- A0 D3 LDY #$D3 +18A7- D0 D4 BNE $187D +18A9- D2 A0 CMP ($A0) +18AB- BB ??? +18AC- 20 D0 CF JSR $CFD0 +18AF- D0 8D BNE $183E +18B1- A0 CC LDY #$CC +18B3- C4 C1 CPY $C1 +18B5- A0 D3 LDY #$D3 +18B7- D0 D4 BNE $188D +18B9- D2 8D CMP ($8D) +18BB- A0 C3 LDY #$C3 +18BD- CD D0 A0 CMP $A0D0 +18C0- A3 ??? +18C1- B1 A0 LDA ($A0),Y +18C3- BB ??? +18C4- 20 C9 C6 JSR $C6C9 +18C7- 20 D3 D4 JSR $D4D3 +18CA- C9 CC CMP #$CC +18CC- CC 20 CD CPY $CD20 +18CF- CF ??? +18D0- D2 C5 CMP ($C5) +18D2- 20 CF CE JSR $CECF +18D5- 20 D3 D4 JSR $D4D3 +18D8- C1 C3 CMP ($C3,X) +18DA- CB ??? +18DB- 8D A0 C2 STA $C2A0 +18DE- C3 ??? +18DF- D3 ??? +18E0- A0 BA LDY #$BA +18E2- C4 CF CPY $CF +18E4- D2 C5 CMP ($C5) +18E6- D0 C5 BNE $18AD +18E8- C1 D4 CMP ($D4,X) +18EA- 8D A0 CA STA $CAA0 +18ED- CD D0 A0 CMP $A0D0 +18F0- C4 C9 CPY $C9 +18F2- D3 ??? +18F3- D0 CD BNE $18C2 +18F5- C1 DA CMP ($DA,X) +18F7- C5 A0 CMP $A0 +18F9- BB ??? +18FA- 20 CF D4 JSR $D4CF +18FD- C8 INY +18FE- C5 D2 CMP $D2 +1900- D7 ??? +1901- C9 D3 CMP #$D3 +1903- C5 AC CMP $AC +1905- 20 C6 C9 JSR $C9C6 +1908- CE C9 D3 DEC $D3C9 +190B- C8 INY +190C- C5 C4 CMP $C4 +190E- A1 8D LDA ($8D,X) +1910- AA TAX +1911- 8D BA C4 STA $C4BA +1914- CF ??? +1915- D2 C5 CMP ($C5) +1917- D0 C5 BNE $18DE +1919- C1 D4 CMP ($D4,X) +191B- 8D A0 CA STA $CAA0 +191E- CD D0 A0 CMP $A0D0 +1921- C3 ??? +1922- C8 INY +1923- C5 C3 CMP $C3 +1925- CB ??? +1926- C1 CC CMP ($CC,X) +1928- CC 8D AA CPY $AA8D +192B- 8D AA AA STA $AAAA +192E- AA TAX +192F- AA TAX +1930- AA TAX +1931- AA TAX +1932- AA TAX +1933- AA TAX +1934- AA TAX +1935- AA TAX +1936- AA TAX +1937- AA TAX +1938- AA TAX +1939- AA TAX +193A- AA TAX +193B- AA TAX +193C- AA TAX +193D- AA TAX +193E- AA TAX +193F- AA TAX +1940- AA TAX +1941- AA TAX +1942- AA TAX +1943- AA TAX +1944- AA TAX +1945- AA TAX +1946- AA TAX +1947- AA TAX +1948- AA TAX +1949- AA TAX +194A- AA TAX +194B- AA TAX +194C- 8D AA 8D STA $8DAA +194F- C4 CF CPY $CF +1951- CD CF D6 CMP $D6CF +1954- C5 8D CMP $8D +1956- AA TAX +1957- 8D AA AA STA $AAAA +195A- 20 CD CF JSR $CFCD +195D- D6 C5 DEC $C5,X +195F- 20 C9 CE JSR $CEC9 +1962- 20 C1 20 JSR $20C1 +1965- D2 C1 CMP ($C1) +1967- CE C4 CF DEC $CFC4 +196A- CD 20 C4 CMP $C420 +196D- C9 D2 CMP #$D2 +196F- C5 C3 CMP $C3 +1971- D4 ??? +1972- C9 CF CMP #$CF +1974- CE 8D AA DEC $AA8D +1977- 8D A0 CA STA $CAA0 +197A- D3 ??? +197B- D2 A0 CMP ($A0) +197D- D2 C1 CMP ($C1) +197F- CE C4 B8 DEC $B8C4 +1982- 8D A0 C3 STA $C3A0 +1985- CD D0 A0 CMP $A0D0 +1988- A3 ??? +1989- B6 B4 LDX $B4,Y +198B- A0 BB LDY #$BB +198D- 20 C9 C6 JSR $C6C9 +1990- 20 D2 CE JSR $CED2 +1993- C4 20 CPY $20 +1995- BC 20 B6 LDY $B620,X +1998- B4 8D LDY $8D,X +199A- A0 C2 LDY #$C2 +199C- C3 ??? +199D- C3 ??? +199E- A0 BA LDY #$BA +19A0- CD D6 C4 CMP $C4D6 +19A3- CF ??? +19A4- D7 ??? +19A5- CE 8D A0 DEC $A08D +19A8- C3 ??? +19A9- CD D0 A0 CMP $A0D0 +19AC- A3 ??? +19AD- B1 B2 LDA ($B2),Y +19AF- B8 CLV +19B0- A0 BB LDY #$BB +19B2- 20 C5 CC JSR $CCC5 +19B5- D3 ??? +19B6- C5 20 CMP $20 +19B8- C9 C6 CMP #$C6 +19BA- 20 D2 CE JSR $CED2 +19BD- C4 20 CPY $20 +19BF- BC 20 B1 LDY $B120,X +19C2- B2 B8 LDA ($B8) +19C4- 8D A0 C2 STA $C2A0 +19C7- C3 ??? +19C8- C3 ??? +19C9- A0 BA LDY #$BA +19CB- CD D6 D2 CMP $D2D6 +19CE- C9 C7 CMP #$C7 +19D0- C8 INY +19D1- D4 ??? +19D2- 8D A0 C3 STA $C3A0 +19D5- CD D0 A0 CMP $A0D0 +19D8- A3 ??? +19D9- B1 B9 LDA ($B9),Y +19DB- B2 A0 LDA ($A0) +19DD- BB ??? +19DE- 20 C5 CC JSR $CCC5 +19E1- D3 ??? +19E2- C5 20 CMP $20 +19E4- C9 C6 CMP #$C6 +19E6- 20 D2 CE JSR $CED2 +19E9- C4 20 CPY $20 +19EB- BC 20 B1 LDY $B120,X +19EE- B9 B2 8D LDA $8DB2,Y +19F1- A0 C2 LDY #$C2 +19F3- C3 ??? +19F4- C3 ??? +19F5- A0 BA LDY #$BA +19F7- CD D6 D5 CMP $D5D6 +19FA- D0 8D BNE $1989 +19FC- A0 CA LDY #$CA +19FE- CD D0 A0 CMP $A0D0 +1A01- BA TSX +1A02- CD D6 CC CMP $CCD6 +1A05- C5 C6 CMP $C6 +1A07- D4 ??? +1A08- A0 BB LDY #$BB +1A0A- 20 C5 CC JSR $CCC5 +1A0D- D3 ??? +1A0E- C5 20 CMP $20 +1A10- D2 CE CMP ($CE) +1A12- C4 20 CPY $20 +1A14- C9 D3 CMP #$D3 +1A16- 20 BE 20 JSR $20BE +1A19- B1 B9 LDA ($B9),Y +1A1B- B1 8D LDA ($8D),Y +1A1D- AA TAX +1A1E- 8D BA CD STA $CDBA +1A21- D6 C4 DEC $C4,X +1A23- CF ??? +1A24- D7 ??? +1A25- CE 8D A0 DEC $A08D +1A28- C7 ??? +1A29- C5 D4 CMP $D4 +1A2B- B8 CLV +1A2C- B2 A0 LDA ($A0) +1A2E- D6 C9 DEC $C9,X +1A30- D3 ??? +1A31- C9 D4 CMP #$D4 +1A33- C5 C4 CMP $C4 +1A35- BB ??? +1A36- D8 CLD +1A37- D8 CLD +1A38- BB ??? +1A39- D9 D0 B1 CMP $B1D0,Y +1A3C- 8D A0 CC STA $CCA0 +1A3F- C4 C1 CPY $C1 +1A41- A0 D2 LDY #$D2 +1A43- C5 D4 CMP $D4 +1A45- D5 D2 CMP $D2,X +1A47- CE 8D A0 DEC $A08D +1A4A- C3 ??? +1A4B- CD D0 A0 CMP $A0D0 +1A4E- A3 ??? +1A4F- B0 A0 BCS $19F1 +1A51- BB ??? +1A52- 20 C9 C6 JSR $C6C9 +1A55- 20 CE CF JSR $CFCE +1A58- D4 ??? +1A59- 20 C1 20 JSR $20C1 +1A5C- D7 ??? +1A5D- C1 CC CMP ($CC,X) +1A5F- CC 8D A0 CPY $A08D +1A62- C2 ??? +1A63- C5 D1 CMP $D1 +1A65- A0 BA LDY #$BA +1A67- C4 CF CPY $CF +1A69- D7 ??? +1A6A- CE C7 CF DEC $CFC7 +1A6D- 8D A0 CA STA $CAA0 +1A70- CD D0 A0 CMP $A0D0 +1A73- C4 CF CPY $CF +1A75- CD CF D6 CMP $D6CF +1A78- C5 8D CMP $8D +1A7A- BA TSX +1A7B- C4 CF CPY $CF +1A7D- D7 ??? +1A7E- CE C7 CF DEC $CFC7 +1A81- A0 BB LDY #$BB +1A83- 20 D4 C8 JSR $C8D4 +1A86- C5 CE CMP $CE +1A88- 20 CD CF JSR $CFCD +1A8B- D6 C5 DEC $C5,X +1A8D- 20 D4 C8 JSR $C8D4 +1A90- C5 D2 CMP $D2 +1A92- C5 8D CMP $8D +1A94- A0 D0 LDY #$D0 +1A96- D5 D4 CMP $D4,X +1A98- B8 CLV +1A99- B2 A0 LDA ($A0) +1A9B- D6 B0 DEC $B0,X +1A9D- BB ??? +1A9E- D3 ??? +1A9F- CF ??? +1AA0- D5 D4 CMP $D4,X +1AA2- C8 INY +1AA3- D7 ??? +1AA4- BB ??? +1AA5- D8 CLD +1AA6- D8 CLD +1AA7- BB ??? +1AA8- D9 D9 8D CMP $8DD9,Y +1AAB- A0 C9 LDY #$C9 +1AAD- CE C3 A0 DEC $A0C3 +1AB0- D9 D9 8D CMP $8DD9,Y +1AB3- A0 CA LDY #$CA +1AB5- CD D0 A0 CMP $A0D0 +1AB8- D3 ??? +1AB9- D4 ??? +1ABA- C1 CB CMP ($CB,X) +1ABC- D0 D5 BNE $1A93 +1ABE- D3 ??? +1ABF- C8 INY +1AC0- 8D BA CD STA $CDBA +1AC3- D6 D2 DEC $D2,X +1AC5- C9 C7 CMP #$C7 +1AC7- C8 INY +1AC8- D4 ??? +1AC9- 8D A0 C7 STA $C7A0 +1ACC- C5 D4 CMP $D4 +1ACE- B8 CLV +1ACF- B2 A0 LDA ($A0) +1AD1- D6 C9 DEC $C9,X +1AD3- D3 ??? +1AD4- C9 D4 CMP #$D4 +1AD6- C5 C4 CMP $C4 +1AD8- BB ??? +1AD9- D8 CLD +1ADA- D0 B1 BNE $1A8D +1ADC- BB ??? +1ADD- D9 D9 8D CMP $8DD9,Y +1AE0- A0 CC LDY #$CC +1AE2- C4 C1 CPY $C1 +1AE4- A0 D2 LDY #$D2 +1AE6- C5 D4 CMP $D4 +1AE8- D5 D2 CMP $D2,X +1AEA- CE 8D A0 DEC $A08D +1AED- C3 ??? +1AEE- CD D0 A0 CMP $A0D0 +1AF1- A3 ??? +1AF2- B0 8D BCS $1A81 +1AF4- A0 C2 LDY #$C2 +1AF6- C5 D1 CMP $D1 +1AF8- A0 BA LDY #$BA +1AFA- D2 C9 CMP ($C9) +1AFC- C7 ??? +1AFD- C8 INY +1AFE- D4 ??? +1AFF- C7 ??? +1B00- CF ??? +1B01- 8D A0 CA STA $CAA0 +1B04- CD D0 A0 CMP $A0D0 +1B07- C4 CF CPY $CF +1B09- CD CF D6 CMP $D6CF +1B0C- C5 8D CMP $8D +1B0E- BA TSX +1B0F- D2 C9 CMP ($C9) +1B11- C7 ??? +1B12- C8 INY +1B13- D4 ??? +1B14- C7 ??? +1B15- CF ??? +1B16- 8D A0 D0 STA $D0A0 +1B19- D5 D4 CMP $D4,X +1B1B- B8 CLV +1B1C- B2 A0 LDA ($A0) +1B1E- D6 B0 DEC $B0,X +1B20- BB ??? +1B21- D7 ??? +1B22- C5 D3 CMP $D3 +1B24- D4 ??? +1B25- D7 ??? +1B26- BB ??? +1B27- D8 CLD +1B28- D0 B1 BNE $1ADB +1B2A- BB ??? +1B2B- D9 D9 8D CMP $8DD9,Y +1B2E- A0 C9 LDY #$C9 +1B30- CE C3 A0 DEC $A0C3 +1B33- D8 CLD +1B34- D8 CLD +1B35- 8D A0 CA STA $CAA0 +1B38- CD D0 A0 CMP $A0D0 +1B3B- D3 ??? +1B3C- D4 ??? +1B3D- C1 CB CMP ($CB,X) +1B3F- D0 D5 BNE $1B16 +1B41- D3 ??? +1B42- C8 INY +1B43- 8D AA 8D STA $8DAA +1B46- BA TSX +1B47- CD D6 D5 CMP $D5D6 +1B4A- D0 8D BNE $1AD9 +1B4C- A0 CC LDY #$CC +1B4E- C4 C1 CPY $C1 +1B50- A0 D9 LDY #$D9 +1B52- CD B1 8D CMP $8DB1 +1B55- A0 C3 LDY #$C3 +1B57- CD D0 A0 CMP $A0D0 +1B5A- A3 ??? +1B5B- B0 8D BCS $1AEA +1B5D- A0 C2 LDY #$C2 +1B5F- C5 D1 CMP $D1 +1B61- A0 BA LDY #$BA +1B63- D5 D0 CMP $D0,X +1B65- CE CF 8D DEC $8DCF +1B68- A0 C7 LDY #$C7 +1B6A- C5 D4 CMP $D4 +1B6C- B8 CLV +1B6D- B2 A0 LDA ($A0) +1B6F- D6 C9 DEC $C9,X +1B71- D3 ??? +1B72- C9 D4 CMP #$D4 +1B74- C5 C4 CMP $C4 +1B76- BB ??? +1B77- D8 CLD +1B78- D8 CLD +1B79- BB ??? +1B7A- D9 CD B1 CMP $B1CD,Y +1B7D- 8D A0 CC STA $CCA0 +1B80- C4 C1 CPY $C1 +1B82- A0 D2 LDY #$D2 +1B84- C5 D4 CMP $D4 +1B86- D5 D2 CMP $D2,X +1B88- CE 8D A0 DEC $A08D +1B8B- C3 ??? +1B8C- CD D0 A0 CMP $A0D0 +1B8F- A3 ??? +1B90- B0 8D BCS $1B1F +1B92- A0 C2 LDY #$C2 +1B94- C5 D1 CMP $D1 +1B96- A0 BA LDY #$BA +1B98- D5 D0 CMP $D0,X +1B9A- C7 ??? +1B9B- CF ??? +1B9C- 8D BA D5 STA $D5BA +1B9F- D0 CE BNE $1B6F +1BA1- CF ??? +1BA2- 8D A0 CA STA $CAA0 +1BA5- CD D0 A0 CMP $A0D0 +1BA8- C4 CF CPY $CF +1BAA- CD CF D6 CMP $D6CF +1BAD- C5 8D CMP $8D +1BAF- BA TSX +1BB0- D5 D0 CMP $D0,X +1BB2- C7 ??? +1BB3- CF ??? +1BB4- 8D A0 D0 STA $D0A0 +1BB7- D5 D4 CMP $D4,X +1BB9- B8 CLV +1BBA- B2 A0 LDA ($A0) +1BBC- D6 B0 DEC $B0,X +1BBE- BB ??? +1BBF- D3 ??? +1BC0- CF ??? +1BC1- D5 D4 CMP $D4,X +1BC3- C8 INY +1BC4- D7 ??? +1BC5- BB ??? +1BC6- D8 CLD +1BC7- D8 CLD +1BC8- BB ??? +1BC9- D9 CD B1 CMP $B1CD,Y +1BCC- 8D A0 C4 STA $C4A0 +1BCF- C5 C3 CMP $C3 +1BD1- A0 D9 LDY #$D9 +1BD3- D9 8D A0 CMP $A08D,Y +1BD6- CA DEX +1BD7- CD D0 A0 CMP $A0D0 +1BDA- D3 ??? +1BDB- D4 ??? +1BDC- C1 CB CMP ($CB,X) +1BDE- D0 D5 BNE $1BB5 +1BE0- D3 ??? +1BE1- C8 INY +1BE2- 8D AA 8D STA $8DAA +1BE5- BA TSX +1BE6- CD D6 CC CMP $CCD6 +1BE9- C5 C6 CMP $C6 +1BEB- D4 ??? +1BEC- 8D A0 C7 STA $C7A0 +1BEF- C5 D4 CMP $D4 +1BF1- B8 CLV +1BF2- B2 A0 LDA ($A0) +1BF4- D6 C9 DEC $C9,X +1BF6- D3 ??? +1BF7- C9 D4 CMP #$D4 +1BF9- C5 C4 CMP $C4 +1BFB- BB ??? +1BFC- D8 CLD +1BFD- CD B1 BB CMP $BBB1 +1C00- D9 D9 8D CMP $8DD9,Y +1C03- A0 CC LDY #$CC +1C05- C4 C1 CPY $C1 +1C07- A0 D2 LDY #$D2 +1C09- C5 D4 CMP $D4 +1C0B- D5 D2 CMP $D2,X +1C0D- CE 8D A0 DEC $A08D +1C10- C3 ??? +1C11- CD D0 A0 CMP $A0D0 +1C14- A3 ??? +1C15- B0 8D BCS $1BA4 +1C17- A0 C2 LDY #$C2 +1C19- C5 D1 CMP $D1 +1C1B- A0 BA LDY #$BA +1C1D- CC C5 C6 CPY $C6C5 +1C20- D4 ??? +1C21- C7 ??? +1C22- CF ??? +1C23- 8D A0 CA STA $CAA0 +1C26- CD D0 A0 CMP $A0D0 +1C29- C4 CF CPY $CF +1C2B- CD CF D6 CMP $D6CF +1C2E- C5 8D CMP $8D +1C30- BA TSX +1C31- CC C5 C6 CPY $C6C5 +1C34- D4 ??? +1C35- C7 ??? +1C36- CF ??? +1C37- 8D A0 D0 STA $D0A0 +1C3A- D5 D4 CMP $D4,X +1C3C- B8 CLV +1C3D- B2 A0 LDA ($A0) +1C3F- D6 B0 DEC $B0,X +1C41- BB ??? +1C42- D7 ??? +1C43- C5 D3 CMP $D3 +1C45- D4 ??? +1C46- D7 ??? +1C47- BB ??? +1C48- D8 CLD +1C49- D8 CLD +1C4A- BB ??? +1C4B- D9 D9 8D CMP $8DD9,Y +1C4E- A0 C4 LDY #$C4 +1C50- C5 C3 CMP $C3 +1C52- A0 D8 LDY #$D8 +1C54- D8 CLD +1C55- 8D A0 CA STA $CAA0 +1C58- CD D0 A0 CMP $A0D0 +1C5B- D3 ??? +1C5C- D4 ??? +1C5D- C1 CB CMP ($CB,X) +1C5F- D0 D5 BNE $1C36 +1C61- D3 ??? +1C62- C8 INY +1C63- 8D AA 8D STA $8DAA +1C66- AA TAX +1C67- AA TAX +1C68- AA TAX +1C69- AA TAX +1C6A- AA TAX +1C6B- AA TAX +1C6C- AA TAX +1C6D- AA TAX +1C6E- AA TAX +1C6F- AA TAX +1C70- AA TAX +1C71- AA TAX +1C72- AA TAX +1C73- AA TAX +1C74- AA TAX +1C75- AA TAX +1C76- AA TAX +1C77- AA TAX +1C78- AA TAX +1C79- AA TAX +1C7A- AA TAX +1C7B- AA TAX +1C7C- AA TAX +1C7D- AA TAX +1C7E- AA TAX +1C7F- AA TAX +1C80- AA TAX +1C81- AA TAX +1C82- AA TAX +1C83- AA TAX +1C84- AA TAX +1C85- AA TAX +1C86- 8D AA 20 STA $20AA +1C89- 20 20 20 JSR $2020 +1C8C- 20 20 20 JSR $2020 +1C8F- 20 20 20 JSR $2020 +1C92- 20 20 20 JSR $2020 +1C95- 20 20 20 JSR $2020 +1C98- 20 20 20 JSR $2020 +1C9B- 20 20 20 JSR $2020 +1C9E- 20 20 20 JSR $2020 +1CA1- 20 20 20 JSR $2020 +1CA4- 20 20 AA JSR $AA20 +1CA7- 8D AA 20 STA $20AA +1CAA- C4 C9 CPY $C9 +1CAC- D3 ??? +1CAD- D0 CC BNE $1C7B +1CAF- C1 D9 CMP ($D9,X) +1CB1- 20 D4 C8 JSR $C8D4 +1CB4- C5 20 CMP $20 +1CB6- CD C1 DA CMP $DAC1 +1CB9- C5 20 CMP $20 +1CBB- 20 20 20 JSR $2020 +1CBE- 20 20 20 JSR $2020 +1CC1- 20 20 20 JSR $2020 +1CC4- 20 20 20 JSR $2020 +1CC7- AA TAX +1CC8- 8D AA 20 STA $20AA +1CCB- 20 20 20 JSR $2020 +1CCE- 20 20 20 JSR $2020 +1CD1- 20 20 20 JSR $2020 +1CD4- 20 20 20 JSR $2020 +1CD7- 20 20 20 JSR $2020 +1CDA- 20 20 20 JSR $2020 +1CDD- 20 20 20 JSR $2020 +1CE0- 20 20 20 JSR $2020 +1CE3- 20 20 20 JSR $2020 +1CE6- 20 20 AA JSR $AA20 +1CE9- 8D AA AA STA $AAAA +1CEC- AA TAX +1CED- AA TAX +1CEE- AA TAX +1CEF- AA TAX +1CF0- AA TAX +1CF1- AA TAX +1CF2- AA TAX +1CF3- AA TAX +1CF4- AA TAX +1CF5- AA TAX +1CF6- AA TAX +1CF7- AA TAX +1CF8- AA TAX +1CF9- AA TAX +1CFA- AA TAX +1CFB- AA TAX +1CFC- AA TAX +1CFD- AA TAX +1CFE- AA TAX +1CFF- AA TAX +1D00- AA TAX +1D01- AA TAX +1D02- AA TAX +1D03- AA TAX +1D04- AA TAX +1D05- AA TAX +1D06- AA TAX +1D07- AA TAX +1D08- AA TAX +1D09- AA TAX +1D0A- 8D AA 8D STA $8DAA +1D0D- C4 C9 CPY $C9 +1D0F- D3 ??? +1D10- D0 CD BNE $1CDF +1D12- C1 DA CMP ($DA,X) +1D14- C5 8D CMP $8D +1D16- AA TAX +1D17- 8D AA AA STA $AAAA +1D1A- 20 D3 C5 JSR $C5D3 +1D1D- CE C4 20 DEC $20C4 +1D20- CD C1 DA CMP $DAC1 +1D23- C5 20 CMP $20 +1D25- D4 ??? +1D26- CF ??? +1D27- 20 C4 C9 JSR $C9C4 +1D2A- D3 ??? +1D2B- D0 CC BNE $1CF9 +1D2D- C1 D9 CMP ($D9,X) +1D2F- 20 CF D5 JSR $D5CF +1D32- D4 ??? +1D33- D0 D5 BNE $1D0A +1D35- D4 ??? +1D36- AC 20 C6 LDY $C620 +1D39- CF ??? +1D3A- D2 CD CMP ($CD) +1D3C- C1 D4 CMP ($D4,X) +1D3E- D4 ??? +1D3F- C5 C4 CMP $C4 +1D41- 8D AA 8D STA $8DAA +1D44- A0 D0 LDY #$D0 +1D46- D2 CE CMP ($CE) +1D48- A0 A2 LDY #$A2 +1D4A- D0 D2 BNE $1D1E +1D4C- C9 CE CMP #$CE +1D4E- D4 ??? +1D4F- C9 CE CMP #$CE +1D51- C7 ??? +1D52- AE AE AE LDX $AEAE +1D55- A2 AC LDX #$AC +1D57- B8 CLV +1D58- C4 8D CPY $8D +1D5A- A0 D0 LDY #$D0 +1D5C- D2 CE CMP ($CE) +1D5E- A0 A2 LDY #$A2 +1D60- 20 A2 AC JSR $ACA2 +1D63- B8 CLV +1D64- C4 8D CPY $8D +1D66- A0 CC LDY #$CC +1D68- C4 C1 CPY $C1 +1D6A- A0 A3 LDY #$A3 +1D6C- B1 8D LDA ($8D),Y +1D6E- A0 D3 LDY #$D3 +1D70- D4 ??? +1D71- C1 A0 CMP ($A0,X) +1D73- D8 CLD +1D74- D8 CLD +1D75- 8D BA D8 STA $D8BA +1D78- CC CF CF CPY $CFCF +1D7B- D0 8D BNE $1D0A +1D7D- A0 C9 LDY #$C9 +1D7F- CE C3 A0 DEC $A0C3 +1D82- D8 CLD +1D83- D8 CLD +1D84- 8D A0 D0 STA $D0A0 +1D87- D2 CE CMP ($CE) +1D89- A0 A2 LDY #$A2 +1D8B- D8 CLD +1D8C- A2 8D LDX #$8D +1D8E- A0 CC LDY #$CC +1D90- C4 C1 CPY $C1 +1D92- A0 D8 LDY #$D8 +1D94- D8 CLD +1D95- 8D A0 C3 STA $C3A0 +1D98- CD D0 A0 CMP $A0D0 +1D9B- A3 ??? +1D9C- D8 CLD +1D9D- CE D5 CD DEC $CDD5 +1DA0- 8D A0 C2 STA $C2A0 +1DA3- CE C5 A0 DEC $A0C5 +1DA6- BA TSX +1DA7- D8 CLD +1DA8- CC CF CF CPY $CFCF +1DAB- D0 8D BNE $1D3A +1DAD- A0 D0 LDY #$D0 +1DAF- D2 CE CMP ($CE) +1DB1- A0 A2 LDY #$A2 +1DB3- 20 A2 AC JSR $ACA2 +1DB6- B8 CLV +1DB7- C4 8D CPY $8D +1DB9- AA TAX +1DBA- 8D A0 CC STA $CCA0 +1DBD- C4 C1 CPY $C1 +1DBF- A0 A3 LDY #$A3 +1DC1- B2 8D LDA ($8D) +1DC3- A0 D3 LDY #$D3 +1DC5- D4 ??? +1DC6- C1 A0 CMP ($A0,X) +1DC8- D8 CLD +1DC9- D8 CLD +1DCA- 8D A0 D3 STA $D3A0 +1DCD- D4 ??? +1DCE- C1 A0 CMP ($A0,X) +1DD0- D9 D9 8D CMP $8DD9,Y +1DD3- D7 ??? +1DD4- CC D0 8D CPY $8DD0 +1DD7- AA TAX +1DD8- 8D AA AA STA $AAAA +1DDB- 20 C9 C6 JSR $C6C9 +1DDE- 20 D7 C5 JSR $C5D7 +1DE1- D3 ??? +1DE2- D4 ??? +1DE3- D7 ??? +1DE4- A8 TAY +1DE5- D8 CLD +1DE6- AC D9 A9 LDY $A9D9 +1DE9- 20 BD BD JSR $BDBD +1DEC- 20 B0 8D JSR $8DB0 +1DEF- AA TAX +1DF0- 8D A0 C7 STA $C7A0 +1DF3- C5 D4 CMP $D4 +1DF5- B8 CLV +1DF6- B2 A0 LDA ($A0) +1DF8- D7 ??? +1DF9- C5 D3 CMP $D3 +1DFB- D4 ??? +1DFC- D7 ??? +1DFD- BB ??? +1DFE- D8 CLD +1DFF- D8 CLD +1E00- BB ??? +1E01- D9 D9 8D CMP $8DD9,Y +1E04- A0 CC LDY #$CC +1E06- C4 C1 CPY $C1 +1E08- A0 D2 LDY #$D2 +1E0A- C5 D4 CMP $D4 +1E0C- D5 D2 CMP $D2,X +1E0E- CE 8D A0 DEC $A08D +1E11- C3 ??? +1E12- CD D0 A0 CMP $A0D0 +1E15- A3 ??? +1E16- B0 8D BCS $1DA5 +1E18- A0 C2 LDY #$C2 +1E1A- C5 D1 CMP $D1 +1E1C- A0 CE LDY #$CE +1E1E- CF ??? +1E1F- D7 ??? +1E20- C1 CC CMP ($CC,X) +1E22- CC D7 A0 CPY $A0D7 +1E25- BB ??? +1E26- 20 D4 C8 JSR $C8D4 +1E29- C5 CE CMP $CE +1E2B- 20 D0 D2 JSR $D2D0 +1E2E- C9 CE CMP #$CE +1E30- D4 ??? +1E31- 20 AE AE JSR $AEAE +1E34- AE 8D D9 LDX $D98D +1E37- C5 D3 CMP $D3 +1E39- D7 ??? +1E3A- C1 CC CMP ($CC,X) +1E3C- CC D7 A0 CPY $A0D7 +1E3F- BB ??? +1E40- 20 C5 CC JSR $CCC5 +1E43- D3 ??? +1E44- C5 20 CMP $20 +1E46- D0 D2 BNE $1E1A +1E48- C9 CE CMP #$CE +1E4A- D4 ??? +1E4B- 20 D8 AE JSR $AED8 +1E4E- AE 8D A0 LDX $A08D +1E51- D0 D2 BNE $1E25 +1E53- CE A0 A2 DEC $A2A0 +1E56- D8 CLD +1E57- 20 A2 8D JSR $8DA2 +1E5A- A0 CA LDY #$CA +1E5C- CD D0 A0 CMP $A0D0 +1E5F- C3 ??? +1E60- CF ??? +1E61- CE D4 D7 DEC $D7D4 +1E64- CC D0 8D CPY $8DD0 +1E67- CE CF D7 DEC $D7CF +1E6A- C1 CC CMP ($CC,X) +1E6C- CC D7 8D CPY $8DD7 +1E6F- A0 D0 LDY #$D0 +1E71- D2 CE CMP ($CE) +1E73- A0 A2 LDY #$A2 +1E75- 20 20 A2 JSR $A220 +1E78- 8D AA 8D STA $8DAA +1E7B- C3 ??? +1E7C- CF ??? +1E7D- CE D4 D7 DEC $D7D4 +1E80- CC D0 8D CPY $8DD0 +1E83- A0 C9 LDY #$C9 +1E85- CE C3 A0 DEC $A0C3 +1E88- D8 CLD +1E89- D8 CLD +1E8A- 8D A0 CC STA $CCA0 +1E8D- C4 C1 CPY $C1 +1E8F- A0 D8 LDY #$D8 +1E91- D8 CLD +1E92- 8D A0 C3 STA $C3A0 +1E95- CD D0 A0 CMP $A0D0 +1E98- A3 ??? +1E99- D8 CLD +1E9A- CD C1 D8 CMP $D8C1 +1E9D- 8D A0 C2 STA $C2A0 +1EA0- C5 D1 CMP $D1 +1EA2- A0 BA LDY #$BA +1EA4- C5 CE CMP $CE +1EA6- C4 D7 CPY $D7 +1EA8- CC D0 8D CPY $8DD0 +1EAB- A0 CA LDY #$CA +1EAD- CD D0 A0 CMP $A0D0 +1EB0- D7 ??? +1EB1- CC D0 8D CPY $8DD0 +1EB4- AA TAX +1EB5- 8D BA C5 STA $C5BA +1EB8- CE C4 D7 DEC $D7C4 +1EBB- CC D0 8D CPY $8DD0 +1EBE- A0 D0 LDY #$D0 +1EC0- D2 CE CMP ($CE) +1EC2- A0 A2 LDY #$A2 +1EC4- D8 CLD +1EC5- A2 AC LDX #$AC +1EC7- B8 CLV +1EC8- C4 20 CPY $20 +1ECA- BB ??? +1ECB- 20 CE C5 JSR $C5CE +1ECE- D8 CLD +1ECF- D4 ??? +1ED0- 20 CC C9 JSR $C9CC +1ED3- CE C5 8D DEC $8DC5 +1ED6- AA TAX +1ED7- 8D A0 CC STA $CCA0 +1EDA- C4 C1 CPY $C1 +1EDC- A0 A3 LDY #$A3 +1EDE- B2 8D LDA ($8D) +1EE0- A0 D3 LDY #$D3 +1EE2- D4 ??? +1EE3- C1 A0 CMP ($A0,X) +1EE5- D8 CLD +1EE6- D8 CLD +1EE7- A0 BB LDY #$BB +1EE9- 20 D2 C5 JSR $C5D2 +1EEC- C3 ??? +1EED- D9 C3 CC CMP $CCC3,Y +1EF0- C9 CE CMP #$CE +1EF2- C7 ??? +1EF3- 8D AA 8D STA $8DAA +1EF6- AA TAX +1EF7- AA TAX +1EF8- 20 C9 C6 JSR $C6C9 +1EFB- 20 D3 CF JSR $CFD3 +1EFE- D5 D4 CMP $D4,X +1F00- C8 INY +1F01- D7 ??? +1F02- A8 TAY +1F03- D8 CLD +1F04- AC D9 A9 LDY $A9D9 +1F07- 20 BD BD JSR $BDBD +1F0A- 20 B0 8D JSR $8DB0 +1F0D- AA TAX +1F0E- 8D D3 CC STA $CCD3 +1F11- D0 8D BNE $1EA0 +1F13- A0 C7 LDY #$C7 +1F15- C5 D4 CMP $D4 +1F17- B8 CLV +1F18- B2 A0 LDA ($A0) +1F1A- D3 ??? +1F1B- CF ??? +1F1C- D5 D4 CMP $D4,X +1F1E- C8 INY +1F1F- D7 ??? +1F20- BB ??? +1F21- D8 CLD +1F22- D8 CLD +1F23- BB ??? +1F24- D9 D9 8D CMP $8DD9,Y +1F27- A0 CC LDY #$CC +1F29- C4 C1 CPY $C1 +1F2B- A0 D2 LDY #$D2 +1F2D- C5 D4 CMP $D4 +1F2F- D5 D2 CMP $D2,X +1F31- CE 8D A0 DEC $A08D +1F34- C3 ??? +1F35- CD D0 A0 CMP $A0D0 +1F38- A3 ??? +1F39- B0 8D BCS $1EC8 +1F3B- A0 C2 LDY #$C2 +1F3D- C5 D1 CMP $D1 +1F3F- A0 CE LDY #$CE +1F41- CF ??? +1F42- D3 ??? +1F43- CF ??? +1F44- D5 D4 CMP $D4,X +1F46- C8 INY +1F47- A0 BB LDY #$BB +1F49- 20 D4 C8 JSR $C8D4 +1F4C- C5 CE CMP $CE +1F4E- 20 D0 D2 JSR $D2D0 +1F51- C9 CE CMP #$CE +1F53- D4 ??? +1F54- 20 D8 AE JSR $AED8 +1F57- AE 8D D9 LDX $D98D +1F5A- D3 ??? +1F5B- CF ??? +1F5C- D5 D4 CMP $D4,X +1F5E- C8 INY +1F5F- A0 BB LDY #$BB +1F61- 20 C5 CC JSR $CCC5 +1F64- D3 ??? +1F65- C5 20 CMP $20 +1F67- D0 D2 BNE $1F3B +1F69- C9 CE CMP #$CE +1F6B- D4 ??? +1F6C- 20 D8 D8 JSR $D8D8 +1F6F- D8 CLD +1F70- 8D A0 D0 STA $D0A0 +1F73- D2 CE CMP ($CE) +1F75- A0 A2 LDY #$A2 +1F77- D8 CLD +1F78- D8 CLD +1F79- A2 8D LDX #$8D +1F7B- A0 CA LDY #$CA +1F7D- CD D0 A0 CMP $A0D0 +1F80- C3 ??? +1F81- CF ??? +1F82- CE D4 D3 DEC $D3D4 +1F85- CC D0 8D CPY $8DD0 +1F88- CE CF D3 DEC $D3CF +1F8B- CF ??? +1F8C- D5 D4 CMP $D4,X +1F8E- C8 INY +1F8F- 8D A0 D0 STA $D0A0 +1F92- D2 CE CMP ($CE) +1F94- A0 A2 LDY #$A2 +1F96- D8 CLD +1F97- 20 A2 8D JSR $8DA2 +1F9A- C3 ??? +1F9B- CF ??? +1F9C- CE D4 D3 DEC $D3D4 +1F9F- CC D0 8D CPY $8DD0 +1FA2- A0 C9 LDY #$C9 +1FA4- CE C3 A0 DEC $A0C3 +1FA7- D8 CLD +1FA8- D8 CLD +1FA9- 8D A0 CC STA $CCA0 +1FAC- C4 C1 CPY $C1 +1FAE- A0 D8 LDY #$D8 +1FB0- D8 CLD +1FB1- 8D A0 C3 STA $C3A0 +1FB4- CD D0 A0 CMP $A0D0 +1FB7- A3 ??? +1FB8- D8 CLD +1FB9- CD C1 D8 CMP $D8C1 +1FBC- 8D A0 C2 STA $C2A0 +1FBF- C5 D1 CMP $D1 +1FC1- A0 BA LDY #$BA +1FC3- C5 CE CMP $CE +1FC5- C4 D3 CPY $D3 +1FC7- CC D0 8D CPY $8DD0 +1FCA- A0 CA LDY #$CA +1FCC- CD D0 A0 CMP $A0D0 +1FCF- D3 ??? +1FD0- CC D0 8D CPY $8DD0 +1FD3- BA TSX +1FD4- C5 CE CMP $CE +1FD6- C4 D3 CPY $D3 +1FD8- CC D0 8D CPY $8DD0 +1FDB- AA TAX +1FDC- 8D A0 D0 STA $D0A0 +1FDF- D2 CE CMP ($CE) +1FE1- A0 A2 LDY #$A2 +1FE3- D8 CLD +1FE4- A2 AC LDX #$AC +1FE6- B8 CLV +1FE7- C4 8D CPY $8D +1FE9- AA TAX +1FEA- 8D A0 CC STA $CCA0 +1FED- C4 C1 CPY $C1 +1FEF- A0 A3 LDY #$A3 +1FF1- B2 8D LDA ($8D) +1FF3- A0 D3 LDY #$D3 +1FF5- D4 ??? +1FF6- C1 A0 CMP ($A0,X) +1FF8- D8 CLD +1FF9- D8 CLD +1FFA- 8D A0 C9 STA $C9A0 +1FFD- CE C3 A0 DEC $A0C3 +2000- D9 D9 8D CMP $8DD9,Y +2003- A0 CC LDY #$CC +2005- C4 C1 CPY $C1 +2007- A0 D9 LDY #$D9 +2009- D9 8D A0 CMP $A08D,Y +200C- C3 ??? +200D- CD D0 A0 CMP $A0D0 +2010- A3 ??? +2011- D9 CD C1 CMP $C1CD,Y +2014- D8 CLD +2015- 8D A0 C2 STA $C2A0 +2018- C5 D1 CMP $D1 +201A- A0 C4 LDY #$C4 +201C- C9 D3 CMP #$D3 +201E- D0 C5 BNE $1FE5 +2020- D8 CLD +2021- C9 D4 CMP #$D4 +2023- 8D A0 CA STA $CAA0 +2026- CD D0 A0 CMP $A0D0 +2029- D7 ??? +202A- CC D0 8D CPY $8DD0 +202D- AA TAX +202E- 8D C4 C9 STA $C9C4 +2031- D3 ??? +2032- D0 C5 BNE $1FF9 +2034- D8 CLD +2035- C9 D4 CMP #$D4 +2037- 8D AA 8D STA $8DAA +203A- A0 DF LDY #$DF +203C- D7 ??? +203D- C1 C9 CMP ($C9,X) +203F- D4 ??? +2040- 8D A0 CA STA $CAA0 +2043- CD D0 A0 CMP $A0D0 +2046- D2 C5 CMP ($C5) +2048- C5 CE CMP $CE +204A- D4 ??? +204B- D2 D9 CMP ($D9) +204D- 8D AA 8D STA $8DAA +2050- AA TAX +2051- AA TAX +2052- AA TAX +2053- AA TAX +2054- AA TAX +2055- AA TAX +2056- AA TAX +2057- AA TAX +2058- AA TAX +2059- AA TAX +205A- AA TAX +205B- AA TAX +205C- AA TAX +205D- AA TAX +205E- AA TAX +205F- AA TAX +2060- AA TAX +2061- AA TAX +2062- AA TAX +2063- AA TAX +2064- AA TAX +2065- AA TAX +2066- AA TAX +2067- AA TAX +2068- AA TAX +2069- AA TAX +206A- AA TAX +206B- AA TAX +206C- AA TAX +206D- AA TAX +206E- AA TAX +206F- AA TAX +2070- 8D AA 20 STA $20AA +2073- 20 20 20 JSR $2020 +2076- 20 20 20 JSR $2020 +2079- 20 20 20 JSR $2020 +207C- 20 20 20 JSR $2020 +207F- 20 20 20 JSR $2020 +2082- 20 20 20 JSR $2020 +2085- 20 20 20 JSR $2020 +2088- 20 20 20 JSR $2020 +208B- 20 20 20 JSR $2020 +208E- 20 20 AA JSR $AA20 +2091- 8D AA 20 STA $20AA +2094- D6 C1 DEC $C1,X +2096- D2 C9 CMP ($C9) +2098- C1 C2 CMP ($C2,X) +209A- CC C5 D3 CPY $D3C5 +209D- 20 20 20 JSR $2020 +20A0- 20 20 20 JSR $2020 +20A3- 20 20 20 JSR $2020 +20A6- 20 20 20 JSR $2020 +20A9- 20 20 20 JSR $2020 +20AC- 20 20 20 JSR $2020 +20AF- 20 20 AA JSR $AA20 +20B2- 8D AA 20 STA $20AA +20B5- 20 20 20 JSR $2020 +20B8- 20 20 20 JSR $2020 +20BB- 20 20 20 JSR $2020 +20BE- 20 20 20 JSR $2020 +20C1- 20 20 20 JSR $2020 +20C4- 20 20 20 JSR $2020 +20C7- 20 20 20 JSR $2020 +20CA- 20 20 20 JSR $2020 +20CD- 20 20 20 JSR $2020 +20D0- 20 20 AA JSR $AA20 +20D3- 8D AA AA STA $AAAA +20D6- AA TAX +20D7- AA TAX +20D8- AA TAX +20D9- AA TAX +20DA- AA TAX +20DB- AA TAX +20DC- AA TAX +20DD- AA TAX +20DE- AA TAX +20DF- AA TAX +20E0- AA TAX +20E1- AA TAX +20E2- AA TAX +20E3- AA TAX +20E4- AA TAX +20E5- AA TAX +20E6- AA TAX +20E7- AA TAX +20E8- AA TAX +20E9- AA TAX +20EA- AA TAX +20EB- AA TAX +20EC- AA TAX +20ED- AA TAX +20EE- AA TAX +20EF- AA TAX +20F0- AA TAX +20F1- AA TAX +20F2- AA TAX +20F3- AA TAX +20F4- 8D AA 8D STA $8DAA +20F7- D6 B0 DEC $B0,X +20F9- A0 C4 LDY #$C4 +20FB- D3 ??? +20FC- A0 B1 LDY #$B1 +20FE- A0 BB LDY #$BB +2100- 20 D5 D3 JSR $D3D5 +2103- C5 C4 CMP $C4 +2105- 20 C2 C5 JSR $C5C2 +2108- C3 ??? +2109- C1 D5 CMP ($D5,X) +210B- D3 ??? +210C- C5 20 CMP $20 +210E- CF ??? +210F- C6 20 DEC $20 +2111- C3 ??? +2112- D5 D2 CMP $D2,X +2114- D2 C5 CMP ($C5) +2116- CE D4 8D DEC $8DD4 +2119- D6 B1 DEC $B1,X +211B- A0 C4 LDY #$C4 +211D- D3 ??? +211E- A0 B1 LDY #$B1 +2120- A0 BB LDY #$BB +2122- 20 C1 D2 JSR $D2C1 +2125- D2 C1 CMP ($C1) +2127- D9 20 C4 CMP $C420,Y +212A- C9 CD CMP #$CD +212C- 20 CC C9 JSR $C9CC +212F- CD C9 D4 CMP $D4C9 +2132- C1 D4 CMP ($D4,X) +2134- C9 CF CMP #$CF +2136- CE D3 8D DEC $8DD3 +2139- AA TAX +213A- 8D D8 D8 STA $D8D8 +213D- A0 C4 LDY #$C4 +213F- D3 ??? +2140- A0 B1 LDY #$B1 +2142- A0 BB LDY #$BB +2144- 20 C3 D5 JSR $D5C3 +2147- D2 D2 CMP ($D2) +2149- C5 CE CMP $CE +214B- D4 ??? +214C- 20 C3 CF JSR $CFC3 +214F- CC D5 CD CPY $CDD5 +2152- CE 8D D9 DEC $D98D +2155- D9 A0 C4 CMP $C4A0,Y +2158- D3 ??? +2159- A0 B1 LDY #$B1 +215B- A0 BB LDY #$BB +215D- 20 C3 D5 JSR $D5C3 +2160- D2 D2 CMP ($D2) +2162- C5 CE CMP $CE +2164- D4 ??? +2165- 20 D2 CF JSR $CFD2 +2168- D7 ??? +2169- 8D D3 D0 STA $D0D3 +216C- D4 ??? +216D- D2 A0 CMP ($A0) +216F- C4 D3 CPY $D3 +2171- A0 B1 LDY #$B1 +2173- A0 BB LDY #$BB +2175- 20 C1 D2 JSR $D2C1 +2178- D2 C1 CMP ($C1) +217A- D9 20 D3 CMP $D320,Y +217D- D4 ??? +217E- C1 C3 CMP ($C3,X) +2180- CB ??? +2181- 20 D0 CF JSR $CFD0 +2184- C9 CE CMP #$CE +2186- D4 ??? +2187- C5 D2 CMP $D2 +2189- 8D D8 D0 STA $D0D8 +218C- B1 A0 LDA ($A0),Y +218E- C4 D3 CPY $D3 +2190- A0 B1 LDY #$B1 +2192- A0 BB LDY #$BB +2194- 20 D8 20 JSR $20D8 +2197- D0 CC BNE $2165 +2199- D5 D3 CMP $D3,X +219B- 20 CF CE JSR $CECF +219E- C5 8D CMP $8D +21A0- D8 CLD +21A1- CD B1 A0 CMP $A0B1 +21A4- C4 D3 CPY $D3 +21A6- A0 B1 LDY #$B1 +21A8- A0 BB LDY #$BB +21AA- 20 D8 20 JSR $20D8 +21AD- CD C9 CE CMP $CEC9 +21B0- D5 D3 CMP $D3,X +21B2- 20 CF CE JSR $CECF +21B5- C5 8D CMP $8D +21B7- D9 D0 B1 CMP $B1D0,Y +21BA- A0 C4 LDY #$C4 +21BC- D3 ??? +21BD- A0 B1 LDY #$B1 +21BF- A0 BB LDY #$BB +21C1- 20 D9 20 JSR $20D9 +21C4- D0 CC BNE $2192 +21C6- D5 D3 CMP $D3,X +21C8- 20 CF CE JSR $CECF +21CB- C5 8D CMP $8D +21CD- D9 CD B1 CMP $B1CD,Y +21D0- A0 C4 LDY #$C4 +21D2- D3 ??? +21D3- A0 B1 LDY #$B1 +21D5- A0 BB LDY #$BB +21D7- 20 D9 20 JSR $20D9 +21DA- CD C9 CE CMP $CEC9 +21DD- D5 D3 CMP $D3,X +21DF- 20 CF CE JSR $CECF +21E2- C5 8D CMP $8D +21E4- AA TAX +21E5- 8D AA AA STA $AAAA +21E8- AA TAX +21E9- AA TAX +21EA- AA TAX +21EB- AA TAX +21EC- AA TAX +21ED- AA TAX +21EE- AA TAX +21EF- AA TAX +21F0- AA TAX +21F1- AA TAX +21F2- AA TAX +21F3- AA TAX +21F4- AA TAX +21F5- AA TAX +21F6- AA TAX +21F7- AA TAX +21F8- AA TAX +21F9- AA TAX +21FA- AA TAX +21FB- AA TAX +21FC- AA TAX +21FD- AA TAX +21FE- AA TAX +21FF- AA TAX +2200- AA TAX +2201- AA TAX +2202- AA TAX +2203- AA TAX +2204- AA TAX +2205- AA TAX +2206- 8D AA 20 STA $20AA +2209- 20 20 20 JSR $2020 +220C- 20 20 20 JSR $2020 +220F- 20 20 20 JSR $2020 +2212- 20 20 20 JSR $2020 +2215- 20 20 20 JSR $2020 +2218- 20 20 20 JSR $2020 +221B- 20 20 20 JSR $2020 +221E- 20 20 20 JSR $2020 +2221- 20 20 20 JSR $2020 +2224- 20 20 AA JSR $AA20 +2227- 8D AA 20 STA $20AA +222A- 20 CC CF JSR $CFCC +222D- D7 ??? +222E- AD CC C5 LDA $C5CC +2231- D6 C5 DEC $C5,X +2233- CC 20 D2 CPY $D220 +2236- CF ??? +2237- D5 D4 CMP $D4,X +2239- C9 CE CMP #$CE +223B- C5 D3 CMP $D3 +223D- 20 20 20 JSR $2020 +2240- 20 20 20 JSR $2020 +2243- 20 20 20 JSR $2020 +2246- 20 AA 8D JSR $8DAA +2249- AA TAX +224A- 20 20 20 JSR $2020 +224D- 20 20 20 JSR $2020 +2250- 20 20 20 JSR $2020 +2253- 20 20 20 JSR $2020 +2256- 20 20 20 JSR $2020 +2259- 20 20 20 JSR $2020 +225C- 20 20 20 JSR $2020 +225F- 20 20 20 JSR $2020 +2262- 20 20 20 JSR $2020 +2265- 20 20 20 JSR $2020 +2268- AA TAX +2269- 8D AA AA STA $AAAA +226C- AA TAX +226D- AA TAX +226E- AA TAX +226F- AA TAX +2270- AA TAX +2271- AA TAX +2272- AA TAX +2273- AA TAX +2274- AA TAX +2275- AA TAX +2276- AA TAX +2277- AA TAX +2278- AA TAX +2279- AA TAX +227A- AA TAX +227B- AA TAX +227C- AA TAX +227D- AA TAX +227E- AA TAX +227F- AA TAX +2280- AA TAX +2281- AA TAX +2282- AA TAX +2283- AA TAX +2284- AA TAX +2285- AA TAX +2286- AA TAX +2287- AA TAX +2288- AA TAX +2289- AA TAX +228A- 8D AA 8D STA $8DAA +228D- A0 D0 LDY #$D0 +228F- D5 D4 CMP $D4,X +2291- A0 D2 LDY #$D2 +2293- C5 D1 CMP $D1 +2295- D5 C9 CMP $C9,X +2297- D2 C5 CMP ($C5) +2299- C4 AE CPY $AE +229B- CC C9 C2 CPY $C2C9 +229E- AE CD C9 LDX $C9CD +22A1- CE 8D AA DEC $AA8D +22A4- 8D AA AA STA $AAAA +22A7- 20 C9 CE JSR $CEC9 +22AA- C4 C9 CPY $C9 +22AC- D6 C9 DEC $C9,X +22AE- C4 D5 CPY $D5 +22B0- C1 CC CMP ($CC,X) +22B2- 20 D3 D5 JSR $D5D3 +22B5- C2 ??? +22B6- D2 CF CMP ($CF) +22B8- D5 D4 CMP $D4,X +22BA- C9 CE CMP #$CE +22BC- C5 D3 CMP $D3 +22BE- 8D AA 8D STA $8DAA +22C1- AA TAX +22C2- AA TAX +22C3- 20 C1 D2 JSR $D2C1 +22C6- D2 C1 CMP ($C1) +22C8- D9 D3 8D CMP $8DD3,Y +22CB- AA TAX +22CC- 8D A0 D0 STA $D0A0 +22CF- D5 D4 CMP $D4,X +22D1- A0 C1 LDY #$C1 +22D3- C4 C9 CPY $C9 +22D5- CD B8 B1 CMP $B1B8 +22D8- AE D3 D5 LDX $D5D3 +22DB- C2 ??? +22DC- AE CD C9 LDX $C9CD +22DF- CE 8D A0 DEC $A08D +22E2- D0 D5 BNE $22B9 +22E4- D4 ??? +22E5- A0 C1 LDY #$C1 +22E7- C4 C9 CPY $C9 +22E9- CD B8 B2 CMP $B2B8 +22EC- AE D3 D5 LDX $D5D3 +22EF- C2 ??? +22F0- AE CD C9 LDX $C9CD +22F3- CE 8D A0 DEC $A08D +22F6- D0 D5 BNE $22CD +22F8- D4 ??? +22F9- A0 C1 LDY #$C1 +22FB- C7 ??? +22FC- C5 D4 CMP $D4 +22FE- B8 CLV +22FF- B1 AE LDA ($AE),Y +2301- D3 ??? +2302- D5 C2 CMP $C2,X +2304- AE CD C9 LDX $C9CD +2307- CE 8D A0 DEC $A08D +230A- D0 D5 BNE $22E1 +230C- D4 ??? +230D- A0 C1 LDY #$C1 +230F- C7 ??? +2310- C5 D4 CMP $D4 +2312- B8 CLV +2313- B2 AE LDA ($AE) +2315- D3 ??? +2316- D5 C2 CMP $C2,X +2318- AE CD C9 LDX $C9CD +231B- CE 8D A0 DEC $A08D +231E- D0 D5 BNE $22F5 +2320- D4 ??? +2321- A0 C1 LDY #$C1 +2323- D0 D5 BNE $22FA +2325- D4 ??? +2326- B8 CLV +2327- B1 AE LDA ($AE),Y +2329- D3 ??? +232A- D5 C2 CMP $C2,X +232C- AE CD C9 LDX $C9CD +232F- CE 8D A0 DEC $A08D +2332- D0 D5 BNE $2309 +2334- D4 ??? +2335- A0 C1 LDY #$C1 +2337- D0 D5 BNE $230E +2339- D4 ??? +233A- B8 CLV +233B- B2 AE LDA ($AE) +233D- D3 ??? +233E- D5 C2 CMP $C2,X +2340- AE CD C9 LDX $C9CD +2343- CE 8D AA DEC $AA8D +2346- 8D AA AA STA $AAAA +2349- 20 CD C1 JSR $C1CD +234C- D4 ??? +234D- C8 INY +234E- 8D AA 8D STA $8DAA +2351- A0 D0 LDY #$D0 +2353- D5 D4 CMP $D4,X +2355- A0 D2 LDY #$D2 +2357- C1 CE CMP ($CE,X) +2359- C4 B8 CPY $B8 +235B- AE D3 D5 LDX $D5D3 +235E- C2 ??? +235F- AE CD C9 LDX $C9CD +2362- CE 8D A0 DEC $A08D +2365- D0 D5 BNE $233C +2367- D4 ??? +2368- A0 D2 LDY #$D2 +236A- C1 CE CMP ($CE,X) +236C- C4 C2 CPY $C2 +236E- AE D3 D5 LDX $D5D3 +2371- C2 ??? +2372- AE CD C9 LDX $C9CD +2375- CE 8D AA DEC $AA8D +2378- 8D AA AA STA $AAAA +237B- 20 D3 D4 JSR $D4D3 +237E- C4 C9 CPY $C9 +2380- CF ??? +2381- 8D AA 8D STA $8DAA +2384- A0 D0 LDY #$D0 +2386- D5 D4 CMP $D4,X +2388- A0 C4 LDY #$C4 +238A- D0 D2 BNE $235E +238C- C9 CE CMP #$CE +238E- D4 ??? +238F- AE D3 D5 LDX $D5D3 +2392- C2 ??? +2393- AE CD C9 LDX $C9CD +2396- CE 8D A0 DEC $A08D +2399- D0 D5 BNE $2370 +239B- D4 ??? +239C- A0 D8 LDY #$D8 +239E- D0 D2 BNE $2372 +23A0- C9 CE CMP #$CE +23A2- D4 ??? +23A3- AE D3 D5 LDX $D5D3 +23A6- C2 ??? +23A7- AE CD C9 LDX $C9CD +23AA- CE 8D AA DEC $AA8D +23AD- 8D 00 00 STA $0000 diff --git a/disks/disk4_math/T.ADDIT16.SUB.MIN b/source/disk16_integrated_demos/T.ADDIT16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.ADDIT16.SUB.MIN rename to source/disk16_integrated_demos/T.ADDIT16.SUB.MIN diff --git a/disks/disk3_arrays/T.ADIM81.SUB.MIN b/source/disk16_integrated_demos/T.ADIM81.SUB.MIN similarity index 100% rename from disks/disk3_arrays/T.ADIM81.SUB.MIN rename to source/disk16_integrated_demos/T.ADIM81.SUB.MIN diff --git a/disks/disk3_arrays/T.ADIM82.SUB.MIN b/source/disk16_integrated_demos/T.ADIM82.SUB.MIN similarity index 100% rename from disks/disk3_arrays/T.ADIM82.SUB.MIN rename to source/disk16_integrated_demos/T.ADIM82.SUB.MIN diff --git a/disks/disk3_arrays/T.AGET81.SUB.MIN b/source/disk16_integrated_demos/T.AGET81.SUB.MIN similarity index 85% rename from disks/disk3_arrays/T.AGET81.SUB.MIN rename to source/disk16_integrated_demos/T.AGET81.SUB.MIN index 35f6f06..1e200ce 100644 --- a/disks/disk3_arrays/T.AGET81.SUB.MIN +++ b/source/disk16_integrated_demos/T.AGET81.SUB.MIN @@ -25,20 +25,11 @@ AGET81 JMP :ERREND :CHKERR LDA :IDX ; IF IDX > ARRAY LENGTH - CLC - ADC #1 CMP :ALEN BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:RES;#6 :ERREND LDY #0 LDA #0 @@ -102,5 +93,4 @@ AGET81 :ALEN DS 1 :E_SID ASC "AGET81 (GET81 MACRO)",00 :E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 -:E_OVF1 ASC "OVERFLOW: INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW: CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.AGET82.SUB.MIN b/source/disk16_integrated_demos/T.AGET82.SUB.MIN similarity index 94% rename from disks/disk3_arrays/T.AGET82.SUB.MIN rename to source/disk16_integrated_demos/T.AGET82.SUB.MIN index 154e373..9193742 100644 --- a/disks/disk3_arrays/T.AGET82.SUB.MIN +++ b/source/disk16_integrated_demos/T.AGET82.SUB.MIN @@ -31,8 +31,6 @@ AGET82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -40,8 +38,6 @@ AGET82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -153,5 +149,5 @@ AGET82 :E_SID ASC "AGET82 (GET82 MACRO)",00 :E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.APUT81.SUB.MIN b/source/disk16_integrated_demos/T.APUT81.SUB.MIN similarity index 81% rename from disks/disk3_arrays/T.APUT81.SUB.MIN rename to source/disk16_integrated_demos/T.APUT81.SUB.MIN index a59c766..11c8446 100644 --- a/disks/disk3_arrays/T.APUT81.SUB.MIN +++ b/source/disk16_integrated_demos/T.APUT81.SUB.MIN @@ -1,8 +1,8 @@ APUT81 PLA - STA :RETADR ; LOCAL RETURN ADDRESS STORAGE + STA RETADR ; LOCAL RETURN ADDRESS STORAGE PLA ; BECAUSE OF CALLING AGET81 - STA :RETADR+1 + STA RETADR+1 PLA STA :AIDX STA :IDX @@ -34,16 +34,9 @@ APUT81 ADC #1 CMP :ASIZE BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:ESIZE;#9 :ERREND LDY #0 LDA #0 @@ -90,15 +83,14 @@ APUT81 INY CPY :ESIZEBAK BNE :LP - LDA :RETADR+1 + LDA RETADR+1 PHA - LDA :RETADR + LDA RETADR PHA LDX ADDR2+1 LDY ADDR2 LDA :ESIZE RTS -:RETADR DS 2 :ESIZE DS 1 :ESIZEBAK DS 1 :ASIZE DS 1 @@ -108,5 +100,4 @@ APUT81 :E_SID ASC "APUT81 (PUT81 MACRO)",00 :E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" ASC ":AIDX(2) :IDX(2) :RES(2)",00 -:E_OVF1 ASC "OVERFLOW! INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW! CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.APUT82.SUB.MIN b/source/disk16_integrated_demos/T.APUT82.SUB.MIN similarity index 90% rename from disks/disk3_arrays/T.APUT82.SUB.MIN rename to source/disk16_integrated_demos/T.APUT82.SUB.MIN index 266dae3..696d636 100644 --- a/disks/disk3_arrays/T.APUT82.SUB.MIN +++ b/source/disk16_integrated_demos/T.APUT82.SUB.MIN @@ -36,8 +36,6 @@ APUT82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -45,8 +43,6 @@ APUT82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -147,7 +143,6 @@ APUT82 LDY ADDR2 LDA :ESIZE RTS -:RETADR DS 2 :ESIZE DS 1 :XIDX DS 1 :YIDX DS 1 @@ -156,8 +151,8 @@ APUT82 :PROD DS 4 :XLEN DS 1 :YLEN DS 1 -:E_SID ASC "AGET82 (GET82 MACRO)",00 -:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" - ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.ARRAYS.HOOKS b/source/disk16_integrated_demos/T.ARRAYS.HOOKS similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.HOOKS rename to source/disk16_integrated_demos/T.ARRAYS.HOOKS diff --git a/disks/disk3_arrays/T.ARRAYS.MAC.MIN b/source/disk16_integrated_demos/T.ARRAYS.MAC.MIN similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.MAC.MIN rename to source/disk16_integrated_demos/T.ARRAYS.MAC.MIN diff --git a/disks/disk6_fileio/T.BINLOAD.SUB.MIN b/source/disk16_integrated_demos/T.BINLOAD.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.BINLOAD.SUB.MIN rename to source/disk16_integrated_demos/T.BINLOAD.SUB.MIN diff --git a/disks/disk6_fileio/T.BINSAVE.SUB.MIN b/source/disk16_integrated_demos/T.BINSAVE.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.BINSAVE.SUB.MIN rename to source/disk16_integrated_demos/T.BINSAVE.SUB.MIN diff --git a/disks/disk2_common/T.COMMON.HOOKS b/source/disk16_integrated_demos/T.COMMON.HOOKS similarity index 100% rename from disks/disk2_common/T.COMMON.HOOKS rename to source/disk16_integrated_demos/T.COMMON.HOOKS diff --git a/disks/disk2_common/T.COMMON.MAC.MIN b/source/disk16_integrated_demos/T.COMMON.MAC.MIN similarity index 100% rename from disks/disk2_common/T.COMMON.MAC.MIN rename to source/disk16_integrated_demos/T.COMMON.MAC.MIN diff --git a/disks/disk4_math/T.COMP16.SUB.MIN b/source/disk16_integrated_demos/T.COMP16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.COMP16.SUB.MIN rename to source/disk16_integrated_demos/T.COMP16.SUB.MIN diff --git a/disks/disk1_stdio/T.CURSORUDBF.SUB.MIN b/source/disk16_integrated_demos/T.CURSORUDBF.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.CURSORUDBF.SUB.MIN rename to source/disk16_integrated_demos/T.CURSORUDBF.SUB.MIN diff --git a/disks/disk2_common/T.DELAYMS.SUB.MIN b/source/disk16_integrated_demos/T.DELAYMS.SUB.MIN similarity index 100% rename from disks/disk2_common/T.DELAYMS.SUB.MIN rename to source/disk16_integrated_demos/T.DELAYMS.SUB.MIN diff --git a/disks/disk6_fileio/T.DISKOP.SUB.MIN b/source/disk16_integrated_demos/T.DISKOP.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.DISKOP.SUB.MIN rename to source/disk16_integrated_demos/T.DISKOP.SUB.MIN diff --git a/disks/disk4_math/T.DIVD16.SUB.MIN b/source/disk16_integrated_demos/T.DIVD16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.DIVD16.SUB.MIN rename to source/disk16_integrated_demos/T.DIVD16.SUB.MIN diff --git a/disks/disk4_math/T.DIVD8.SUB.MIN b/source/disk16_integrated_demos/T.DIVD8.SUB.MIN similarity index 100% rename from disks/disk4_math/T.DIVD8.SUB.MIN rename to source/disk16_integrated_demos/T.DIVD8.SUB.MIN diff --git a/disks/disk6_fileio/T.DOSCMD.SUB.MIN b/source/disk16_integrated_demos/T.DOSCMD.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.DOSCMD.SUB.MIN rename to source/disk16_integrated_demos/T.DOSCMD.SUB.MIN diff --git a/disks/disk1_stdio/T.DPRINT.SUB.MIN b/source/disk16_integrated_demos/T.DPRINT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.DPRINT.SUB.MIN rename to source/disk16_integrated_demos/T.DPRINT.SUB.MIN diff --git a/disks/disk6_fileio/T.FILEIO.HOOKS b/source/disk16_integrated_demos/T.FILEIO.HOOKS similarity index 100% rename from disks/disk6_fileio/T.FILEIO.HOOKS rename to source/disk16_integrated_demos/T.FILEIO.HOOKS diff --git a/disks/disk6_fileio/T.FILEIO.MAC.MIN b/source/disk16_integrated_demos/T.FILEIO.MAC.MIN similarity index 100% rename from disks/disk6_fileio/T.FILEIO.MAC.MIN rename to source/disk16_integrated_demos/T.FILEIO.MAC.MIN diff --git a/disks/disk6_fileio/T.FINPUT.SUB.MIN b/source/disk16_integrated_demos/T.FINPUT.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.FINPUT.SUB.MIN rename to source/disk16_integrated_demos/T.FINPUT.SUB.MIN diff --git a/disks/disk6_fileio/T.FPRINT.SUB.MIN b/source/disk16_integrated_demos/T.FPRINT.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.FPRINT.SUB.MIN rename to source/disk16_integrated_demos/T.FPRINT.SUB.MIN diff --git a/disks/disk6_fileio/T.FPSTR.SUB.MIN b/source/disk16_integrated_demos/T.FPSTR.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.FPSTR.SUB.MIN rename to source/disk16_integrated_demos/T.FPSTR.SUB.MIN diff --git a/disks/disk1_stdio/T.GPBX.SUB.MIN b/source/disk16_integrated_demos/T.GPBX.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.GPBX.SUB.MIN rename to source/disk16_integrated_demos/T.GPBX.SUB.MIN diff --git a/source/disk16_integrated_demos/T.MAKEMAZE b/source/disk16_integrated_demos/T.MAKEMAZE new file mode 100644 index 0000000..9773f68 --- /dev/null +++ b/source/disk16_integrated_demos/T.MAKEMAZE @@ -0,0 +1,420 @@ +******************************** +* * +* MAZE GENERATOR * +* * +******************************** +* +** ASSEMBLER DIRECTIVES +* + CYC AVE + EXP OFF + DSK MAKEMAZE + TR ON + OBJ $BFE0 + ORG $6000 +* + PUT REQUIRED.VARS + USE REQUIRED.MAC.MIN + USE ARRAYS.MAC.MIN + USE MATH.MAC.MIN + USE STDIO.MAC.MIN + PUT REQUIRED.HOOKS.MIN + PUT STDIO.HOOKS + PUT MATH.HOOKS + PUT ARRAYS.HOOKS +* +******************************** +* * +* CONSTANT DECLARATIONS * +* * +******************************** +* +BAS EQU $2000 ; BASE ADDRESS FOR ARRAYS +* +** NOTE THAT XLEN AND YLEN CANNOT EXCEED 13, AS THIS +** WOULD MAKE THE ARRAY SIZES >256, WHICH ISN'T +** WHAT 8-BIT ARRAYS ARE PREPARED TO HANDLE. +* +** THE NEXT UPDATE WILL UTILIZE 16-BIT ARRAYS +** TO ADDRESS THIS PROBLEM. +* +XLEN KBD "ENTER MAZE SIZE (<14)" +YLEN EQU XLEN ; CURRENT ALGO ONLY DOES SQUARE +XMAX EQU XLEN+2 ; ADD EXTRA COLUMN +YMAX EQU YLEN+2 ; ADD EXTRA ROW +XNUM EQU 2*XLEN+2 +ASZ EQU XMAX*YMAX+4 ; ARRAY SIZE+INFO BYTES +XSTAKS EQU ASZ ; COLUMN STACK SIZE; X * Y + 1 +YSTAKS EQU ASZ ; ROW STACK SIZE; X * Y + 1 +* +SOUTHW EQU BAS ; SOUTH WALLS ARRAY +WESTW EQU ASZ+BAS ; WEST WALLS ARRAY +VISITED EQU 2*ASZ+BAS ; CELLS VISITED +XSTACK EQU 3*ASZ+BAS ; STACK FOR COLUMNS +YSTACK EQU 4*ASZ+BAS ; STACK FOR ROWS +* +******************************** +* * +* MAIN PROGRAM LOOP * +* * +******************************** +* +INIT +* +*LDA #0 +*STA ERRCTRL ; TURN OFF ERRORS + JSR HOME + PRN "INITIALIZING...",8D +* + JSR :SETVARS + JSR :OUTWALLS +* +** GET RANDOM STARTING POINT +* + RNDB #2;#XLEN + STA XX + RNDB #2;#YLEN + STA YY +* + JMP BUILD +* +******************************** +* +:SETVARS +* +** DIM ARRAYS AND FILL +* + DIM82 SOUTHW;#XMAX;#YMAX;#1;#1 + DIM82 WESTW;#XMAX;#YMAX;#1;#1 + DIM82 VISITED;#XMAX;#YMAX;#1;#0 + DIM81 XSTACK;#XSTAKS;#1;#0 + DIM81 YSTACK;#YSTAKS;#1;#0 +* +** NOW ASSIGN VARIABLE VALUES +* + LDA #0 + STA SPTR + STA V0 + LDA #1 + STA V1 + RTS +* +******************************** +* +:OUTWALLS +* +** MAKE COLUMN MIN AND MAX TO BE ALL +** WALL (CODE: 1). +* + LDA #0 ; SO X,Y WILL INC TO 1 + STA XX + STA YY +* +:COLEDGE + INC XX + PUT82 V1;VISITED;XX;#1 + PUT82 V1;VISITED;XX;#YMAX + LDA XX + CMP #XMAX + BNE :COLEDGE +* +** MAKE MIN AND MAX ROWS TO BE ALL WALL +* +:ROWEDGE + INC YY + PUT82 V1;VISITED;#1;YY + PUT82 V1;VISITED;#XMAX;YY + LDA YY + CMP #YMAX + BNE :ROWEDGE + RTS +* +******************************** +* * +* BUILD THE MAZE * +* * +******************************** +* +BUILD +* + PRN "BUILDING MAZE...",8D8D +* +******************************** +* +STAKPUSH +* + INC SPTR + PUT81 XX;XSTACK;SPTR ; PUT COL ON STACK + PUT81 YY;YSTACK;SPTR ; PUT ROW ON STACK + PUT82 V1;VISITED;XX;YY ; MARK BLOCK AS VISITED +* +******************************** +* +CHECKALL +* +** CHECKS ALL ADJACENT BLOCKS FOR A WALL. IF +** COMPLETELY SURROUNDED, POP THE STACK AND +** AND START OVER UNTIL. +* + LDA YY ; STORE VALUES FOR + STA YP1 ; CURRENT ROW MINUS ONE + STA YM1 ; AND CURRENT ROW PLUS + LDA XX ; ONE, THEN DO THE SAME + STA XP1 ; FOR COLUMNS + STA XM1 +* + INC YP1 + INC XP1 + DEC XM1 + DEC YM1 +* +:_IF1 ; IF VISITED(XX,Y+1) == 1 + GET82 VISITED;XX;YP1 + LDA RETURN + CMP #1 + BEQ :_IF2 ; IF CELL BELOW IS A WALL + ; CONTINUE TESTING OTHER + ; ADJACENT CELLS + JMP DOMOVE ; OTHERWISE, EXIT CONDITIONAL +:_IF2 ; AND VISITED(X+1,Y) == 1 +* + GET82 VISITED;XP1;YY + LDA RETURN + CMP #1 ; TEST RIGHT CELL + BEQ :_IF3 + JMP DOMOVE +* +:_IF3 ; AND IF VISITED(X,Y-1) == 1 + LDA YM1 + CMP #0 ; TEST FOR Y=0 TO OVOID + BNE :IF3C ; OUT OF BOUNDS ERROR + JMP :_IF4 +:IF3C + GET82 VISITED;XX;YM1 + LDA RETURN + CMP #1 ; TEST CELL ABOVE + BEQ :_IF4 + JMP DOMOVE +* +:_IF4 ; AND IF VISITED(X-1,Y) == 1 + GET82 VISITED;XM1;YY + LDA RETURN + CMP #1 ; THEN POP STACKS UNTIL DONE + BEQ :POP +* + JMP DOMOVE ; OTHERWISE, EXIT ROUTINE +* +******************************** +* +:POP +* + GET81 XSTACK;SPTR + LDA RETURN + STA XX + GET81 YSTACK;SPTR + LDA RETURN + STA YY + DEC SPTR ; POP + LDA SPTR + CMP #1 ; IF STILL MORE ON STACK + BCS :DOREPEAT + JMP DISPMAZE ; OTHERWISE, FINISHED! +* +:DOREPEAT + JMP CHECKALL +* +******************************** +* +DOMOVE +* +** MOVE IN A RANDOM DIRECTION +* + JSR RAND8 + CMP #64 ; IF RND < 64 + BCC :MVDOWN + CMP #128 ; ELSE IF RND < 128 + BCC :MVRIGHT + CMP #192 ; ELSE IF RND < 192 + BCC :MVUP + JMP :MVLEFT ; ELSE RND IS > 191 +* +:MVDOWN + GET82 VISITED;XX;YP1 + LDA RETURN + CMP #0 ; IF NOT A WALL + BEQ :DOWNGO + JMP DOMOVE +:DOWNGO ; THEN MOVE THERE + PUT82 V0;SOUTHW;XX;YY + INC YY + JMP STAKPUSH +:MVRIGHT + GET82 VISITED;XP1;YY + LDA RETURN + CMP #0 + BEQ :RIGHTGO + JMP DOMOVE +:RIGHTGO + PUT82 V0;WESTW;XP1;YY + INC XX + JMP STAKPUSH +* +:MVUP + LDA YM1 + CMP #0 + BEQ :UPNO + GET82 VISITED;XX;YM1 + LDA RETURN + CMP #0 + BEQ :UPGO +:UPNO + JMP DOMOVE +:UPGO + PUT82 V0;SOUTHW;XX;YM1 + DEC YY + JMP STAKPUSH +* +:MVLEFT + GET82 VISITED;XM1;YY + LDA RETURN + CMP #0 + BEQ :LEFTGO + JMP DOMOVE +:LEFTGO + PUT82 V0;WESTW;XX;YY + DEC XX + JMP STAKPUSH +* +******************************** +* * +* DISPLAY THE MAZE * +* * +******************************** +* +DISPMAZE +* +** SEND MAZE TO DISPLAY OUTPUT, FORMATTED +* + PRN "PRINTING...",8D + PRN " ",8D + LDA #1 + STA XX +:XLOOP + INC XX + PRN "X" + LDA XX + CMP #XNUM + BNE :XLOOP + PRN " ",8D +* + LDA #2 + STA XX + STA YY +WLP +* +** IF WESTW(X,Y) == 0 +* + GET82 WESTW;XX;YY + LDA RETURN + CMP #0 + BEQ NOWALLW ; THEN PRINT ... +YESWALLW ; ELSE PRINT X.. + PRN "X " + JMP CONTWLP +NOWALLW + PRN " " +* +CONTWLP + INC XX + LDA XX + CMP #XMAX + BEQ :ENDWLP + JMP WLP +* +:ENDWLP + PRN "X",8D ; NEXT LINE +* + LDA #2 + STA XX ; RECYCLING +* +** IF SOUTHW(X,Y) == 0 +* +SLP + GET82 SOUTHW;XX;YY + LDA RETURN + CMP #0 + BEQ NOSOUTH ; THEN PRINT X.. +YSOUTH ; ELSE PRINT XXX + PRN "XX" + JMP CONTSLP +NOSOUTH + PRN "X " +CONTSLP + INC XX + LDA XX + CMP #XMAX + BEQ :ENDSLP + JMP SLP +:ENDSLP +* + PRN "X",8D +* + LDA #2 + STA XX + INC YY + LDA YY + CMP #YMAX + BEQ DISPEXIT + JMP WLP +* +DISPEXIT +* + _WAIT + JMP REENTRY +* +******************************** +* * +* VARIABLES * +* * +******************************** +* +V0 DS 1 ; USED BECAUSE OF CURRENT +V1 DS 1 ; ARRAY DIM LIMITATIONS +* +XX DS 1 ; CURRENT COLUMN +YY DS 1 ; CURRENT ROW +SPTR DS 1 ; ARRAY STACK POINTER +XP1 DS 1 ; X PLUS ONE +XM1 DS 1 ; X MINUS ONE +YP1 DS 1 ; Y PLUS ONE +YM1 DS 1 ; Y MINUS ONE +* +******************************** +* * +* LOW-LEVEL ROUTINES * +* * +******************************** +* + PUT REQUIRED.LIB.MIN +* +** INDIVIDUAL SUBROUTINES +* +** ARRAYS +* + PUT ADIM81.SUB.MIN + PUT ADIM82.SUB.MIN + PUT AGET81.SUB.MIN + PUT AGET82.SUB.MIN + PUT APUT81.SUB.MIN + PUT APUT82.SUB.MIN +* +** MATH +* + PUT RAND8.SUB.MIN + PUT RANDB.SUB.MIN +* +** STDIO +* + PUT DPRINT.SUB.MIN + PUT XPRINT.SUB.MIN +* diff --git a/disks/disk4_math/T.MATH.HOOKS b/source/disk16_integrated_demos/T.MATH.HOOKS similarity index 100% rename from disks/disk4_math/T.MATH.HOOKS rename to source/disk16_integrated_demos/T.MATH.HOOKS diff --git a/disks/disk4_math/T.MATH.MAC.MIN b/source/disk16_integrated_demos/T.MATH.MAC.MIN similarity index 100% rename from disks/disk4_math/T.MATH.MAC.MIN rename to source/disk16_integrated_demos/T.MATH.MAC.MIN diff --git a/disks/disk2_common/T.MEMFILL.SUB.MIN b/source/disk16_integrated_demos/T.MEMFILL.SUB.MIN similarity index 100% rename from disks/disk2_common/T.MEMFILL.SUB.MIN rename to source/disk16_integrated_demos/T.MEMFILL.SUB.MIN diff --git a/disks/disk2_common/T.MEMMOVE.SUB.MIN b/source/disk16_integrated_demos/T.MEMMOVE.SUB.MIN similarity index 100% rename from disks/disk2_common/T.MEMMOVE.SUB.MIN rename to source/disk16_integrated_demos/T.MEMMOVE.SUB.MIN diff --git a/disks/disk2_common/T.MEMSWAP.SUB.MIN b/source/disk16_integrated_demos/T.MEMSWAP.SUB.MIN similarity index 100% rename from disks/disk2_common/T.MEMSWAP.SUB.MIN rename to source/disk16_integrated_demos/T.MEMSWAP.SUB.MIN diff --git a/disks/disk4_math/T.MULT16.SUB.MIN b/source/disk16_integrated_demos/T.MULT16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.MULT16.SUB.MIN rename to source/disk16_integrated_demos/T.MULT16.SUB.MIN diff --git a/disks/disk4_math/T.MULT8.SUB.MIN b/source/disk16_integrated_demos/T.MULT8.SUB.MIN similarity index 100% rename from disks/disk4_math/T.MULT8.SUB.MIN rename to source/disk16_integrated_demos/T.MULT8.SUB.MIN diff --git a/disks/disk5_strings/T.NUM2STR.SUB.MIN b/source/disk16_integrated_demos/T.NUM2STR.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.NUM2STR.SUB.MIN rename to source/disk16_integrated_demos/T.NUM2STR.SUB.MIN diff --git a/disks/disk5_strings/T.PRNSTR.SUB.MIN b/source/disk16_integrated_demos/T.PRNSTR.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.PRNSTR.SUB.MIN rename to source/disk16_integrated_demos/T.PRNSTR.SUB.MIN diff --git a/disks/disk4_math/T.RAND16.SUB.MIN b/source/disk16_integrated_demos/T.RAND16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.RAND16.SUB.MIN rename to source/disk16_integrated_demos/T.RAND16.SUB.MIN diff --git a/disks/disk4_math/T.RAND8.SUB.MIN b/source/disk16_integrated_demos/T.RAND8.SUB.MIN similarity index 100% rename from disks/disk4_math/T.RAND8.SUB.MIN rename to source/disk16_integrated_demos/T.RAND8.SUB.MIN diff --git a/disks/disk4_math/T.RANDB.SUB.MIN b/source/disk16_integrated_demos/T.RANDB.SUB.MIN similarity index 100% rename from disks/disk4_math/T.RANDB.SUB.MIN rename to source/disk16_integrated_demos/T.RANDB.SUB.MIN diff --git a/disks/disk1_stdio/T.REQUIRED.HOOKS.MIN b/source/disk16_integrated_demos/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk1_stdio/T.REQUIRED.HOOKS.MIN rename to source/disk16_integrated_demos/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk3_arrays/T.REQUIRED.LIB.MIN b/source/disk16_integrated_demos/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk3_arrays/T.REQUIRED.LIB.MIN rename to source/disk16_integrated_demos/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk3_arrays/T.REQUIRED.LIB.MIN +++ b/source/disk16_integrated_demos/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk1_stdio/T.REQUIRED.MAC.MIN b/source/disk16_integrated_demos/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk1_stdio/T.REQUIRED.MAC.MIN rename to source/disk16_integrated_demos/T.REQUIRED.MAC.MIN diff --git a/disks/disk2_common/T.REQUIRED.VARS b/source/disk16_integrated_demos/T.REQUIRED.VARS similarity index 100% rename from disks/disk2_common/T.REQUIRED.VARS rename to source/disk16_integrated_demos/T.REQUIRED.VARS diff --git a/disks/disk1_stdio/T.SINPUT.SUB.MIN b/source/disk16_integrated_demos/T.SINPUT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.SINPUT.SUB.MIN rename to source/disk16_integrated_demos/T.SINPUT.SUB.MIN diff --git a/disks/disk1_stdio/T.STDIO.HOOKS b/source/disk16_integrated_demos/T.STDIO.HOOKS similarity index 100% rename from disks/disk1_stdio/T.STDIO.HOOKS rename to source/disk16_integrated_demos/T.STDIO.HOOKS diff --git a/disks/disk1_stdio/T.STDIO.MAC.MIN b/source/disk16_integrated_demos/T.STDIO.MAC.MIN similarity index 100% rename from disks/disk1_stdio/T.STDIO.MAC.MIN rename to source/disk16_integrated_demos/T.STDIO.MAC.MIN diff --git a/disks/disk5_strings/T.STR2NUM.SUB.MIN b/source/disk16_integrated_demos/T.STR2NUM.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.STR2NUM.SUB.MIN rename to source/disk16_integrated_demos/T.STR2NUM.SUB.MIN diff --git a/disks/disk5_strings/T.STRCAT.SUB.MIN b/source/disk16_integrated_demos/T.STRCAT.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.STRCAT.SUB.MIN rename to source/disk16_integrated_demos/T.STRCAT.SUB.MIN diff --git a/disks/disk5_strings/T.STRCOMP.SUB.MIN b/source/disk16_integrated_demos/T.STRCOMP.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.STRCOMP.SUB.MIN rename to source/disk16_integrated_demos/T.STRCOMP.SUB.MIN diff --git a/disks/disk5_strings/T.STRINGS.HOOKS b/source/disk16_integrated_demos/T.STRINGS.HOOKS similarity index 100% rename from disks/disk5_strings/T.STRINGS.HOOKS rename to source/disk16_integrated_demos/T.STRINGS.HOOKS diff --git a/disks/disk5_strings/T.STRINGS.MAC.MIN b/source/disk16_integrated_demos/T.STRINGS.MAC.MIN similarity index 100% rename from disks/disk5_strings/T.STRINGS.MAC.MIN rename to source/disk16_integrated_demos/T.STRINGS.MAC.MIN diff --git a/disks/disk5_strings/T.SUBCOPY.SUB.MIN b/source/disk16_integrated_demos/T.SUBCOPY.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBCOPY.SUB.MIN rename to source/disk16_integrated_demos/T.SUBCOPY.SUB.MIN diff --git a/disks/disk5_strings/T.SUBDEL.SUB.MIN b/source/disk16_integrated_demos/T.SUBDEL.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBDEL.SUB.MIN rename to source/disk16_integrated_demos/T.SUBDEL.SUB.MIN diff --git a/disks/disk5_strings/T.SUBINS.SUB.MIN b/source/disk16_integrated_demos/T.SUBINS.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBINS.SUB.MIN rename to source/disk16_integrated_demos/T.SUBINS.SUB.MIN diff --git a/disks/disk5_strings/T.SUBPOS.SUB.MIN b/source/disk16_integrated_demos/T.SUBPOS.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBPOS.SUB.MIN rename to source/disk16_integrated_demos/T.SUBPOS.SUB.MIN diff --git a/disks/disk4_math/T.SUBT16.SUB.MIN b/source/disk16_integrated_demos/T.SUBT16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.SUBT16.SUB.MIN rename to source/disk16_integrated_demos/T.SUBT16.SUB.MIN diff --git a/disks/disk1_stdio/T.TFILLA.SUB.MIN b/source/disk16_integrated_demos/T.TFILLA.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.TFILLA.SUB.MIN rename to source/disk16_integrated_demos/T.TFILLA.SUB.MIN diff --git a/disks/disk1_stdio/T.THLINE.SUB.MIN b/source/disk16_integrated_demos/T.THLINE.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.THLINE.SUB.MIN rename to source/disk16_integrated_demos/T.THLINE.SUB.MIN diff --git a/disks/disk1_stdio/T.TVLINE.SUB.MIN b/source/disk16_integrated_demos/T.TVLINE.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.TVLINE.SUB.MIN rename to source/disk16_integrated_demos/T.TVLINE.SUB.MIN diff --git a/disks/disk1_stdio/T.TXTPUT.SUB.MIN b/source/disk16_integrated_demos/T.TXTPUT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.TXTPUT.SUB.MIN rename to source/disk16_integrated_demos/T.TXTPUT.SUB.MIN diff --git a/disks/disk1_stdio/T.XPRINT.SUB.MIN b/source/disk16_integrated_demos/T.XPRINT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.XPRINT.SUB.MIN rename to source/disk16_integrated_demos/T.XPRINT.SUB.MIN diff --git a/disks/disk2_common/T.ZMLOAD.SUB.MIN b/source/disk16_integrated_demos/T.ZMLOAD.SUB.MIN similarity index 100% rename from disks/disk2_common/T.ZMLOAD.SUB.MIN rename to source/disk16_integrated_demos/T.ZMLOAD.SUB.MIN diff --git a/disks/disk2_common/T.ZMSAVE.SUB.MIN b/source/disk16_integrated_demos/T.ZMSAVE.SUB.MIN similarity index 100% rename from disks/disk2_common/T.ZMSAVE.SUB.MIN rename to source/disk16_integrated_demos/T.ZMSAVE.SUB.MIN diff --git a/source/disk1_stdio/MINIFY b/source/disk1_stdio/MINIFY new file mode 100644 index 0000000..f5e6a27 --- /dev/null +++ b/source/disk1_stdio/MINIFY @@ -0,0 +1,30 @@ + 5 HOME + 8 ONERR GOTO 1000 + 10 PRINT "ASSEMBLY CODE MINIFIER" + 20 PRINT "-=-=-=-=-=-=-=-=-=-=-=" + 30 PRINT + 35 DIM FC$(1500):C = 0 + 40 INPUT "ENTER THE SOURCE FILE NAME: ";FF$ + 50 INPUT "ENTER THE DESTINATION FILE NAME: ";DD$ + 55 PRINT "WORKING.." + 60 PRINT CHR$ (4);"OPEN ";FF$ + 70 PRINT CHR$ (4);"READ ";FF$ + 80 GET AA$ + 85 REM ? CHR$ (34);"."; + 90 IF AA$ = CHR$ (13) THEN GOTO 200 + 95 S$ = S$ + AA$ + 110 GOTO 80 + 200 IF LEFT$ (S$,1) = "*" OR LEFT$ (S$,1) = ";" THEN S$ = "" + 500 FC$(C) = S$ + 510 S$ = "" + 520 C = C + 1 + 990 GOTO 80 + 1000 PRINT : PRINT CHR$ (4);"CLOSE ";FF$ + 1010 PRINT CHR$ (4);"OPEN ";DD$ + 1020 PRINT CHR$ (4);"WRITE ";DD$ + 1030 FOR Z = 0 TO C + 1040 IF FC$(Z) < > "" THEN PRINT FC$(Z) + 1050 NEXT Z + 1060 PRINT CHR$ (4);"CLOSE ";DD$ + 1070 PRINT "DONE!": PRINT : PRINT : PRINT + 1080 PRINT CHR$ (7): PRINT CHR$ (7): PRINT CHR$ (7) diff --git a/disks/disk1_stdio/STDIO.DEMO b/source/disk1_stdio/STDIO.DEMO similarity index 100% rename from disks/disk1_stdio/STDIO.DEMO rename to source/disk1_stdio/STDIO.DEMO diff --git a/disks/disk1_stdio/STDIO.DEMO.S b/source/disk1_stdio/STDIO.DEMO.S similarity index 100% rename from disks/disk1_stdio/STDIO.DEMO.S rename to source/disk1_stdio/STDIO.DEMO.S diff --git a/disks/disk1_stdio/T.CURSORUDBF.SUB b/source/disk1_stdio/T.CURSORUDBF.SUB similarity index 100% rename from disks/disk1_stdio/T.CURSORUDBF.SUB rename to source/disk1_stdio/T.CURSORUDBF.SUB diff --git a/source/disk1_stdio/T.CURSORUDBF.SUB.MIN b/source/disk1_stdio/T.CURSORUDBF.SUB.MIN new file mode 100644 index 0000000..afab091 --- /dev/null +++ b/source/disk1_stdio/T.CURSORUDBF.SUB.MIN @@ -0,0 +1,88 @@ +CURSFOR + CLC + ADC CURSH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MAX COL + 1 + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSFOR (CURF MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSBAK + SEC + STA SCRATCH + LDA CURSH + SBC SCRATCH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MIN COLUMN + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSBAK (CURB MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSDN + CLC + ADC CURSV + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSDN (CURD MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 +CURSUP + SEC + STA SCRATCH + LDA CURSV + SBC SCRATCH + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSUP (CURU MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 diff --git a/disks/disk1_stdio/T.DPRINT.SUB b/source/disk1_stdio/T.DPRINT.SUB similarity index 100% rename from disks/disk1_stdio/T.DPRINT.SUB rename to source/disk1_stdio/T.DPRINT.SUB diff --git a/source/disk1_stdio/T.DPRINT.SUB.MIN b/source/disk1_stdio/T.DPRINT.SUB.MIN new file mode 100644 index 0000000..ae75ff4 --- /dev/null +++ b/source/disk1_stdio/T.DPRINT.SUB.MIN @@ -0,0 +1,22 @@ +DPRINT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #$00 +:LOOP + LDA (ADDR1),Y + BEQ :EXIT + JSR COUT1 + INY + BNE :LOOP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS diff --git a/disks/disk1_stdio/T.GPBX.SUB b/source/disk1_stdio/T.GPBX.SUB similarity index 100% rename from disks/disk1_stdio/T.GPBX.SUB rename to source/disk1_stdio/T.GPBX.SUB diff --git a/source/disk1_stdio/T.GPBX.SUB.MIN b/source/disk1_stdio/T.GPBX.SUB.MIN new file mode 100644 index 0000000..4250bc4 --- /dev/null +++ b/source/disk1_stdio/T.GPBX.SUB.MIN @@ -0,0 +1,50 @@ +GPBX + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ZERO PAGE + PLA + STA ADDR1+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR1+1 + CMP #$C0 ; MAX COL + 1 + BNE :BADHI + LDA ADDR1 + CMP #$64 + BCS :BADLO + LDA ADDR1 + CMP #$60 + BCC :BADLO + JMP :ERREND +:BADHI + _ERR :E_SID;:E_BHI;:E_DMP1;RETURN;#10 + JMP :ERREND +:BADLO + _ERR :E_SID;:E_BLO;:E_DMP1;RETURN;#10 +:ERREND + LDY #$00 + LDA (ADDR1),Y ; IF BTN = PUSHED + BMI :1 + JMP :0 +:1 + LDY #$01 ; BTN PUSHED;A=1 + JMP :EXIT +:0 + LDY #$00 ; BTN NOT PUSHED;A=0 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + TYA ; BTN FLAG MOVE TO A + RTS +:E_SID ASC "GPBX (PBX MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_BHI ASC "BAD HIGH BYTE--NOT A PADDLE BUTTON!.",00 +:E_BLO ASC "BAD LOW BYTE--NOT A PADDLE BUTTON",00 diff --git a/disks/disk2_common/T.REQUIRED.HOOKS.MIN b/source/disk1_stdio/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk2_common/T.REQUIRED.HOOKS.MIN rename to source/disk1_stdio/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk1_stdio/T.REQUIRED.LIB.MIN b/source/disk1_stdio/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk1_stdio/T.REQUIRED.LIB.MIN rename to source/disk1_stdio/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk1_stdio/T.REQUIRED.LIB.MIN +++ b/source/disk1_stdio/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk2_common/T.REQUIRED.MAC.MIN b/source/disk1_stdio/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk2_common/T.REQUIRED.MAC.MIN rename to source/disk1_stdio/T.REQUIRED.MAC.MIN diff --git a/disks/disk3_arrays/T.REQUIRED.VARS b/source/disk1_stdio/T.REQUIRED.VARS similarity index 100% rename from disks/disk3_arrays/T.REQUIRED.VARS rename to source/disk1_stdio/T.REQUIRED.VARS diff --git a/disks/disk1_stdio/T.SINPUT.SUB b/source/disk1_stdio/T.SINPUT.SUB similarity index 100% rename from disks/disk1_stdio/T.SINPUT.SUB rename to source/disk1_stdio/T.SINPUT.SUB diff --git a/source/disk1_stdio/T.SINPUT.SUB.MIN b/source/disk1_stdio/T.SINPUT.SUB.MIN new file mode 100644 index 0000000..763ccb4 --- /dev/null +++ b/source/disk1_stdio/T.SINPUT.SUB.MIN @@ -0,0 +1,27 @@ +SINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + LDX #$00 + JSR GETLN + STX :STRLEN ; STORE STR LENGTH + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :STRLEN ; LENGTH OF STRING + STA RETLEN,Y ; PUT LENGTH +:LOOP + LDA KEYBUFF,Y ; PUT STR INTO NEW LOC + STA RETURN,Y + INY + CPY :STRLEN ; IF Y < STR LENGTH + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:STRLEN DS 1 diff --git a/disks/disk1_stdio/T.STDIO.DEMO b/source/disk1_stdio/T.STDIO.DEMO similarity index 100% rename from disks/disk1_stdio/T.STDIO.DEMO rename to source/disk1_stdio/T.STDIO.DEMO diff --git a/source/disk1_stdio/T.STDIO.HOOKS b/source/disk1_stdio/T.STDIO.HOOKS new file mode 100644 index 0000000..571056f --- /dev/null +++ b/source/disk1_stdio/T.STDIO.HOOKS @@ -0,0 +1,53 @@ +* +*``````````````````````````````* +* STDIO.HOOKS.PUT * +*- -* +* HOOKS TO INPUT/OUTPUT * +* ROUTINES IN MONITOR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* OUTPUT HOOKS +* +COUT1 EQU $FDF0 ; FASTER SCREEN OUTPUT +COUT EQU $FDED ; MONITOR STD OUTPUT +HOME EQU $FC58 ; CLEAR SCREEN, HOME CURSOR +VTAB EQU $FC22 ; MONITOR CURSOR POS ROUTINE +CURSH EQU $24 ; HPOS OF COUT CURSOR +CURSV EQU $25 ; VPOS OF COUT CURSOR +WNDLEFT EQU $20 ; SCROLL WINDOW LEFT +WNDWIDTH EQU $21 ; SCROLL WINDOW WIDTH +WNDTOP EQU $22 ; SCROLL WINDOW TOP +WNDBOT EQU $23 ; SCROLL WINDOW BOTTOM +TEXTP1 EQU $0400 ; START OF TEXT PAGE 1 +TEXTP2 EQU $0800 ; START OF TEXT PAGE 2 +PAGE1 EQU $C054 ; SOFT SWITCH USE PAGE 1 +PAGE2 EQU $C055 ; SOFT SWITCH USE PAGE 2 +S80COL EQU $C01F ; READ ONLY; CHECK IF 80C +KEYBUFF EQU $0200 ; KEYBUFFER START +GSTROBE EQU $C040 ; GAME CONNECTOR STROBE +TXTSET EQU $C051 ; TEXT ON SOFT SWITCH +SETWND EQU $FB4B ; SET NORMAL WINDOW MODE +CURADV EQU $FBF4 ; ADVANCE CURSOR RIGHT +CURBS EQU $FC10 ; CURSOR LEFT +CURUP EQU $FC1A ; CURSOR UP +CR EQU $FC62 ; CARRIAGE RETURN TO SCREEN +LF EQU $FC66 ; LINE FEED ONLY TO SCREEN +CLEOL EQU $FC9C ; CLEAR TEXT TO END OF LINE +* +* INPUT HOOKS +* +KYBD EQU $C000 ; LDA SINGLE KEYPRESS +STROBE EQU $C010 ; CLEAR KYBD BUFFER +GETLN EQU $FD6F ; MONITOR GET LINE OF KB INPUT +GETKEY EQU $FD0C ; MONITOR GET SINGLE KEY INPUT +OPAPP EQU $C061 +CLAPP EQU $C062 +* +* PADDLE HOOKS +* +PREAD EQU $FB1E ; READ STATE OF PADDLE +PB0 EQU $C061 ; PADDLE BUTTON 0 +PB1 EQU $C062 +PB2 EQU $C063 +PB3 EQU $C060 +* diff --git a/disks/disk1_stdio/T.STDIO.HOOKS.MIN b/source/disk1_stdio/T.STDIO.HOOKS.MIN similarity index 100% rename from disks/disk1_stdio/T.STDIO.HOOKS.MIN rename to source/disk1_stdio/T.STDIO.HOOKS.MIN diff --git a/disks/disk1_stdio/T.STDIO.MAC b/source/disk1_stdio/T.STDIO.MAC similarity index 100% rename from disks/disk1_stdio/T.STDIO.MAC rename to source/disk1_stdio/T.STDIO.MAC diff --git a/source/disk1_stdio/T.STDIO.MAC.MIN b/source/disk1_stdio/T.STDIO.MAC.MIN new file mode 100644 index 0000000..4d8e026 --- /dev/null +++ b/source/disk1_stdio/T.STDIO.MAC.MIN @@ -0,0 +1,120 @@ +PRN MAC + IF ",]1 ; --- IF PARAM=STRING + JSR XPRINT ; SPECIAL PRINT + ASC ]1 ; PUT STRING HERE + HEX 00 ; STRING TERMINATE + ELSE ; ELSE, PARAM IS + ; MEMORY LOCATION + LDA #>]1 ; PUSH HIGH BYTE + PHA ; TO STACK + LDA #<]1 ; PUSH LOW BYTE + PHA + JSR DPRINT + FIN + <<< +PCR MAC + LDA #$8D + JSR COUT1 + <<< +INP MAC + JSR SINPUT + <<< +GKEY MAC + JSR GETKEY + LDY #0 + STY STROBE + <<< +SCPOS MAC + LDX ]1 + LDY ]2 + STX CURSH + STY CURSV + JSR VTAB + <<< +SETCX MAC + LDX ]1 + STX CURSH + JSR VTAB + <<< +SETCY MAC + LDY ]1 + STY CURSV + JSR VTAB + <<< +CURF MAC + LDA ]1 + JSR CURSFOR + <<< +CURB MAC + LDA ]1 + JSR CURSBAK + <<< +CURU MAC + LDA ]1 + JSR CURSUP + <<< +CURD MAC + LDA ]1 + JSR CURSDN + <<< +RCPOS MAC + LDA ]1 ; ROW + LDY ]2 ; COLUMN + JSR $F847 ; GBASCALC ROUTINE + LDA ($26),Y ; LOW OF ADDR OF CHAR + <<< +PDL MAC ; GET PADDLE VALUE + LDX #]1 ; READ PADDLE # ]1 (USUALLY 0) + JSR PREAD ; PADDLE READING STORED IN Y + <<< +PBX MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR GPBX + <<< +TVLIN MAC + LDA ]1 ; Y START + PHA + LDA ]2 ; Y END + PHA + LDA ]3 ; X POSITION + PHA + LDA ]4 ; CHARACTER + PHA + JSR TVLINE + <<< +THLIN MAC + LDA ]1 ; X START + PHA + LDA ]2 ; X END + PHA + LDA ]3 ; Y POS + PHA + LDA ]4 ; FILL CHAR + PHA + JSR THLINE + <<< +TFILL MAC + LDA ]1 ; LEFT BOUNDARY + PHA + LDA ]2 ; TOP BOUNDARY + PHA + LDA ]3 ; RIGHT BOUNDARY + PHA + LDA ]4 ; BOTTOM BOUNDARY + PHA + LDA ]5 ; FILL CHAR + PHA + JSR TFILLA + <<< +TPUT MAC + LDA ]1 + PHA + LDA ]2 + PHA + LDA ]3 + PHA + JSR TXTPUT + <<< diff --git a/disks/disk1_stdio/T.TFILLA.SUB b/source/disk1_stdio/T.TFILLA.SUB similarity index 100% rename from disks/disk1_stdio/T.TFILLA.SUB rename to source/disk1_stdio/T.TFILLA.SUB diff --git a/source/disk1_stdio/T.TFILLA.SUB.MIN b/source/disk1_stdio/T.TFILLA.SUB.MIN new file mode 100644 index 0000000..321da46 --- /dev/null +++ b/source/disk1_stdio/T.TFILLA.SUB.MIN @@ -0,0 +1,90 @@ +TFILLA + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y2 + PLA + STA :X2 + PLA + STA :YC + STA :Y1 + PLA + STA :XC + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 ; X1 => X2? + BCS :X1HI + LDA :Y1 + CMP :Y2 + BCS :Y1HI ; Y1 => Y2? + LDA :X1 + CMP #40 + BCS :XOVF + LDA :X2 + CMP #40 + BCS :XOVF + LDA :Y1 + CMP #24 + BCS :YOVF + LDA :Y2 + CMP #24 + BCS :YOVF + JMP :ERREND +:X1HI + _ERR :E_SID;:E_X1H;:E_DMP1;:X1;#7 + JMP :ERREND +:Y1HI + _ERR :E_SID;:E_Y1H;:E_DMP1;:X1;#7 + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#7 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#7 +:ERREND +:LP1 + LDA :YC + LDY :XC + JSR $F847 ; GBASCALC + LDA :F + STA ($26),Y + LDA :YC + INY + STY :XC + CPY :X2 + BNE :LP1 + LDA :X1 + STA :XC + INC :YC + LDA :YC + CMP :Y2 + BNE :LP1 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y1 DS 1 +:Y2 DS 1 +:XC DS 1 +:YC DS 1 +:F DS 1 +:E_SID ASC "TFILLA (TFILL MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X2(1) Y1(1) Y2(1)" + ASC "XC(1) YC(1) F(1)",00 +:E_X1H ASC "X1 MUST BE LOWER THAN X2.",00 +:E_Y1H ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X <> MIN/MAX COLUMNS.",00 +:E_YOF ASC "Y <> MIN/MAX ROWS",00 diff --git a/disks/disk1_stdio/T.THLINE.SUB b/source/disk1_stdio/T.THLINE.SUB similarity index 100% rename from disks/disk1_stdio/T.THLINE.SUB rename to source/disk1_stdio/T.THLINE.SUB diff --git a/source/disk1_stdio/T.THLINE.SUB.MIN b/source/disk1_stdio/T.THLINE.SUB.MIN new file mode 100644 index 0000000..196d76b --- /dev/null +++ b/source/disk1_stdio/T.THLINE.SUB.MIN @@ -0,0 +1,66 @@ +THLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y + PLA + STA :X2 + PLA + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 + BCS :ERRTOOHI ; X1 => X2 + LDA :X1 + CMP #39 + BCS :ERRXOVF ; X VALUE OVERFLOW + LDA :X2 + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_XHI;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERREND + LDA :Y ; LOAD ROW + LDY :X1 ; LOAD X START POS +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PUSH TO SCREEN MEMORY + LDA :Y + INY ; INCREASE X POS + CPY :X2 ; IF LESS THAN X END POS + BNE :LOOP ; REPEAT UNTIL DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y DS 1 +:F DS 1 ; FILL CHAR +:E_SID ASC "THLINE (THLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X1(1) Y(1) F(1)",00 +:E_XHI ASC "X1 MUST BE LOWER THAN X2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/disks/disk1_stdio/T.TVLINE.SUB b/source/disk1_stdio/T.TVLINE.SUB similarity index 100% rename from disks/disk1_stdio/T.TVLINE.SUB rename to source/disk1_stdio/T.TVLINE.SUB diff --git a/source/disk1_stdio/T.TVLINE.SUB.MIN b/source/disk1_stdio/T.TVLINE.SUB.MIN new file mode 100644 index 0000000..89613b0 --- /dev/null +++ b/source/disk1_stdio/T.TVLINE.SUB.MIN @@ -0,0 +1,66 @@ +TVLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL CHAR + PLA + STA :X ; X POS + PLA + STA :Y2 ; END + PLA + STA :Y1 ; START + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :Y1 + CMP :Y2 + BCS :ERRTOOHI ; Y1 => Y2 + LDA :Y2 + CMP #24 + BCS :ERRYOVF ; Y VALUE OVERFLOW + LDA :X + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y1 + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_YHI;:E_DMP1;:X;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERREND + LDA :Y1 + LDY :X +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PLOT TO SCREEN MEMORY + INC :Y1 + LDA :Y1 + CMP :Y2 ; IF Y1 < Y2 + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X DS 1 +:Y1 DS 1 +:Y2 DS 1 +:F DS 1 +:E_SID ASC "TVLINE (TVLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X(1) Y1(1) Y2(1) F(1)",00 +:E_YHI ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/disks/disk1_stdio/T.TXTPUT.SUB b/source/disk1_stdio/T.TXTPUT.SUB similarity index 100% rename from disks/disk1_stdio/T.TXTPUT.SUB rename to source/disk1_stdio/T.TXTPUT.SUB diff --git a/source/disk1_stdio/T.TXTPUT.SUB.MIN b/source/disk1_stdio/T.TXTPUT.SUB.MIN new file mode 100644 index 0000000..828c8a6 --- /dev/null +++ b/source/disk1_stdio/T.TXTPUT.SUB.MIN @@ -0,0 +1,46 @@ +TXTPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL + PLA + STA :Y + PLA + STA :X + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X + CMP #40 ; MAX COL + 1 + BCS :XOVF + LDA :Y + CMP #24 + BCS :YOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:F;#3 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:F;#3 +:ERREND + LDA :Y + LDY :X + JSR $F847 + LDA :F + STA ($26),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:F DS 1 +:Y DS 1 +:X DS 1 +:E_SID ASC "TXTPUT (TPUT MACRO)",00 +:E_DMP1 ASC "DUMPING F(1) Y(1) X(1):",00 +:E_XOF ASC "X OVERFLOW. X <> MIN/MAX",00 +:E_YOF ASC "Y OVERFLOW. Y <> MIN/MAX",00 diff --git a/disks/disk1_stdio/T.XPRINT.SUB b/source/disk1_stdio/T.XPRINT.SUB similarity index 100% rename from disks/disk1_stdio/T.XPRINT.SUB rename to source/disk1_stdio/T.XPRINT.SUB diff --git a/source/disk1_stdio/T.XPRINT.SUB.MIN b/source/disk1_stdio/T.XPRINT.SUB.MIN new file mode 100644 index 0000000..da82aee --- /dev/null +++ b/source/disk1_stdio/T.XPRINT.SUB.MIN @@ -0,0 +1,25 @@ +XPRINT + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #$01 ; POINT TO NEXT + ; INSTRUCTION +:LOOP + LDA (ADDR1),Y + BEQ :DONE + JSR COUT1 + INY + BNE :LOOP +:DONE ; RESTORE STACK + CLC ; EXEC POINTER + TYA ; TO RESUME + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #$00 + PHA + LDA ADDR1 + PHA + RTS +:EXIT diff --git a/source/disk20_minidisk_A/T.ADDIT16.SUB.MIN b/source/disk20_minidisk_A/T.ADDIT16.SUB.MIN new file mode 100644 index 0000000..f7b7b09 --- /dev/null +++ b/source/disk20_minidisk_A/T.ADDIT16.SUB.MIN @@ -0,0 +1,31 @@ +ADDIT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :ADD2 + PLA + STA :ADD2+1 + PLA + STA :ADD1 + PLA + STA :ADD1+1 + LDA :ADD1 + CLC + ADC :ADD2 + TAY ; LOW BYTE + STY RETURN + LDA :ADD1+1 + ADC :ADD2+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:ADD1 DS 2 +:ADD2 DS 2 diff --git a/source/disk20_minidisk_A/T.ADIM81.SUB.MIN b/source/disk20_minidisk_A/T.ADIM81.SUB.MIN new file mode 100644 index 0000000..aec7812 --- /dev/null +++ b/source/disk20_minidisk_A/T.ADIM81.SUB.MIN @@ -0,0 +1,92 @@ +ADIM81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL ; FILL VALUE + PLA + STA :ESIZE ; ELEMENT SIZE + STA :ESZBAK + PLA + STA :ASIZE ; ARRAY SIZE + STA :ASZBAK + PLA + STA ADDR1 ; ARRAY ADDRESS + PLA + STA ADDR1+1 + LDY #0 + LDA #0 + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :ASIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :ASIZE + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + CLC + INX + INX ; INCREASE BY TWO + ; TO MAKE ROOM FOR SIZES + BCC :NOINY ; IF .X ROLLS OVER, INC .Y + INY +:NOINY + STX :MSIZE ; LOW BYTE + STY :MSIZE+1 ; HIGH BYTE + LDA :FILL ; FILL VALUE + LDX :MSIZE+1 + BEQ :PART ; IF NO WHOLE PAGES, JUST PART + LDY #0 +:FULL + STA (ADDR1),Y + INY ; NEXT BYTE + BNE :FULL ; LOOP UNTIL PAGE DONE + INC ADDR1+1 ; GO TO NEXT PAGE + DEX + BNE :FULL ; LOOP IF PAGES LEFT +:PART + LDX :MSIZE ; PARTIAL PAGE BYTES + BEQ :MFEXIT ; EXIT IF = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INC INDEX + DEX ; DEC COUNTER + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :ASZBAK + STA (ADDR1),Y + INY + LDA :ESZBAK + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 ; LOW + LDX ADDR1+1 ; HIGH + LDA :ASZBAK + LDA :MSIZE + STA RETURN + LDA :MSIZE+1 + STA RETURN+1 + LDA #2 + STA RETLEN ; 2 BYTE LENGTH + RTS +:MSIZE DS 2 +:ASIZE DS 1 +:ESIZE DS 1 +:ASZBAK DS 1 +:ESZBAK DS 1 +:FILL DS 1 diff --git a/source/disk20_minidisk_A/T.ADIM82.SUB.MIN b/source/disk20_minidisk_A/T.ADIM82.SUB.MIN new file mode 100644 index 0000000..73787c1 --- /dev/null +++ b/source/disk20_minidisk_A/T.ADIM82.SUB.MIN @@ -0,0 +1,133 @@ +ADIM82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL + PLA + STA :MCAND ; ELEMENT LENGTH + PLA + STA :AYSIZE + STA :AYBAK + PLA + STA :AXSIZE + STA :AXBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :MCAND+1 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :AXSIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :AXSIZE + ROL SCRATCH +:ENTLP + LSR :AYSIZE + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + LDA #0 + STA :PROD + STA :PROD+1 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + LDA :FILL ; FILL VALUE + LDX :PROD+1 ; NOTE THAT THIS WON'T + ; GO BEYOND A 16BIT VALUE; + ; ANYTHING HIGHER THAN + ; 16BITS IS MORE THAN + ; THERE IS MEMORY IN A + ; STANDARD APPLE ][ + BEQ :PART + LDY #0 +:FULL + STA (ADDR1),Y + INY + BNE :FULL + INC ADDR1+1 + DEX + BNE :FULL ; LOOP UNTIL PAGES DONE +:PART + LDX :PROD + BEQ :MFEXIT + LDY #0 +:PARTLP + STA (ADDR1),Y + INY + DEX + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :AXBAK + STA (ADDR1),Y + INY + LDA :AYBAK + STA (ADDR1),Y + INY + LDA :MCAND + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 + LDX ADDR1+1 + LDA :PROD + STA RETURN + LDA :PROD+1 + STA RETURN+1 + LDA :PROD+2 + STA RETURN+2 + LDA :PROD+3 + STA RETURN+3 + LDA #4 ; SIZE OF RETURN + STA RETLEN + LDA :MCAND + RTS +:PROD DS 4 +:AXSIZE DS 1 +:AYSIZE DS 1 +:AXBAK DS 1 +:AYBAK DS 1 +:MLIER DS 2 +:MCAND DS 2 +:FILL DS 1 diff --git a/source/disk20_minidisk_A/T.AGET81.SUB.MIN b/source/disk20_minidisk_A/T.AGET81.SUB.MIN new file mode 100644 index 0000000..1e200ce --- /dev/null +++ b/source/disk20_minidisk_A/T.AGET81.SUB.MIN @@ -0,0 +1,96 @@ +AGET81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :IDX + DEC :IDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :IDX+1 + LDY #1 ; ELEMENT SIZE LOC + LDA (ADDR1),Y + STA :ESIZE + STA RETLEN ; LENGTH OF RETURN VALUE + DEY + LDA (ADDR1),Y + STA :ALEN + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CMP :ALEN + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 +:ERREND + LDY #0 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :IDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :IDX + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR1 ; LOW OF ARRAY ADDRESS + STA :RES + LDA :RES+1 + ADC ADDR1+1 + STA :RES+1 + LDY #0 + LDA :RES + STA ADDR1 + LDA :RES+1 + STA ADDR1+1 +:LDLOOP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY RETLEN + BCC :LDLOOP ; IF .Y <= RETLEN + BEQ :LDLOOP ; KEEP LOOPING + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY :RES + LDX :RES+1 + LDA RETLEN + RTS +:RES DS 2 +:IDX DS 2 +:ESIZE DS 1 +:ALEN DS 1 +:E_SID ASC "AGET81 (GET81 MACRO)",00 +:E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/source/disk20_minidisk_A/T.AGET82.SUB.MIN b/source/disk20_minidisk_A/T.AGET82.SUB.MIN new file mode 100644 index 0000000..9193742 --- /dev/null +++ b/source/disk20_minidisk_A/T.AGET82.SUB.MIN @@ -0,0 +1,153 @@ +AGET82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX + PLA + STA :XIDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + DEC :XIDX + DEC :YIDX + LDY #2 + LDA (ADDR1),Y ; ELEMENT LENGTH + STA :MCAND ; ELEMENT LENGTH + STA :ELEN + DEY + LDA (ADDR1),Y ; Y LENGTH + STA :YLEN + DEY + LDA (ADDR1),Y ; X LENGTH + STA :XLEN + LDA #0 + STA :MCAND+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR1 + STA :PROD + LDA :PROD+1 + ADC ADDR1+1 + STA :PROD+1 + LDY :PROD + LDX :PROD+1 + STY ADDR1 + STX ADDR1+1 + LDY #0 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY :ELEN + BNE :RLP + LDA :ELEN + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA RETLEN + LDY ADDR1 + LDX ADDR1+1 + RTS +:XIDX DS 2 +:YIDX DS 2 +:XLEN DS 1 +:YLEN DS 1 +:PROD DS 4 +:MLIER DS 2 +:MCAND DS 2 +:ELEN DS 1 +:E_SID ASC "AGET82 (GET82 MACRO)",00 +:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" + ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/source/disk20_minidisk_A/T.APUT81.SUB.MIN b/source/disk20_minidisk_A/T.APUT81.SUB.MIN new file mode 100644 index 0000000..11c8446 --- /dev/null +++ b/source/disk20_minidisk_A/T.APUT81.SUB.MIN @@ -0,0 +1,103 @@ +APUT81 + PLA + STA RETADR ; LOCAL RETURN ADDRESS STORAGE + PLA ; BECAUSE OF CALLING AGET81 + STA RETADR+1 + PLA + STA :AIDX + STA :IDX + DEC :AIDX + DEC :IDX + PLA + STA ADDR4 ; ARRAY ADDRESS; USES ADDR4 + ; ADDR1 + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA TO BE + PLA + STA ADDR3+1 + LDY #0 + LDA (ADDR4),Y + STA :ASIZE + LDY #1 + LDA (ADDR4),Y + STA :ESIZE + STA :ESIZEBAK + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CLC + ADC #1 + CMP :ASIZE + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 +:ERREND + LDY #0 + LDA #0 + STY SCRATCH + STY SCRATCH+1 + BEQ :ENTLPA +:DOADD + CLC + ADC :AIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LPA + ASL :AIDX + ROL SCRATCH +:ENTLPA + LSR :ESIZE + BCS :DOADD + BNE :LPA + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR4 + STA :RES + LDA :RES+1 + ADC ADDR4+1 + STA :RES+1 + STA ADDR2+1 + LDA :RES + STA ADDR2 +:LP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZEBAK + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:ESIZEBAK DS 1 +:ASIZE DS 1 +:AIDX DS 2 +:IDX DS 2 +:RES DS 2 +:E_SID ASC "APUT81 (PUT81 MACRO)",00 +:E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" + ASC ":AIDX(2) :IDX(2) :RES(2)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/source/disk20_minidisk_A/T.APUT82.SUB.MIN b/source/disk20_minidisk_A/T.APUT82.SUB.MIN new file mode 100644 index 0000000..696d636 --- /dev/null +++ b/source/disk20_minidisk_A/T.APUT82.SUB.MIN @@ -0,0 +1,158 @@ +APUT82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX ; Y INDEX + DEC :YIDX + PLA + STA :XIDX ; X INDEX + DEC :XIDX + PLA + STA ADDR4 ; ADDRESS OF ARRAY + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA + PLA ; TO BE COPIED + STA ADDR3+1 + LDY #2 + LDA (ADDR4),Y + STA :ESIZE + STA :MCAND + LDA #0 + STA :MCAND+1 + LDY #0 + LDA (ADDR4),Y + STA :XLEN + INY + LDA (ADDR4),Y + STA :YLEN + LDY #0 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR4 + STA :PROD + LDA :PROD+1 + ADC ADDR4+1 + STA :PROD+1 + LDA :PROD + LDY :PROD + LDX :PROD+1 + STY ADDR2 + STX ADDR2+1 + LDY #0 + LDX #0 +:CLP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :CLP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:XIDX DS 1 +:YIDX DS 1 +:MCAND DS 2 +:MLIER DS 2 +:PROD DS 4 +:XLEN DS 1 +:YLEN DS 1 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/source/disk20_minidisk_A/T.ARRAYS.HOOKS b/source/disk20_minidisk_A/T.ARRAYS.HOOKS new file mode 100644 index 0000000..d33c50b --- /dev/null +++ b/source/disk20_minidisk_A/T.ARRAYS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS.HOOKS.PUT * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +* WELL I GOT NOTHIN +* diff --git a/source/disk20_minidisk_A/T.ARRAYS.MAC.MIN b/source/disk20_minidisk_A/T.ARRAYS.MAC.MIN new file mode 100644 index 0000000..062e261 --- /dev/null +++ b/source/disk20_minidisk_A/T.ARRAYS.MAC.MIN @@ -0,0 +1,76 @@ +DIM81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ARRAY LENGTH + PHA + LDA ]3 ; ELEMENT LENGTH + PHA + LDA ]4 + PHA ; FILL VAL + JSR ADIM81 + <<< +GET81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ELEM INDEX + PHA + JSR AGET81 + <<< +PUT81 MAC + LDA #>]1 + PHA ; SRC ADDR + LDA #<]1 + PHA + LDA #>]2 ; DEST ARRAY + PHA + LDA #<]2 + PHA + LDA ]3 ; DEST INDEX + PHA + JSR APUT81 + <<< +DIM82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X DIM + PHA + LDA ]3 ; Y DIM + PHA + LDA ]4 ; ELEMENT LENGTH + PHA + LDA ]5 ; FILL VAL + PHA + JSR ADIM82 + <<< +GET82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X INDEX + PHA + LDA ]3 ; Y INDEX + PHA + JSR AGET82 + <<< +PUT82 MAC + LDA #>]1 ; SRC ADDR + PHA + LDA #<]1 + PHA + LDA #>]2 ; ARRAY ADDR + PHA + LDA #<]2 + PHA + LDA ]3 ; X INDEX + PHA + LDA ]4 ; Y INDEX + PHA + JSR APUT82 + <<< diff --git a/source/disk20_minidisk_A/T.BINLOAD.SUB.MIN b/source/disk20_minidisk_A/T.BINLOAD.SUB.MIN new file mode 100644 index 0000000..8986bc7 --- /dev/null +++ b/source/disk20_minidisk_A/T.BINLOAD.SUB.MIN @@ -0,0 +1,69 @@ +BINLOAD + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$CC ; L + JSR FCOUT + LDA #$CF ; O + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$C4 ; D + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINLOAD (BLOAD MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/source/disk20_minidisk_A/T.BINSAVE.SUB.MIN b/source/disk20_minidisk_A/T.BINSAVE.SUB.MIN new file mode 100644 index 0000000..e848e23 --- /dev/null +++ b/source/disk20_minidisk_A/T.BINSAVE.SUB.MIN @@ -0,0 +1,69 @@ +BINSAVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERROR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$D3 ; S + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$D6 ; V + JSR FCOUT + LDA #$C5 ; E + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINSAVE (BSAV MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/disks/disk2_common/T.COMMON.DEMO.MIN b/source/disk20_minidisk_A/T.COMMON.DEMO.MIN similarity index 100% rename from disks/disk2_common/T.COMMON.DEMO.MIN rename to source/disk20_minidisk_A/T.COMMON.DEMO.MIN diff --git a/source/disk20_minidisk_A/T.COMMON.HOOKS b/source/disk20_minidisk_A/T.COMMON.HOOKS new file mode 100644 index 0000000..f5793e1 --- /dev/null +++ b/source/disk20_minidisk_A/T.COMMON.HOOKS @@ -0,0 +1,14 @@ +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* COMMON.LIB HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +PROMPT EQU $33 +COLDENT EQU $03D3 ; COLD ENTRY TO DOS +SRESET EQU $03F2 ; SOFT RESET +PRNTAX EQU $F941 ; PRINT HEX VALS OF A,X REGISTERS +BELL EQU $FBE4 ; RING MY BELL +IOSAVE EQU $FF4A ; SAVE CURRENT STATE OF REGISTERS +IOREST EQU $FF3F ; RESTORE OLD STATE OF REGISTERS +* diff --git a/source/disk20_minidisk_A/T.COMMON.MAC.MIN b/source/disk20_minidisk_A/T.COMMON.MAC.MIN new file mode 100644 index 0000000..95d3e9f --- /dev/null +++ b/source/disk20_minidisk_A/T.COMMON.MAC.MIN @@ -0,0 +1,55 @@ +MFILL MAC + _ISLIT ]1 + _ISLIT ]2 + LDA ]3 ; FILL VALUE + PHA + JSR MEMFILL + <<< +BEEP MAC + LUP ]1 + JSR BELL + --^ + <<< +MMOVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + _ISLIT ]3 + JSR MEMMOVE + <<< +DELAY MAC + LDY ]1 + JSR DELAYMS + <<< +ZSAVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMSAVE + <<< +ZLOAD MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMLOAD + <<< +MSWAP MAC + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]3 + PHA + JSR MEMSWAP + <<< diff --git a/source/disk20_minidisk_A/T.COMP16.SUB.MIN b/source/disk20_minidisk_A/T.COMP16.SUB.MIN new file mode 100644 index 0000000..2eceede --- /dev/null +++ b/source/disk20_minidisk_A/T.COMP16.SUB.MIN @@ -0,0 +1,37 @@ +COMP16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT ; SUBTRAHEND + PLA + STA :SUBT+1 + PLA + STA :MINU ; MINUEND + PLA + STA :MINU+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :MINU + CMP :SUBT ; COMPARE LOW BYTES + BEQ :EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; COMPARE HIGH BYTES + ORA #1 ; MAKE Z=0, SINCE LOW + ; BYTES ARE NOT EQUAL + BVS :OVFLOW ; MUST HANDLE OVERFLOW + RTS ; EXIT +:EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; UPPER BYTES + BVS :OVFLOW + RTS ; RETURN W FLAGS SET +:OVFLOW + EOR #$80 ; COMPLEMENT N FLAG + ORA #1 ; IF OVERFLOW THEN THE + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN b/source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN new file mode 100644 index 0000000..afab091 --- /dev/null +++ b/source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN @@ -0,0 +1,88 @@ +CURSFOR + CLC + ADC CURSH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MAX COL + 1 + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSFOR (CURF MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSBAK + SEC + STA SCRATCH + LDA CURSH + SBC SCRATCH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MIN COLUMN + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSBAK (CURB MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSDN + CLC + ADC CURSV + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSDN (CURD MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 +CURSUP + SEC + STA SCRATCH + LDA CURSV + SBC SCRATCH + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSUP (CURU MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 diff --git a/source/disk20_minidisk_A/T.DELAYMS.SUB.MIN b/source/disk20_minidisk_A/T.DELAYMS.SUB.MIN new file mode 100644 index 0000000..8942752 --- /dev/null +++ b/source/disk20_minidisk_A/T.DELAYMS.SUB.MIN @@ -0,0 +1,29 @@ +DELAYMS +MSCNT EQU $0CA ; 202 TIMES THROUGH DELAY1 + ; SPECIFIC TO 1.23 MHZ + ; SPEED OF APPLE II +:DELAY + CPY #0 ; 2 CYCLES + BEQ :EXIT ; 2C (EXIT IF DEL=0) + NOP ; 2 CYCLES (MAKE OVERHEAD=25C) + CPY #1 ; 2 CYCLES + BNE :DELAYA ; 3C IF TAKEN, ELSE 2C + JMP :LAST1 ; 3C +:DELAYA + DEY ; 2C (PREDEC Y) +:DELAY0 + LDX #MSCNT ; 2C +:DELAY1 + DEX ; 2C + BNE :DELAY1 ; 3C + NOP ; 2C + NOP ; 2C + DEY ; 2C + BNE :DELAY0 ; 3C +:LAST1 + LDX #MSCNT-3 ; 2C +:DELAY2 + DEX ; 2C + BNE :DELAY2 ; 3C +:EXIT + RTS ; 6C diff --git a/source/disk20_minidisk_A/T.DISKOP.SUB.MIN b/source/disk20_minidisk_A/T.DISKOP.SUB.MIN new file mode 100644 index 0000000..df1e7aa --- /dev/null +++ b/source/disk20_minidisk_A/T.DISKOP.SUB.MIN @@ -0,0 +1,12 @@ +DISKOP +:CLEAR + LDA #00 + STA IOB_EVOL + LDA #>IOB + LDY #]1 + PHA + LDA #<]1 + PHA + JSR FPSTR ; PRINT STRING + FIN + <<< +FINP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR FINPUT + <<< +SLOT MAC + LDA ]1 + STA SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH ; MUL BY 16 + LDA SCRATCH + STA IOB_SLOT + <<< +DRIVE MAC + LDA ]1 + STA IOB_DRIV + <<< +TRACK MAC + LDA ]1 + STA IOB_TRAK + <<< +SECT MAC + LDA ]1 + STA IOB_SECT + <<< +SETDR MAC + LDA $01 + STA IOB_COMM + <<< +SETDW MAC + LDA $02 + STA IOB_COMM + <<< +DBUFF MAC + LDA #<]1 + STA IOB_BUFL + LDA #>]1 + STA IOB_BUFH + <<< +DRWTS MAC + JSR DISKOP + <<< diff --git a/source/disk20_minidisk_A/T.FINPUT.SUB.MIN b/source/disk20_minidisk_A/T.FINPUT.SUB.MIN new file mode 100644 index 0000000..39501bb --- /dev/null +++ b/source/disk20_minidisk_A/T.FINPUT.SUB.MIN @@ -0,0 +1,31 @@ +FINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDX #0 + JSR FGETLN + STX :SLEN + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :SLEN + STA (ADDR1),Y ; PUT LENGTH AT START +:LP + LDA $0200,Y ; KEYBOARD BUFFER + INY + STA (ADDR1),Y + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/source/disk20_minidisk_A/T.FPRINT.SUB.MIN b/source/disk20_minidisk_A/T.FPRINT.SUB.MIN new file mode 100644 index 0000000..9f6235c --- /dev/null +++ b/source/disk20_minidisk_A/T.FPRINT.SUB.MIN @@ -0,0 +1,23 @@ +FPRINT + PLA + STA RETADR + PLA + STA RETADR+1 + LDY #$01 ; POINT TO NEXT INSTR +:LP + LDA (RETADR),Y + BEQ :DONE + JSR FCOUT + INY + BNE :LP +:DONE + CLC ; RESTORE INSTR POINTER + TYA + ADC RETADR + STA RETADR + LDA RETADR+1 + ADC #$00 + PHA + LDA RETADR + PHA + RTS diff --git a/source/disk20_minidisk_A/T.FPSTR.SUB.MIN b/source/disk20_minidisk_A/T.FPSTR.SUB.MIN new file mode 100644 index 0000000..bea622d --- /dev/null +++ b/source/disk20_minidisk_A/T.FPSTR.SUB.MIN @@ -0,0 +1,25 @@ +FPSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + STA :SLEN +:LP + INY + LDA (ADDR1),Y + JSR FCOUT + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/source/disk20_minidisk_A/T.GPBX.SUB.MIN b/source/disk20_minidisk_A/T.GPBX.SUB.MIN new file mode 100644 index 0000000..4250bc4 --- /dev/null +++ b/source/disk20_minidisk_A/T.GPBX.SUB.MIN @@ -0,0 +1,50 @@ +GPBX + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ZERO PAGE + PLA + STA ADDR1+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR1+1 + CMP #$C0 ; MAX COL + 1 + BNE :BADHI + LDA ADDR1 + CMP #$64 + BCS :BADLO + LDA ADDR1 + CMP #$60 + BCC :BADLO + JMP :ERREND +:BADHI + _ERR :E_SID;:E_BHI;:E_DMP1;RETURN;#10 + JMP :ERREND +:BADLO + _ERR :E_SID;:E_BLO;:E_DMP1;RETURN;#10 +:ERREND + LDY #$00 + LDA (ADDR1),Y ; IF BTN = PUSHED + BMI :1 + JMP :0 +:1 + LDY #$01 ; BTN PUSHED;A=1 + JMP :EXIT +:0 + LDY #$00 ; BTN NOT PUSHED;A=0 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + TYA ; BTN FLAG MOVE TO A + RTS +:E_SID ASC "GPBX (PBX MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_BHI ASC "BAD HIGH BYTE--NOT A PADDLE BUTTON!.",00 +:E_BLO ASC "BAD LOW BYTE--NOT A PADDLE BUTTON",00 diff --git a/source/disk20_minidisk_A/T.MATH.HOOKS b/source/disk20_minidisk_A/T.MATH.HOOKS new file mode 100644 index 0000000..c409e7b --- /dev/null +++ b/source/disk20_minidisk_A/T.MATH.HOOKS @@ -0,0 +1,27 @@ +* +GETNUM EQU $FFA7 ; ASCII TO HEX IN 3E & 3F +RNDL EQU $4E ; RANDOM NUMBER LOW +RNDH EQU $4F ; RANDOM NUMBER HIGH +* +FAC EQU $9D ; FLOATING POINT ACCUM +FSUB EQU $E7A7 ; FLOATING POINT SUBTRACT +FADD EQU $E7BE +FMULT EQU $E97F ; FP MULTIPLY +FDIV EQU $EA66 ; FP DIVIDE +FMULTT EQU $E982 +FDIVT EQU $EA69 +FADDT EQU $E7C1 +FSUBT EQU $E7AA +* +MOVFM EQU $EAF9 ; MOVE FAC > MEM +MOVMF EQU $EB2B ; MOVE MEM > FAC +NORM EQU $E82E +CONUPK EQU $E9E3 +* +FLOG EQU $E941 ; LOGARITHM +FSQR EQU $EE8D ; SQUARE ROOT +FCOS EQU $EFEA ; FP COSINE +FSIN EQU $EFF1 ; SINE +FTAN EQU $F03A ; TANGENT +FATN EQU $F09E ; ATANGENT +* diff --git a/source/disk20_minidisk_A/T.MATH.MAC.MIN b/source/disk20_minidisk_A/T.MATH.MAC.MIN new file mode 100644 index 0000000..bad6721 --- /dev/null +++ b/source/disk20_minidisk_A/T.MATH.MAC.MIN @@ -0,0 +1,78 @@ +ADD16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR ADDIT16 + <<< +SUB16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR SUBT16 + <<< +MUL16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR MULT16 + <<< +DIV16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SDIVD16 + ELSE + JSR UDIVD16 ; UNSIGNED + FIN + <<< +REM16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SREMD16 + ELSE + JSR UREMD16 ; UNSIGNED + FIN + <<< +RNDB MAC + LDA ]1 ; LOW + PHA + LDA ]2 ; HIGH + PHA + JSR RANDB + <<< +CMP16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR COMP16 + <<< +MUL8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR MULT8 + <<< +DIV8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR DIVD8 + <<< +RND16 MAC + JSR RAND16 + <<< +FPADD MAC + LDX #]1 + LDY #>]1 + JSR MOVFM + LDA #]2 + LDY #>]2 + JSR CONUPK + JSR NORM + LDA $9D + JSR FADDT + LDX #RETURN + LDY #>RETURN + JSR MOVMF + LDA #6 + STA RETLEN + <<< diff --git a/source/disk20_minidisk_A/T.MEMFILL.SUB.MIN b/source/disk20_minidisk_A/T.MEMFILL.SUB.MIN new file mode 100644 index 0000000..0401928 --- /dev/null +++ b/source/disk20_minidisk_A/T.MEMFILL.SUB.MIN @@ -0,0 +1,43 @@ +MEMFILL + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALUE + PLA + STA :ARYSZ + PLA + STA :ARYSZ+1 + PLA + STA ADDR1 ; ZERO PAGE POINTER + PLA ; DEFINED IN + STA ADDR1+1 ; DECS + LDA :VALUE ; GET VAL FOR FILL + LDX :ARYSZ+1 ; X=# OF PAGES TO DO + BEQ :PARTPG ; BRANCH IF HIGHBYTE OF SZ = 0 + LDY #0 +:FULLPG + STA (ADDR1),Y + INY ; INC TO NEXT BYTE + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGE + INC ADDR1+1 ; ADVANCE TO NEXT PAGE + DEX + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGES +:PARTPG + LDX :ARYSZ ;GET # OF BYTES IN FINAL PAGE + BEQ :EXIT ; BRANCH IF LOW BYTE = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INCREMENT INDEX + DEX ; DECREMENT COUNTER + BNE :PARTLP ; BRANCH IF NOT DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:VALUE DS 1 ; FILL VALUE +:ARYSZ DS 2 ; ARRAY SIZE diff --git a/source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN b/source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN new file mode 100644 index 0000000..d0938fb --- /dev/null +++ b/source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN @@ -0,0 +1,101 @@ +MEMMOVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MVELEN + PLA + STA :MVELEN+1 + PLA + STA ADDR2 ; ZERO PAGE POINTER + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :MVELEN + TYA + SBC :MVELEN+1 + BCS :DOLEFT ; BRANCH IF NO OVERLAP + JSR :MVERHT + JMP :EXIT +:DOLEFT + JSR :MVELEFT +:EXIT + JMP :MREXIT +:MVELEFT + LDY #0 ; ZERO INDEX + LDX :MVELEN+1 ; X=# OF FULL PP TO MOVE + BEQ :MLPART ; IF X=0, DO PARTIAL PAGE +:MLPAGE + LDA (ADDR1),Y + STA (ADDR2),Y ;MOVE ONE BYTE + INY ; NEXT BYTE + BNE :MLPAGE ; CONT UNTIL 256B MOVED + INC ADDR1+1 ; ADV TO NEXT SRC PAGE + INC ADDR2+1 ; ADV NEXT DEST PAGE + DEX ; DEC PAGE COUNT + BNE :MLPAGE ; CONT UNTIL ALL FULL + ; PAGES ARE MOVED +:MLPART + LDX :MVELEN ; GET LENGTH OF LAST PAGE + BEQ :MLEXIT ; BR IF LENGTH OF LAST + ; PAGE = 0 + ; REG Y IS 0 +:MLLAST + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + INY ; NEXT BYTE + DEX ; DEC COUNTER + BNE :MLLAST ; CONT UNTIL LAST P DONE +:MLEXIT + JMP :MREXIT +:MVERHT + LDA :MVELEN+1 + CLC + ADC ADDR1+1 + STA ADDR1+1 ;POINT TO LAST P OF SRC + LDA :MVELEN+1 + CLC + ADC ADDR2+1 + STA ADDR2+1 ; POINT TO LAST P OF DEST + LDY :MVELEN ;GET LENGTH OF LAST PAGE + BEQ :MRPAGE ; IF Y=0 DO THE FULL PAGES +:MR0 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR0 ; BR IF NOT DONE W LAST P +:MRPAGE + LDX :MVELEN+1 ; GET BYTE OF COUNT AS P CT + BEQ :MREXIT ; BR IF HYBYTE = 0 (NO FULL P) +:MR1 + DEC ADDR1+1 ; BACK UP TO PREV SRC PAGE + DEC ADDR2+1 ; AND DEST +:MR2 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR2 ; BR IF NOT DONE W THIS PAGE + DEX + BNE :MR1 ; BR IF NOT ALL PAGES MOVED +:MREXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MVELEN DS 2 diff --git a/source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN b/source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN new file mode 100644 index 0000000..7247b7d --- /dev/null +++ b/source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN @@ -0,0 +1,86 @@ +MEMSWAP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :LENGTH + PLA + STA ADDR1 + STA :A1 + PLA + STA ADDR1+1 + STA :A1+1 + PLA + STA ADDR2 + STA :A2 + PLA + STA ADDR2+1 + STA :A2+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR2+1 ; IF #>A2 => #>A1 + CMP ADDR1+1 + BCS :CHKLO ; CHECK LOW BYTES + JMP :A1GTA2 ; ELSE, A1 > A2 +:CHKLO + LDA ADDR2 + CMP ADDR1 + BCS :A2GTA1 + JMP :A1GTA2 +:A2GTA1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND ; BRANCH IF NO OVERLAP + JMP :OVF +:A1GTA2 + LDA ADDR1 + SEC + SBC ADDR2 + TAX + LDA ADDR1+1 + SBC ADDR2+1 + TAY + TXA + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND +:OVF + _ERR :E_SID;:E_OVF;:E_DUMP;:LENGTH;#6 +:ERREND + LDY #255 ; COUNTER +:LP + INY + LDA (ADDR1),Y + TAX ; X CONTAINS ADDR1 VAL + LDA (ADDR2),Y ; A CONTAINS ADDR2 VAL + STA (ADDR1),Y + TXA + STA (ADDR2),Y + CPY :LENGTH + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:LENGTH DS 2 +:A1 DS 2 +:A2 DS 2 +:E_SID ASC "MEMSWAP (MSWAP MACRO)",00 +:E_DUMP ASC "DUMPING LENGTH (2) A1(2) A2(2)",00 +:E_OVF ASC "OVERFLOW! ADDRESSES OVERLAP.",00 diff --git a/source/disk20_minidisk_A/T.MULT16.SUB.MIN b/source/disk20_minidisk_A/T.MULT16.SUB.MIN new file mode 100644 index 0000000..31aafd7 --- /dev/null +++ b/source/disk20_minidisk_A/T.MULT16.SUB.MIN @@ -0,0 +1,59 @@ +MULT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLIER + PLA + STA :MLIER+1 + PLA + STA :MCAND + PLA + STA :MCAND+1 + LDA #0 + STA :HPROD ; ZERO HIGH WORD + STA :HPROD+1 + LDX #17 ; # OF BITS IN MPLIER + ; PLUS 1. EXTRA LOOP IS + ; TO MOVE LAST CARRY INTO + ; THE PRODUCT. + CLC ; CLEAR CARRY FOR 1ST TIME + ; THROUGH LOOP. +:MULLP + ROR :HPROD+1 + ROR :HPROD + ROR :MLIER+1 + ROR :MLIER + BCC :DECCNT ; BR IF NEXT BIT OF + CLC ; NEXT BIT=1 SO ADD MCAND + LDA :MCAND + ADC :HPROD + STA :HPROD + LDA :MCAND+1 + ADC :HPROD+1 + STA :HPROD+1 ; CARRY = OVERFLOW +:DECCNT + DEX + BNE :MULLP ; CONTINUE UNTIL DONE + LDY :HPROD ; LOW BYTE OF HIGH WORD + LDX :HPROD+1 ; HIGH BYTE OF HIGH WORD + LDA :MLIER+1 + TAX + STX RETURN+1 + LDA :MLIER + TAY + STY RETURN + LDA :HPROD + STA RETURN+2 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :HPROD ;24BIT + RTS +:MCAND DS 3 +:MLIER DS 3 +:HPROD DS 2 diff --git a/source/disk20_minidisk_A/T.MULT8.SUB.MIN b/source/disk20_minidisk_A/T.MULT8.SUB.MIN new file mode 100644 index 0000000..46ed425 --- /dev/null +++ b/source/disk20_minidisk_A/T.MULT8.SUB.MIN @@ -0,0 +1,41 @@ +MULT8 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MUL1 + PLA + STA :MUL2 + LDA #$00 + TAY + TAX + STY :MUL1H + BEQ :GOLOOP +:DOADD + CLC + ADC :MUL1 + TAY + TXA + ADC :MUL1H + TAX + TYA +:LP + ASL :MUL1 + ROL :MUL1H +:GOLOOP + LSR :MUL2 + BCS :DOADD + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:MUL1 DS 1 +:MUL2 DS 1 +:MUL1H DS 1 diff --git a/source/disk20_minidisk_A/T.NUM2STR.SUB.MIN b/source/disk20_minidisk_A/T.NUM2STR.SUB.MIN new file mode 100644 index 0000000..b93f1e9 --- /dev/null +++ b/source/disk20_minidisk_A/T.NUM2STR.SUB.MIN @@ -0,0 +1,97 @@ +NUM2STR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALSTR + PLA + STA :VALSTR+1 + STA :NGFLAG + BPL :GETBP ; BR IF VAL IS POS + LDA #0 + SEC + SBC :VALSTR + STA :VALSTR + LDA #0 + SBC :VALSTR+1 + STA :VALSTR+1 +:GETBP + LDA #RETURN+1 + STA ADDR1+1 + LDA #0 ; SET BUFFER TO EMPTY + LDY #0 + STA (ADDR1),Y ; BUFFER(0) = 0 +:CNVERT + LDA #0 + STA :MOD10 + STA :MOD10+1 + LDX #16 + CLC ; CLEAR CARRY +:DVLOOP + ROL :VALSTR ; SHIFT CARRY INTO DIVBIT 0 + ROL :VALSTR+1 ; WHICH WILL BE THE QUOTIENT + ROL :MOD10 ; + SHIFT DIV AT SAME TIME + ROL :MOD10+1 + SEC + LDA :MOD10 + SBC #10 + TAY ; SAVE LOWB IN REG Y + LDA :MOD10+1 + SBC #0 ; SUBTRACT CARRY + BCC :DECCNT ; BR IF DEND < DIVISOR + STY :MOD10 ; ELSE + STA :MOD10+1 ; NXT BIT OF Q IS A ONE AND SET + ; DIVIDEND = DEND - DIVISOR +:DECCNT + DEX + BNE :DVLOOP + ROL :VALSTR ; SHIFT IN LAST CARRY FOR Q + ROL :VALSTR+1 +:CONCH + LDA :MOD10 + CLC + ADC #$B0 + JSR :CONCAT + LDA :VALSTR + ORA :VALSTR+1 + BNE :CNVERT ; BR IF VALUE != 0 +:EXIT + LDA :NGFLAG + BPL :POS ; BR IF ORIG VAL POS + LDA #173 ; ELSE + JSR :CONCAT ; PUT A MINUS SIGN IN FRONT +:POS + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS ; RETURN +:CONCAT + PHA ; SAVE CHAR ON STACK + LDY #0 + LDA (ADDR1),Y ; GET CURRENT LENGTH + TAY + BEQ :EXITMR ; BR IF LENGTH=0 +:MVELP + LDA (ADDR1),Y ; GET NEXT CHAR + INY + STA (ADDR1),Y ; STORE IT + DEY + DEY + BNE :MVELP ; CONT UNTIL DONE +:EXITMR + PLA ; GET CHAR BACK FROM STACK + LDY #1 + STA (ADDR1),Y ; STORE THE CHAR + LDY #0 + LDA (ADDR1),Y ; GET LENGTH BYTE + CLC + ADC #1 ; INC LENGTH BY ONE + STA (ADDR1),Y ; UPDATE LENGTH + RTS +:NGFLAG DS 1 +:VALSTR DS 2 +:MOD10 DS 2 diff --git a/source/disk20_minidisk_A/T.PRNSTR.SUB.MIN b/source/disk20_minidisk_A/T.PRNSTR.SUB.MIN new file mode 100644 index 0000000..c3998cc --- /dev/null +++ b/source/disk20_minidisk_A/T.PRNSTR.SUB.MIN @@ -0,0 +1,31 @@ +PRNSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADDRESS OF STRING + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET STRING LENGTH + STA :S1LEN +:LP + INY + LDA (ADDR1),Y ; GET CHARACTER + JSR SCOUT1 ; PRINT CHARACTER TO SCREEN + CPY :S1LEN ; IF Y < LENGTH + BNE :LP + ; LOOP; ELSE + LDY #0 + LDA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; STRING LENGTH IN A + LDY ADDR1 + LDX ADDR1+1 ; ADDRESS IN Y,X + RTS +:S1LEN DS 1 diff --git a/source/disk20_minidisk_A/T.RAND16.SUB.MIN b/source/disk20_minidisk_A/T.RAND16.SUB.MIN new file mode 100644 index 0000000..4a97a0c --- /dev/null +++ b/source/disk20_minidisk_A/T.RAND16.SUB.MIN @@ -0,0 +1,34 @@ +RAND16 + LDA RNDL + STA :SEED + LDA RNDH + STA :SEED+1 + LDA :SEED + BEQ :LOW0 + ASL :SEED + LDA :SEED+1 + ROL + BCC :NOEOR +:DOEOR ; HIGH BYTE IN A + EOR #>$0369 + STA :SEED+1 + LDA :SEED + EOR #<$0369 + STA :SEED + JMP :EXIT +:LOW0 + LDA :SEED+1 + BEQ :DOEOR + ASL + BEQ :NOEOR + BCS :DOEOR +:NOEOR + STA :SEED+1 +:EXIT LDX :SEED+1 + LDY :SEED + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:SEED DS 2 diff --git a/source/disk20_minidisk_A/T.RAND8.SUB.MIN b/source/disk20_minidisk_A/T.RAND8.SUB.MIN new file mode 100644 index 0000000..ae20a11 --- /dev/null +++ b/source/disk20_minidisk_A/T.RAND8.SUB.MIN @@ -0,0 +1,17 @@ +RAND8 + LDX #8 + LDA RNDL+0 +:A + ASL ;SHIFT THE REG + ROL RNDL+1 + BCC :B + EOR #$2D ; APPLY XOR FEEDBACK +:B + DEX + BNE :A + STA RNDL+0 + STA RETURN + LDY #1 + STY RETLEN + CMP #0 ; RELOAD FLAGS + RTS diff --git a/source/disk20_minidisk_A/T.RANDB.SUB.MIN b/source/disk20_minidisk_A/T.RANDB.SUB.MIN new file mode 100644 index 0000000..b0805bb --- /dev/null +++ b/source/disk20_minidisk_A/T.RANDB.SUB.MIN @@ -0,0 +1,107 @@ +RANDB + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :NEWMAX + PLA + STA :NEWMIN + LDA #1 + STA :OLDMIN + LDA #255 + STA :OLDMAX + LDX #8 + LDA RNDL+0 +:AA + ASL + ROL RNDL+1 + BCC :BB + EOR #$2D ; MAGIC NUMBER +:BB + DEX + BNE :AA + STA RNDL+0 + CMP #0 + STA :OLDVAL + LDA :OLDMAX + SEC + SBC :OLDMIN + STA :OLDRANGE + LDA :NEWMAX + SEC + SBC :NEWMIN + STA :NEWRANGE + LDA :OLDVAL + SEC + SBC :OLDMIN + STA :VALRANGE + LDA #00 + TAY + STY :NUM1HI + BEQ :ENTLP +:DOADD + CLC + ADC :VALRANGE + TAX + TYA + ADC :NUM1HI + TAY + TXA +:MLP + ASL :VALRANGE + ROL :NUM1HI +:ENTLP + LSR :NEWRANGE + BCS :DOADD + BNE :MLP + STA :MULRANGE + STY :MULRANGE+1 +:DIVIDE + LDA #0 + STA :REMAIN + STA :REMAIN+1 + LDX #16 +:DIVLP + ASL :MULRANGE + ROL :MULRANGE+1 + ROL :REMAIN + ROL :REMAIN+1 + LDA :REMAIN + SEC + SBC :OLDRANGE + TAY + LDA :REMAIN+1 + SBC :OLDRANGE+1 + BCC :SKIP + STA :REMAIN+1 + STY :REMAIN + INC :DIVRANGE +:SKIP DEX + BNE :DIVLP + LDA :DIVRANGE ; LO BYTE ONLY + CLC + ADC :NEWMIN + STA :NEWVAL + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :NEWVAL ; RETURN # IN A + STA RETURN + LDX #1 + STX RETLEN + RTS +:OLDRANGE DS 2 +:NEWRANGE DS 2 +:MULRANGE DS 2 +:DIVRANGE DS 2 +:VALRANGE DS 2 +:OLDVAL DS 2 +:NEWVAL DS 2 +:OLDMIN DS 2 +:NEWMIN DS 2 +:OLDMAX DS 2 +:NEWMAX DS 2 +:NUM1HI DS 2 +:REMAIN DS 2 diff --git a/disks/disk3_arrays/T.REQUIRED.HOOKS.MIN b/source/disk20_minidisk_A/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk3_arrays/T.REQUIRED.HOOKS.MIN rename to source/disk20_minidisk_A/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk4_math/T.REQUIRED.LIB.MIN b/source/disk20_minidisk_A/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk4_math/T.REQUIRED.LIB.MIN rename to source/disk20_minidisk_A/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk4_math/T.REQUIRED.LIB.MIN +++ b/source/disk20_minidisk_A/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk3_arrays/T.REQUIRED.MAC.MIN b/source/disk20_minidisk_A/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk3_arrays/T.REQUIRED.MAC.MIN rename to source/disk20_minidisk_A/T.REQUIRED.MAC.MIN diff --git a/disks/disk4_math/T.REQUIRED.VARS b/source/disk20_minidisk_A/T.REQUIRED.VARS similarity index 100% rename from disks/disk4_math/T.REQUIRED.VARS rename to source/disk20_minidisk_A/T.REQUIRED.VARS diff --git a/source/disk20_minidisk_A/T.SINPUT.SUB.MIN b/source/disk20_minidisk_A/T.SINPUT.SUB.MIN new file mode 100644 index 0000000..763ccb4 --- /dev/null +++ b/source/disk20_minidisk_A/T.SINPUT.SUB.MIN @@ -0,0 +1,27 @@ +SINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + LDX #$00 + JSR GETLN + STX :STRLEN ; STORE STR LENGTH + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :STRLEN ; LENGTH OF STRING + STA RETLEN,Y ; PUT LENGTH +:LOOP + LDA KEYBUFF,Y ; PUT STR INTO NEW LOC + STA RETURN,Y + INY + CPY :STRLEN ; IF Y < STR LENGTH + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:STRLEN DS 1 diff --git a/source/disk20_minidisk_A/T.STDIO.HOOKS b/source/disk20_minidisk_A/T.STDIO.HOOKS new file mode 100644 index 0000000..571056f --- /dev/null +++ b/source/disk20_minidisk_A/T.STDIO.HOOKS @@ -0,0 +1,53 @@ +* +*``````````````````````````````* +* STDIO.HOOKS.PUT * +*- -* +* HOOKS TO INPUT/OUTPUT * +* ROUTINES IN MONITOR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* OUTPUT HOOKS +* +COUT1 EQU $FDF0 ; FASTER SCREEN OUTPUT +COUT EQU $FDED ; MONITOR STD OUTPUT +HOME EQU $FC58 ; CLEAR SCREEN, HOME CURSOR +VTAB EQU $FC22 ; MONITOR CURSOR POS ROUTINE +CURSH EQU $24 ; HPOS OF COUT CURSOR +CURSV EQU $25 ; VPOS OF COUT CURSOR +WNDLEFT EQU $20 ; SCROLL WINDOW LEFT +WNDWIDTH EQU $21 ; SCROLL WINDOW WIDTH +WNDTOP EQU $22 ; SCROLL WINDOW TOP +WNDBOT EQU $23 ; SCROLL WINDOW BOTTOM +TEXTP1 EQU $0400 ; START OF TEXT PAGE 1 +TEXTP2 EQU $0800 ; START OF TEXT PAGE 2 +PAGE1 EQU $C054 ; SOFT SWITCH USE PAGE 1 +PAGE2 EQU $C055 ; SOFT SWITCH USE PAGE 2 +S80COL EQU $C01F ; READ ONLY; CHECK IF 80C +KEYBUFF EQU $0200 ; KEYBUFFER START +GSTROBE EQU $C040 ; GAME CONNECTOR STROBE +TXTSET EQU $C051 ; TEXT ON SOFT SWITCH +SETWND EQU $FB4B ; SET NORMAL WINDOW MODE +CURADV EQU $FBF4 ; ADVANCE CURSOR RIGHT +CURBS EQU $FC10 ; CURSOR LEFT +CURUP EQU $FC1A ; CURSOR UP +CR EQU $FC62 ; CARRIAGE RETURN TO SCREEN +LF EQU $FC66 ; LINE FEED ONLY TO SCREEN +CLEOL EQU $FC9C ; CLEAR TEXT TO END OF LINE +* +* INPUT HOOKS +* +KYBD EQU $C000 ; LDA SINGLE KEYPRESS +STROBE EQU $C010 ; CLEAR KYBD BUFFER +GETLN EQU $FD6F ; MONITOR GET LINE OF KB INPUT +GETKEY EQU $FD0C ; MONITOR GET SINGLE KEY INPUT +OPAPP EQU $C061 +CLAPP EQU $C062 +* +* PADDLE HOOKS +* +PREAD EQU $FB1E ; READ STATE OF PADDLE +PB0 EQU $C061 ; PADDLE BUTTON 0 +PB1 EQU $C062 +PB2 EQU $C063 +PB3 EQU $C060 +* diff --git a/source/disk20_minidisk_A/T.STDIO.MAC b/source/disk20_minidisk_A/T.STDIO.MAC new file mode 100644 index 0000000..16a8d9d --- /dev/null +++ b/source/disk20_minidisk_A/T.STDIO.MAC @@ -0,0 +1,461 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STDIO.MAC * +* * +* AUTHOR: NATHAN RIGGS * +* CONTACT: NATHAN.RIGGS@ * +* OUTLOOK.COM * +* * +* VERSION: 0.2.0 * +* DATE: 12-DEC-2018 * +* ASSEMBLER: MERLIN 8 PRO * +* LICENSE: APACHE 2.0 * +* OS: DOS 3.3 * +* * +*------------------------------* +* * +* THIS IS A MACRO LIBRARY FOR * +* STDIO.LIB. * +* * +*------------------------------* +* * +* LIST OF MACROS * +* * +* PRN : FLEXIBLE PRINT * +* PCR : PRINT CARRIAGE RET * +* INP : SPECIAL INPUT * +* GKEY : GET SINGLE KEY * +* SCPOS : SET CURS POS AT X,Y * +* SETCX : SET CURSOR X * +* SETCY : SET CURSOR Y * +* CURF : CURSOR FORWARD * +* CURB : CURSOR BACKWARD * +* CURU : CURSOR UP * +* CURD : CURSOR DOWN * +* RCPOS : READ CURSOR POSITION * +* PDL : READ PADDLE STATE * +* PBX : READ PDL BTN X * +* TVLIN : TEXT VERTICAL LINE * +* THLIN : TEXT HORIZ LINE * +* TFILL : TEXT FILL AREA * +* TPUT : TEXT CHAR PLOT AT XY * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +* +*``````````````````````````````* +* PRN :: PRINT (NO ) * +*- -* +* EITHER PRINTS A STRING OF * +* TEXT PROVIDED, OR PRINTS THE * +* DATA FOUND AT THE SPECIFIED * +* MEMORY LOCATION. * +*- -* +* PARAMETERS * +* * +* IF FIRST LETTER OF VAR1 IS * +* A QUOTATION MARK, THEN PASS * +* CONTROL TO XPRINT. * +* * +* IF FIRST LETTER OF VAR1 IS * +* A DOLLAR SIGN, THEN IT IS A * +* MEMORY LOCATION, SO PASS TO * +* DPRINT. * +*- -* +* SAMPLE USAGE: * +* * +* PRN "HELLO!" * +* PRN $300 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +PRN MAC + IF ",]1 ; --- IF PARAM=STRING + JSR XPRINT ; SPECIAL PRINT + ASC ]1 ; PUT STRING HERE + HEX 00 ; STRING TERMINATE + ELSE ; ELSE, PARAM IS + ; MEMORY LOCATION + LDA #>]1 ; PUSH HIGH BYTE + PHA ; TO STACK + LDA #<]1 ; PUSH LOW BYTE + PHA + JSR DPRINT + FIN + <<< +* +*``````````````````````````````* +* PCR : PRINT CARRAIGE RETURN * +* * +* SIMPLY SENDS A CR AND LINE * +* FEED TO COUT (OR THE * +* EQUIVALENT, ANYHOW). * +*- -* +* SAMPLE USAGE: PCR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +PCR MAC + LDA #$8D + JSR COUT1 + <<< +* +*``````````````````````````````* +* INP: INPUT MACRO * +* * +* INPUTS A STRING FROM KEYBRD * +* AND STORES IT IN [RETURN] * +*- -* +* SAMPLE USAGE: * +* * +* INP * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +INP MAC + JSR SINPUT + <<< +* +*``````````````````````````````* +* GKEY GETKEY * +* * +* WAITS FOR USER TO PRESS A * +* KEY, THEN STORES THAT IN .A * +*- -* +* SAMPLE USAGE: * +* * +* GKEY * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +GKEY MAC + JSR GETKEY + LDY #0 + STY STROBE + <<< +* +*``````````````````````````````* +* SCPOS : POSITION CURSOR X,Y * +*- -* +* SETS THE CURSOR POSITION. * +*- -* +* PARAMETERS * +* * +* ]1 = X POSITION * +* ]2 = Y POSITION * +*- -* +* SAMPLE USAGE: * +* * +* SCPOS #10;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +SCPOS MAC + LDX ]1 + LDY ]2 + STX CURSH + STY CURSV + JSR VTAB + <<< +* +*``````````````````````````````* +* SETCX : SET CURSOR HORIZ * +*- -* +* SETS THE HORIZONTAL POSITION * +* OF THE TEXT CURSOR. * +*- -* +* PARAMETERS * +* * +* ]1 = X POSITION * +*- -* +* SAMPLE USAGE: SETCX #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +SETCX MAC + LDX ]1 + STX CURSH + JSR VTAB + <<< +* +*``````````````````````````````* +* SETCY: POSITION CURSOR VERT * +*- -* +* SET CURSOR VERTICAL POSITION * +*- -* +* PARAMETERS * +* * +* ]1 = Y POSITION * +*- -* +* SAMPLE USAGE: SETCY #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +SETCY MAC + LDY ]1 + STY CURSV + JSR VTAB + <<< +* +*``````````````````````````````* +* CURF : TEXT CURSOR FORWRD * +*- -* +* MOVES THE CURSOR FORWARD BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = NUMBER TO MOVE FORWARD * +*- -* +* SAMPLE USAGE: CURF #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURF MAC + LDA ]1 + JSR CURSFOR + <<< +* +*``````````````````````````````* +* CURB :: TEXT CURSOR BACKWD * +*- -* +* MOVES THE CURSOR BACKWARD BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = AMOUNT TO MOVE BACKWARD * +*- -* +* SAMPLE USAGE: CURB #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURB MAC + LDA ]1 + JSR CURSBAK + <<< +* +*``````````````````````````````* +* CURU :: TEXT CURSOR UP * +*- -* +* MOVES THE CURSOR UP BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = AMOUNT TO MOVE UP * +*- -* +* SAMPLE USAGE: CURU #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURU MAC + LDA ]1 + JSR CURSUP + <<< +* +*``````````````````````````````* +* CURD :: TEXT CURSOR DOWN * +*- -* +* MOVES THE CURSOR DOWN BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = AMOUNT TO MOVE DOWN * +*- -* +* SAMPLE USAGE: CURD #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURD MAC + LDA ]1 + JSR CURSDN + <<< +* +*``````````````````````````````* +* RCPOS :: READ SCREEN AT XY * +*- -* +* READ THE CHARACTER AT POS * +* X,Y AND LOADS INTO ACCUM * +*- -* +* PARAMETERS * +* * +* ]1 = X POSITION * +* ]2 = Y POSITION * +*- -* +* SAMPLE USAGE: _RCXY #3;#9 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +RCPOS MAC + LDA ]1 ; ROW + LDY ]2 ; COLUMN + JSR $F847 ; GBASCALC ROUTINE + LDA ($26),Y ; LOW OF ADDR OF CHAR + <<< +* +*``````````````````````````````* +* PDL PADDLE / MOUSE INPUT * +*- -* +* SIMPLY READS STATE OF PADDLE * +* NUMBER [NUM] AND STORES IT * +* IN THE Y REGISTER. * +*- -* +* PARAMETERS * +* * +* ]1 = PADDLE NUMBER TO READ * +*- -* +* SAMPLE USAGE: PDL #0 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +PDL MAC ; GET PADDLE VALUE + LDX #]1 ; READ PADDLE # ]1 (USUALLY 0) + JSR PREAD ; PADDLE READING STORED IN Y + <<< +* +*``````````````````````````````* +* PBX :: PADDLE BUTTON X * +* * +* STORE 1 IN ACCUMULATOR IF * +* PADDLE BUTTON X IS PRESSED, * +* OTHERWISE STORE 0 IN ACCUM. * +*- -* +* PARAMETERS * +* * +* ]1 = PADDLE BUTTON TO READ * +* * +* PB0: $C061 PB1: $C062 * +* PB2: $C063 PB4: $C060 * +*- -* +* SAMPLE USAGE: PBX $C061 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +PBX MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR GPBX + <<< +* +*``````````````````````````````* +* TVLIN :: TEXT VERTICAL LINE * +*- -* +* CREATES A VERTICAL LINE OF * +* TEXT AT THE CURRENT CURSOR * +* COLUMN CONSISTING OF THE * +* SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* ]1 = START OF VERTICAL LINE * +* ]2 = END OF VERTICAL LINE * +* ]3 = X POSITION OF LINE * +* ]4 = FILL CHARACTER * +*- -* +* SAMPLE USAGE: * +* * +* TVLIN #0;#10;#3;#$18 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TVLIN MAC + LDA ]1 ; Y START + PHA + LDA ]2 ; Y END + PHA + LDA ]3 ; X POSITION + PHA + LDA ]4 ; CHARACTER + PHA + JSR TVLINE + <<< +* +*``````````````````````````````* +* THLIN : TEXT HORIZONTAL LINE * +* * +* CREATES A HORIZONTAL LINE OF * +* TEXT FROM X1,Y TO X2,Y WITH * +* THE SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* ]1 = START OF HORIZONTL LINE * +* ]2 = END OF HORIZONTAL LINE * +* ]3 = Y POSITION OF LINE * +* ]4 = FILL CHARACTER * +*- -* +* SAMPLE USAGE: * +* * +* THLIN #0;#10;#12;#$18 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +THLIN MAC + LDA ]1 ; X START + PHA + LDA ]2 ; X END + PHA + LDA ]3 ; Y POS + PHA + LDA ]4 ; FILL CHAR + PHA + JSR THLINE + <<< +* +*``````````````````````````````* +* TFILL :: TEXT FILL * +*- -* +* FILL X1,Y1 TO X2,Y2 WITH * +* SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* PARAM1 = X1 * +* PARAM2 = Y1 * +* PARAM3 = X2 * +* PARAM4 = Y2 * +*- -* +* SAMPLE USAGE: * +* * +* TFILL #0;#10;#0;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TFILL MAC + LDA ]1 ; LEFT BOUNDARY + PHA + LDA ]2 ; TOP BOUNDARY + PHA + LDA ]3 ; RIGHT BOUNDARY + PHA + LDA ]4 ; BOTTOM BOUNDARY + PHA + LDA ]5 ; FILL CHAR + PHA + JSR TFILLA + <<< +* +*``````````````````````````````* +* TPUT :: TEXT CHARACTER PLOT * +*- -* +* PLOT A TEXT CHARACTER AT X,Y * +* DIRECTLY TO MEMORY. * +*- -* +* PARAMETERS * +* * +* PARAM1 = X * +* PARAM2 = Y * +* PARAM3 = CHARACTER * +*- -* +* SAMPLE USAGE: * +* * +* TPUT #$AA;#10;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TPUT MAC + LDA ]1 + PHA + LDA ]2 + PHA + LDA ]3 + PHA + JSR TXTPUT + <<< diff --git a/source/disk20_minidisk_A/T.STDIO.MAC.MIN b/source/disk20_minidisk_A/T.STDIO.MAC.MIN new file mode 100644 index 0000000..4d8e026 --- /dev/null +++ b/source/disk20_minidisk_A/T.STDIO.MAC.MIN @@ -0,0 +1,120 @@ +PRN MAC + IF ",]1 ; --- IF PARAM=STRING + JSR XPRINT ; SPECIAL PRINT + ASC ]1 ; PUT STRING HERE + HEX 00 ; STRING TERMINATE + ELSE ; ELSE, PARAM IS + ; MEMORY LOCATION + LDA #>]1 ; PUSH HIGH BYTE + PHA ; TO STACK + LDA #<]1 ; PUSH LOW BYTE + PHA + JSR DPRINT + FIN + <<< +PCR MAC + LDA #$8D + JSR COUT1 + <<< +INP MAC + JSR SINPUT + <<< +GKEY MAC + JSR GETKEY + LDY #0 + STY STROBE + <<< +SCPOS MAC + LDX ]1 + LDY ]2 + STX CURSH + STY CURSV + JSR VTAB + <<< +SETCX MAC + LDX ]1 + STX CURSH + JSR VTAB + <<< +SETCY MAC + LDY ]1 + STY CURSV + JSR VTAB + <<< +CURF MAC + LDA ]1 + JSR CURSFOR + <<< +CURB MAC + LDA ]1 + JSR CURSBAK + <<< +CURU MAC + LDA ]1 + JSR CURSUP + <<< +CURD MAC + LDA ]1 + JSR CURSDN + <<< +RCPOS MAC + LDA ]1 ; ROW + LDY ]2 ; COLUMN + JSR $F847 ; GBASCALC ROUTINE + LDA ($26),Y ; LOW OF ADDR OF CHAR + <<< +PDL MAC ; GET PADDLE VALUE + LDX #]1 ; READ PADDLE # ]1 (USUALLY 0) + JSR PREAD ; PADDLE READING STORED IN Y + <<< +PBX MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR GPBX + <<< +TVLIN MAC + LDA ]1 ; Y START + PHA + LDA ]2 ; Y END + PHA + LDA ]3 ; X POSITION + PHA + LDA ]4 ; CHARACTER + PHA + JSR TVLINE + <<< +THLIN MAC + LDA ]1 ; X START + PHA + LDA ]2 ; X END + PHA + LDA ]3 ; Y POS + PHA + LDA ]4 ; FILL CHAR + PHA + JSR THLINE + <<< +TFILL MAC + LDA ]1 ; LEFT BOUNDARY + PHA + LDA ]2 ; TOP BOUNDARY + PHA + LDA ]3 ; RIGHT BOUNDARY + PHA + LDA ]4 ; BOTTOM BOUNDARY + PHA + LDA ]5 ; FILL CHAR + PHA + JSR TFILLA + <<< +TPUT MAC + LDA ]1 + PHA + LDA ]2 + PHA + LDA ]3 + PHA + JSR TXTPUT + <<< diff --git a/source/disk20_minidisk_A/T.STR2NUM.SUB.MIN b/source/disk20_minidisk_A/T.STR2NUM.SUB.MIN new file mode 100644 index 0000000..04c0912 --- /dev/null +++ b/source/disk20_minidisk_A/T.STR2NUM.SUB.MIN @@ -0,0 +1,118 @@ +STR2NUM + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADRESS OF STRING + PLA ; TO CNVERT + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + TAX ; GET LENGITH; TO REGX + LDA #1 + STA :NINDEX ; INDEX = 1 + LDA #0 + STA :NACCUM ; ACCUM = 0 + STA :NACCUM+1 + STA :SNGFLAG ; SIGN IS POSITIVE + TXA + BNE :INIT1 ; EXIT WITH ACCUM = 0 + ; IF BUFFER IS EMPTY + JMP :EREXIT ; ERROR EXIT IF NOTHING + ; IN BUFFER +:INIT1 + LDY :NINDEX + LDA (ADDR1),Y + CMP #173 + BNE :PLUS ; BR IF NOT - + LDA #$0FF + STA :SNGFLAG ; ELSE SIGN IS NEGATIVE + INC :NINDEX + DEX ; DECREMENT COUNT + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; - IN BUFFER + JMP :CNVERT +:PLUS + CMP #'+' + BNE :CHKDIG ; START CONVERSION IF 1ST + INC :NINDEX + DEX ; DEC COUNT; IGNORE + SIGN + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; + IN THE BUFFER +:CNVERT + LDY :NINDEX + LDA (ADDR1),Y + ; GET NEXT CHAR +:CHKDIG + CMP #$B0 ; "0" + BMI :EREXIT ; ERROR IF NOT A NUMERAL + CMP #$BA ; '9'+1; TECHNICALLY : + BPL :EREXIT ; ERR IF > 9 (NOT NUMERAL) + PHA ; PUSH DIGIT TO STACK + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 2 + LDA :NACCUM + LDY :NACCUM+1 ; SAVE ACCUM * 2 + ASL :NACCUM + ROL :NACCUM+1 + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 8 + CLC + ADC :NACCUM ; SUM WITH * 2 + STA :NACCUM + TYA + ADC :NACCUM+1 + STA :NACCUM+1 ; ACCUM=ACCUM * 10 + PLA ; GET THE DIGIT NACK + SEC + SBC #$B0 + CLC ; CONVERT STR TO BIN + ADC :NACCUM + STA :NACCUM + BCC :D2B1 ; BRANCH IF NO CARRY TO HBYTE + INC :NACCUM+1 ; ELSE INC HIGH BYTE +:D2B1 + INC :NINDEX ;INC TO NEXT CHARACTER + DEX + BNE :CNVERT ; CONTINUE CONVERSION + LDA :SNGFLAG + BPL :OKEXIT ; BR IF VAL IS POSITIVE + LDA #0 ; ELSE REPLACE WITH -RESULT + SEC + SBC :NACCUM + STA :NACCUM + LDA #0 + SBC :NACCUM+1 + STA :NACCUM+1 +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + _ERR :E_SID;:E_MSG;:E_DUMP;:NACCUM;#4 +:ERREND +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX :NACCUM+1 + LDY :NACCUM + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + LDA :NINDEX + RTS +:NACCUM DS 2 +:SNGFLAG DS 1 +:NINDEX DS 1 +:E_SID ASC "STR2NUM (S2N MACRO)",00 +:E_MSG ASC "ERR! NO DATA, OR NOT A NUMERAL VALUE",00 +:E_DUMP ASC "DUMPING :NACCUM(2) :SNGFLAG(1) :NINDEX(1)",00 diff --git a/source/disk20_minidisk_A/T.STRCAT.SUB.MIN b/source/disk20_minidisk_A/T.STRCAT.SUB.MIN new file mode 100644 index 0000000..c3dc7d4 --- /dev/null +++ b/source/disk20_minidisk_A/T.STRCAT.SUB.MIN @@ -0,0 +1,94 @@ +STRCAT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN ; MAXIMUM CONCAT LENGTH + PLA + STA ADDR2 ; STRING 1 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR2+1 + PLA + STA ADDR1 ; STRING 2 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET CUR LGTH OF S1, STORE + STA :S1LEN + STA :S1IND + INC :S1IND ; START CONCAT AT END OF S1 + LDA (ADDR2),Y ; GET LENGTH OF S2, STORE + STA :S2LEN + LDA #1 + STA :S2IND ; START CONCAT AT BEGIN OF S2 + LDA :S2LEN ; GET S2 LENGTH + CLC + ADC :S1LEN ; ADD TO LENGTH OF S1 + STA :S3LEN ; STORE CONCAT LENGTH + BCS :TOOLONG ; BR IF LENGTH > 255 + CMP :MLEN ; CHECK AGAINST MAX LENGTH + BEQ :LENOK ; BR IF LENGTH < MAX + BCC :LENOK +:TOOLONG + LDA #$0FF + STA :SOVF ; INDICATE OVERFLOW + LDA :MLEN + SEC + SBC :S1LEN + BCC :EXIT + STA :SCNT ; ORIG STR WAS TOO LONG + LDA :MLEN + STA :S1LEN ; SET STR1 LENGTH TO MAX + JMP :DOCAT +:LENOK + STA :S1LEN + LDA #0 ; SAVE SUM OF 2 LENGTHS + STA :SOVF ; INDICATE NO OVERFLOW + LDA :S2LEN + STA :SCNT ; COUNT = LENGTH OF STRING 2 +:DOCAT + LDA :SCNT + BEQ :EXIT ; EXIT IF NO BYTES LEFT +:CATLP + LDY :S2IND + LDA (ADDR2),Y ; GET NEXT BYTE FROM S2 + LDY :S1IND + STA (ADDR1),Y ; MOVE IT TO END OF STR 1 + INC :S1IND ;INC STRING 1 INDEX + INC :S2IND ; INC STRING 2 INDEX + DEC :SCNT ; DECREMENT COUNTER + BNE :CATLP ; CONT UNTIL __SCNT = 0 +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + LDA :SOVF + ROR A + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; LENGTH OF STRING + STA RETLEN + LDA #1 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + CPY RETLEN + INY + BNE :RLP + LDA RETLEN + LDY #0 + STA (ADDR1),Y + LDX :S3LEN ; RETURN FINAL LENGTH + RTS +:S3LEN DS 1 +:S1LEN DS 1 +:S1IND DS 1 +:S2LEN DS 1 +:S2IND DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SOVF DS 1 diff --git a/source/disk20_minidisk_A/T.STRCOMP.SUB.MIN b/source/disk20_minidisk_A/T.STRCOMP.SUB.MIN new file mode 100644 index 0000000..48bb0ae --- /dev/null +++ b/source/disk20_minidisk_A/T.STRCOMP.SUB.MIN @@ -0,0 +1,47 @@ +STRCMP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING 1 + CMP (ADDR2),Y + BCC :BEGCMP ; IF STRING 2 IS SHORTER THEN + LDA (ADDR2),Y ; USE ITS LENGTH INSTEAD +:BEGCMP + TAX ; X IS LENGTH OF SHORTER STRING + BEQ :TSTLEN ; BR IF LENGTH IS 0 + LDY #1 ; POINT AT FIRST CHAR OF STRINGS +:CMPLP + LDA (ADDR1),Y + CMP (ADDR2),Y + BNE :EXIT ; BR IF CHARS NOT EQUAL + ; Z,C WILL BE PROPERLY SET + ; OR CLEARED + ; ELSE + INY ; NEXT CHAR + DEX ; DECREMENT COUNTER + BNE :CMPLP ; CONTINUE UNTIL ALL BYTES PAIRED +:TSTLEN + LDY #0 ; COMPARE LENGTHS + LDA (ADDR1),Y + CMP (ADDR2),Y ; SET OR CLEAR THE FLAGS +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; GET STR1 LENGTH + TAX ; RETURN IN X + LDA (ADDR2),Y ; STR2 LENGTH + TAY ; RETURN IN Y + RTS diff --git a/source/disk20_minidisk_A/T.STRINGS.HOOKS b/source/disk20_minidisk_A/T.STRINGS.HOOKS new file mode 100644 index 0000000..21ac4d5 --- /dev/null +++ b/source/disk20_minidisk_A/T.STRINGS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STRINGS.HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +SCOUT1 EQU $FDF0 +* diff --git a/source/disk20_minidisk_A/T.STRINGS.MAC.MIN b/source/disk20_minidisk_A/T.STRINGS.MAC.MIN new file mode 100644 index 0000000..f910b05 --- /dev/null +++ b/source/disk20_minidisk_A/T.STRINGS.MAC.MIN @@ -0,0 +1,65 @@ +SCMP MAC + _ISSTR ]1 + _ISSTR ]2 + JSR STRCMP + <<< +SCAT MAC + _ISSTR ]1 + _ISSTR ]2 + LDA ]3 ; MAX SIZE; BYTE + PHA + JSR STRCAT + <<< +SPRN MAC + LDA #>]1 ; ADDRESS OF STRING + PHA + LDA #<]1 + PHA + JSR PRNSTR + <<< +TOSTR MAC + _ISLIT ]1 + JSR NUM2STR + <<< +TONUM MAC + _ISSTR ]1 + JSR STR2NUM + <<< +SPOS MAC + _ISSTR ]1 + _ISSTR ]2 + JSR SUBPOS + <<< +SCPY MAC + _ISSTR ]1 + LDA ]2 ; STARTING INDEX + PHA + LDA ]3 ; SUBSTRING LENGTH + PHA + LDA ]4 ; MAX LENGTH OF SUBSTR + PHA + JSR SUBCOPY + <<< +SDEL MAC + LDA #>]1 ; STRING ADDRESS + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX BYTE + PHA + LDA ]3 ; LENGTH + PHA + JSR SUBDEL + <<< +SINS MAC + LDA #>]1 ; PARENT STRING + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX + PHA + LDA ]3 ; MAXIMUM LENGTH + PHA + _ISSTR ]4 + JSR SUBINS + <<< diff --git a/source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN b/source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN new file mode 100644 index 0000000..8afe83d --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN @@ -0,0 +1,99 @@ +SUBCOPY + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN + PLA + STA :SCNT + STA RETLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #RETURN + STA ADDR2+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA #0 + STA :S2LEN ; DESTINATION LENGTH = 0 + STA :SCERR ; ASSUME NO ERRORS + LDA :SCNT + BEQ :OKEXIT ; BR IF 0 BYTES TO COPY, + LDA :MLEN + BEQ :EREXIT ; ERROR EXIT IF SUBSTR HAS + LDA :SINDEX + BEQ :EREXIT ; ERROR EXIT IF START IDX = 0 + LDY #0 + LDA (ADDR1),Y ; + STA :S1LEN ; GET LENGTH OF SOURCE STRING + CMP :SINDEX ; COMPARE TO STARTING INDEX + BCC :EREXIT ; ERROR EXIT IF INDEX TOO BIG + LDA :SINDEX + CLC + ADC :SCNT + BCS :RECALC + TAX ; BR IF INDEX + COUNT > 255 + DEX + CPX :S1LEN + BCC :CNT10K ; BR IF IND + CNT - 1 < S1LEN + BEQ :CNT10K ; OR EQUAL +:RECALC + LDA :S1LEN ; RECALCULATE COUNT + SEC + SBC :SINDEX + STA :SCNT + INC :SCNT ; CNT = S1LEN - IND + 1 + LDA #$0FF + STA :SCERR ; INDICATE TRUNCATION +:CNT10K + LDA :SCNT + CMP :MLEN ; IF CNT > M SUBSTR LEN ? + BCC :CNT20K ; BR IF CNT < MAXLEN + BEQ :CNT20K ; BR IF CNT = MAXLEN + LDA :MLEN + STA :SCNT ; ELSE CNT = MAXLEN + LDA #$0FF + STA :SCERR ; INDICATE DEST STR OVERFLOW +:CNT20K + LDX :SCNT ; REG X WILL BE COUNTER + BEQ :EREXIT ; ERR IF 0 + LDA #1 ; START WITH 1ST CHAR IN DEST + STA :S2LEN ; RUNNING DEST INDEX + ; __SINDEX IS SRC INDEX +:MVLP + LDY :SINDEX + LDA (ADDR1),Y ; GET NEXT SRC CHAR + LDY :S2LEN + STA (ADDR2),Y ; MOVE NEXT CHAR TO DEST + INC :SINDEX ; INC SRC INDEX + INC :S2LEN ; INC DEST INDEX + DEX ; DECREMENT COUNTER + BNE :MVLP ; CONT UNTIL CNT = 0 + DEC :S2LEN ; SUBSTR LEN=FINAL DEST IND-1 + LDA :SCERR ; CHECK FOR ANY ERRORS + BNE :EREXIT ; BR IF STR TRUNCATED OR OVERFLOW +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC +:EXIT + LDA :S2LEN + LDY #0 + STA (ADDR2),Y + STA RETLEN + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SCERR DS 1 diff --git a/source/disk20_minidisk_A/T.SUBDEL.SUB.MIN b/source/disk20_minidisk_A/T.SUBDEL.SUB.MIN new file mode 100644 index 0000000..977f395 --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBDEL.SUB.MIN @@ -0,0 +1,81 @@ +SUBDEL + PLA + TAY + PLA + TAX + PLA + STA :SCNT + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDY #0 + STY :SCERR + LDA (ADDR1),Y + STA :S1LEN ; GET STRING LENGTH + LDA :SCNT + BEQ :OKEXIT + LDA :SINDEX + BEQ :ERREXIT ; ERR EXIT IF START = 0 + LDA :S1LEN + CMP :SINDEX + BCC :ERREXIT + LDA :SINDEX + CLC + ADC :SCNT + BCS :TRUNC ;TRUNCATE IF INDEX + STA :SIDX ; SAVE INDEX + COUNT AS + TAX ; X = INDEX + COUNT + DEX + CPX :S1LEN + BCC :CNTOK ; BR IF IND + CNT - 1 + BEQ :TRUNC ; TRUNC BUT NO ERROR-- + LDA #$0FF + STA :SCERR ; INDICATE ERROR - NOT +:TRUNC + LDX :SINDEX ; STRING LENGTH = + DEX + STX :S1LEN + LDA :SCERR + BEQ :OKEXIT + BNE :ERREXIT +:CNTOK + LDA :S1LEN ; GET STR LENGTH + SEC + SBC :SIDX ; SUBTRACT START INDEX + TAX + INX + BEQ :OKEXIT ; ADD 1 TO INCLUDE LAST +:MVLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y ;MOVE IT DOWN + INC :SINDEX + INC :SIDX ; INC DEST, SRC INDEXES + DEX + BNE :MVLP ; CONT UNTIL CNT = 0 + LDX :SINDEX + DEX ; START LENGTH = FINAL + STX :S1LEN +:OKEXIT + CLC + BCC :EXIT +:ERREXIT + SEC +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y ; SET LENGTH OF STRING + RTS +:S1LEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SCERR DS 1 diff --git a/source/disk20_minidisk_A/T.SUBINS.SUB.MIN b/source/disk20_minidisk_A/T.SUBINS.SUB.MIN new file mode 100644 index 0000000..84b4dd2 --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBINS.SUB.MIN @@ -0,0 +1,120 @@ +SUBINS + PLA + TAY + PLA + TAX + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA :MLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDA #0 + STA :SCERR ; ASSUME NO ERR WILL BE FOUND + LDY #0 + LDA (ADDR1),Y + STA :S1LEN ; GET LENGTH OF STRING + LDA (ADDR2),Y + STA :S2LEN ; GET LENGTH OF SUB + BNE :IDX0 + JMP :OKEXIT ; EXIT OF NO INSERT/ERR +:IDX0 + LDA :SINDEX + BNE :CHKLEN ; BR OF INDEX NOT 0 + JMP :EREXIT ; ELSE ERROR EXIT +:CHKLEN + LDA :S2LEN ; GET SUBSTR LENGTH + CLC + ADC :S1LEN + BCS :TRUNC ;TRUN IF S1+S2 LENGTH > 255 + CMP :MLEN ; + BCC :IDXLEN ; BR IF S1+S2 LEN < MAX LENGTH + BEQ :IDXLEN ; BR IF EQUAL +:TRUNC + LDA :MLEN ; SUBSTR LEN = MLEN - STR LEN + SEC + SBC :S1LEN + BCC :EREXIT + BEQ :EREXIT ; ERR IF MLEN < STR LEN OR 0 + STA :S2LEN + LDA #$0FF + STA :SCERR ; INDICATE SUBSTR WAS TRUNCATED +:IDXLEN + LDA :S1LEN + CMP :SINDEX ; + BCS :LENOK ; BR IF INDEX WITHIN STR + LDX :S1LEN ; ELSE CONCAT SUB AT END OF STR + INX + STX :SINDEX ; START RIGHT AFTER END OF STR + LDA #$0FF + STA :SCERR ; INDICATE ERR IN INSERT + LDA :S1LEN + CLC + ADC :S2LEN + STA :S1LEN ; ADD LENGTHS TOGETHER + JMP :MVESUB ; PERFORM MOVE, NOTHING ELSE TODO +:LENOK + LDA :S1LEN + SEC + SBC :SINDEX + TAX + INX ; X= NUM OF CHARS TO MOV + LDA :S1LEN + STA :SIDX ; SRC ENDS AT ORIG STR END + CLC + ADC :S2LEN + STA :SBIDX ; DEST ENDS FURTHER BY SUB LEN + STA :S1LEN ; SET NEW LENGTH TO THIS ALSO +:OPNLP + LDY :SIDX + LDA (ADDR1),Y + LDY :SBIDX + STA (ADDR1),Y ; MOVE IT UP IN MEM + DEC :SIDX + DEC :SBIDX ; DE DEST IDX, COUNTER + DEX + BNE :OPNLP ; CONT UNTIL COUNTER = 0 +:MVESUB + LDA #1 + STA :SIDX + ; START AT INDEX IN THE STRING + LDX :S2LEN ; X = NUM OF CHARS TO MOVE +:MVELP + LDY :SIDX + LDA (ADDR2),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y + INC :SIDX ; INC SUBSTR INDEX + INC :SINDEX ; INC STR INDEX + DEX ; DEC COUNTER + BNE :MVELP ; CONT UNTIL COUNTER = 0 + LDA :SCERR ; GET ERROR FLAG + BNE :EREXIT ; BR IF SUBSTR WAS TRUNCED +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC ; ERROR EXIT +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:SUBLEN DS 1 +:MLEN DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SBIDX DS 1 +:SCERR DS 1 diff --git a/source/disk20_minidisk_A/T.SUBPOS.SUB.MIN b/source/disk20_minidisk_A/T.SUBPOS.SUB.MIN new file mode 100644 index 0000000..4e15875 --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBPOS.SUB.MIN @@ -0,0 +1,78 @@ +SUBPOS + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA +:POS + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING + BEQ :NOTFND ; EXIT IF LENGTH = 0 + STA :SLEN + LDA (ADDR2),Y ; GET SUBSTR LENGTH + BEQ :NOTFND ; EXIT IF SUB LENGTH = 0 + STA :SUBLEN + LDA :SUBLEN + CMP :SLEN + BEQ :LENOK + BCS :NOTFND ; CANNOT FIND SUBSTR IF +:LENOK + LDA #1 + STA :SINDEX ; START LOOKING AT FIRST + ; CHARACTER OF STRING + LDA :SLEN ; CONT UNTIL REMAINING STR + ; TOO SHORT + SEC ; COUNT=STR LEN - SUB LEN+1 + SBC :SUBLEN + STA :SCOUNT + INC :SCOUNT +:SLP1 + LDA :SINDEX + STA :SIDX ; START STR AT INDEX + LDA #1 + STA :SUBIDX ; START SUB IND AT 1 +:CMPLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR FROM STR + LDY :SUBIDX + CMP (ADDR2),Y ; COMPARE TO NEXT SUB CHAR + BNE :SLP2 ; BR IF SUB NOT HERE + LDY :SUBIDX + CPY :SUBLEN ; TEST IF WE ARE DONE + BEQ :FOUND ; BR IF ALL CHARS WERE EQUAL + INY ; ELSE INC TO NEXT CHAR + STY :SUBIDX + INC :SIDX + JMP :CMPLP ; CONTINUE +:SLP2 + INC :SINDEX ; INCREMENT INDEX + DEC :SCOUNT ; DEC COUNT + BNE :SLP1 ; BR IF NOT DONE + BEQ :NOTFND ; ELSE EXIT TO NOT FOUND +:FOUND + LDA :SINDEX ; FOUND, A = STARTING IDX + JMP :EXIT +:NOTFND + LDA #0 ; SUB NOT FOUND, A=0 +:EXIT + STA RETURN + LDY #1 + STY RETLEN + RTS +:SLEN DS 1 +:SUBLEN DS 1 +:SINDEX DS 1 +:SUBIDX DS 1 +:SCOUNT DS 1 +:SIDX DS 1 diff --git a/source/disk20_minidisk_A/T.SUBT16.SUB.MIN b/source/disk20_minidisk_A/T.SUBT16.SUB.MIN new file mode 100644 index 0000000..abd342c --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBT16.SUB.MIN @@ -0,0 +1,31 @@ +SUBT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT + PLA + STA :SUBT+1 ; SUBTRAHEND + PLA + STA :MINU + PLA + STA :MINU+1 ; MINUEND + LDA :MINU + SEC + SBC :SUBT + TAY ; LOW BYTE + STY RETURN + LDA :MINU+1 + SBC :SUBT+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/source/disk20_minidisk_A/T.TFILLA.SUB.MIN b/source/disk20_minidisk_A/T.TFILLA.SUB.MIN new file mode 100644 index 0000000..321da46 --- /dev/null +++ b/source/disk20_minidisk_A/T.TFILLA.SUB.MIN @@ -0,0 +1,90 @@ +TFILLA + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y2 + PLA + STA :X2 + PLA + STA :YC + STA :Y1 + PLA + STA :XC + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 ; X1 => X2? + BCS :X1HI + LDA :Y1 + CMP :Y2 + BCS :Y1HI ; Y1 => Y2? + LDA :X1 + CMP #40 + BCS :XOVF + LDA :X2 + CMP #40 + BCS :XOVF + LDA :Y1 + CMP #24 + BCS :YOVF + LDA :Y2 + CMP #24 + BCS :YOVF + JMP :ERREND +:X1HI + _ERR :E_SID;:E_X1H;:E_DMP1;:X1;#7 + JMP :ERREND +:Y1HI + _ERR :E_SID;:E_Y1H;:E_DMP1;:X1;#7 + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#7 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#7 +:ERREND +:LP1 + LDA :YC + LDY :XC + JSR $F847 ; GBASCALC + LDA :F + STA ($26),Y + LDA :YC + INY + STY :XC + CPY :X2 + BNE :LP1 + LDA :X1 + STA :XC + INC :YC + LDA :YC + CMP :Y2 + BNE :LP1 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y1 DS 1 +:Y2 DS 1 +:XC DS 1 +:YC DS 1 +:F DS 1 +:E_SID ASC "TFILLA (TFILL MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X2(1) Y1(1) Y2(1)" + ASC "XC(1) YC(1) F(1)",00 +:E_X1H ASC "X1 MUST BE LOWER THAN X2.",00 +:E_Y1H ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X <> MIN/MAX COLUMNS.",00 +:E_YOF ASC "Y <> MIN/MAX ROWS",00 diff --git a/source/disk20_minidisk_A/T.THLINE.SUB.MIN b/source/disk20_minidisk_A/T.THLINE.SUB.MIN new file mode 100644 index 0000000..196d76b --- /dev/null +++ b/source/disk20_minidisk_A/T.THLINE.SUB.MIN @@ -0,0 +1,66 @@ +THLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y + PLA + STA :X2 + PLA + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 + BCS :ERRTOOHI ; X1 => X2 + LDA :X1 + CMP #39 + BCS :ERRXOVF ; X VALUE OVERFLOW + LDA :X2 + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_XHI;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERREND + LDA :Y ; LOAD ROW + LDY :X1 ; LOAD X START POS +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PUSH TO SCREEN MEMORY + LDA :Y + INY ; INCREASE X POS + CPY :X2 ; IF LESS THAN X END POS + BNE :LOOP ; REPEAT UNTIL DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y DS 1 +:F DS 1 ; FILL CHAR +:E_SID ASC "THLINE (THLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X1(1) Y(1) F(1)",00 +:E_XHI ASC "X1 MUST BE LOWER THAN X2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/source/disk20_minidisk_A/T.TVLINE.SUB.MIN b/source/disk20_minidisk_A/T.TVLINE.SUB.MIN new file mode 100644 index 0000000..89613b0 --- /dev/null +++ b/source/disk20_minidisk_A/T.TVLINE.SUB.MIN @@ -0,0 +1,66 @@ +TVLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL CHAR + PLA + STA :X ; X POS + PLA + STA :Y2 ; END + PLA + STA :Y1 ; START + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :Y1 + CMP :Y2 + BCS :ERRTOOHI ; Y1 => Y2 + LDA :Y2 + CMP #24 + BCS :ERRYOVF ; Y VALUE OVERFLOW + LDA :X + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y1 + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_YHI;:E_DMP1;:X;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERREND + LDA :Y1 + LDY :X +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PLOT TO SCREEN MEMORY + INC :Y1 + LDA :Y1 + CMP :Y2 ; IF Y1 < Y2 + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X DS 1 +:Y1 DS 1 +:Y2 DS 1 +:F DS 1 +:E_SID ASC "TVLINE (TVLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X(1) Y1(1) Y2(1) F(1)",00 +:E_YHI ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/source/disk20_minidisk_A/T.TXTPUT.SUB.MIN b/source/disk20_minidisk_A/T.TXTPUT.SUB.MIN new file mode 100644 index 0000000..828c8a6 --- /dev/null +++ b/source/disk20_minidisk_A/T.TXTPUT.SUB.MIN @@ -0,0 +1,46 @@ +TXTPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL + PLA + STA :Y + PLA + STA :X + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X + CMP #40 ; MAX COL + 1 + BCS :XOVF + LDA :Y + CMP #24 + BCS :YOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:F;#3 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:F;#3 +:ERREND + LDA :Y + LDY :X + JSR $F847 + LDA :F + STA ($26),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:F DS 1 +:Y DS 1 +:X DS 1 +:E_SID ASC "TXTPUT (TPUT MACRO)",00 +:E_DMP1 ASC "DUMPING F(1) Y(1) X(1):",00 +:E_XOF ASC "X OVERFLOW. X <> MIN/MAX",00 +:E_YOF ASC "Y OVERFLOW. Y <> MIN/MAX",00 diff --git a/source/disk20_minidisk_A/T.XPRINT.SUB.MIN b/source/disk20_minidisk_A/T.XPRINT.SUB.MIN new file mode 100644 index 0000000..da82aee --- /dev/null +++ b/source/disk20_minidisk_A/T.XPRINT.SUB.MIN @@ -0,0 +1,25 @@ +XPRINT + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #$01 ; POINT TO NEXT + ; INSTRUCTION +:LOOP + LDA (ADDR1),Y + BEQ :DONE + JSR COUT1 + INY + BNE :LOOP +:DONE ; RESTORE STACK + CLC ; EXEC POINTER + TYA ; TO RESUME + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #$00 + PHA + LDA ADDR1 + PHA + RTS +:EXIT diff --git a/source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN b/source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN new file mode 100644 index 0000000..d93ee7a --- /dev/null +++ b/source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN @@ -0,0 +1,70 @@ +ZMLOAD + PLA + STA :RETADR + PLA + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #2 ; START 2 AHEAD + LDA (ADDR1),Y ; AND PUT ADDR1 + STA $08 ; AREA LAST + INY + LDA (ADDR1),Y + STA $09 + INY + LDA (ADDR1),Y + STA $19 + INY + LDA (ADDR1),Y + STA $1E + INY + LDA (ADDR1),Y + STA $E3 + INY + LDA (ADDR1),Y + STA $EB + INY + LDA (ADDR1),Y + STA $EC + INY + LDA (ADDR1),Y + STA $ED + INY + LDA (ADDR1),Y + STA $EE + INY + LDA (ADDR1),Y + STA $EF + INY + LDA (ADDR1),Y + STA $FA + INY + LDA (ADDR1),Y + STA $FB + INY + LDA (ADDR1),Y + STA $FC + INY + LDA (ADDR1),Y + STA $FD + INY + LDA (ADDR1),Y + STA $FE + INY + LDA (ADDR1),Y + STA $FF + LDY #0 + LDA (ADDR1),Y + TAX + LDA (ADDR1+1),Y + TAY + STX ADDR1 + STY ADDR1+1 + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN b/source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN new file mode 100644 index 0000000..cd3cc27 --- /dev/null +++ b/source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN @@ -0,0 +1,71 @@ +ZMSAVE + LDX ADDR1 + LDY ADDR1+1 + PLA + STA :RETADR ; LOCAL BECAUSE RETADDR + PLA ; IS STORED ON ZERO PAGE + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TYA ; STORE ADDR1 VALS + LDY #1 ; FIRST + STA (ADDR1),Y + LDY #0 + TXA + STA (ADDR1),Y + LDY #2 + LDA $08 + STA (ADDR1),Y + INY + LDA $09 + STA (ADDR1),Y + INY + LDA $19 + STA (ADDR1),Y + INY + LDA $1E + STA (ADDR1),Y + INY + LDA $E3 + STA (ADDR1),Y + INY + LDA $EB + STA (ADDR1),Y + INY + LDA $EC + STA (ADDR1),Y + INY + LDA $ED + STA (ADDR1),Y + INY + LDA $EE + STA (ADDR1),Y + INY + LDA $EF + STA (ADDR1),Y + INY + LDA $FA + STA (ADDR1),Y + INY + LDA $FB + STA (ADDR1),Y + INY + LDA $FC + STA (ADDR1),Y + INY + LDA $FD + STA (ADDR1),Y + INY + LDA $FE + STA (ADDR1),Y + INY + LDA $FF + STA (ADDR1),Y + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/disks/disk2_common/COMMON.DEMO b/source/disk2_common/COMMON.DEMO similarity index 100% rename from disks/disk2_common/COMMON.DEMO rename to source/disk2_common/COMMON.DEMO diff --git a/disks/disk2_common/COMMON.DEMO.S b/source/disk2_common/COMMON.DEMO.S similarity index 100% rename from disks/disk2_common/COMMON.DEMO.S rename to source/disk2_common/COMMON.DEMO.S diff --git a/disks/disk2_common/MINIFY b/source/disk2_common/MINIFY similarity index 100% rename from disks/disk2_common/MINIFY rename to source/disk2_common/MINIFY diff --git a/disks/disk2_common/T.COMMON.DEMO b/source/disk2_common/T.COMMON.DEMO similarity index 100% rename from disks/disk2_common/T.COMMON.DEMO rename to source/disk2_common/T.COMMON.DEMO diff --git a/source/disk2_common/T.COMMON.DEMO.MIN b/source/disk2_common/T.COMMON.DEMO.MIN new file mode 100644 index 0000000..01169fa --- /dev/null +++ b/source/disk2_common/T.COMMON.DEMO.MIN @@ -0,0 +1,82 @@ + CYC AVE + EXP ONLY + DSK COMMON.DEMO + OBJ $BFE0 + ORG $6000 + USE REQUIRED.MAC.MIN + PUT REQUIRED.HOOKS.MIN + USE COMMON.MAC.MIN + PUT COMMON.HOOKS.MIN + MFILL #$300;#10;#0 + _PRNT "MFILL FILLS A PORTION OF MEMORY WITH",8D + _PRNT "A SPECIFIED VALUE. ",8D8D + _DUMP $300;#10 + _WAIT + _PRNT " ",8D8D + _PRNT "MMOVE COPIES A SPAN OF MEMORY",8D + _PRNT "FROM A SOURCE TO A DESTINATION ADDRESS.",8D8D + _PRNT "SO MOVING $300 TO $320 RESULTS IN:",8D8D + MMOVE $300;$320;#10 + _DUMP $320;#10 + _WAIT + _PRNT " ",8D8D + _PRNT "DELAY DELAYS A SPECIFIED NUMBER OF",8D + _PRNT "MILLISECONDS. 250 MILLISECONDS = 1/4 SECOND.",8D8D + DELAY #250 ; TIME IN MILLISECONDS + BEEP 1 + _PRNT "1/4 SECOND",8D + DELAY #250 + BEEP 2 + _PRNT "1/4 SECOND",8D + DELAY #250 + BEEP 3 + _PRNT "1/4 SECOND",8D + DELAY #250 + BEEP 4 + _PRNT "1/4 SECOND",8D + _PRNT " ",8D8D + _WAIT + LDA #01 + STA $06 + LDA #02 + STA $07 + LDA #03 + STA $08 + LDA #04 + STA $09 + ZSAVE $300 + _PRNT " ",8D8D + _PRNT "ZSAVE SAVES THE STATE OF THE ZERO PAGE ",8D + _PRNT "ADDRESSES THAT ARE NOT USED BY DOS,",8D + _PRNT "APPLESOFT,PRODOS OR INTEGER BASIC.",8D8D + _PRNT "SO THE BACKED UP ZERO PAGE AT $300 IS:",8D8D + _DUMP $300;#18 + _PRNT " ",8D8D + _PRNT "18 BYTES ARE USED.",8D8D + _WAIT + ZLOAD $300 + _PRNT " ",8D8D + _PRNT "YOU CAN THEN RESTORE THE FREE ZERO PAGE",8D + _PRNT "LOCATIONS WITH ZLOAD. THERE ISN'T ANY",8D + _PRNT "MEANINGFUL OUTPUT TO PUT HERE TO ",8D + _PRNT "ILLUSTRATE THAT, SO USE YOUR IMAGINATION!",8D8D + _WAIT + _PRNT "THE MSWAP MACRO SWAPS A LENGTH",8D + _PRNT "OF MEMORY FROM ONE LOCATION",8D + _PRNT "TO ANOTHER. SO, BEFORE SWAP:",8D8D + _DUMP $300;#10 + _DUMP $320;#10 + MSWAP $300;$320;#10 + _PRNT " ",8D + _PRNT "AND AFTER SWAP: ",8D8D + _DUMP $300;#10 + _DUMP $320;#10 + _WAIT + LDA #$11 + LDX #$12 + LDY #$13 + CLC + _RDUMP + JMP REENTRY + PUT COMMON.LIB.MIN + PUT REQUIRED.LIB.MIN diff --git a/source/disk2_common/T.COMMON.HOOKS b/source/disk2_common/T.COMMON.HOOKS new file mode 100644 index 0000000..f5793e1 --- /dev/null +++ b/source/disk2_common/T.COMMON.HOOKS @@ -0,0 +1,14 @@ +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* COMMON.LIB HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +PROMPT EQU $33 +COLDENT EQU $03D3 ; COLD ENTRY TO DOS +SRESET EQU $03F2 ; SOFT RESET +PRNTAX EQU $F941 ; PRINT HEX VALS OF A,X REGISTERS +BELL EQU $FBE4 ; RING MY BELL +IOSAVE EQU $FF4A ; SAVE CURRENT STATE OF REGISTERS +IOREST EQU $FF3F ; RESTORE OLD STATE OF REGISTERS +* diff --git a/disks/disk2_common/T.COMMON.HOOKS.MIN b/source/disk2_common/T.COMMON.HOOKS.MIN similarity index 100% rename from disks/disk2_common/T.COMMON.HOOKS.MIN rename to source/disk2_common/T.COMMON.HOOKS.MIN diff --git a/disks/disk2_common/T.COMMON.MAC b/source/disk2_common/T.COMMON.MAC similarity index 100% rename from disks/disk2_common/T.COMMON.MAC rename to source/disk2_common/T.COMMON.MAC diff --git a/source/disk2_common/T.COMMON.MAC.MIN b/source/disk2_common/T.COMMON.MAC.MIN new file mode 100644 index 0000000..95d3e9f --- /dev/null +++ b/source/disk2_common/T.COMMON.MAC.MIN @@ -0,0 +1,55 @@ +MFILL MAC + _ISLIT ]1 + _ISLIT ]2 + LDA ]3 ; FILL VALUE + PHA + JSR MEMFILL + <<< +BEEP MAC + LUP ]1 + JSR BELL + --^ + <<< +MMOVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + _ISLIT ]3 + JSR MEMMOVE + <<< +DELAY MAC + LDY ]1 + JSR DELAYMS + <<< +ZSAVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMSAVE + <<< +ZLOAD MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMLOAD + <<< +MSWAP MAC + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]3 + PHA + JSR MEMSWAP + <<< diff --git a/disks/disk2_common/T.DELAYMS.SUB b/source/disk2_common/T.DELAYMS.SUB similarity index 100% rename from disks/disk2_common/T.DELAYMS.SUB rename to source/disk2_common/T.DELAYMS.SUB diff --git a/source/disk2_common/T.DELAYMS.SUB.MIN b/source/disk2_common/T.DELAYMS.SUB.MIN new file mode 100644 index 0000000..8942752 --- /dev/null +++ b/source/disk2_common/T.DELAYMS.SUB.MIN @@ -0,0 +1,29 @@ +DELAYMS +MSCNT EQU $0CA ; 202 TIMES THROUGH DELAY1 + ; SPECIFIC TO 1.23 MHZ + ; SPEED OF APPLE II +:DELAY + CPY #0 ; 2 CYCLES + BEQ :EXIT ; 2C (EXIT IF DEL=0) + NOP ; 2 CYCLES (MAKE OVERHEAD=25C) + CPY #1 ; 2 CYCLES + BNE :DELAYA ; 3C IF TAKEN, ELSE 2C + JMP :LAST1 ; 3C +:DELAYA + DEY ; 2C (PREDEC Y) +:DELAY0 + LDX #MSCNT ; 2C +:DELAY1 + DEX ; 2C + BNE :DELAY1 ; 3C + NOP ; 2C + NOP ; 2C + DEY ; 2C + BNE :DELAY0 ; 3C +:LAST1 + LDX #MSCNT-3 ; 2C +:DELAY2 + DEX ; 2C + BNE :DELAY2 ; 3C +:EXIT + RTS ; 6C diff --git a/disks/disk2_common/T.MEMFILL.SUB b/source/disk2_common/T.MEMFILL.SUB similarity index 100% rename from disks/disk2_common/T.MEMFILL.SUB rename to source/disk2_common/T.MEMFILL.SUB diff --git a/source/disk2_common/T.MEMFILL.SUB.MIN b/source/disk2_common/T.MEMFILL.SUB.MIN new file mode 100644 index 0000000..0401928 --- /dev/null +++ b/source/disk2_common/T.MEMFILL.SUB.MIN @@ -0,0 +1,43 @@ +MEMFILL + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALUE + PLA + STA :ARYSZ + PLA + STA :ARYSZ+1 + PLA + STA ADDR1 ; ZERO PAGE POINTER + PLA ; DEFINED IN + STA ADDR1+1 ; DECS + LDA :VALUE ; GET VAL FOR FILL + LDX :ARYSZ+1 ; X=# OF PAGES TO DO + BEQ :PARTPG ; BRANCH IF HIGHBYTE OF SZ = 0 + LDY #0 +:FULLPG + STA (ADDR1),Y + INY ; INC TO NEXT BYTE + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGE + INC ADDR1+1 ; ADVANCE TO NEXT PAGE + DEX + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGES +:PARTPG + LDX :ARYSZ ;GET # OF BYTES IN FINAL PAGE + BEQ :EXIT ; BRANCH IF LOW BYTE = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INCREMENT INDEX + DEX ; DECREMENT COUNTER + BNE :PARTLP ; BRANCH IF NOT DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:VALUE DS 1 ; FILL VALUE +:ARYSZ DS 2 ; ARRAY SIZE diff --git a/disks/disk2_common/T.MEMMOVE.SUB b/source/disk2_common/T.MEMMOVE.SUB similarity index 100% rename from disks/disk2_common/T.MEMMOVE.SUB rename to source/disk2_common/T.MEMMOVE.SUB diff --git a/source/disk2_common/T.MEMMOVE.SUB.MIN b/source/disk2_common/T.MEMMOVE.SUB.MIN new file mode 100644 index 0000000..d0938fb --- /dev/null +++ b/source/disk2_common/T.MEMMOVE.SUB.MIN @@ -0,0 +1,101 @@ +MEMMOVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MVELEN + PLA + STA :MVELEN+1 + PLA + STA ADDR2 ; ZERO PAGE POINTER + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :MVELEN + TYA + SBC :MVELEN+1 + BCS :DOLEFT ; BRANCH IF NO OVERLAP + JSR :MVERHT + JMP :EXIT +:DOLEFT + JSR :MVELEFT +:EXIT + JMP :MREXIT +:MVELEFT + LDY #0 ; ZERO INDEX + LDX :MVELEN+1 ; X=# OF FULL PP TO MOVE + BEQ :MLPART ; IF X=0, DO PARTIAL PAGE +:MLPAGE + LDA (ADDR1),Y + STA (ADDR2),Y ;MOVE ONE BYTE + INY ; NEXT BYTE + BNE :MLPAGE ; CONT UNTIL 256B MOVED + INC ADDR1+1 ; ADV TO NEXT SRC PAGE + INC ADDR2+1 ; ADV NEXT DEST PAGE + DEX ; DEC PAGE COUNT + BNE :MLPAGE ; CONT UNTIL ALL FULL + ; PAGES ARE MOVED +:MLPART + LDX :MVELEN ; GET LENGTH OF LAST PAGE + BEQ :MLEXIT ; BR IF LENGTH OF LAST + ; PAGE = 0 + ; REG Y IS 0 +:MLLAST + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + INY ; NEXT BYTE + DEX ; DEC COUNTER + BNE :MLLAST ; CONT UNTIL LAST P DONE +:MLEXIT + JMP :MREXIT +:MVERHT + LDA :MVELEN+1 + CLC + ADC ADDR1+1 + STA ADDR1+1 ;POINT TO LAST P OF SRC + LDA :MVELEN+1 + CLC + ADC ADDR2+1 + STA ADDR2+1 ; POINT TO LAST P OF DEST + LDY :MVELEN ;GET LENGTH OF LAST PAGE + BEQ :MRPAGE ; IF Y=0 DO THE FULL PAGES +:MR0 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR0 ; BR IF NOT DONE W LAST P +:MRPAGE + LDX :MVELEN+1 ; GET BYTE OF COUNT AS P CT + BEQ :MREXIT ; BR IF HYBYTE = 0 (NO FULL P) +:MR1 + DEC ADDR1+1 ; BACK UP TO PREV SRC PAGE + DEC ADDR2+1 ; AND DEST +:MR2 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR2 ; BR IF NOT DONE W THIS PAGE + DEX + BNE :MR1 ; BR IF NOT ALL PAGES MOVED +:MREXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MVELEN DS 2 diff --git a/disks/disk2_common/T.MEMSWAP.SUB b/source/disk2_common/T.MEMSWAP.SUB similarity index 100% rename from disks/disk2_common/T.MEMSWAP.SUB rename to source/disk2_common/T.MEMSWAP.SUB diff --git a/source/disk2_common/T.MEMSWAP.SUB.MIN b/source/disk2_common/T.MEMSWAP.SUB.MIN new file mode 100644 index 0000000..7247b7d --- /dev/null +++ b/source/disk2_common/T.MEMSWAP.SUB.MIN @@ -0,0 +1,86 @@ +MEMSWAP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :LENGTH + PLA + STA ADDR1 + STA :A1 + PLA + STA ADDR1+1 + STA :A1+1 + PLA + STA ADDR2 + STA :A2 + PLA + STA ADDR2+1 + STA :A2+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR2+1 ; IF #>A2 => #>A1 + CMP ADDR1+1 + BCS :CHKLO ; CHECK LOW BYTES + JMP :A1GTA2 ; ELSE, A1 > A2 +:CHKLO + LDA ADDR2 + CMP ADDR1 + BCS :A2GTA1 + JMP :A1GTA2 +:A2GTA1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND ; BRANCH IF NO OVERLAP + JMP :OVF +:A1GTA2 + LDA ADDR1 + SEC + SBC ADDR2 + TAX + LDA ADDR1+1 + SBC ADDR2+1 + TAY + TXA + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND +:OVF + _ERR :E_SID;:E_OVF;:E_DUMP;:LENGTH;#6 +:ERREND + LDY #255 ; COUNTER +:LP + INY + LDA (ADDR1),Y + TAX ; X CONTAINS ADDR1 VAL + LDA (ADDR2),Y ; A CONTAINS ADDR2 VAL + STA (ADDR1),Y + TXA + STA (ADDR2),Y + CPY :LENGTH + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:LENGTH DS 2 +:A1 DS 2 +:A2 DS 2 +:E_SID ASC "MEMSWAP (MSWAP MACRO)",00 +:E_DUMP ASC "DUMPING LENGTH (2) A1(2) A2(2)",00 +:E_OVF ASC "OVERFLOW! ADDRESSES OVERLAP.",00 diff --git a/disks/disk2_common/T.REQUIRED.HOOKS b/source/disk2_common/T.REQUIRED.HOOKS similarity index 100% rename from disks/disk2_common/T.REQUIRED.HOOKS rename to source/disk2_common/T.REQUIRED.HOOKS diff --git a/disks/disk4_math/T.REQUIRED.HOOKS.MIN b/source/disk2_common/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk4_math/T.REQUIRED.HOOKS.MIN rename to source/disk2_common/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk2_common/T.REQUIRED.LIB b/source/disk2_common/T.REQUIRED.LIB similarity index 97% rename from disks/disk2_common/T.REQUIRED.LIB rename to source/disk2_common/T.REQUIRED.LIB index 6fb681d..cde9247 100644 --- a/disks/disk2_common/T.REQUIRED.LIB +++ b/source/disk2_common/T.REQUIRED.LIB @@ -351,6 +351,15 @@ HEXTAB ASC "0123456789ABCDEF" *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * __ERR +* +** SAVE RETADR OF LAST CALL +* + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 * JSR __RSAV PLA @@ -441,6 +450,10 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 +* JMP $3D0 * ** DATA @@ -450,4 +463,5 @@ __ERR :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 * diff --git a/disks/disk2_common/T.REQUIRED.LIB.MIN b/source/disk2_common/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk2_common/T.REQUIRED.LIB.MIN rename to source/disk2_common/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk2_common/T.REQUIRED.LIB.MIN +++ b/source/disk2_common/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk2_common/T.REQUIRED.MAC b/source/disk2_common/T.REQUIRED.MAC similarity index 100% rename from disks/disk2_common/T.REQUIRED.MAC rename to source/disk2_common/T.REQUIRED.MAC diff --git a/disks/disk4_math/T.REQUIRED.MAC.MIN b/source/disk2_common/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk4_math/T.REQUIRED.MAC.MIN rename to source/disk2_common/T.REQUIRED.MAC.MIN diff --git a/disks/disk5_strings/T.REQUIRED.VARS b/source/disk2_common/T.REQUIRED.VARS similarity index 100% rename from disks/disk5_strings/T.REQUIRED.VARS rename to source/disk2_common/T.REQUIRED.VARS diff --git a/disks/disk2_common/T.ZMLOAD.SUB b/source/disk2_common/T.ZMLOAD.SUB similarity index 100% rename from disks/disk2_common/T.ZMLOAD.SUB rename to source/disk2_common/T.ZMLOAD.SUB diff --git a/source/disk2_common/T.ZMLOAD.SUB.MIN b/source/disk2_common/T.ZMLOAD.SUB.MIN new file mode 100644 index 0000000..d93ee7a --- /dev/null +++ b/source/disk2_common/T.ZMLOAD.SUB.MIN @@ -0,0 +1,70 @@ +ZMLOAD + PLA + STA :RETADR + PLA + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #2 ; START 2 AHEAD + LDA (ADDR1),Y ; AND PUT ADDR1 + STA $08 ; AREA LAST + INY + LDA (ADDR1),Y + STA $09 + INY + LDA (ADDR1),Y + STA $19 + INY + LDA (ADDR1),Y + STA $1E + INY + LDA (ADDR1),Y + STA $E3 + INY + LDA (ADDR1),Y + STA $EB + INY + LDA (ADDR1),Y + STA $EC + INY + LDA (ADDR1),Y + STA $ED + INY + LDA (ADDR1),Y + STA $EE + INY + LDA (ADDR1),Y + STA $EF + INY + LDA (ADDR1),Y + STA $FA + INY + LDA (ADDR1),Y + STA $FB + INY + LDA (ADDR1),Y + STA $FC + INY + LDA (ADDR1),Y + STA $FD + INY + LDA (ADDR1),Y + STA $FE + INY + LDA (ADDR1),Y + STA $FF + LDY #0 + LDA (ADDR1),Y + TAX + LDA (ADDR1+1),Y + TAY + STX ADDR1 + STY ADDR1+1 + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/disks/disk2_common/T.ZMSAVE.SUB b/source/disk2_common/T.ZMSAVE.SUB similarity index 100% rename from disks/disk2_common/T.ZMSAVE.SUB rename to source/disk2_common/T.ZMSAVE.SUB diff --git a/source/disk2_common/T.ZMSAVE.SUB.MIN b/source/disk2_common/T.ZMSAVE.SUB.MIN new file mode 100644 index 0000000..cd3cc27 --- /dev/null +++ b/source/disk2_common/T.ZMSAVE.SUB.MIN @@ -0,0 +1,71 @@ +ZMSAVE + LDX ADDR1 + LDY ADDR1+1 + PLA + STA :RETADR ; LOCAL BECAUSE RETADDR + PLA ; IS STORED ON ZERO PAGE + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TYA ; STORE ADDR1 VALS + LDY #1 ; FIRST + STA (ADDR1),Y + LDY #0 + TXA + STA (ADDR1),Y + LDY #2 + LDA $08 + STA (ADDR1),Y + INY + LDA $09 + STA (ADDR1),Y + INY + LDA $19 + STA (ADDR1),Y + INY + LDA $1E + STA (ADDR1),Y + INY + LDA $E3 + STA (ADDR1),Y + INY + LDA $EB + STA (ADDR1),Y + INY + LDA $EC + STA (ADDR1),Y + INY + LDA $ED + STA (ADDR1),Y + INY + LDA $EE + STA (ADDR1),Y + INY + LDA $EF + STA (ADDR1),Y + INY + LDA $FA + STA (ADDR1),Y + INY + LDA $FB + STA (ADDR1),Y + INY + LDA $FC + STA (ADDR1),Y + INY + LDA $FD + STA (ADDR1),Y + INY + LDA $FE + STA (ADDR1),Y + INY + LDA $FF + STA (ADDR1),Y + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/disks/disk3_arrays/ARRAYS.DEMO b/source/disk3_arrays/ARRAYS.DEMO similarity index 100% rename from disks/disk3_arrays/ARRAYS.DEMO rename to source/disk3_arrays/ARRAYS.DEMO diff --git a/disks/disk3_arrays/ARRAYS.DEMO.S b/source/disk3_arrays/ARRAYS.DEMO.S similarity index 100% rename from disks/disk3_arrays/ARRAYS.DEMO.S rename to source/disk3_arrays/ARRAYS.DEMO.S diff --git a/disks/disk3_arrays/MINIFY b/source/disk3_arrays/MINIFY similarity index 100% rename from disks/disk3_arrays/MINIFY rename to source/disk3_arrays/MINIFY diff --git a/disks/disk3_arrays/T.ADIM81.SUB b/source/disk3_arrays/T.ADIM81.SUB similarity index 100% rename from disks/disk3_arrays/T.ADIM81.SUB rename to source/disk3_arrays/T.ADIM81.SUB diff --git a/source/disk3_arrays/T.ADIM81.SUB.MIN b/source/disk3_arrays/T.ADIM81.SUB.MIN new file mode 100644 index 0000000..aec7812 --- /dev/null +++ b/source/disk3_arrays/T.ADIM81.SUB.MIN @@ -0,0 +1,92 @@ +ADIM81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL ; FILL VALUE + PLA + STA :ESIZE ; ELEMENT SIZE + STA :ESZBAK + PLA + STA :ASIZE ; ARRAY SIZE + STA :ASZBAK + PLA + STA ADDR1 ; ARRAY ADDRESS + PLA + STA ADDR1+1 + LDY #0 + LDA #0 + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :ASIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :ASIZE + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + CLC + INX + INX ; INCREASE BY TWO + ; TO MAKE ROOM FOR SIZES + BCC :NOINY ; IF .X ROLLS OVER, INC .Y + INY +:NOINY + STX :MSIZE ; LOW BYTE + STY :MSIZE+1 ; HIGH BYTE + LDA :FILL ; FILL VALUE + LDX :MSIZE+1 + BEQ :PART ; IF NO WHOLE PAGES, JUST PART + LDY #0 +:FULL + STA (ADDR1),Y + INY ; NEXT BYTE + BNE :FULL ; LOOP UNTIL PAGE DONE + INC ADDR1+1 ; GO TO NEXT PAGE + DEX + BNE :FULL ; LOOP IF PAGES LEFT +:PART + LDX :MSIZE ; PARTIAL PAGE BYTES + BEQ :MFEXIT ; EXIT IF = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INC INDEX + DEX ; DEC COUNTER + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :ASZBAK + STA (ADDR1),Y + INY + LDA :ESZBAK + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 ; LOW + LDX ADDR1+1 ; HIGH + LDA :ASZBAK + LDA :MSIZE + STA RETURN + LDA :MSIZE+1 + STA RETURN+1 + LDA #2 + STA RETLEN ; 2 BYTE LENGTH + RTS +:MSIZE DS 2 +:ASIZE DS 1 +:ESIZE DS 1 +:ASZBAK DS 1 +:ESZBAK DS 1 +:FILL DS 1 diff --git a/disks/disk3_arrays/T.ADIM82.SUB b/source/disk3_arrays/T.ADIM82.SUB similarity index 100% rename from disks/disk3_arrays/T.ADIM82.SUB rename to source/disk3_arrays/T.ADIM82.SUB diff --git a/source/disk3_arrays/T.ADIM82.SUB.MIN b/source/disk3_arrays/T.ADIM82.SUB.MIN new file mode 100644 index 0000000..73787c1 --- /dev/null +++ b/source/disk3_arrays/T.ADIM82.SUB.MIN @@ -0,0 +1,133 @@ +ADIM82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL + PLA + STA :MCAND ; ELEMENT LENGTH + PLA + STA :AYSIZE + STA :AYBAK + PLA + STA :AXSIZE + STA :AXBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :MCAND+1 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :AXSIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :AXSIZE + ROL SCRATCH +:ENTLP + LSR :AYSIZE + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + LDA #0 + STA :PROD + STA :PROD+1 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + LDA :FILL ; FILL VALUE + LDX :PROD+1 ; NOTE THAT THIS WON'T + ; GO BEYOND A 16BIT VALUE; + ; ANYTHING HIGHER THAN + ; 16BITS IS MORE THAN + ; THERE IS MEMORY IN A + ; STANDARD APPLE ][ + BEQ :PART + LDY #0 +:FULL + STA (ADDR1),Y + INY + BNE :FULL + INC ADDR1+1 + DEX + BNE :FULL ; LOOP UNTIL PAGES DONE +:PART + LDX :PROD + BEQ :MFEXIT + LDY #0 +:PARTLP + STA (ADDR1),Y + INY + DEX + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :AXBAK + STA (ADDR1),Y + INY + LDA :AYBAK + STA (ADDR1),Y + INY + LDA :MCAND + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 + LDX ADDR1+1 + LDA :PROD + STA RETURN + LDA :PROD+1 + STA RETURN+1 + LDA :PROD+2 + STA RETURN+2 + LDA :PROD+3 + STA RETURN+3 + LDA #4 ; SIZE OF RETURN + STA RETLEN + LDA :MCAND + RTS +:PROD DS 4 +:AXSIZE DS 1 +:AYSIZE DS 1 +:AXBAK DS 1 +:AYBAK DS 1 +:MLIER DS 2 +:MCAND DS 2 +:FILL DS 1 diff --git a/disks/disk3_arrays/T.AGET81.SUB b/source/disk3_arrays/T.AGET81.SUB similarity index 92% rename from disks/disk3_arrays/T.AGET81.SUB rename to source/disk3_arrays/T.AGET81.SUB index 43f6fd5..2b09da0 100644 --- a/disks/disk3_arrays/T.AGET81.SUB +++ b/source/disk3_arrays/T.AGET81.SUB @@ -93,20 +93,11 @@ AGET81 JMP :ERREND :CHKERR LDA :IDX ; IF IDX > ARRAY LENGTH - CLC - ADC #1 CMP :ALEN BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:RES;#6 * ******************************** * @@ -114,7 +105,6 @@ AGET81 * ******************************** * -* ** FIRST, MUL INDEX BY ELEMENT SIZE, ** THEN ADD TWO TO GET THE PROPER ADDRESS. * @@ -209,6 +199,5 @@ AGET81 * :E_SID ASC "AGET81 (GET81 MACRO)",00 :E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 -:E_OVF1 ASC "OVERFLOW: INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW: CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 * diff --git a/source/disk3_arrays/T.AGET81.SUB.MIN b/source/disk3_arrays/T.AGET81.SUB.MIN new file mode 100644 index 0000000..1e200ce --- /dev/null +++ b/source/disk3_arrays/T.AGET81.SUB.MIN @@ -0,0 +1,96 @@ +AGET81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :IDX + DEC :IDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :IDX+1 + LDY #1 ; ELEMENT SIZE LOC + LDA (ADDR1),Y + STA :ESIZE + STA RETLEN ; LENGTH OF RETURN VALUE + DEY + LDA (ADDR1),Y + STA :ALEN + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CMP :ALEN + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 +:ERREND + LDY #0 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :IDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :IDX + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR1 ; LOW OF ARRAY ADDRESS + STA :RES + LDA :RES+1 + ADC ADDR1+1 + STA :RES+1 + LDY #0 + LDA :RES + STA ADDR1 + LDA :RES+1 + STA ADDR1+1 +:LDLOOP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY RETLEN + BCC :LDLOOP ; IF .Y <= RETLEN + BEQ :LDLOOP ; KEEP LOOPING + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY :RES + LDX :RES+1 + LDA RETLEN + RTS +:RES DS 2 +:IDX DS 2 +:ESIZE DS 1 +:ALEN DS 1 +:E_SID ASC "AGET81 (GET81 MACRO)",00 +:E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.AGET82.SUB b/source/disk3_arrays/T.AGET82.SUB similarity index 96% rename from disks/disk3_arrays/T.AGET82.SUB rename to source/disk3_arrays/T.AGET82.SUB index 2924c3d..53b004e 100644 --- a/disks/disk3_arrays/T.AGET82.SUB +++ b/source/disk3_arrays/T.AGET82.SUB @@ -103,8 +103,6 @@ AGET82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -112,8 +110,6 @@ AGET82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -135,6 +131,7 @@ AGET82 ******************************** * ** MULTIPLY Y-INDEX BY Y-LENGTH +* LDA #0 * TAY @@ -259,6 +256,6 @@ AGET82 :E_SID ASC "AGET82 (GET82 MACRO)",00 :E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 * diff --git a/source/disk3_arrays/T.AGET82.SUB.MIN b/source/disk3_arrays/T.AGET82.SUB.MIN new file mode 100644 index 0000000..9193742 --- /dev/null +++ b/source/disk3_arrays/T.AGET82.SUB.MIN @@ -0,0 +1,153 @@ +AGET82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX + PLA + STA :XIDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + DEC :XIDX + DEC :YIDX + LDY #2 + LDA (ADDR1),Y ; ELEMENT LENGTH + STA :MCAND ; ELEMENT LENGTH + STA :ELEN + DEY + LDA (ADDR1),Y ; Y LENGTH + STA :YLEN + DEY + LDA (ADDR1),Y ; X LENGTH + STA :XLEN + LDA #0 + STA :MCAND+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR1 + STA :PROD + LDA :PROD+1 + ADC ADDR1+1 + STA :PROD+1 + LDY :PROD + LDX :PROD+1 + STY ADDR1 + STX ADDR1+1 + LDY #0 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY :ELEN + BNE :RLP + LDA :ELEN + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA RETLEN + LDY ADDR1 + LDX ADDR1+1 + RTS +:XIDX DS 2 +:YIDX DS 2 +:XLEN DS 1 +:YLEN DS 1 +:PROD DS 4 +:MLIER DS 2 +:MCAND DS 2 +:ELEN DS 1 +:E_SID ASC "AGET82 (GET82 MACRO)",00 +:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" + ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.APUT81.SUB b/source/disk3_arrays/T.APUT81.SUB similarity index 90% rename from disks/disk3_arrays/T.APUT81.SUB rename to source/disk3_arrays/T.APUT81.SUB index cf784d1..f2320ab 100644 --- a/disks/disk3_arrays/T.APUT81.SUB +++ b/source/disk3_arrays/T.APUT81.SUB @@ -56,9 +56,9 @@ APUT81 ** SAVE RETURN ADDRESS * PLA - STA :RETADR ; LOCAL RETURN ADDRESS STORAGE + STA RETADR ; LOCAL RETURN ADDRESS STORAGE PLA ; BECAUSE OF CALLING AGET81 - STA :RETADR+1 + STA RETADR+1 * ** GET PARAMETERS * @@ -105,16 +105,9 @@ APUT81 ADC #1 CMP :ASIZE BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:ESIZE;#9 * ******************************** * @@ -187,9 +180,9 @@ APUT81 * ** RESTORE RETURN ADDRESS * - LDA :RETADR+1 + LDA RETADR+1 PHA - LDA :RETADR + LDA RETADR PHA * ** RETURN ELEMENT ADDRESS AND SIZE @@ -202,7 +195,6 @@ APUT81 * ** DATA * -:RETADR DS 2 :ESIZE DS 1 :ESIZEBAK DS 1 :ASIZE DS 1 @@ -213,6 +205,5 @@ APUT81 :E_SID ASC "APUT81 (PUT81 MACRO)",00 :E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" ASC ":AIDX(2) :IDX(2) :RES(2)",00 -:E_OVF1 ASC "OVERFLOW! INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW! CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 * diff --git a/source/disk3_arrays/T.APUT81.SUB.MIN b/source/disk3_arrays/T.APUT81.SUB.MIN new file mode 100644 index 0000000..11c8446 --- /dev/null +++ b/source/disk3_arrays/T.APUT81.SUB.MIN @@ -0,0 +1,103 @@ +APUT81 + PLA + STA RETADR ; LOCAL RETURN ADDRESS STORAGE + PLA ; BECAUSE OF CALLING AGET81 + STA RETADR+1 + PLA + STA :AIDX + STA :IDX + DEC :AIDX + DEC :IDX + PLA + STA ADDR4 ; ARRAY ADDRESS; USES ADDR4 + ; ADDR1 + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA TO BE + PLA + STA ADDR3+1 + LDY #0 + LDA (ADDR4),Y + STA :ASIZE + LDY #1 + LDA (ADDR4),Y + STA :ESIZE + STA :ESIZEBAK + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CLC + ADC #1 + CMP :ASIZE + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 +:ERREND + LDY #0 + LDA #0 + STY SCRATCH + STY SCRATCH+1 + BEQ :ENTLPA +:DOADD + CLC + ADC :AIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LPA + ASL :AIDX + ROL SCRATCH +:ENTLPA + LSR :ESIZE + BCS :DOADD + BNE :LPA + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR4 + STA :RES + LDA :RES+1 + ADC ADDR4+1 + STA :RES+1 + STA ADDR2+1 + LDA :RES + STA ADDR2 +:LP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZEBAK + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:ESIZEBAK DS 1 +:ASIZE DS 1 +:AIDX DS 2 +:IDX DS 2 +:RES DS 2 +:E_SID ASC "APUT81 (PUT81 MACRO)",00 +:E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" + ASC ":AIDX(2) :IDX(2) :RES(2)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.APUT82.SUB b/source/disk3_arrays/T.APUT82.SUB similarity index 94% rename from disks/disk3_arrays/T.APUT82.SUB rename to source/disk3_arrays/T.APUT82.SUB index bb7d23c..e8d13c2 100644 --- a/disks/disk3_arrays/T.APUT82.SUB +++ b/source/disk3_arrays/T.APUT82.SUB @@ -109,8 +109,6 @@ APUT82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -118,8 +116,6 @@ APUT82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -262,7 +258,6 @@ APUT82 * ** DATA * -:RETADR DS 2 :ESIZE DS 1 :XIDX DS 1 :YIDX DS 1 @@ -272,9 +267,9 @@ APUT82 :XLEN DS 1 :YLEN DS 1 * -:E_SID ASC "AGET82 (GET82 MACRO)",00 -:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" - ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 * diff --git a/source/disk3_arrays/T.APUT82.SUB.MIN b/source/disk3_arrays/T.APUT82.SUB.MIN new file mode 100644 index 0000000..696d636 --- /dev/null +++ b/source/disk3_arrays/T.APUT82.SUB.MIN @@ -0,0 +1,158 @@ +APUT82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX ; Y INDEX + DEC :YIDX + PLA + STA :XIDX ; X INDEX + DEC :XIDX + PLA + STA ADDR4 ; ADDRESS OF ARRAY + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA + PLA ; TO BE COPIED + STA ADDR3+1 + LDY #2 + LDA (ADDR4),Y + STA :ESIZE + STA :MCAND + LDA #0 + STA :MCAND+1 + LDY #0 + LDA (ADDR4),Y + STA :XLEN + INY + LDA (ADDR4),Y + STA :YLEN + LDY #0 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR4 + STA :PROD + LDA :PROD+1 + ADC ADDR4+1 + STA :PROD+1 + LDA :PROD + LDY :PROD + LDX :PROD+1 + STY ADDR2 + STX ADDR2+1 + LDY #0 + LDX #0 +:CLP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :CLP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:XIDX DS 1 +:YIDX DS 1 +:MCAND DS 2 +:MLIER DS 2 +:PROD DS 4 +:XLEN DS 1 +:YLEN DS 1 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.ARRAYS.DEMO b/source/disk3_arrays/T.ARRAYS.DEMO similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.DEMO rename to source/disk3_arrays/T.ARRAYS.DEMO diff --git a/source/disk3_arrays/T.ARRAYS.HOOKS b/source/disk3_arrays/T.ARRAYS.HOOKS new file mode 100644 index 0000000..d33c50b --- /dev/null +++ b/source/disk3_arrays/T.ARRAYS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS.HOOKS.PUT * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +* WELL I GOT NOTHIN +* diff --git a/disks/disk3_arrays/T.ARRAYS.HOOKS.MIN b/source/disk3_arrays/T.ARRAYS.HOOKS.MIN similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.HOOKS.MIN rename to source/disk3_arrays/T.ARRAYS.HOOKS.MIN diff --git a/disks/disk3_arrays/T.ARRAYS.MAC b/source/disk3_arrays/T.ARRAYS.MAC similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.MAC rename to source/disk3_arrays/T.ARRAYS.MAC diff --git a/source/disk3_arrays/T.ARRAYS.MAC.MIN b/source/disk3_arrays/T.ARRAYS.MAC.MIN new file mode 100644 index 0000000..062e261 --- /dev/null +++ b/source/disk3_arrays/T.ARRAYS.MAC.MIN @@ -0,0 +1,76 @@ +DIM81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ARRAY LENGTH + PHA + LDA ]3 ; ELEMENT LENGTH + PHA + LDA ]4 + PHA ; FILL VAL + JSR ADIM81 + <<< +GET81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ELEM INDEX + PHA + JSR AGET81 + <<< +PUT81 MAC + LDA #>]1 + PHA ; SRC ADDR + LDA #<]1 + PHA + LDA #>]2 ; DEST ARRAY + PHA + LDA #<]2 + PHA + LDA ]3 ; DEST INDEX + PHA + JSR APUT81 + <<< +DIM82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X DIM + PHA + LDA ]3 ; Y DIM + PHA + LDA ]4 ; ELEMENT LENGTH + PHA + LDA ]5 ; FILL VAL + PHA + JSR ADIM82 + <<< +GET82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X INDEX + PHA + LDA ]3 ; Y INDEX + PHA + JSR AGET82 + <<< +PUT82 MAC + LDA #>]1 ; SRC ADDR + PHA + LDA #<]1 + PHA + LDA #>]2 ; ARRAY ADDR + PHA + LDA #<]2 + PHA + LDA ]3 ; X INDEX + PHA + LDA ]4 ; Y INDEX + PHA + JSR APUT82 + <<< diff --git a/disks/disk5_strings/T.REQUIRED.HOOKS.MIN b/source/disk3_arrays/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk5_strings/T.REQUIRED.HOOKS.MIN rename to source/disk3_arrays/T.REQUIRED.HOOKS.MIN diff --git a/source/disk3_arrays/T.REQUIRED.LIB.MIN b/source/disk3_arrays/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk3_arrays/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/disks/disk5_strings/T.REQUIRED.MAC.MIN b/source/disk3_arrays/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk5_strings/T.REQUIRED.MAC.MIN rename to source/disk3_arrays/T.REQUIRED.MAC.MIN diff --git a/disks/disk6_fileio/T.REQUIRED.VARS b/source/disk3_arrays/T.REQUIRED.VARS similarity index 100% rename from disks/disk6_fileio/T.REQUIRED.VARS rename to source/disk3_arrays/T.REQUIRED.VARS diff --git a/disks/disk4_math/MATH.DEMO b/source/disk4_math/MATH.DEMO similarity index 100% rename from disks/disk4_math/MATH.DEMO rename to source/disk4_math/MATH.DEMO diff --git a/disks/disk4_math/MATH.DEMO.S b/source/disk4_math/MATH.DEMO.S similarity index 100% rename from disks/disk4_math/MATH.DEMO.S rename to source/disk4_math/MATH.DEMO.S diff --git a/disks/disk4_math/MINIFY b/source/disk4_math/MINIFY similarity index 100% rename from disks/disk4_math/MINIFY rename to source/disk4_math/MINIFY diff --git a/disks/disk4_math/T.ADDIT16.SUB b/source/disk4_math/T.ADDIT16.SUB similarity index 100% rename from disks/disk4_math/T.ADDIT16.SUB rename to source/disk4_math/T.ADDIT16.SUB diff --git a/source/disk4_math/T.ADDIT16.SUB.MIN b/source/disk4_math/T.ADDIT16.SUB.MIN new file mode 100644 index 0000000..f7b7b09 --- /dev/null +++ b/source/disk4_math/T.ADDIT16.SUB.MIN @@ -0,0 +1,31 @@ +ADDIT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :ADD2 + PLA + STA :ADD2+1 + PLA + STA :ADD1 + PLA + STA :ADD1+1 + LDA :ADD1 + CLC + ADC :ADD2 + TAY ; LOW BYTE + STY RETURN + LDA :ADD1+1 + ADC :ADD2+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:ADD1 DS 2 +:ADD2 DS 2 diff --git a/disks/disk4_math/T.COMP16.SUB b/source/disk4_math/T.COMP16.SUB similarity index 100% rename from disks/disk4_math/T.COMP16.SUB rename to source/disk4_math/T.COMP16.SUB diff --git a/source/disk4_math/T.COMP16.SUB.MIN b/source/disk4_math/T.COMP16.SUB.MIN new file mode 100644 index 0000000..2eceede --- /dev/null +++ b/source/disk4_math/T.COMP16.SUB.MIN @@ -0,0 +1,37 @@ +COMP16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT ; SUBTRAHEND + PLA + STA :SUBT+1 + PLA + STA :MINU ; MINUEND + PLA + STA :MINU+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :MINU + CMP :SUBT ; COMPARE LOW BYTES + BEQ :EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; COMPARE HIGH BYTES + ORA #1 ; MAKE Z=0, SINCE LOW + ; BYTES ARE NOT EQUAL + BVS :OVFLOW ; MUST HANDLE OVERFLOW + RTS ; EXIT +:EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; UPPER BYTES + BVS :OVFLOW + RTS ; RETURN W FLAGS SET +:OVFLOW + EOR #$80 ; COMPLEMENT N FLAG + ORA #1 ; IF OVERFLOW THEN THE + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/disks/disk4_math/T.DIVD16.SUB b/source/disk4_math/T.DIVD16.SUB similarity index 100% rename from disks/disk4_math/T.DIVD16.SUB rename to source/disk4_math/T.DIVD16.SUB diff --git a/source/disk4_math/T.DIVD16.SUB.MIN b/source/disk4_math/T.DIVD16.SUB.MIN new file mode 100644 index 0000000..c0cd5fc --- /dev/null +++ b/source/disk4_math/T.DIVD16.SUB.MIN @@ -0,0 +1,158 @@ +UDIVD16 + LDA #0 + BEQ UDIVMD +UREMD16 + LDA #2 +UDIVMD + STA _RSLTI + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA _DVSOR + PLA + STA _DVSOR+1 + PLA + STA _DVEND + PLA + STA _DVEND+1 + JSR UDIV + BCC DIVOK ; BR IF NO ERR +DIVERR JMP EREXIT +DIVOK JMP OKEXIT +SDIVD16 + LDA #0 ; RESULT IS QUOTIENT + BEQ SDIVMD ; (INDEX=0) +SREMD16 + LDA #2 ; RES = REMAINDER (I=2) + BNE SDIVMD +SDIVMD + STA _RSLTI ;RESULT INDEX;0=Q,2=R + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA _DVSOR + PLA + STA _DVSOR+1 + PLA + STA _DVEND + PLA + STA _DVEND+1 + LDA _DVEND+1 + EOR _DVSOR+1 + STA _SQUOT + LDA _DVEND+1 + STA _SREMD + LDA _DVSOR+1 + BPL CHKDE ; BR IF ALREADY POS + LDA #0 ; SUB DVSOR FROM ZERO + SEC + SBC _DVSOR + STA _DVSOR + LDA #0 + SBC _DVSOR+1 + STA _DVSOR+1 +CHKDE + LDA _DVEND+1 + BPL DODIV ; BR IF DVEND IS POS + LDA #0 ; SUB DVEND FROM ZERO + SEC + SBC _DVEND + STA _DVEND + LDA #0 + SBC _DVEND+1 + STA _DVEND+1 +DODIV + JSR UDIV + BCS EREXIT ; EXIT IF DIV BY 0 + LDA _SQUOT + BPL DOREM ; BR IF Q IS POS + LDA #0 + SEC + SBC _DVEND + STA _DVEND + LDA #0 + SBC _DVEND+1 + STA _DVEND+1 +DOREM + LDA _SREMD + BPL OKEXIT ; BR IF REM IS POS + LDA #0 + SEC + SBC _DVEND+2 + STA _DVEND+2 + LDA #0 + SBC _DVEND+3 + STA _DVEND+3 + JMP OKEXIT +EREXIT + LDA #0 + STA _DVEND + STA _DVEND+1 ;QUOTIENT = 0 + STA _DVEND+2 + STA _DVEND+3 ; REMAINDER=0 + STA RETURN + STA RETURN+1 + LDA #2 + STA RETLEN + SEC ; CARRY=1 IF ERROR + BCS DVEXIT +OKEXIT + CLC ; CARRY = 0, NO ERRORS +DVEXIT + LDX _RSLTI ;GET INDEX TO RESULT + LDA _DVEND,X + TAY + LDA _DVEND+1,X + TAX + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +UDIV + LDA #0 + STA _DVEND+2 + STA _DVEND+3 + LDA _DVSOR + ORA _DVSOR+1 + BNE OKUDIV ; BR IF DVSOR NOT 0 + SEC + RTS +OKUDIV + LDX #16 ; LOOP THROUGH 16 BITS +DIVLP + ROL _DVEND ;SHFT CARRY INTO BIT 0 OF DVEND + ROL _DVEND+1 ;WHICH WILL BE THE QUOTIENT AND + ROL _DVEND+2 ;SHFT DVEND AT THE SAME TIME + ROL _DVEND+3 +CHKLT + SEC + LDA _DVEND+2 + SBC _DVSOR + TAY ; SAVE LOW BYTE IN Y + LDA _DVEND+3 + SBC _DVSOR+1 ;SUB HIGHBYTES W RES IN A + BCC DECCNT ; BR IF DVEND < DVSOR AND CARRY + STY _DVEND+2 ; ELSE + STA _DVEND+3 ;VEN(1)=DVEND(1)-DVSOR +DECCNT + DEX + BNE DIVLP + ROL _DVEND ;SHFT IN LAST CAR FOR QUOT + ROL _DVEND+1 + CLC ; NO ERRORS, CLEAR CARRY + RTS +_DVSOR DS 2 ; DIVISOR +_DVEND DS 4 ; DIVIDEND[0] AND QUOTIENT + ; DIVIDEND[1] AND REMAINDER +_SQUOT DS 1 ; SIGN OF QUOTIENT +_SREMD DS 1 ; SIGN OF REMAINDER +_RSLTI DS 1 ; RESULT INDEX diff --git a/disks/disk4_math/T.DIVD8.SUB b/source/disk4_math/T.DIVD8.SUB similarity index 100% rename from disks/disk4_math/T.DIVD8.SUB rename to source/disk4_math/T.DIVD8.SUB diff --git a/source/disk4_math/T.DIVD8.SUB.MIN b/source/disk4_math/T.DIVD8.SUB.MIN new file mode 100644 index 0000000..acd152c --- /dev/null +++ b/source/disk4_math/T.DIVD8.SUB.MIN @@ -0,0 +1,33 @@ +DIVD8 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DVEND + PLA + STA :DVSOR + LDA #$00 + LDY #8 + ASL :DVSOR +:L1 ROL + CMP :DVEND + BCC :L2 + SBC :DVEND +:L2 ROL :DVSOR + DEY + BNE :L1 + STA :REM + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY :REM ; REMAINDER TO Y + LDA #1 + STA RETLEN + LDA :DVSOR + STA RETURN + RTS +:REM DS 1 +:DVEND DS 1 +:DVSOR DS 1 diff --git a/disks/disk4_math/T.MATH.DEMO b/source/disk4_math/T.MATH.DEMO similarity index 100% rename from disks/disk4_math/T.MATH.DEMO rename to source/disk4_math/T.MATH.DEMO diff --git a/source/disk4_math/T.MATH.HOOKS b/source/disk4_math/T.MATH.HOOKS new file mode 100644 index 0000000..c409e7b --- /dev/null +++ b/source/disk4_math/T.MATH.HOOKS @@ -0,0 +1,27 @@ +* +GETNUM EQU $FFA7 ; ASCII TO HEX IN 3E & 3F +RNDL EQU $4E ; RANDOM NUMBER LOW +RNDH EQU $4F ; RANDOM NUMBER HIGH +* +FAC EQU $9D ; FLOATING POINT ACCUM +FSUB EQU $E7A7 ; FLOATING POINT SUBTRACT +FADD EQU $E7BE +FMULT EQU $E97F ; FP MULTIPLY +FDIV EQU $EA66 ; FP DIVIDE +FMULTT EQU $E982 +FDIVT EQU $EA69 +FADDT EQU $E7C1 +FSUBT EQU $E7AA +* +MOVFM EQU $EAF9 ; MOVE FAC > MEM +MOVMF EQU $EB2B ; MOVE MEM > FAC +NORM EQU $E82E +CONUPK EQU $E9E3 +* +FLOG EQU $E941 ; LOGARITHM +FSQR EQU $EE8D ; SQUARE ROOT +FCOS EQU $EFEA ; FP COSINE +FSIN EQU $EFF1 ; SINE +FTAN EQU $F03A ; TANGENT +FATN EQU $F09E ; ATANGENT +* diff --git a/disks/disk4_math/T.MATH.MAC b/source/disk4_math/T.MATH.MAC similarity index 100% rename from disks/disk4_math/T.MATH.MAC rename to source/disk4_math/T.MATH.MAC diff --git a/source/disk4_math/T.MATH.MAC.MIN b/source/disk4_math/T.MATH.MAC.MIN new file mode 100644 index 0000000..bad6721 --- /dev/null +++ b/source/disk4_math/T.MATH.MAC.MIN @@ -0,0 +1,78 @@ +ADD16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR ADDIT16 + <<< +SUB16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR SUBT16 + <<< +MUL16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR MULT16 + <<< +DIV16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SDIVD16 + ELSE + JSR UDIVD16 ; UNSIGNED + FIN + <<< +REM16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SREMD16 + ELSE + JSR UREMD16 ; UNSIGNED + FIN + <<< +RNDB MAC + LDA ]1 ; LOW + PHA + LDA ]2 ; HIGH + PHA + JSR RANDB + <<< +CMP16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR COMP16 + <<< +MUL8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR MULT8 + <<< +DIV8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR DIVD8 + <<< +RND16 MAC + JSR RAND16 + <<< +FPADD MAC + LDX #]1 + LDY #>]1 + JSR MOVFM + LDA #]2 + LDY #>]2 + JSR CONUPK + JSR NORM + LDA $9D + JSR FADDT + LDX #RETURN + LDY #>RETURN + JSR MOVMF + LDA #6 + STA RETLEN + <<< diff --git a/disks/disk4_math/T.MULT16.SUB b/source/disk4_math/T.MULT16.SUB similarity index 100% rename from disks/disk4_math/T.MULT16.SUB rename to source/disk4_math/T.MULT16.SUB diff --git a/source/disk4_math/T.MULT16.SUB.MIN b/source/disk4_math/T.MULT16.SUB.MIN new file mode 100644 index 0000000..31aafd7 --- /dev/null +++ b/source/disk4_math/T.MULT16.SUB.MIN @@ -0,0 +1,59 @@ +MULT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLIER + PLA + STA :MLIER+1 + PLA + STA :MCAND + PLA + STA :MCAND+1 + LDA #0 + STA :HPROD ; ZERO HIGH WORD + STA :HPROD+1 + LDX #17 ; # OF BITS IN MPLIER + ; PLUS 1. EXTRA LOOP IS + ; TO MOVE LAST CARRY INTO + ; THE PRODUCT. + CLC ; CLEAR CARRY FOR 1ST TIME + ; THROUGH LOOP. +:MULLP + ROR :HPROD+1 + ROR :HPROD + ROR :MLIER+1 + ROR :MLIER + BCC :DECCNT ; BR IF NEXT BIT OF + CLC ; NEXT BIT=1 SO ADD MCAND + LDA :MCAND + ADC :HPROD + STA :HPROD + LDA :MCAND+1 + ADC :HPROD+1 + STA :HPROD+1 ; CARRY = OVERFLOW +:DECCNT + DEX + BNE :MULLP ; CONTINUE UNTIL DONE + LDY :HPROD ; LOW BYTE OF HIGH WORD + LDX :HPROD+1 ; HIGH BYTE OF HIGH WORD + LDA :MLIER+1 + TAX + STX RETURN+1 + LDA :MLIER + TAY + STY RETURN + LDA :HPROD + STA RETURN+2 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :HPROD ;24BIT + RTS +:MCAND DS 3 +:MLIER DS 3 +:HPROD DS 2 diff --git a/disks/disk4_math/T.MULT8.SUB b/source/disk4_math/T.MULT8.SUB similarity index 100% rename from disks/disk4_math/T.MULT8.SUB rename to source/disk4_math/T.MULT8.SUB diff --git a/source/disk4_math/T.MULT8.SUB.MIN b/source/disk4_math/T.MULT8.SUB.MIN new file mode 100644 index 0000000..46ed425 --- /dev/null +++ b/source/disk4_math/T.MULT8.SUB.MIN @@ -0,0 +1,41 @@ +MULT8 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MUL1 + PLA + STA :MUL2 + LDA #$00 + TAY + TAX + STY :MUL1H + BEQ :GOLOOP +:DOADD + CLC + ADC :MUL1 + TAY + TXA + ADC :MUL1H + TAX + TYA +:LP + ASL :MUL1 + ROL :MUL1H +:GOLOOP + LSR :MUL2 + BCS :DOADD + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:MUL1 DS 1 +:MUL2 DS 1 +:MUL1H DS 1 diff --git a/disks/disk4_math/T.RAND16.SUB b/source/disk4_math/T.RAND16.SUB similarity index 100% rename from disks/disk4_math/T.RAND16.SUB rename to source/disk4_math/T.RAND16.SUB diff --git a/source/disk4_math/T.RAND16.SUB.MIN b/source/disk4_math/T.RAND16.SUB.MIN new file mode 100644 index 0000000..4a97a0c --- /dev/null +++ b/source/disk4_math/T.RAND16.SUB.MIN @@ -0,0 +1,34 @@ +RAND16 + LDA RNDL + STA :SEED + LDA RNDH + STA :SEED+1 + LDA :SEED + BEQ :LOW0 + ASL :SEED + LDA :SEED+1 + ROL + BCC :NOEOR +:DOEOR ; HIGH BYTE IN A + EOR #>$0369 + STA :SEED+1 + LDA :SEED + EOR #<$0369 + STA :SEED + JMP :EXIT +:LOW0 + LDA :SEED+1 + BEQ :DOEOR + ASL + BEQ :NOEOR + BCS :DOEOR +:NOEOR + STA :SEED+1 +:EXIT LDX :SEED+1 + LDY :SEED + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:SEED DS 2 diff --git a/disks/disk4_math/T.RAND8.SUB b/source/disk4_math/T.RAND8.SUB similarity index 100% rename from disks/disk4_math/T.RAND8.SUB rename to source/disk4_math/T.RAND8.SUB diff --git a/source/disk4_math/T.RAND8.SUB.MIN b/source/disk4_math/T.RAND8.SUB.MIN new file mode 100644 index 0000000..ae20a11 --- /dev/null +++ b/source/disk4_math/T.RAND8.SUB.MIN @@ -0,0 +1,17 @@ +RAND8 + LDX #8 + LDA RNDL+0 +:A + ASL ;SHIFT THE REG + ROL RNDL+1 + BCC :B + EOR #$2D ; APPLY XOR FEEDBACK +:B + DEX + BNE :A + STA RNDL+0 + STA RETURN + LDY #1 + STY RETLEN + CMP #0 ; RELOAD FLAGS + RTS diff --git a/disks/disk4_math/T.RANDB.SUB b/source/disk4_math/T.RANDB.SUB similarity index 100% rename from disks/disk4_math/T.RANDB.SUB rename to source/disk4_math/T.RANDB.SUB diff --git a/source/disk4_math/T.RANDB.SUB.MIN b/source/disk4_math/T.RANDB.SUB.MIN new file mode 100644 index 0000000..b0805bb --- /dev/null +++ b/source/disk4_math/T.RANDB.SUB.MIN @@ -0,0 +1,107 @@ +RANDB + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :NEWMAX + PLA + STA :NEWMIN + LDA #1 + STA :OLDMIN + LDA #255 + STA :OLDMAX + LDX #8 + LDA RNDL+0 +:AA + ASL + ROL RNDL+1 + BCC :BB + EOR #$2D ; MAGIC NUMBER +:BB + DEX + BNE :AA + STA RNDL+0 + CMP #0 + STA :OLDVAL + LDA :OLDMAX + SEC + SBC :OLDMIN + STA :OLDRANGE + LDA :NEWMAX + SEC + SBC :NEWMIN + STA :NEWRANGE + LDA :OLDVAL + SEC + SBC :OLDMIN + STA :VALRANGE + LDA #00 + TAY + STY :NUM1HI + BEQ :ENTLP +:DOADD + CLC + ADC :VALRANGE + TAX + TYA + ADC :NUM1HI + TAY + TXA +:MLP + ASL :VALRANGE + ROL :NUM1HI +:ENTLP + LSR :NEWRANGE + BCS :DOADD + BNE :MLP + STA :MULRANGE + STY :MULRANGE+1 +:DIVIDE + LDA #0 + STA :REMAIN + STA :REMAIN+1 + LDX #16 +:DIVLP + ASL :MULRANGE + ROL :MULRANGE+1 + ROL :REMAIN + ROL :REMAIN+1 + LDA :REMAIN + SEC + SBC :OLDRANGE + TAY + LDA :REMAIN+1 + SBC :OLDRANGE+1 + BCC :SKIP + STA :REMAIN+1 + STY :REMAIN + INC :DIVRANGE +:SKIP DEX + BNE :DIVLP + LDA :DIVRANGE ; LO BYTE ONLY + CLC + ADC :NEWMIN + STA :NEWVAL + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :NEWVAL ; RETURN # IN A + STA RETURN + LDX #1 + STX RETLEN + RTS +:OLDRANGE DS 2 +:NEWRANGE DS 2 +:MULRANGE DS 2 +:DIVRANGE DS 2 +:VALRANGE DS 2 +:OLDVAL DS 2 +:NEWVAL DS 2 +:OLDMIN DS 2 +:NEWMIN DS 2 +:OLDMAX DS 2 +:NEWMAX DS 2 +:NUM1HI DS 2 +:REMAIN DS 2 diff --git a/disks/disk6_fileio/T.REQUIRED.HOOKS.MIN b/source/disk4_math/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk6_fileio/T.REQUIRED.HOOKS.MIN rename to source/disk4_math/T.REQUIRED.HOOKS.MIN diff --git a/source/disk4_math/T.REQUIRED.LIB.MIN b/source/disk4_math/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk4_math/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/disks/disk6_fileio/T.REQUIRED.MAC.MIN b/source/disk4_math/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk6_fileio/T.REQUIRED.MAC.MIN rename to source/disk4_math/T.REQUIRED.MAC.MIN diff --git a/disks/disk1_stdio/T.REQUIRED.VARS b/source/disk4_math/T.REQUIRED.VARS similarity index 73% rename from disks/disk1_stdio/T.REQUIRED.VARS rename to source/disk4_math/T.REQUIRED.VARS index 6320b13..ae2759a 100644 --- a/disks/disk1_stdio/T.REQUIRED.VARS +++ b/source/disk4_math/T.REQUIRED.VARS @@ -1,11 +1,55 @@ +* ******************************** * * * VARIABLES AND SETTINGS * * * ******************************** * +* VARIABLE DECLARATIONS ******** +* +** JUMP TABLE SETUP. THIS IS FOR LOADING +** SUBROUTINES INTO MEMORY FOR ACCESS BY +** EXTERNAL EXECUTIONS. NOTE THAT THIS +** SHOULD ALWAYS BE THE VERY FIRST BIT OF +** CODE IN THE PROGRAM SO THAT ITS +** LOCATION IN MEMORY IS EASILY KNOWN. +* +JUMPTBL JMP MAIN_START ; ** ALWAYS ** START WITH + ; JUMP TO MAIN_START + DS 60 ; 20 MORE ENTRIES +* +** 256 BYTES DEDICATED TO RETURN +** VALUES OF VARIABLE LENGTH; CAN BE +** MODIFIED TO SUIT SMALLER OR LARGER +** NEEDS. +* +RETLEN DS 1 ; RETURN VALUE BYTE LENGTH +RETURN DS 256 +* +** 256 BYTE VALUE DEDICATED TO LARGE +** OR VARIABLE LENGTH PARAMETERS. THIS +** CAN ALSO BE CHANGED TO FIT SMALLER OR +** LARGER BOUNDS. +* +PARLEN DS 1 +PARAM DS 256 +* +** ERROR HANDLING +* +ERRSTOP DS 1 +ERRCTRL DS 1 +ERRA DS 1 +ERRX DS 1 +ERRY DS 1 +ERRCARRY DS 1 +ERRNEG DS 1 +ERRZERO DS 1 +ERROVF DS 1 +* * SETTINGS ********************* * +MAIN_START +* ** ERROR HANDLING * ** SET ERRSTOP TO 1 IF YOU WANT THE PROGRAM TO @@ -25,34 +69,4 @@ * * * - JMP VAREND * -* VARIABLE DECLARATIONS ******** -* -ERRSTOP DS 1 -ERRCTRL DS 1 -ERRA DS 1 -ERRX DS 1 -ERRY DS 1 -ERRCARRY DS 1 -ERRNEG DS 1 -ERRZERO DS 1 -ERROVF DS 1 -* -** 256 BYTES DEDICATED TO RETURN -** VALUES OF VARIABLE LENGTH; CAN BE -** MODIFIED TO SUIT SMALLER OR LARGER -** NEEDS. -* -RETLEN DS 1 ; RETURN VALUE BYTE LENGTH -RETURN DS 256 -* -** 256 BYTE VALUE DEDICATED TO LARGE -** OR VARIABLE LENGTH PARAMETERS. THIS -** CAN ALSO BE CHANGED TO FIT SMALLER OR -** LARGER BOUNDS. -* -PARLEN DS 1 -PARAM DS 256 -* -VAREND diff --git a/disks/disk4_math/T.SUBT16.SUB b/source/disk4_math/T.SUBT16.SUB similarity index 100% rename from disks/disk4_math/T.SUBT16.SUB rename to source/disk4_math/T.SUBT16.SUB diff --git a/source/disk4_math/T.SUBT16.SUB.MIN b/source/disk4_math/T.SUBT16.SUB.MIN new file mode 100644 index 0000000..abd342c --- /dev/null +++ b/source/disk4_math/T.SUBT16.SUB.MIN @@ -0,0 +1,31 @@ +SUBT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT + PLA + STA :SUBT+1 ; SUBTRAHEND + PLA + STA :MINU + PLA + STA :MINU+1 ; MINUEND + LDA :MINU + SEC + SBC :SUBT + TAY ; LOW BYTE + STY RETURN + LDA :MINU+1 + SBC :SUBT+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/disks/disk5_strings/MINIFY b/source/disk5_strings/MINIFY similarity index 100% rename from disks/disk5_strings/MINIFY rename to source/disk5_strings/MINIFY diff --git a/disks/disk5_strings/STRINGS.DEMO b/source/disk5_strings/STRINGS.DEMO similarity index 100% rename from disks/disk5_strings/STRINGS.DEMO rename to source/disk5_strings/STRINGS.DEMO diff --git a/disks/disk5_strings/STRINGS.DEMO.S b/source/disk5_strings/STRINGS.DEMO.S similarity index 100% rename from disks/disk5_strings/STRINGS.DEMO.S rename to source/disk5_strings/STRINGS.DEMO.S diff --git a/disks/disk5_strings/T.NUM2STR.SUB b/source/disk5_strings/T.NUM2STR.SUB similarity index 100% rename from disks/disk5_strings/T.NUM2STR.SUB rename to source/disk5_strings/T.NUM2STR.SUB diff --git a/source/disk5_strings/T.NUM2STR.SUB.MIN b/source/disk5_strings/T.NUM2STR.SUB.MIN new file mode 100644 index 0000000..b93f1e9 --- /dev/null +++ b/source/disk5_strings/T.NUM2STR.SUB.MIN @@ -0,0 +1,97 @@ +NUM2STR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALSTR + PLA + STA :VALSTR+1 + STA :NGFLAG + BPL :GETBP ; BR IF VAL IS POS + LDA #0 + SEC + SBC :VALSTR + STA :VALSTR + LDA #0 + SBC :VALSTR+1 + STA :VALSTR+1 +:GETBP + LDA #RETURN+1 + STA ADDR1+1 + LDA #0 ; SET BUFFER TO EMPTY + LDY #0 + STA (ADDR1),Y ; BUFFER(0) = 0 +:CNVERT + LDA #0 + STA :MOD10 + STA :MOD10+1 + LDX #16 + CLC ; CLEAR CARRY +:DVLOOP + ROL :VALSTR ; SHIFT CARRY INTO DIVBIT 0 + ROL :VALSTR+1 ; WHICH WILL BE THE QUOTIENT + ROL :MOD10 ; + SHIFT DIV AT SAME TIME + ROL :MOD10+1 + SEC + LDA :MOD10 + SBC #10 + TAY ; SAVE LOWB IN REG Y + LDA :MOD10+1 + SBC #0 ; SUBTRACT CARRY + BCC :DECCNT ; BR IF DEND < DIVISOR + STY :MOD10 ; ELSE + STA :MOD10+1 ; NXT BIT OF Q IS A ONE AND SET + ; DIVIDEND = DEND - DIVISOR +:DECCNT + DEX + BNE :DVLOOP + ROL :VALSTR ; SHIFT IN LAST CARRY FOR Q + ROL :VALSTR+1 +:CONCH + LDA :MOD10 + CLC + ADC #$B0 + JSR :CONCAT + LDA :VALSTR + ORA :VALSTR+1 + BNE :CNVERT ; BR IF VALUE != 0 +:EXIT + LDA :NGFLAG + BPL :POS ; BR IF ORIG VAL POS + LDA #173 ; ELSE + JSR :CONCAT ; PUT A MINUS SIGN IN FRONT +:POS + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS ; RETURN +:CONCAT + PHA ; SAVE CHAR ON STACK + LDY #0 + LDA (ADDR1),Y ; GET CURRENT LENGTH + TAY + BEQ :EXITMR ; BR IF LENGTH=0 +:MVELP + LDA (ADDR1),Y ; GET NEXT CHAR + INY + STA (ADDR1),Y ; STORE IT + DEY + DEY + BNE :MVELP ; CONT UNTIL DONE +:EXITMR + PLA ; GET CHAR BACK FROM STACK + LDY #1 + STA (ADDR1),Y ; STORE THE CHAR + LDY #0 + LDA (ADDR1),Y ; GET LENGTH BYTE + CLC + ADC #1 ; INC LENGTH BY ONE + STA (ADDR1),Y ; UPDATE LENGTH + RTS +:NGFLAG DS 1 +:VALSTR DS 2 +:MOD10 DS 2 diff --git a/disks/disk5_strings/T.PRNSTR.SUB b/source/disk5_strings/T.PRNSTR.SUB similarity index 100% rename from disks/disk5_strings/T.PRNSTR.SUB rename to source/disk5_strings/T.PRNSTR.SUB diff --git a/source/disk5_strings/T.PRNSTR.SUB.MIN b/source/disk5_strings/T.PRNSTR.SUB.MIN new file mode 100644 index 0000000..c3998cc --- /dev/null +++ b/source/disk5_strings/T.PRNSTR.SUB.MIN @@ -0,0 +1,31 @@ +PRNSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADDRESS OF STRING + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET STRING LENGTH + STA :S1LEN +:LP + INY + LDA (ADDR1),Y ; GET CHARACTER + JSR SCOUT1 ; PRINT CHARACTER TO SCREEN + CPY :S1LEN ; IF Y < LENGTH + BNE :LP + ; LOOP; ELSE + LDY #0 + LDA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; STRING LENGTH IN A + LDY ADDR1 + LDX ADDR1+1 ; ADDRESS IN Y,X + RTS +:S1LEN DS 1 diff --git a/source/disk5_strings/T.REQUIRED.HOOKS.MIN b/source/disk5_strings/T.REQUIRED.HOOKS.MIN new file mode 100644 index 0000000..aad849f --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.HOOKS.MIN @@ -0,0 +1,10 @@ +ADDR1 EQU $06 +ADDR2 EQU $08 +ADDR3 EQU $EB +ADDR4 EQU $ED +SCRATCH EQU $19 +SCRATCH2 EQU $1E +RETADR EQU $FE +RESULT EQU $FA +RESULT2 EQU $FC +REENTRY EQU $3D0 diff --git a/source/disk5_strings/T.REQUIRED.LIB.MIN b/source/disk5_strings/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/source/disk5_strings/T.REQUIRED.MAC.MIN b/source/disk5_strings/T.REQUIRED.MAC.MIN new file mode 100644 index 0000000..1df52ed --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.MAC.MIN @@ -0,0 +1,94 @@ +_ISLIT MAC + IF #=]1 ; IF ]1 IS A LITERAL + LDA ]1/$100 ; GET HI + PHA + LDA ]1 ; GET LO + PHA + ELSE ; ]1 IS ADDRESS + LDA ]1+1 ; SO GET HIGH VAL FROM ADDR + PHA + LDA ]1 ; THEN LO VAL + PHA + FIN + <<< +_ISSTR MAC + IF "=]1 ; IF ]1 IS A STRING + JMP STRCONT +]STRTMP STR ]1 +STRCONT + LDY #0 + LDA ]STRTMP + STA PARLEN + STA PARAM +]STRLP1 + INY + LDA ]STRTMP,Y + STA PARAM,Y + CPY PARLEN + BNE ]STRLP1 + LDA #>PARAM ; GET HI + PHA + LDA #]1 ; SO GET HIBYTE OF ADDR + PHA + LDA #<]1 ; THEN LOBYTE + PHA + FIN + <<< +_GRET MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __GETRET + <<< +_SPAR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __SETPARM + <<< +_DUMP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]2 + PHA + JSR __DUMP + <<< +_PRNT MAC + JSR __P + ASC ]1 + HEX 00 + <<< +_WAIT MAC + JSR __W + <<< +_RDUMP MAC + JSR __RDMP + <<< +_ERR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]3 + PHA + LDA #<]3 + PHA + LDA #>]4 + PHA + LDA #<]4 + PHA + LDA ]5 + PHA + JSR __ERR + <<< diff --git a/source/disk5_strings/T.REQUIRED.VARS b/source/disk5_strings/T.REQUIRED.VARS new file mode 100644 index 0000000..ae2759a --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.VARS @@ -0,0 +1,72 @@ +* +******************************** +* * +* VARIABLES AND SETTINGS * +* * +******************************** +* +* VARIABLE DECLARATIONS ******** +* +** JUMP TABLE SETUP. THIS IS FOR LOADING +** SUBROUTINES INTO MEMORY FOR ACCESS BY +** EXTERNAL EXECUTIONS. NOTE THAT THIS +** SHOULD ALWAYS BE THE VERY FIRST BIT OF +** CODE IN THE PROGRAM SO THAT ITS +** LOCATION IN MEMORY IS EASILY KNOWN. +* +JUMPTBL JMP MAIN_START ; ** ALWAYS ** START WITH + ; JUMP TO MAIN_START + DS 60 ; 20 MORE ENTRIES +* +** 256 BYTES DEDICATED TO RETURN +** VALUES OF VARIABLE LENGTH; CAN BE +** MODIFIED TO SUIT SMALLER OR LARGER +** NEEDS. +* +RETLEN DS 1 ; RETURN VALUE BYTE LENGTH +RETURN DS 256 +* +** 256 BYTE VALUE DEDICATED TO LARGE +** OR VARIABLE LENGTH PARAMETERS. THIS +** CAN ALSO BE CHANGED TO FIT SMALLER OR +** LARGER BOUNDS. +* +PARLEN DS 1 +PARAM DS 256 +* +** ERROR HANDLING +* +ERRSTOP DS 1 +ERRCTRL DS 1 +ERRA DS 1 +ERRX DS 1 +ERRY DS 1 +ERRCARRY DS 1 +ERRNEG DS 1 +ERRZERO DS 1 +ERROVF DS 1 +* +* SETTINGS ********************* +* +MAIN_START +* +** ERROR HANDLING +* +** SET ERRSTOP TO 1 IF YOU WANT THE PROGRAM TO +** HALT WHEN AN ERROR IS CAUGHT +* + LDA #1 + STA ERRSTOP +* +** SET ERRCTRL TO 1 IF YOU WANT ERROR CATCHING ON +** IN THE FIRST PLACE. HAVING THIS TURNED OFF WILL +** SAVE A FEW CYCLES, BUT POSSIBLY AT THE EXPENSE +** OF YOUR FRUSTRATION. CAN BE TURNED ON LATER THOUGH. +* + LDA #1 + STA ERRCTRL +* +* +* +* +* diff --git a/disks/disk5_strings/T.STR2NUM.SUB b/source/disk5_strings/T.STR2NUM.SUB similarity index 100% rename from disks/disk5_strings/T.STR2NUM.SUB rename to source/disk5_strings/T.STR2NUM.SUB diff --git a/source/disk5_strings/T.STR2NUM.SUB.MIN b/source/disk5_strings/T.STR2NUM.SUB.MIN new file mode 100644 index 0000000..04c0912 --- /dev/null +++ b/source/disk5_strings/T.STR2NUM.SUB.MIN @@ -0,0 +1,118 @@ +STR2NUM + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADRESS OF STRING + PLA ; TO CNVERT + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + TAX ; GET LENGITH; TO REGX + LDA #1 + STA :NINDEX ; INDEX = 1 + LDA #0 + STA :NACCUM ; ACCUM = 0 + STA :NACCUM+1 + STA :SNGFLAG ; SIGN IS POSITIVE + TXA + BNE :INIT1 ; EXIT WITH ACCUM = 0 + ; IF BUFFER IS EMPTY + JMP :EREXIT ; ERROR EXIT IF NOTHING + ; IN BUFFER +:INIT1 + LDY :NINDEX + LDA (ADDR1),Y + CMP #173 + BNE :PLUS ; BR IF NOT - + LDA #$0FF + STA :SNGFLAG ; ELSE SIGN IS NEGATIVE + INC :NINDEX + DEX ; DECREMENT COUNT + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; - IN BUFFER + JMP :CNVERT +:PLUS + CMP #'+' + BNE :CHKDIG ; START CONVERSION IF 1ST + INC :NINDEX + DEX ; DEC COUNT; IGNORE + SIGN + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; + IN THE BUFFER +:CNVERT + LDY :NINDEX + LDA (ADDR1),Y + ; GET NEXT CHAR +:CHKDIG + CMP #$B0 ; "0" + BMI :EREXIT ; ERROR IF NOT A NUMERAL + CMP #$BA ; '9'+1; TECHNICALLY : + BPL :EREXIT ; ERR IF > 9 (NOT NUMERAL) + PHA ; PUSH DIGIT TO STACK + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 2 + LDA :NACCUM + LDY :NACCUM+1 ; SAVE ACCUM * 2 + ASL :NACCUM + ROL :NACCUM+1 + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 8 + CLC + ADC :NACCUM ; SUM WITH * 2 + STA :NACCUM + TYA + ADC :NACCUM+1 + STA :NACCUM+1 ; ACCUM=ACCUM * 10 + PLA ; GET THE DIGIT NACK + SEC + SBC #$B0 + CLC ; CONVERT STR TO BIN + ADC :NACCUM + STA :NACCUM + BCC :D2B1 ; BRANCH IF NO CARRY TO HBYTE + INC :NACCUM+1 ; ELSE INC HIGH BYTE +:D2B1 + INC :NINDEX ;INC TO NEXT CHARACTER + DEX + BNE :CNVERT ; CONTINUE CONVERSION + LDA :SNGFLAG + BPL :OKEXIT ; BR IF VAL IS POSITIVE + LDA #0 ; ELSE REPLACE WITH -RESULT + SEC + SBC :NACCUM + STA :NACCUM + LDA #0 + SBC :NACCUM+1 + STA :NACCUM+1 +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + _ERR :E_SID;:E_MSG;:E_DUMP;:NACCUM;#4 +:ERREND +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX :NACCUM+1 + LDY :NACCUM + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + LDA :NINDEX + RTS +:NACCUM DS 2 +:SNGFLAG DS 1 +:NINDEX DS 1 +:E_SID ASC "STR2NUM (S2N MACRO)",00 +:E_MSG ASC "ERR! NO DATA, OR NOT A NUMERAL VALUE",00 +:E_DUMP ASC "DUMPING :NACCUM(2) :SNGFLAG(1) :NINDEX(1)",00 diff --git a/disks/disk5_strings/T.STRCAT.SUB b/source/disk5_strings/T.STRCAT.SUB similarity index 100% rename from disks/disk5_strings/T.STRCAT.SUB rename to source/disk5_strings/T.STRCAT.SUB diff --git a/source/disk5_strings/T.STRCAT.SUB.MIN b/source/disk5_strings/T.STRCAT.SUB.MIN new file mode 100644 index 0000000..c3dc7d4 --- /dev/null +++ b/source/disk5_strings/T.STRCAT.SUB.MIN @@ -0,0 +1,94 @@ +STRCAT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN ; MAXIMUM CONCAT LENGTH + PLA + STA ADDR2 ; STRING 1 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR2+1 + PLA + STA ADDR1 ; STRING 2 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET CUR LGTH OF S1, STORE + STA :S1LEN + STA :S1IND + INC :S1IND ; START CONCAT AT END OF S1 + LDA (ADDR2),Y ; GET LENGTH OF S2, STORE + STA :S2LEN + LDA #1 + STA :S2IND ; START CONCAT AT BEGIN OF S2 + LDA :S2LEN ; GET S2 LENGTH + CLC + ADC :S1LEN ; ADD TO LENGTH OF S1 + STA :S3LEN ; STORE CONCAT LENGTH + BCS :TOOLONG ; BR IF LENGTH > 255 + CMP :MLEN ; CHECK AGAINST MAX LENGTH + BEQ :LENOK ; BR IF LENGTH < MAX + BCC :LENOK +:TOOLONG + LDA #$0FF + STA :SOVF ; INDICATE OVERFLOW + LDA :MLEN + SEC + SBC :S1LEN + BCC :EXIT + STA :SCNT ; ORIG STR WAS TOO LONG + LDA :MLEN + STA :S1LEN ; SET STR1 LENGTH TO MAX + JMP :DOCAT +:LENOK + STA :S1LEN + LDA #0 ; SAVE SUM OF 2 LENGTHS + STA :SOVF ; INDICATE NO OVERFLOW + LDA :S2LEN + STA :SCNT ; COUNT = LENGTH OF STRING 2 +:DOCAT + LDA :SCNT + BEQ :EXIT ; EXIT IF NO BYTES LEFT +:CATLP + LDY :S2IND + LDA (ADDR2),Y ; GET NEXT BYTE FROM S2 + LDY :S1IND + STA (ADDR1),Y ; MOVE IT TO END OF STR 1 + INC :S1IND ;INC STRING 1 INDEX + INC :S2IND ; INC STRING 2 INDEX + DEC :SCNT ; DECREMENT COUNTER + BNE :CATLP ; CONT UNTIL __SCNT = 0 +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + LDA :SOVF + ROR A + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; LENGTH OF STRING + STA RETLEN + LDA #1 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + CPY RETLEN + INY + BNE :RLP + LDA RETLEN + LDY #0 + STA (ADDR1),Y + LDX :S3LEN ; RETURN FINAL LENGTH + RTS +:S3LEN DS 1 +:S1LEN DS 1 +:S1IND DS 1 +:S2LEN DS 1 +:S2IND DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SOVF DS 1 diff --git a/disks/disk5_strings/T.STRCOMP.SUB b/source/disk5_strings/T.STRCOMP.SUB similarity index 100% rename from disks/disk5_strings/T.STRCOMP.SUB rename to source/disk5_strings/T.STRCOMP.SUB diff --git a/source/disk5_strings/T.STRCOMP.SUB.MIN b/source/disk5_strings/T.STRCOMP.SUB.MIN new file mode 100644 index 0000000..48bb0ae --- /dev/null +++ b/source/disk5_strings/T.STRCOMP.SUB.MIN @@ -0,0 +1,47 @@ +STRCMP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING 1 + CMP (ADDR2),Y + BCC :BEGCMP ; IF STRING 2 IS SHORTER THEN + LDA (ADDR2),Y ; USE ITS LENGTH INSTEAD +:BEGCMP + TAX ; X IS LENGTH OF SHORTER STRING + BEQ :TSTLEN ; BR IF LENGTH IS 0 + LDY #1 ; POINT AT FIRST CHAR OF STRINGS +:CMPLP + LDA (ADDR1),Y + CMP (ADDR2),Y + BNE :EXIT ; BR IF CHARS NOT EQUAL + ; Z,C WILL BE PROPERLY SET + ; OR CLEARED + ; ELSE + INY ; NEXT CHAR + DEX ; DECREMENT COUNTER + BNE :CMPLP ; CONTINUE UNTIL ALL BYTES PAIRED +:TSTLEN + LDY #0 ; COMPARE LENGTHS + LDA (ADDR1),Y + CMP (ADDR2),Y ; SET OR CLEAR THE FLAGS +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; GET STR1 LENGTH + TAX ; RETURN IN X + LDA (ADDR2),Y ; STR2 LENGTH + TAY ; RETURN IN Y + RTS diff --git a/disks/disk5_strings/T.STRINGS.DEMO b/source/disk5_strings/T.STRINGS.DEMO similarity index 100% rename from disks/disk5_strings/T.STRINGS.DEMO rename to source/disk5_strings/T.STRINGS.DEMO diff --git a/source/disk5_strings/T.STRINGS.HOOKS b/source/disk5_strings/T.STRINGS.HOOKS new file mode 100644 index 0000000..21ac4d5 --- /dev/null +++ b/source/disk5_strings/T.STRINGS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STRINGS.HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +SCOUT1 EQU $FDF0 +* diff --git a/disks/disk5_strings/T.STRINGS.MAC b/source/disk5_strings/T.STRINGS.MAC similarity index 100% rename from disks/disk5_strings/T.STRINGS.MAC rename to source/disk5_strings/T.STRINGS.MAC diff --git a/source/disk5_strings/T.STRINGS.MAC.MIN b/source/disk5_strings/T.STRINGS.MAC.MIN new file mode 100644 index 0000000..f910b05 --- /dev/null +++ b/source/disk5_strings/T.STRINGS.MAC.MIN @@ -0,0 +1,65 @@ +SCMP MAC + _ISSTR ]1 + _ISSTR ]2 + JSR STRCMP + <<< +SCAT MAC + _ISSTR ]1 + _ISSTR ]2 + LDA ]3 ; MAX SIZE; BYTE + PHA + JSR STRCAT + <<< +SPRN MAC + LDA #>]1 ; ADDRESS OF STRING + PHA + LDA #<]1 + PHA + JSR PRNSTR + <<< +TOSTR MAC + _ISLIT ]1 + JSR NUM2STR + <<< +TONUM MAC + _ISSTR ]1 + JSR STR2NUM + <<< +SPOS MAC + _ISSTR ]1 + _ISSTR ]2 + JSR SUBPOS + <<< +SCPY MAC + _ISSTR ]1 + LDA ]2 ; STARTING INDEX + PHA + LDA ]3 ; SUBSTRING LENGTH + PHA + LDA ]4 ; MAX LENGTH OF SUBSTR + PHA + JSR SUBCOPY + <<< +SDEL MAC + LDA #>]1 ; STRING ADDRESS + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX BYTE + PHA + LDA ]3 ; LENGTH + PHA + JSR SUBDEL + <<< +SINS MAC + LDA #>]1 ; PARENT STRING + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX + PHA + LDA ]3 ; MAXIMUM LENGTH + PHA + _ISSTR ]4 + JSR SUBINS + <<< diff --git a/disks/disk5_strings/T.SUBCOPY.SUB b/source/disk5_strings/T.SUBCOPY.SUB similarity index 100% rename from disks/disk5_strings/T.SUBCOPY.SUB rename to source/disk5_strings/T.SUBCOPY.SUB diff --git a/source/disk5_strings/T.SUBCOPY.SUB.MIN b/source/disk5_strings/T.SUBCOPY.SUB.MIN new file mode 100644 index 0000000..8afe83d --- /dev/null +++ b/source/disk5_strings/T.SUBCOPY.SUB.MIN @@ -0,0 +1,99 @@ +SUBCOPY + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN + PLA + STA :SCNT + STA RETLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #RETURN + STA ADDR2+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA #0 + STA :S2LEN ; DESTINATION LENGTH = 0 + STA :SCERR ; ASSUME NO ERRORS + LDA :SCNT + BEQ :OKEXIT ; BR IF 0 BYTES TO COPY, + LDA :MLEN + BEQ :EREXIT ; ERROR EXIT IF SUBSTR HAS + LDA :SINDEX + BEQ :EREXIT ; ERROR EXIT IF START IDX = 0 + LDY #0 + LDA (ADDR1),Y ; + STA :S1LEN ; GET LENGTH OF SOURCE STRING + CMP :SINDEX ; COMPARE TO STARTING INDEX + BCC :EREXIT ; ERROR EXIT IF INDEX TOO BIG + LDA :SINDEX + CLC + ADC :SCNT + BCS :RECALC + TAX ; BR IF INDEX + COUNT > 255 + DEX + CPX :S1LEN + BCC :CNT10K ; BR IF IND + CNT - 1 < S1LEN + BEQ :CNT10K ; OR EQUAL +:RECALC + LDA :S1LEN ; RECALCULATE COUNT + SEC + SBC :SINDEX + STA :SCNT + INC :SCNT ; CNT = S1LEN - IND + 1 + LDA #$0FF + STA :SCERR ; INDICATE TRUNCATION +:CNT10K + LDA :SCNT + CMP :MLEN ; IF CNT > M SUBSTR LEN ? + BCC :CNT20K ; BR IF CNT < MAXLEN + BEQ :CNT20K ; BR IF CNT = MAXLEN + LDA :MLEN + STA :SCNT ; ELSE CNT = MAXLEN + LDA #$0FF + STA :SCERR ; INDICATE DEST STR OVERFLOW +:CNT20K + LDX :SCNT ; REG X WILL BE COUNTER + BEQ :EREXIT ; ERR IF 0 + LDA #1 ; START WITH 1ST CHAR IN DEST + STA :S2LEN ; RUNNING DEST INDEX + ; __SINDEX IS SRC INDEX +:MVLP + LDY :SINDEX + LDA (ADDR1),Y ; GET NEXT SRC CHAR + LDY :S2LEN + STA (ADDR2),Y ; MOVE NEXT CHAR TO DEST + INC :SINDEX ; INC SRC INDEX + INC :S2LEN ; INC DEST INDEX + DEX ; DECREMENT COUNTER + BNE :MVLP ; CONT UNTIL CNT = 0 + DEC :S2LEN ; SUBSTR LEN=FINAL DEST IND-1 + LDA :SCERR ; CHECK FOR ANY ERRORS + BNE :EREXIT ; BR IF STR TRUNCATED OR OVERFLOW +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC +:EXIT + LDA :S2LEN + LDY #0 + STA (ADDR2),Y + STA RETLEN + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SCERR DS 1 diff --git a/disks/disk5_strings/T.SUBDEL.SUB b/source/disk5_strings/T.SUBDEL.SUB similarity index 100% rename from disks/disk5_strings/T.SUBDEL.SUB rename to source/disk5_strings/T.SUBDEL.SUB diff --git a/source/disk5_strings/T.SUBDEL.SUB.MIN b/source/disk5_strings/T.SUBDEL.SUB.MIN new file mode 100644 index 0000000..977f395 --- /dev/null +++ b/source/disk5_strings/T.SUBDEL.SUB.MIN @@ -0,0 +1,81 @@ +SUBDEL + PLA + TAY + PLA + TAX + PLA + STA :SCNT + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDY #0 + STY :SCERR + LDA (ADDR1),Y + STA :S1LEN ; GET STRING LENGTH + LDA :SCNT + BEQ :OKEXIT + LDA :SINDEX + BEQ :ERREXIT ; ERR EXIT IF START = 0 + LDA :S1LEN + CMP :SINDEX + BCC :ERREXIT + LDA :SINDEX + CLC + ADC :SCNT + BCS :TRUNC ;TRUNCATE IF INDEX + STA :SIDX ; SAVE INDEX + COUNT AS + TAX ; X = INDEX + COUNT + DEX + CPX :S1LEN + BCC :CNTOK ; BR IF IND + CNT - 1 + BEQ :TRUNC ; TRUNC BUT NO ERROR-- + LDA #$0FF + STA :SCERR ; INDICATE ERROR - NOT +:TRUNC + LDX :SINDEX ; STRING LENGTH = + DEX + STX :S1LEN + LDA :SCERR + BEQ :OKEXIT + BNE :ERREXIT +:CNTOK + LDA :S1LEN ; GET STR LENGTH + SEC + SBC :SIDX ; SUBTRACT START INDEX + TAX + INX + BEQ :OKEXIT ; ADD 1 TO INCLUDE LAST +:MVLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y ;MOVE IT DOWN + INC :SINDEX + INC :SIDX ; INC DEST, SRC INDEXES + DEX + BNE :MVLP ; CONT UNTIL CNT = 0 + LDX :SINDEX + DEX ; START LENGTH = FINAL + STX :S1LEN +:OKEXIT + CLC + BCC :EXIT +:ERREXIT + SEC +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y ; SET LENGTH OF STRING + RTS +:S1LEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SCERR DS 1 diff --git a/disks/disk5_strings/T.SUBINS.SUB b/source/disk5_strings/T.SUBINS.SUB similarity index 100% rename from disks/disk5_strings/T.SUBINS.SUB rename to source/disk5_strings/T.SUBINS.SUB diff --git a/source/disk5_strings/T.SUBINS.SUB.MIN b/source/disk5_strings/T.SUBINS.SUB.MIN new file mode 100644 index 0000000..84b4dd2 --- /dev/null +++ b/source/disk5_strings/T.SUBINS.SUB.MIN @@ -0,0 +1,120 @@ +SUBINS + PLA + TAY + PLA + TAX + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA :MLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDA #0 + STA :SCERR ; ASSUME NO ERR WILL BE FOUND + LDY #0 + LDA (ADDR1),Y + STA :S1LEN ; GET LENGTH OF STRING + LDA (ADDR2),Y + STA :S2LEN ; GET LENGTH OF SUB + BNE :IDX0 + JMP :OKEXIT ; EXIT OF NO INSERT/ERR +:IDX0 + LDA :SINDEX + BNE :CHKLEN ; BR OF INDEX NOT 0 + JMP :EREXIT ; ELSE ERROR EXIT +:CHKLEN + LDA :S2LEN ; GET SUBSTR LENGTH + CLC + ADC :S1LEN + BCS :TRUNC ;TRUN IF S1+S2 LENGTH > 255 + CMP :MLEN ; + BCC :IDXLEN ; BR IF S1+S2 LEN < MAX LENGTH + BEQ :IDXLEN ; BR IF EQUAL +:TRUNC + LDA :MLEN ; SUBSTR LEN = MLEN - STR LEN + SEC + SBC :S1LEN + BCC :EREXIT + BEQ :EREXIT ; ERR IF MLEN < STR LEN OR 0 + STA :S2LEN + LDA #$0FF + STA :SCERR ; INDICATE SUBSTR WAS TRUNCATED +:IDXLEN + LDA :S1LEN + CMP :SINDEX ; + BCS :LENOK ; BR IF INDEX WITHIN STR + LDX :S1LEN ; ELSE CONCAT SUB AT END OF STR + INX + STX :SINDEX ; START RIGHT AFTER END OF STR + LDA #$0FF + STA :SCERR ; INDICATE ERR IN INSERT + LDA :S1LEN + CLC + ADC :S2LEN + STA :S1LEN ; ADD LENGTHS TOGETHER + JMP :MVESUB ; PERFORM MOVE, NOTHING ELSE TODO +:LENOK + LDA :S1LEN + SEC + SBC :SINDEX + TAX + INX ; X= NUM OF CHARS TO MOV + LDA :S1LEN + STA :SIDX ; SRC ENDS AT ORIG STR END + CLC + ADC :S2LEN + STA :SBIDX ; DEST ENDS FURTHER BY SUB LEN + STA :S1LEN ; SET NEW LENGTH TO THIS ALSO +:OPNLP + LDY :SIDX + LDA (ADDR1),Y + LDY :SBIDX + STA (ADDR1),Y ; MOVE IT UP IN MEM + DEC :SIDX + DEC :SBIDX ; DE DEST IDX, COUNTER + DEX + BNE :OPNLP ; CONT UNTIL COUNTER = 0 +:MVESUB + LDA #1 + STA :SIDX + ; START AT INDEX IN THE STRING + LDX :S2LEN ; X = NUM OF CHARS TO MOVE +:MVELP + LDY :SIDX + LDA (ADDR2),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y + INC :SIDX ; INC SUBSTR INDEX + INC :SINDEX ; INC STR INDEX + DEX ; DEC COUNTER + BNE :MVELP ; CONT UNTIL COUNTER = 0 + LDA :SCERR ; GET ERROR FLAG + BNE :EREXIT ; BR IF SUBSTR WAS TRUNCED +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC ; ERROR EXIT +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:SUBLEN DS 1 +:MLEN DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SBIDX DS 1 +:SCERR DS 1 diff --git a/disks/disk5_strings/T.SUBPOS.SUB b/source/disk5_strings/T.SUBPOS.SUB similarity index 100% rename from disks/disk5_strings/T.SUBPOS.SUB rename to source/disk5_strings/T.SUBPOS.SUB diff --git a/source/disk5_strings/T.SUBPOS.SUB.MIN b/source/disk5_strings/T.SUBPOS.SUB.MIN new file mode 100644 index 0000000..4e15875 --- /dev/null +++ b/source/disk5_strings/T.SUBPOS.SUB.MIN @@ -0,0 +1,78 @@ +SUBPOS + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA +:POS + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING + BEQ :NOTFND ; EXIT IF LENGTH = 0 + STA :SLEN + LDA (ADDR2),Y ; GET SUBSTR LENGTH + BEQ :NOTFND ; EXIT IF SUB LENGTH = 0 + STA :SUBLEN + LDA :SUBLEN + CMP :SLEN + BEQ :LENOK + BCS :NOTFND ; CANNOT FIND SUBSTR IF +:LENOK + LDA #1 + STA :SINDEX ; START LOOKING AT FIRST + ; CHARACTER OF STRING + LDA :SLEN ; CONT UNTIL REMAINING STR + ; TOO SHORT + SEC ; COUNT=STR LEN - SUB LEN+1 + SBC :SUBLEN + STA :SCOUNT + INC :SCOUNT +:SLP1 + LDA :SINDEX + STA :SIDX ; START STR AT INDEX + LDA #1 + STA :SUBIDX ; START SUB IND AT 1 +:CMPLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR FROM STR + LDY :SUBIDX + CMP (ADDR2),Y ; COMPARE TO NEXT SUB CHAR + BNE :SLP2 ; BR IF SUB NOT HERE + LDY :SUBIDX + CPY :SUBLEN ; TEST IF WE ARE DONE + BEQ :FOUND ; BR IF ALL CHARS WERE EQUAL + INY ; ELSE INC TO NEXT CHAR + STY :SUBIDX + INC :SIDX + JMP :CMPLP ; CONTINUE +:SLP2 + INC :SINDEX ; INCREMENT INDEX + DEC :SCOUNT ; DEC COUNT + BNE :SLP1 ; BR IF NOT DONE + BEQ :NOTFND ; ELSE EXIT TO NOT FOUND +:FOUND + LDA :SINDEX ; FOUND, A = STARTING IDX + JMP :EXIT +:NOTFND + LDA #0 ; SUB NOT FOUND, A=0 +:EXIT + STA RETURN + LDY #1 + STY RETLEN + RTS +:SLEN DS 1 +:SUBLEN DS 1 +:SINDEX DS 1 +:SUBIDX DS 1 +:SCOUNT DS 1 +:SIDX DS 1 diff --git a/disks/disk6_fileio/FILEIO.DEMO b/source/disk6_fileio/FILEIO.DEMO similarity index 100% rename from disks/disk6_fileio/FILEIO.DEMO rename to source/disk6_fileio/FILEIO.DEMO diff --git a/disks/disk6_fileio/FILEIO.DEMO.S b/source/disk6_fileio/FILEIO.DEMO.S similarity index 100% rename from disks/disk6_fileio/FILEIO.DEMO.S rename to source/disk6_fileio/FILEIO.DEMO.S diff --git a/source/disk6_fileio/MAKEEXEC b/source/disk6_fileio/MAKEEXEC new file mode 100644 index 0000000..f8d2cfd --- /dev/null +++ b/source/disk6_fileio/MAKEEXEC @@ -0,0 +1,8 @@ + 10 HOME + 20 PRINT "BUILDING EXEC FILE..." + 30 PRINT CHR$ (4);"OPEN RUNDEMO.EXEC" + 40 PRINT CHR$ (4);"WRITE RUNDEMO.EXEC" + 50 PRINT "BLOAD FILEIO.DEMO" + 60 PRINT "CALL -151" + 70 PRINT "6000G" + 80 PRINT CHR$ (4);"CLOSE RUNDEMO.EXEC" diff --git a/disks/disk6_fileio/MINIFY b/source/disk6_fileio/MINIFY similarity index 100% rename from disks/disk6_fileio/MINIFY rename to source/disk6_fileio/MINIFY diff --git a/disks/disk6_fileio/RUNDEMO.EXEC b/source/disk6_fileio/RUNDEMO.EXEC similarity index 100% rename from disks/disk6_fileio/RUNDEMO.EXEC rename to source/disk6_fileio/RUNDEMO.EXEC diff --git a/disks/disk6_fileio/T.BINLOAD.SUB b/source/disk6_fileio/T.BINLOAD.SUB similarity index 100% rename from disks/disk6_fileio/T.BINLOAD.SUB rename to source/disk6_fileio/T.BINLOAD.SUB diff --git a/source/disk6_fileio/T.BINLOAD.SUB.MIN b/source/disk6_fileio/T.BINLOAD.SUB.MIN new file mode 100644 index 0000000..8986bc7 --- /dev/null +++ b/source/disk6_fileio/T.BINLOAD.SUB.MIN @@ -0,0 +1,69 @@ +BINLOAD + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$CC ; L + JSR FCOUT + LDA #$CF ; O + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$C4 ; D + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINLOAD (BLOAD MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/disks/disk6_fileio/T.BINSAVE.SUB b/source/disk6_fileio/T.BINSAVE.SUB similarity index 100% rename from disks/disk6_fileio/T.BINSAVE.SUB rename to source/disk6_fileio/T.BINSAVE.SUB diff --git a/source/disk6_fileio/T.BINSAVE.SUB.MIN b/source/disk6_fileio/T.BINSAVE.SUB.MIN new file mode 100644 index 0000000..e848e23 --- /dev/null +++ b/source/disk6_fileio/T.BINSAVE.SUB.MIN @@ -0,0 +1,69 @@ +BINSAVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERROR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$D3 ; S + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$D6 ; V + JSR FCOUT + LDA #$C5 ; E + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINSAVE (BSAV MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/disks/disk6_fileio/T.DISKOP.SUB b/source/disk6_fileio/T.DISKOP.SUB similarity index 100% rename from disks/disk6_fileio/T.DISKOP.SUB rename to source/disk6_fileio/T.DISKOP.SUB diff --git a/source/disk6_fileio/T.DISKOP.SUB.MIN b/source/disk6_fileio/T.DISKOP.SUB.MIN new file mode 100644 index 0000000..df1e7aa --- /dev/null +++ b/source/disk6_fileio/T.DISKOP.SUB.MIN @@ -0,0 +1,12 @@ +DISKOP +:CLEAR + LDA #00 + STA IOB_EVOL + LDA #>IOB + LDY #]1 + PHA + LDA #<]1 + PHA + JSR FPSTR ; PRINT STRING + FIN + <<< +FINP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR FINPUT + <<< +SLOT MAC + LDA ]1 + STA SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH ; MUL BY 16 + LDA SCRATCH + STA IOB_SLOT + <<< +DRIVE MAC + LDA ]1 + STA IOB_DRIV + <<< +TRACK MAC + LDA ]1 + STA IOB_TRAK + <<< +SECT MAC + LDA ]1 + STA IOB_SECT + <<< +SETDR MAC + LDA $01 + STA IOB_COMM + <<< +SETDW MAC + LDA $02 + STA IOB_COMM + <<< +DBUFF MAC + LDA #<]1 + STA IOB_BUFL + LDA #>]1 + STA IOB_BUFH + <<< +DRWTS MAC + JSR DISKOP + <<< diff --git a/disks/disk6_fileio/T.FINPUT.SUB b/source/disk6_fileio/T.FINPUT.SUB similarity index 100% rename from disks/disk6_fileio/T.FINPUT.SUB rename to source/disk6_fileio/T.FINPUT.SUB diff --git a/source/disk6_fileio/T.FINPUT.SUB.MIN b/source/disk6_fileio/T.FINPUT.SUB.MIN new file mode 100644 index 0000000..39501bb --- /dev/null +++ b/source/disk6_fileio/T.FINPUT.SUB.MIN @@ -0,0 +1,31 @@ +FINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDX #0 + JSR FGETLN + STX :SLEN + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :SLEN + STA (ADDR1),Y ; PUT LENGTH AT START +:LP + LDA $0200,Y ; KEYBOARD BUFFER + INY + STA (ADDR1),Y + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/disks/disk6_fileio/T.FPRINT.SUB b/source/disk6_fileio/T.FPRINT.SUB similarity index 100% rename from disks/disk6_fileio/T.FPRINT.SUB rename to source/disk6_fileio/T.FPRINT.SUB diff --git a/source/disk6_fileio/T.FPRINT.SUB.MIN b/source/disk6_fileio/T.FPRINT.SUB.MIN new file mode 100644 index 0000000..9f6235c --- /dev/null +++ b/source/disk6_fileio/T.FPRINT.SUB.MIN @@ -0,0 +1,23 @@ +FPRINT + PLA + STA RETADR + PLA + STA RETADR+1 + LDY #$01 ; POINT TO NEXT INSTR +:LP + LDA (RETADR),Y + BEQ :DONE + JSR FCOUT + INY + BNE :LP +:DONE + CLC ; RESTORE INSTR POINTER + TYA + ADC RETADR + STA RETADR + LDA RETADR+1 + ADC #$00 + PHA + LDA RETADR + PHA + RTS diff --git a/disks/disk6_fileio/T.FPSTR.SUB b/source/disk6_fileio/T.FPSTR.SUB similarity index 100% rename from disks/disk6_fileio/T.FPSTR.SUB rename to source/disk6_fileio/T.FPSTR.SUB diff --git a/source/disk6_fileio/T.FPSTR.SUB.MIN b/source/disk6_fileio/T.FPSTR.SUB.MIN new file mode 100644 index 0000000..bea622d --- /dev/null +++ b/source/disk6_fileio/T.FPSTR.SUB.MIN @@ -0,0 +1,25 @@ +FPSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + STA :SLEN +:LP + INY + LDA (ADDR1),Y + JSR FCOUT + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/source/disk6_fileio/T.REQUIRED.HOOKS.MIN b/source/disk6_fileio/T.REQUIRED.HOOKS.MIN new file mode 100644 index 0000000..aad849f --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.HOOKS.MIN @@ -0,0 +1,10 @@ +ADDR1 EQU $06 +ADDR2 EQU $08 +ADDR3 EQU $EB +ADDR4 EQU $ED +SCRATCH EQU $19 +SCRATCH2 EQU $1E +RETADR EQU $FE +RESULT EQU $FA +RESULT2 EQU $FC +REENTRY EQU $3D0 diff --git a/source/disk6_fileio/T.REQUIRED.LIB.MIN b/source/disk6_fileio/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/source/disk6_fileio/T.REQUIRED.MAC.MIN b/source/disk6_fileio/T.REQUIRED.MAC.MIN new file mode 100644 index 0000000..1df52ed --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.MAC.MIN @@ -0,0 +1,94 @@ +_ISLIT MAC + IF #=]1 ; IF ]1 IS A LITERAL + LDA ]1/$100 ; GET HI + PHA + LDA ]1 ; GET LO + PHA + ELSE ; ]1 IS ADDRESS + LDA ]1+1 ; SO GET HIGH VAL FROM ADDR + PHA + LDA ]1 ; THEN LO VAL + PHA + FIN + <<< +_ISSTR MAC + IF "=]1 ; IF ]1 IS A STRING + JMP STRCONT +]STRTMP STR ]1 +STRCONT + LDY #0 + LDA ]STRTMP + STA PARLEN + STA PARAM +]STRLP1 + INY + LDA ]STRTMP,Y + STA PARAM,Y + CPY PARLEN + BNE ]STRLP1 + LDA #>PARAM ; GET HI + PHA + LDA #]1 ; SO GET HIBYTE OF ADDR + PHA + LDA #<]1 ; THEN LOBYTE + PHA + FIN + <<< +_GRET MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __GETRET + <<< +_SPAR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __SETPARM + <<< +_DUMP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]2 + PHA + JSR __DUMP + <<< +_PRNT MAC + JSR __P + ASC ]1 + HEX 00 + <<< +_WAIT MAC + JSR __W + <<< +_RDUMP MAC + JSR __RDMP + <<< +_ERR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]3 + PHA + LDA #<]3 + PHA + LDA #>]4 + PHA + LDA #<]4 + PHA + LDA ]5 + PHA + JSR __ERR + <<< diff --git a/source/disk6_fileio/T.REQUIRED.VARS b/source/disk6_fileio/T.REQUIRED.VARS new file mode 100644 index 0000000..ae2759a --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.VARS @@ -0,0 +1,72 @@ +* +******************************** +* * +* VARIABLES AND SETTINGS * +* * +******************************** +* +* VARIABLE DECLARATIONS ******** +* +** JUMP TABLE SETUP. THIS IS FOR LOADING +** SUBROUTINES INTO MEMORY FOR ACCESS BY +** EXTERNAL EXECUTIONS. NOTE THAT THIS +** SHOULD ALWAYS BE THE VERY FIRST BIT OF +** CODE IN THE PROGRAM SO THAT ITS +** LOCATION IN MEMORY IS EASILY KNOWN. +* +JUMPTBL JMP MAIN_START ; ** ALWAYS ** START WITH + ; JUMP TO MAIN_START + DS 60 ; 20 MORE ENTRIES +* +** 256 BYTES DEDICATED TO RETURN +** VALUES OF VARIABLE LENGTH; CAN BE +** MODIFIED TO SUIT SMALLER OR LARGER +** NEEDS. +* +RETLEN DS 1 ; RETURN VALUE BYTE LENGTH +RETURN DS 256 +* +** 256 BYTE VALUE DEDICATED TO LARGE +** OR VARIABLE LENGTH PARAMETERS. THIS +** CAN ALSO BE CHANGED TO FIT SMALLER OR +** LARGER BOUNDS. +* +PARLEN DS 1 +PARAM DS 256 +* +** ERROR HANDLING +* +ERRSTOP DS 1 +ERRCTRL DS 1 +ERRA DS 1 +ERRX DS 1 +ERRY DS 1 +ERRCARRY DS 1 +ERRNEG DS 1 +ERRZERO DS 1 +ERROVF DS 1 +* +* SETTINGS ********************* +* +MAIN_START +* +** ERROR HANDLING +* +** SET ERRSTOP TO 1 IF YOU WANT THE PROGRAM TO +** HALT WHEN AN ERROR IS CAUGHT +* + LDA #1 + STA ERRSTOP +* +** SET ERRCTRL TO 1 IF YOU WANT ERROR CATCHING ON +** IN THE FIRST PLACE. HAVING THIS TURNED OFF WILL +** SAVE A FEW CYCLES, BUT POSSIBLY AT THE EXPENSE +** OF YOUR FRUSTRATION. CAN BE TURNED ON LATER THOUGH. +* + LDA #1 + STA ERRCTRL +* +* +* +* +* diff --git a/disks/disk6_fileio/T.TEST b/source/disk6_fileio/T.TEST similarity index 100% rename from disks/disk6_fileio/T.TEST rename to source/disk6_fileio/T.TEST diff --git a/disks/disk6_fileio/T.TEXTFILE b/source/disk6_fileio/T.TEXTFILE similarity index 100% rename from disks/disk6_fileio/T.TEXTFILE rename to source/disk6_fileio/T.TEXTFILE diff --git a/disks/disk6_fileio/TEST b/source/disk6_fileio/TEST similarity index 100% rename from disks/disk6_fileio/TEST rename to source/disk6_fileio/TEST diff --git a/disks/disk6_fileio/TEXT1 b/source/disk6_fileio/TEXT1 similarity index 100% rename from disks/disk6_fileio/TEXT1 rename to source/disk6_fileio/TEXT1