From eb2b7deea0e4bb55b45b3bde943e9e22a3284397 Mon Sep 17 00:00:00 2001 From: nathanriggs Date: Sat, 10 Nov 2018 17:41:05 -0500 Subject: [PATCH] added disk3: Array Routines - 16bit array subroutines will be added here at a later date. - Strings library separated from arrays on its own disk in anticipation of larger libraries. --- README.md | 16 +- README.md~ | 8 +- disks/disk3_arrays/ARRAYS.DEMO | 476 +++++++++ disks/disk3_arrays/ARRAYS.DEMO.S | 1600 ++++++++++++++++++++++++++++ disks/disk3_arrays/T.ARRAYS.DEMO | 187 ++++ disks/disk3_arrays/T.ARRAYS.HOOKS | 9 + disks/disk3_arrays/T.ARRAYS.MAC | 234 ++++ disks/disk3_arrays/T.ARRAYS81.AGET | 145 +++ disks/disk3_arrays/T.ARRAYS81.APUT | 134 +++ disks/disk3_arrays/T.ARRAYS81.DIM | 181 ++++ disks/disk3_arrays/T.ARRAYS81.LIB | 498 +++++++++ disks/disk3_arrays/T.ARRAYS82.AGET | 163 +++ disks/disk3_arrays/T.ARRAYS82.APUT | 132 +++ disks/disk3_arrays/T.ARRAYS82.DIM | 214 ++++ disks/disk3_arrays/T.ARRAYS82.LIB | 547 ++++++++++ disks/disk3_arrays/T.DECS | 46 + disks/disk3_arrays/T.STRINGS.MAC | 122 +++ 17 files changed, 4702 insertions(+), 10 deletions(-) create mode 100644 disks/disk3_arrays/ARRAYS.DEMO create mode 100644 disks/disk3_arrays/ARRAYS.DEMO.S create mode 100644 disks/disk3_arrays/T.ARRAYS.DEMO create mode 100644 disks/disk3_arrays/T.ARRAYS.HOOKS create mode 100644 disks/disk3_arrays/T.ARRAYS.MAC create mode 100644 disks/disk3_arrays/T.ARRAYS81.AGET create mode 100644 disks/disk3_arrays/T.ARRAYS81.APUT create mode 100644 disks/disk3_arrays/T.ARRAYS81.DIM create mode 100644 disks/disk3_arrays/T.ARRAYS81.LIB create mode 100644 disks/disk3_arrays/T.ARRAYS82.AGET create mode 100644 disks/disk3_arrays/T.ARRAYS82.APUT create mode 100644 disks/disk3_arrays/T.ARRAYS82.DIM create mode 100644 disks/disk3_arrays/T.ARRAYS82.LIB create mode 100644 disks/disk3_arrays/T.DECS create mode 100644 disks/disk3_arrays/T.STRINGS.MAC diff --git a/README.md b/README.md index 52f2037..bac7cdb 100644 --- a/README.md +++ b/README.md @@ -18,19 +18,20 @@ MATH DISK IO DISK * fileio.lib: File Input/Output Library. -* 80colstdio.lib: stdio library for 80-column display. -DATA DISK -* strings.lib: Library for managing strings. -* arrays.lib: library for managing arrays. +ARRAYS DISK +* arrays81.lib: library for managing 1-dimensional 8-bit arrays. +* arrays82.lib: library for managing 2-dimensional 8-bit arrays. +* 16-bit array libraries will also be on this disk in the future + +STRINGS DISK +* strings.lib: Library for managing strings. LORES DISK * lores.lib: Library for fast(er) graphics in low resolution mode. -* dublores.lib: Library for double-low-resolution graphics. HIRES DISK * hires.lib: Library for fast(er) graphics in high resolution mode. -* dubhires.lib: Library for handling graphics in double-high-resolution mode. HIRES DISK 2 * hireschar.lib: High Resolution mode text character library. @@ -46,3 +47,6 @@ UTIL DISK FPMATH DISK 1 (and maybe a second one) * fpmath.lib: Floating-point math library +80COL DISK +* stdio library and some routines for double lores and double hires + diff --git a/README.md~ b/README.md~ index 80326e3..52f2037 100644 --- a/README.md~ +++ b/README.md~ @@ -13,8 +13,8 @@ CORE DISK * common.lib: Common, useful subroutines: memory swaps, etc. MATH DISK -* math.lib: Integer Math Library. -* fpmath.lib: Floating-point Math Library. +* math8.lib: 8-bit Integer Math Library. +* math16.lib: 16-bit Integer Math Library. IO DISK * fileio.lib: File Input/Output Library. @@ -43,6 +43,6 @@ MISC DISK UTIL DISK * various useful utilities -COMPACT DISK 1 (and maybe a second one) -* every routine, separately packaged, without comments. +FPMATH DISK 1 (and maybe a second one) +* fpmath.lib: Floating-point math library diff --git a/disks/disk3_arrays/ARRAYS.DEMO b/disks/disk3_arrays/ARRAYS.DEMO new file mode 100644 index 0000000..cc12ae0 --- /dev/null +++ b/disks/disk3_arrays/ARRAYS.DEMO @@ -0,0 +1,476 @@ +6000- A9 03 LDA #$03 +6002- 48 PHA +6003- A9 00 LDA #$00 +6005- 48 PHA +6006- A9 0A LDA #$0A +6008- 48 PHA +6009- A9 02 LDA #$02 +600B- 48 PHA +600C- 20 6A 60 JSR $606A +600F- A9 03 LDA #$03 +6011- 48 PHA +6012- A9 00 LDA #$00 +6014- 48 PHA +6015- A9 05 LDA #$05 +6017- 48 PHA +6018- 20 EE 60 JSR $60EE +601B- A9 03 LDA #$03 +601D- 48 PHA +601E- A9 00 LDA #$00 +6020- 48 PHA +6021- A9 03 LDA #$03 +6023- 48 PHA +6024- A9 00 LDA #$00 +6026- 48 PHA +6027- A9 05 LDA #$05 +6029- 48 PHA +602A- 20 5E 61 JSR $615E +602D- A9 03 LDA #$03 +602F- 48 PHA +6030- A9 00 LDA #$00 +6032- 48 PHA +6033- A9 04 LDA #$04 +6035- 48 PHA +6036- A9 04 LDA #$04 +6038- 48 PHA +6039- A9 01 LDA #$01 +603B- 48 PHA +603C- 20 B2 61 JSR $61B2 +603F- A9 03 LDA #$03 +6041- 48 PHA +6042- A9 00 LDA #$00 +6044- 48 PHA +6045- A9 02 LDA #$02 +6047- 48 PHA +6048- A9 03 LDA #$03 +604A- 48 PHA +604B- 20 7E 62 JSR $627E +604E- A9 03 LDA #$03 +6050- 48 PHA +6051- A9 00 LDA #$00 +6053- 48 PHA +6054- A9 03 LDA #$03 +6056- 48 PHA +6057- A9 00 LDA #$00 +6059- 48 PHA +605A- A9 02 LDA #$02 +605C- 48 PHA +605D- A9 03 LDA #$03 +605F- 48 PHA +6060- 20 21 63 JSR $6321 +6063- 00 BRK +6064- 4C D0 03 JMP $03D0 +6067- 4C AF 61 JMP $61AF +606A- 68 PLA +606B- 85 FE STA $FE +606D- 68 PLA +606E- 85 FF STA $FF +6070- 68 PLA +6071- 8D EB 60 STA $60EB +6074- 8D ED 60 STA $60ED +6077- 68 PLA +6078- 8D EA 60 STA $60EA +607B- 8D EC 60 STA $60EC +607E- 68 PLA +607F- 85 06 STA $06 +6081- 68 PLA +6082- 85 07 STA $07 +6084- A0 00 LDY #$00 +6086- A2 00 LDX #$00 +6088- A9 00 LDA #$00 +608A- 84 19 STY $19 +608C- F0 0F BEQ $609D +608E- 18 CLC +608F- 6D EA 60 ADC $60EA +6092- AA TAX +6093- 98 TYA +6094- 65 19 ADC $19 +6096- A8 TAY +6097- 8A TXA +6098- 0E EA 60 ASL $60EA +609B- 26 19 ROL $19 +609D- 4E EB 60 LSR $60EB +60A0- B0 EC BCS $608E +60A2- D0 F4 BNE $6098 +60A4- 18 CLC +60A5- E8 INX +60A6- E8 INX +60A7- 90 01 BCC $60AA +60A9- C8 INY +60AA- 8E E8 60 STX $60E8 +60AD- 8C E9 60 STY $60E9 +60B0- A9 00 LDA #$00 +60B2- AE E9 60 LDX $60E9 +60B5- F0 0C BEQ $60C3 +60B7- A0 00 LDY #$00 +60B9- 91 06 STA ($06),Y +60BB- C8 INY +60BC- D0 FB BNE $60B9 +60BE- E6 07 INC $07 +60C0- CA DEX +60C1- D0 F6 BNE $60B9 +60C3- AE E8 60 LDX $60E8 +60C6- F0 08 BEQ $60D0 +60C8- A0 00 LDY #$00 +60CA- 91 06 STA ($06),Y +60CC- C8 INY +60CD- CA DEX +60CE- D0 FA BNE $60CA +60D0- A0 00 LDY #$00 +60D2- AD EC 60 LDA $60EC +60D5- 91 06 STA ($06),Y +60D7- C8 INY +60D8- AD ED 60 LDA $60ED +60DB- 91 06 STA ($06),Y +60DD- A5 FF LDA $FF +60DF- 48 PHA +60E0- A5 FE LDA $FE +60E2- 48 PHA +60E3- A4 06 LDY $06 +60E5- A6 07 LDX $07 +60E7- 60 RTS +60E8- 00 BRK +60E9- 00 BRK +60EA- 00 BRK +60EB- 00 BRK +60EC- 00 BRK +60ED- 00 BRK +60EE- 68 PLA +60EF- 85 FE STA $FE +60F1- 68 PLA +60F2- 85 FF STA $FF +60F4- 68 PLA +60F5- 8D 5B 61 STA $615B +60F8- 68 PLA +60F9- 85 06 STA $06 +60FB- 68 PLA +60FC- 85 07 STA $07 +60FE- A0 01 LDY #$01 +6100- B1 06 LDA ($06),Y +6102- 8D 5D 61 STA $615D +6105- A0 00 LDY #$00 +6107- A9 00 LDA #$00 +6109- A8 TAY +610A- 84 19 STY $19 +610C- F0 0F BEQ $611D +610E- 18 CLC +610F- 6D 5B 61 ADC $615B +6112- AA TAX +6113- 98 TYA +6114- 65 19 ADC $19 +6116- A8 TAY +6117- 8A TXA +6118- 0E 5B 61 ASL $615B +611B- 26 19 ROL $19 +611D- 4E 5D 61 LSR $615D +6120- B0 EC BCS $610E +6122- D0 F4 BNE $6118 +6124- 8E 5B 61 STX $615B +6127- 8C 5C 61 STY $615C +612A- 18 CLC +612B- A9 02 LDA #$02 +612D- 6D 5B 61 ADC $615B +6130- 8D 59 61 STA $6159 +6133- A9 00 LDA #$00 +6135- 6D 5C 61 ADC $615C +6138- 8D 5A 61 STA $615A +613B- 18 CLC +613C- AD 59 61 LDA $6159 +613F- 65 06 ADC $06 +6141- 8D 59 61 STA $6159 +6144- AD 5A 61 LDA $615A +6147- 65 07 ADC $07 +6149- 8D 5A 61 STA $615A +614C- AC 59 61 LDY $6159 +614F- AE 5A 61 LDX $615A +6152- A5 FF LDA $FF +6154- 48 PHA +6155- A5 FE LDA $FE +6157- 48 PHA +6158- 60 RTS +6159- 00 BRK +615A- 00 BRK +615B- 00 BRK +615C- 00 BRK +615D- 00 BRK +615E- 68 PLA +615F- 8D AA 61 STA $61AA +6162- 68 PLA +6163- 8D AB 61 STA $61AB +6166- 68 PLA +6167- 8D AE 61 STA $61AE +616A- 68 PLA +616B- 85 ED STA $ED +616D- 68 PLA +616E- 85 EE STA $EE +6170- 68 PLA +6171- 85 EB STA $EB +6173- 68 PLA +6174- 85 EC STA $EC +6176- A5 EE LDA $EE +6178- 48 PHA +6179- A5 ED LDA $ED +617B- 48 PHA +617C- AD AE 61 LDA $61AE +617F- 48 PHA +6180- 20 EE 60 JSR $60EE +6183- 84 08 STY $08 +6185- 86 09 STX $09 +6187- A0 01 LDY #$01 +6189- B1 ED LDA ($ED),Y +618B- 8D AC 61 STA $61AC +618E- A0 00 LDY #$00 +6190- B1 EB LDA ($EB),Y +6192- 91 08 STA ($08),Y +6194- C8 INY +6195- CC AC 61 CPY $61AC +6198- D0 F6 BNE $6190 +619A- AD AB 61 LDA $61AB +619D- 48 PHA +619E- AD AA 61 LDA $61AA +61A1- 48 PHA +61A2- A6 09 LDX $09 +61A4- A4 08 LDY $08 +61A6- AD AC 61 LDA $61AC +61A9- 60 RTS +61AA- 00 BRK +61AB- 00 BRK +61AC- 00 BRK +61AD- 00 BRK +61AE- 00 BRK +61AF- 4C 7A 63 JMP $637A +61B2- 68 PLA +61B3- 85 FE STA $FE +61B5- 68 PLA +61B6- 85 FF STA $FF +61B8- 68 PLA +61B9- 8D 7C 62 STA $627C +61BC- 68 PLA +61BD- 8D 77 62 STA $6277 +61C0- 8D 79 62 STA $6279 +61C3- 68 PLA +61C4- 8D 76 62 STA $6276 +61C7- 8D 78 62 STA $6278 +61CA- 68 PLA +61CB- 85 06 STA $06 +61CD- 68 PLA +61CE- 85 07 STA $07 +61D0- A9 00 LDA #$00 +61D2- A8 TAY +61D3- 84 19 STY $19 +61D5- F0 0F BEQ $61E6 +61D7- 18 CLC +61D8- 6D 76 62 ADC $6276 +61DB- AA TAX +61DC- 98 TYA +61DD- 65 19 ADC $19 +61DF- A8 TAY +61E0- 8A TXA +61E1- 0E 76 62 ASL $6276 +61E4- 26 19 ROL $19 +61E6- 4E 77 62 LSR $6277 +61E9- B0 EC BCS $61D7 +61EB- D0 F4 BNE $61E1 +61ED- 8E 7A 62 STX $627A +61F0- 8C 7B 62 STY $627B +61F3- A9 00 LDA #$00 +61F5- 8D 74 62 STA $6274 +61F8- 8D 75 62 STA $6275 +61FB- A2 10 LDX #$10 +61FD- 4E 7B 62 LSR $627B +6200- 6E 7A 62 ROR $627A +6203- 90 10 BCC $6215 +6205- AD 74 62 LDA $6274 +6208- 18 CLC +6209- 6D 7C 62 ADC $627C +620C- 8D 74 62 STA $6274 +620F- AD 75 62 LDA $6275 +6212- 6D 7D 62 ADC $627D +6215- 6A ROR +6216- 8D 75 62 STA $6275 +6219- 6E 74 62 ROR $6274 +621C- 6E 73 62 ROR $6273 +621F- 6E 72 62 ROR $6272 +6222- CA DEX +6223- D0 D8 BNE $61FD +6225- EE 72 62 INC $6272 +6228- EE 72 62 INC $6272 +622B- EE 72 62 INC $6272 +622E- AE 72 62 LDX $6272 +6231- AC 73 62 LDY $6273 +6234- A9 00 LDA #$00 +6236- AE 73 62 LDX $6273 +6239- F0 0C BEQ $6247 +623B- A0 00 LDY #$00 +623D- 91 06 STA ($06),Y +623F- C8 INY +6240- D0 FB BNE $623D +6242- E6 07 INC $07 +6244- CA DEX +6245- D0 F6 BNE $623D +6247- AE 72 62 LDX $6272 +624A- F0 08 BEQ $6254 +624C- A0 00 LDY #$00 +624E- 91 06 STA ($06),Y +6250- C8 INY +6251- CA DEX +6252- D0 FA BNE $624E +6254- A0 00 LDY #$00 +6256- AD 78 62 LDA $6278 +6259- 91 06 STA ($06),Y +625B- C8 INY +625C- AD 79 62 LDA $6279 +625F- 91 06 STA ($06),Y +6261- C8 INY +6262- AD 7C 62 LDA $627C +6265- 91 06 STA ($06),Y +6267- A5 FF LDA $FF +6269- 48 PHA +626A- A5 FE LDA $FE +626C- 48 PHA +626D- A4 06 LDY $06 +626F- A6 07 LDX $07 +6271- 60 RTS +6272- 00 BRK +6273- 00 BRK +6274- 00 BRK +6275- 00 BRK +6276- 00 BRK +6277- 00 BRK +6278- 00 BRK +6279- 00 BRK +627A- 00 BRK +627B- 00 BRK +627C- 00 BRK +627D- 00 BRK +627E- 68 PLA +627F- 85 FE STA $FE +6281- 68 PLA +6282- 85 FF STA $FF +6284- 68 PLA +6285- 8D 17 63 STA $6317 +6288- 68 PLA +6289- 8D 15 63 STA $6315 +628C- 68 PLA +628D- 85 06 STA $06 +628F- 68 PLA +6290- 85 07 STA $07 +6292- A0 02 LDY #$02 +6294- B1 06 LDA ($06),Y +6296- 8D 1F 63 STA $631F +6299- A9 00 LDA #$00 +629B- A8 TAY +629C- 84 19 STY $19 +629E- F0 0F BEQ $62AF +62A0- 18 CLC +62A1- 6D 15 63 ADC $6315 +62A4- AA TAX +62A5- 98 TYA +62A6- 65 19 ADC $19 +62A8- A8 TAY +62A9- 8A TXA +62AA- 0E 15 63 ASL $6315 +62AD- 26 19 ROL $19 +62AF- 4E 17 63 LSR $6317 +62B2- B0 EC BCS $62A0 +62B4- D0 F4 BNE $62AA +62B6- 8E 1D 63 STX $631D +62B9- 8C 1E 63 STY $631E +62BC- A9 00 LDA #$00 +62BE- 8D 1B 63 STA $631B +62C1- 8D 1C 63 STA $631C +62C4- A2 10 LDX #$10 +62C6- 4E 1E 63 LSR $631E +62C9- 6E 1D 63 ROR $631D +62CC- 90 10 BCC $62DE +62CE- AD 1B 63 LDA $631B +62D1- 18 CLC +62D2- 6D 1F 63 ADC $631F +62D5- 8D 1B 63 STA $631B +62D8- AD 1C 63 LDA $631C +62DB- 6D 20 63 ADC $6320 +62DE- 6A ROR +62DF- 8D 1C 63 STA $631C +62E2- 6E 1B 63 ROR $631B +62E5- 6E 1A 63 ROR $631A +62E8- 6E 19 63 ROR $6319 +62EB- CA DEX +62EC- D0 D8 BNE $62C6 +62EE- EE 19 63 INC $6319 +62F1- EE 19 63 INC $6319 +62F4- EE 19 63 INC $6319 +62F7- 18 CLC +62F8- AD 19 63 LDA $6319 +62FB- 65 06 ADC $06 +62FD- 8D 19 63 STA $6319 +6300- AD 1A 63 LDA $631A +6303- 65 07 ADC $07 +6305- 8D 1A 63 STA $631A +6308- AC 19 63 LDY $6319 +630B- AE 1A 63 LDX $631A +630E- A5 FF LDA $FF +6310- 48 PHA +6311- A5 FE LDA $FE +6313- 48 PHA +6314- 60 RTS +6315- 00 BRK +6316- 00 BRK +6317- 00 BRK +6318- 00 BRK +6319- 00 BRK +631A- 00 BRK +631B- 00 BRK +631C- 00 BRK +631D- 00 BRK +631E- 00 BRK +631F- 00 BRK +6320- 00 BRK +6321- 68 PLA +6322- 8D 75 63 STA $6375 +6325- 68 PLA +6326- 8D 76 63 STA $6376 +6329- 68 PLA +632A- 8D 79 63 STA $6379 +632D- 68 PLA +632E- 8D 78 63 STA $6378 +6331- 68 PLA +6332- 85 ED STA $ED +6334- 68 PLA +6335- 85 EE STA $EE +6337- 68 PLA +6338- 85 EB STA $EB +633A- 68 PLA +633B- 85 EC STA $EC +633D- A5 EE LDA $EE +633F- 48 PHA +6340- A5 ED LDA $ED +6342- 48 PHA +6343- AD 78 63 LDA $6378 +6346- 48 PHA +6347- AD 79 63 LDA $6379 +634A- 48 PHA +634B- 20 7E 62 JSR $627E +634E- 84 08 STY $08 +6350- 86 09 STX $09 +6352- A0 02 LDY #$02 +6354- B1 ED LDA ($ED),Y +6356- 8D 77 63 STA $6377 +6359- A0 00 LDY #$00 +635B- B1 EB LDA ($EB),Y +635D- 91 08 STA ($08),Y +635F- C8 INY +6360- CC 77 63 CPY $6377 +6363- D0 F6 BNE $635B +6365- AD 76 63 LDA $6376 +6368- 48 PHA +6369- AD 75 63 LDA $6375 +636C- 48 PHA +636D- A6 09 LDX $09 +636F- A4 08 LDY $08 +6371- AD 77 63 LDA $6377 +6374- 60 RTS +6375- 00 BRK +6376- 00 BRK +6377- 00 BRK +6378- 00 BRK +6379- 00 BRK diff --git a/disks/disk3_arrays/ARRAYS.DEMO.S b/disks/disk3_arrays/ARRAYS.DEMO.S new file mode 100644 index 0000000..eef4d05 --- /dev/null +++ b/disks/disk3_arrays/ARRAYS.DEMO.S @@ -0,0 +1,1600 @@ +0901- AA TAX +0902- 8D AA AA STA $AAAA +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- AA TAX +0922- AA TAX +0923- 8D AA 20 STA $20AA +0926- 20 20 20 JSR $2020 +0929- 20 20 20 JSR $2020 +092C- 20 20 20 JSR $2020 +092F- 20 20 20 JSR $2020 +0932- 20 20 20 JSR $2020 +0935- 20 20 20 JSR $2020 +0938- 20 20 20 JSR $2020 +093B- 20 20 20 JSR $2020 +093E- 20 20 20 JSR $2020 +0941- 20 20 AA JSR $AA20 +0944- 8D AA 20 STA $20AA +0947- 20 20 20 JSR $2020 +094A- 20 20 AD JSR $AD20 +094D- BC 20 C1 LDY $C120,X +0950- D2 D2 CMP ($D2) +0952- C1 D9 CMP ($D9,X) +0954- D3 ??? +0955- 20 C4 C5 JSR $C5C4 +0958- CD CF 20 CMP $20CF +095B- BE AD 20 LDX $20AD,Y +095E- 20 20 20 JSR $2020 +0961- 20 20 20 JSR $2020 +0964- AA TAX +0965- 8D AA 20 STA $20AA +0968- 20 20 20 JSR $2020 +096B- 20 20 20 JSR $2020 +096E- 20 20 20 JSR $2020 +0971- 20 20 20 JSR $2020 +0974- 20 20 20 JSR $2020 +0977- 20 20 20 JSR $2020 +097A- 20 20 20 JSR $2020 +097D- 20 20 20 JSR $2020 +0980- 20 20 20 JSR $2020 +0983- 20 20 AA JSR $AA20 +0986- 8D AA 20 STA $20AA +0989- 20 20 20 JSR $2020 +098C- 20 20 20 JSR $2020 +098F- D6 C5 DEC $C5,X +0991- D2 D3 CMP ($D3) +0993- C9 CF CMP #$CF +0995- CE 20 B0 DEC $B020 +0998- B0 AE BCS $0948 +099A- B0 B0 BCS $094C +099C- AE B0 B1 LDX $B1B0 +099F- 20 20 20 JSR $2020 +09A2- 20 20 20 JSR $2020 +09A5- 20 AA 8D JSR $8DAA +09A8- AA TAX +09A9- 20 20 20 JSR $2020 +09AC- 20 20 20 JSR $2020 +09AF- 20 20 20 JSR $2020 +09B2- 20 20 20 JSR $2020 +09B5- 20 20 20 JSR $2020 +09B8- 20 20 20 JSR $2020 +09BB- 20 20 20 JSR $2020 +09BE- 20 20 20 JSR $2020 +09C1- 20 20 20 JSR $2020 +09C4- 20 20 20 JSR $2020 +09C7- AA TAX +09C8- 8D AA 20 STA $20AA +09CB- 20 20 20 JSR $2020 +09CE- 20 20 20 JSR $2020 +09D1- 20 20 B0 JSR $B020 +09D4- B3 ??? +09D5- AF ??? +09D6- B0 B4 BCS $098C +09D8- AF ??? +09D9- B1 B9 LDA ($B9),Y +09DB- B8 CLV +09DC- B0 20 BCS $09FE +09DE- 20 20 20 JSR $2020 +09E1- 20 20 20 JSR $2020 +09E4- 20 20 20 JSR $2020 +09E7- 20 AA 8D JSR $8DAA +09EA- AA TAX +09EB- 20 20 20 JSR $2020 +09EE- 20 20 20 JSR $2020 +09F1- 20 20 20 JSR $2020 +09F4- 20 20 20 JSR $2020 +09F7- 20 20 20 JSR $2020 +09FA- 20 20 20 JSR $2020 +09FD- 20 20 20 JSR $2020 +0A00- 20 20 20 JSR $2020 +0A03- 20 20 20 JSR $2020 +0A06- 20 20 20 JSR $2020 +0A09- AA TAX +0A0A- 8D AA AA STA $AAAA +0A0D- AA TAX +0A0E- AA TAX +0A0F- AA TAX +0A10- AA TAX +0A11- AA TAX +0A12- AA TAX +0A13- AA TAX +0A14- AA TAX +0A15- AA TAX +0A16- AA TAX +0A17- AA TAX +0A18- AA TAX +0A19- AA TAX +0A1A- AA TAX +0A1B- AA TAX +0A1C- AA TAX +0A1D- AA TAX +0A1E- AA TAX +0A1F- AA TAX +0A20- AA TAX +0A21- AA TAX +0A22- AA TAX +0A23- AA TAX +0A24- AA TAX +0A25- AA TAX +0A26- AA TAX +0A27- AA TAX +0A28- AA TAX +0A29- AA TAX +0A2A- AA TAX +0A2B- 8D AA 20 STA $20AA +0A2E- 20 20 20 JSR $2020 +0A31- 20 20 20 JSR $2020 +0A34- 20 20 20 JSR $2020 +0A37- 20 20 20 JSR $2020 +0A3A- 20 20 20 JSR $2020 +0A3D- 20 20 20 JSR $2020 +0A40- 20 20 20 JSR $2020 +0A43- 20 20 20 JSR $2020 +0A46- 20 20 20 JSR $2020 +0A49- 20 20 AA JSR $AA20 +0A4C- 8D AA 20 STA $20AA +0A4F- 20 20 20 JSR $2020 +0A52- 20 20 20 JSR $2020 +0A55- CE C1 D4 DEC $D4C1 +0A58- C8 INY +0A59- C1 CE CMP ($CE,X) +0A5B- 20 C4 AE JSR $AEC4 +0A5E- 20 D2 C9 JSR $C9D2 +0A61- C7 ??? +0A62- C7 ??? +0A63- D3 ??? +0A64- 20 20 20 JSR $2020 +0A67- 20 20 20 JSR $2020 +0A6A- 20 20 AA JSR $AA20 +0A6D- 8D AA 20 STA $20AA +0A70- 20 20 CE JSR $CE20 +0A73- C1 D4 CMP ($D4,X) +0A75- C8 INY +0A76- C1 CE CMP ($CE,X) +0A78- AE D2 C9 LDX $C9D2 +0A7B- C7 ??? +0A7C- C7 ??? +0A7D- D3 ??? +0A7E- C0 CF CPY #$CF +0A80- D5 D4 CMP $D4,X +0A82- CC CF CF CPY $CFCF +0A85- CB ??? +0A86- AE C3 CF LDX $CFC3 +0A89- CD 20 20 CMP $2020 +0A8C- 20 AA 8D JSR $8DAA +0A8F- AA TAX +0A90- 20 20 20 JSR $2020 +0A93- 20 20 20 JSR $2020 +0A96- 20 20 20 JSR $2020 +0A99- 20 20 20 JSR $2020 +0A9C- 20 20 20 JSR $2020 +0A9F- 20 20 20 JSR $2020 +0AA2- 20 20 20 JSR $2020 +0AA5- 20 20 20 JSR $2020 +0AA8- 20 20 20 JSR $2020 +0AAB- 20 20 20 JSR $2020 +0AAE- AA TAX +0AAF- 8D AA AA STA $AAAA +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- 8D AA 8D STA $8DAA +0AD3- AA TAX +0AD4- AA TAX +0AD5- 20 C1 D3 JSR $D3C1 +0AD8- D3 ??? +0AD9- C5 CD CMP $CD +0ADB- C2 ??? +0ADC- CC C5 D2 CPY $D2C5 +0ADF- 20 C4 C9 JSR $C9C4 +0AE2- D2 C5 CMP ($C5) +0AE4- C3 ??? +0AE5- D4 ??? +0AE6- C9 D6 CMP #$D6 +0AE8- C5 D3 CMP $D3 +0AEA- 8D AA 8D STA $8DAA +0AED- A0 C3 LDY #$C3 +0AEF- D9 C3 A0 CMP $A0C3,Y +0AF2- C1 D6 CMP ($D6,X) +0AF4- C5 8D CMP $8D +0AF6- A0 C5 LDY #$C5 +0AF8- D8 CLD +0AF9- D0 A0 BNE $0A9B +0AFB- CF ??? +0AFC- CE CC D9 DEC $D9CC +0AFF- 8D A0 C4 STA $C4A0 +0B02- D3 ??? +0B03- CB ??? +0B04- A0 C1 LDY #$C1 +0B06- D2 D2 CMP ($D2) +0B08- C1 D9 CMP ($D9,X) +0B0A- D3 ??? +0B0B- AE C4 C5 LDX $C5C4 +0B0E- CD CF 8D CMP $8DCF +0B11- AA TAX +0B12- 8D AA E0 STA $E0AA +0B15- E0 E0 CPX #$E0 +0B17- E0 E0 CPX #$E0 +0B19- E0 E0 CPX #$E0 +0B1B- E0 E0 CPX #$E0 +0B1D- E0 E0 CPX #$E0 +0B1F- E0 E0 CPX #$E0 +0B21- E0 E0 CPX #$E0 +0B23- E0 E0 CPX #$E0 +0B25- E0 E0 CPX #$E0 +0B27- E0 E0 CPX #$E0 +0B29- E0 E0 CPX #$E0 +0B2B- E0 E0 CPX #$E0 +0B2D- E0 E0 CPX #$E0 +0B2F- E0 E0 CPX #$E0 +0B31- E0 AA CPX #$AA +0B33- 8D AA 20 STA $20AA +0B36- 20 D4 CF JSR $CFD4 +0B39- D0 20 BNE $0B5B +0B3B- C9 CE CMP #$CE +0B3D- C3 ??? +0B3E- CC D5 C4 CPY $C4D5 +0B41- C5 D3 CMP $D3 +0B43- 20 A8 D0 JSR $D0A8 +0B46- D5 D4 CMP $D4,X +0B48- D3 ??? +0B49- AC 20 CD LDY $CD20 +0B4C- C1 C3 CMP ($C3,X) +0B4E- D2 CF CMP ($CF) +0B50- D3 ??? +0B51- A9 20 LDA #$20 +0B53- AA TAX +0B54- 8D AA AC STA $ACAA +0B57- AC AC AC LDY $ACAC +0B5A- AC AC AC LDY $ACAC +0B5D- AC AC AC LDY $ACAC +0B60- AC AC AC LDY $ACAC +0B63- AC AC AC LDY $ACAC +0B66- AC AC AC LDY $ACAC +0B69- AC AC AC LDY $ACAC +0B6C- AC AC AC LDY $ACAC +0B6F- AC AC AC LDY $ACAC +0B72- AC AC AA LDY $AAAC +0B75- 8D AA 8D STA $8DAA +0B78- A0 D0 LDY #$D0 +0B7A- D5 D4 CMP $D4,X +0B7C- A0 C4 LDY #$C4 +0B7E- C5 C3 CMP $C3 +0B80- D3 ??? +0B81- 8D A0 D5 STA $D5A0 +0B84- D3 ??? +0B85- C5 20 CMP $20 +0B87- C1 D2 CMP ($D2,X) +0B89- D2 C1 CMP ($C1) +0B8B- D9 D3 AE CMP $AED3,Y +0B8E- CD C1 C3 CMP $C3C1 +0B91- 8D AA 8D STA $8DAA +0B94- A0 D0 LDY #$D0 +0B96- D5 D4 CMP $D4,X +0B98- A0 C1 LDY #$C1 +0B9A- D2 D2 CMP ($D2) +0B9C- C1 D9 CMP ($D9,X) +0B9E- D3 ??? +0B9F- AE C8 CF LDX $CFC8 +0BA2- CF ??? +0BA3- CB ??? +0BA4- D3 ??? +0BA5- 8D AA 8D STA $8DAA +0BA8- A0 CF LDY #$CF +0BAA- C2 ??? +0BAB- CA DEX +0BAC- A0 A4 LDY #$A4 +0BAE- C2 ??? +0BAF- C6 C5 DEC $C5 +0BB1- B0 8D BCS $0B40 +0BB3- A0 CF LDY #$CF +0BB5- D2 C7 CMP ($C7) +0BB7- 20 A4 B6 JSR $B6A4 +0BBA- B0 B0 BCS $0B6C +0BBC- B0 8D BCS $0B4B +0BBE- AA TAX +0BBF- 8D AA E0 STA $E0AA +0BC2- E0 E0 CPX #$E0 +0BC4- E0 E0 CPX #$E0 +0BC6- E0 E0 CPX #$E0 +0BC8- E0 E0 CPX #$E0 +0BCA- E0 E0 CPX #$E0 +0BCC- E0 E0 CPX #$E0 +0BCE- E0 E0 CPX #$E0 +0BD0- E0 E0 CPX #$E0 +0BD2- E0 E0 CPX #$E0 +0BD4- E0 E0 CPX #$E0 +0BD6- E0 E0 CPX #$E0 +0BD8- E0 E0 CPX #$E0 +0BDA- E0 E0 CPX #$E0 +0BDC- E0 E0 CPX #$E0 +0BDE- E0 AA CPX #$AA +0BE0- 8D AA 20 STA $20AA +0BE3- 20 20 20 JSR $2020 +0BE6- 20 20 D0 JSR $D020 +0BE9- D2 CF CMP ($CF) +0BEB- C7 ??? +0BEC- D2 C1 CMP ($C1) +0BEE- CD 20 CD CMP $CD20 +0BF1- C1 C9 CMP ($C9,X) +0BF3- CE 20 C2 DEC $C220 +0BF6- CF ??? +0BF7- C4 D9 CPY $D9 +0BF9- 20 20 20 JSR $2020 +0BFC- 20 20 20 JSR $2020 +0BFF- 20 AA 8D JSR $8DAA +0C02- AA TAX +0C03- AC AC AC LDY $ACAC +0C06- AC AC AC LDY $ACAC +0C09- AC AC AC LDY $ACAC +0C0C- AC AC AC LDY $ACAC +0C0F- AC AC AC LDY $ACAC +0C12- AC AC AC LDY $ACAC +0C15- AC AC AC LDY $ACAC +0C18- AC AC AC LDY $ACAC +0C1B- AC AC AC LDY $ACAC +0C1E- AC AC AC LDY $ACAC +0C21- AA TAX +0C22- 8D AA 8D STA $8DAA +0C25- AA TAX +0C26- 8D AA 8D STA $8DAA +0C29- AA TAX +0C2A- AA TAX +0C2B- 20 C2 C9 JSR $C9C2 +0C2E- C7 ??? +0C2F- 20 CC D5 JSR $D5CC +0C32- CD D0 D3 CMP $D3D0 +0C35- 20 AD AD JSR $ADAD +0C38- 20 C8 C9 JSR $C9C8 +0C3B- C7 ??? +0C3C- C8 INY +0C3D- 20 CC C5 JSR $C5CC +0C40- D6 C5 DEC $C5,X +0C42- CC 20 C3 CPY $C320 +0C45- CF ??? +0C46- C4 C5 CPY $C5 +0C48- 8D AA 8D STA $8DAA +0C4B- AA TAX +0C4C- 8D AA AA STA $AAAA +0C4F- 20 C4 C9 JSR $C9C4 +0C52- CD B8 B1 CMP $B1B8 +0C55- 20 C3 CC JSR $CCC3 +0C58- C5 C1 CMP $C1 +0C5A- D2 D3 CMP ($D3) +0C5C- 20 D4 C8 JSR $C8D4 +0C5F- C5 20 CMP $20 +0C61- CD C5 CD CMP $CDC5 +0C64- CF ??? +0C65- D2 D9 CMP ($D9) +0C67- 20 C1 D4 JSR $D4C1 +0C6A- 20 D4 C8 JSR $C8D4 +0C6D- C5 20 CMP $20 +0C6F- D3 ??? +0C70- D0 C5 BNE $0C37 +0C72- C3 ??? +0C73- C9 C6 CMP #$C6 +0C75- C9 C5 CMP #$C5 +0C77- C4 8D CPY $8D +0C79- AA TAX +0C7A- AA TAX +0C7B- 20 CC CF JSR $CFCC +0C7E- C3 ??? +0C7F- C1 D4 CMP ($D4,X) +0C81- C9 CF CMP #$CF +0C83- CE 20 C1 DEC $C120 +0C86- CE C4 20 DEC $20C4 +0C89- D3 ??? +0C8A- C5 D4 CMP $D4 +0C8C- D3 ??? +0C8D- 20 D5 D0 JSR $D0D5 +0C90- 20 D4 C8 JSR $C8D4 +0C93- C5 20 CMP $20 +0C95- C4 C1 CPY $C1 +0C97- D4 ??? +0C98- C1 20 CMP ($20,X) +0C9A- C3 ??? +0C9B- CF ??? +0C9C- CE C6 C9 DEC $C9C6 +0C9F- C7 ??? +0CA0- D5 D2 CMP $D2,X +0CA2- C1 D4 CMP ($D4,X) +0CA4- C9 CF CMP #$CF +0CA6- CE 8D AA DEC $AA8D +0CA9- AA TAX +0CAA- 20 C6 CF JSR $CFC6 +0CAD- D2 20 CMP ($20) +0CAF- C1 CE CMP ($CE,X) +0CB1- 20 C1 D2 JSR $D2C1 +0CB4- D2 C1 CMP ($C1) +0CB6- D9 20 A8 CMP $A820,Y +0CB9- C1 D2 CMP ($D2,X) +0CBB- D2 C1 CMP ($C1) +0CBD- D9 20 CC CMP $CC20,Y +0CC0- C5 CE CMP $CE +0CC2- C7 ??? +0CC3- D4 ??? +0CC4- C8 INY +0CC5- AC 20 C5 LDY $C520 +0CC8- CC C5 CD CPY $CDC5 +0CCB- C5 CE CMP $CE +0CCD- D4 ??? +0CCE- 20 CC C5 JSR $C5CC +0CD1- CE C7 D4 DEC $D4C7 +0CD4- C8 INY +0CD5- AC 20 C4 LDY $C420 +0CD8- C1 D4 CMP ($D4,X) +0CDA- C1 A9 CMP ($A9,X) +0CDC- 8D AA 8D STA $8DAA +0CDF- AA TAX +0CE0- AA TAX +0CE1- 20 CD C1 JSR $C1CD +0CE4- C3 ??? +0CE5- D2 CF CMP ($CF) +0CE7- BA TSX +0CE8- 20 DF C4 JSR $C4DF +0CEB- C9 CD CMP #$CD +0CED- B8 CLV +0CEE- B1 20 LDA ($20),Y +0CF0- A4 B3 LDY $B3 +0CF2- B0 B0 BCS $0CA4 +0CF4- BB ??? +0CF5- A3 ??? +0CF6- B1 B0 LDA ($B0),Y +0CF8- BB ??? +0CF9- A3 ??? +0CFA- B2 8D LDA ($8D) +0CFC- AA TAX +0CFD- 8D A0 CC STA $CCA0 +0D00- C4 C1 CPY $C1 +0D02- A0 A3 LDY #$A3 +0D04- BE A4 B3 LDX $B3A4,Y +0D07- B0 B0 BCS $0CB9 +0D09- A0 BB LDY #$BB +0D0B- 20 C8 C9 JSR $C9C8 +0D0E- C7 ??? +0D0F- C8 INY +0D10- 20 CC CF JSR $CFCC +0D13- C3 ??? +0D14- C1 D4 CMP ($D4,X) +0D16- C9 CF CMP #$CF +0D18- CE 20 C6 DEC $C620 +0D1B- CF ??? +0D1C- D2 20 CMP ($20) +0D1E- C1 D2 CMP ($D2,X) +0D20- D2 C1 CMP ($C1) +0D22- D9 8D A0 CMP $A08D,Y +0D25- D0 C8 BNE $0CEF +0D27- C1 8D CMP ($8D,X) +0D29- A0 CC LDY #$CC +0D2B- C4 C1 CPY $C1 +0D2D- A0 A3 LDY #$A3 +0D2F- BC A4 B3 LDY $B3A4,X +0D32- B0 B0 BCS $0CE4 +0D34- A0 BB LDY #$BB +0D36- 20 CC CF JSR $CFCC +0D39- D7 ??? +0D3A- 20 CC CF JSR $CFCC +0D3D- C3 ??? +0D3E- C1 D4 CMP ($D4,X) +0D40- C9 CF CMP #$CF +0D42- CE 8D A0 DEC $A08D +0D45- D0 C8 BNE $0D0F +0D47- C1 8D CMP ($8D,X) +0D49- A0 CC LDY #$CC +0D4B- C4 C1 CPY $C1 +0D4D- A0 A3 LDY #$A3 +0D4F- B1 B0 LDA ($B0),Y +0D51- A0 BB LDY #$BB +0D53- 20 C1 D2 JSR $D2C1 +0D56- D2 C1 CMP ($C1) +0D58- D9 20 CC CMP $CC20,Y +0D5B- C5 CE CMP $CE +0D5D- C7 ??? +0D5E- D4 ??? +0D5F- C8 INY +0D60- 8D A0 D0 STA $D0A0 +0D63- C8 INY +0D64- C1 8D CMP ($8D,X) +0D66- A0 CC LDY #$CC +0D68- C4 C1 CPY $C1 +0D6A- A0 A3 LDY #$A3 +0D6C- B2 A0 LDA ($A0) +0D6E- BB ??? +0D6F- 20 C5 CC JSR $CCC5 +0D72- C5 CD CMP $CD +0D74- C5 CE CMP $CE +0D76- D4 ??? +0D77- 20 CC C5 JSR $C5CC +0D7A- CE C7 D4 DEC $D4C7 +0D7D- C8 INY +0D7E- 8D A0 D0 STA $D0A0 +0D81- C8 INY +0D82- C1 8D CMP ($8D,X) +0D84- A0 CA LDY #$CA +0D86- D3 ??? +0D87- D2 A0 CMP ($A0) +0D89- C4 C9 CPY $C9 +0D8B- CD B8 B1 CMP $B1B8 +0D8E- 8D AA 8D STA $8DAA +0D91- AA TAX +0D92- AA TAX +0D93- 20 CE CF JSR $CFCE +0D96- D7 ??? +0D97- 20 C3 C8 JSR $C8C3 +0D9A- C5 C3 CMP $C3 +0D9C- CB ??? +0D9D- 20 A4 B3 JSR $B3A4 +0DA0- B0 B0 BCS $0D52 +0DA2- 20 D4 CF JSR $CFD4 +0DA5- 20 D3 C5 JSR $C5D3 +0DA8- C5 20 CMP $20 +0DAA- D2 C5 CMP ($C5) +0DAC- D3 ??? +0DAD- D5 CC CMP $CC,X +0DAF- D4 ??? +0DB0- 8D AA 8D STA $8DAA +0DB3- AA TAX +0DB4- 8D AA AA STA $AAAA +0DB7- 20 C1 C7 JSR $C7C1 +0DBA- C5 D4 CMP $D4 +0DBC- B8 CLV +0DBD- B1 20 LDA ($20),Y +0DBF- D2 C5 CMP ($C5) +0DC1- D4 ??? +0DC2- D5 D2 CMP $D2,X +0DC4- CE D3 20 DEC $20D3 +0DC7- D4 ??? +0DC8- C8 INY +0DC9- C5 20 CMP $20 +0DCB- CD C5 CD CMP $CDC5 +0DCE- CF ??? +0DCF- D2 D9 CMP ($D9) +0DD1- 20 C1 C4 JSR $C4C1 +0DD4- C4 D2 CPY $D2 +0DD6- C5 D3 CMP $D3 +0DD8- D3 ??? +0DD9- 20 D7 C8 JSR $C8D7 +0DDC- C5 D2 CMP $D2 +0DDE- C5 8D CMP $8D +0DE0- AA TAX +0DE1- AA TAX +0DE2- 20 C1 CE JSR $CEC1 +0DE5- 20 C5 CC JSR $CCC5 +0DE8- C5 CD CMP $CD +0DEA- C5 CE CMP $CE +0DEC- D4 ??? +0DED- 20 C1 D4 JSR $D4C1 +0DF0- 20 D4 C8 JSR $C8D4 +0DF3- C5 20 CMP $20 +0DF5- D3 ??? +0DF6- D0 C5 BNE $0DBD +0DF8- C3 ??? +0DF9- C9 C6 CMP #$C6 +0DFB- C9 C5 CMP #$C5 +0DFD- C4 20 CPY $20 +0DFF- C9 CE CMP #$CE +0E01- C4 C5 CPY $C5 +0E03- D8 CLD +0E04- 20 C9 CE JSR $CEC9 +0E07- 20 D4 C8 JSR $C8D4 +0E0A- C5 8D CMP $8D +0E0C- AA TAX +0E0D- AA TAX +0E0E- 20 C1 D2 JSR $D2C1 +0E11- D2 C1 CMP ($C1) +0E13- D9 20 C1 CMP $C120,Y +0E16- D4 ??? +0E17- 20 D4 C8 JSR $C8D4 +0E1A- C5 20 CMP $20 +0E1C- D3 ??? +0E1D- D0 C5 BNE $0DE4 +0E1F- C3 ??? +0E20- C9 C6 CMP #$C6 +0E22- C9 C5 CMP #$C5 +0E24- C4 20 CPY $20 +0E26- C1 C4 CMP ($C4,X) +0E28- C4 D2 CPY $D2 +0E2A- C5 D3 CMP $D3 +0E2C- D3 ??? +0E2D- 20 C9 D3 JSR $D3C9 +0E30- 20 CC CF JSR $CFCC +0E33- C3 ??? +0E34- C1 D4 CMP ($D4,X) +0E36- C5 C4 CMP $C4 +0E38- 8D AA 8D STA $8DAA +0E3B- AA TAX +0E3C- AA TAX +0E3D- AA TAX +0E3E- 20 CD C1 JSR $C1CD +0E41- C3 ??? +0E42- D2 CF CMP ($CF) +0E44- BA TSX +0E45- 20 DF C7 JSR $C7DF +0E48- C5 D4 CMP $D4 +0E4A- B8 CLV +0E4B- B1 20 LDA ($20),Y +0E4D- A4 B3 LDY $B3 +0E4F- B0 B0 BCS $0E01 +0E51- BB ??? +0E52- A3 ??? +0E53- B5 8D LDA $8D,X +0E55- AA TAX +0E56- 8D A0 CC STA $CCA0 +0E59- C4 C1 CPY $C1 +0E5B- A0 A3 LDY #$A3 +0E5D- BE A4 B3 LDX $B3A4,Y +0E60- B0 B0 BCS $0E12 +0E62- 8D A0 D0 STA $D0A0 +0E65- C8 INY +0E66- C1 8D CMP ($8D,X) +0E68- A0 CC LDY #$CC +0E6A- C4 C1 CPY $C1 +0E6C- A0 A3 LDY #$A3 +0E6E- BC A4 B3 LDY $B3A4,X +0E71- B0 B0 BCS $0E23 +0E73- 8D A0 D0 STA $D0A0 +0E76- C8 INY +0E77- C1 8D CMP ($8D,X) +0E79- A0 CC LDY #$CC +0E7B- C4 C1 CPY $C1 +0E7D- A0 A3 LDY #$A3 +0E7F- B0 B5 BCS $0E36 +0E81- A0 BB LDY #$BB +0E83- 20 C9 CE JSR $CEC9 +0E86- C4 C5 CPY $C5 +0E88- D8 CLD +0E89- 8D A0 D0 STA $D0A0 +0E8C- C8 INY +0E8D- C1 8D CMP ($8D,X) +0E8F- A0 CA LDY #$CA +0E91- D3 ??? +0E92- D2 A0 CMP ($A0) +0E94- C1 C7 CMP ($C7,X) +0E96- C5 D4 CMP $D4 +0E98- B8 CLV +0E99- B1 8D LDA ($8D),Y +0E9B- AA TAX +0E9C- 8D AA C2 STA $C2AA +0E9F- D2 CB CMP ($CB) +0EA1- 20 BB 20 JSR $20BB +0EA4- D8 CLD +0EA5- BD B0 B3 LDA $B3B0,X +0EA8- 20 A8 C8 JSR $C8A8 +0EAB- C9 A9 CMP #$A9 +0EAD- AC 20 D9 LDY $D920 +0EB0- BD B0 C3 LDA $C3B0,X +0EB3- 20 A8 CC JSR $CCA8 +0EB6- CF ??? +0EB7- D7 ??? +0EB8- A9 8D LDA #$8D +0EBA- AA TAX +0EBB- 8D AA AA STA $AAAA +0EBE- 20 CE CF JSR $CFCE +0EC1- D4 ??? +0EC2- C5 20 CMP $20 +0EC4- D4 ??? +0EC5- C8 INY +0EC6- C1 D4 CMP ($D4,X) +0EC8- 20 C9 CE JSR $CEC9 +0ECB- C4 C5 CPY $C5 +0ECD- D8 CLD +0ECE- C9 CE CMP #$CE +0ED0- C7 ??? +0ED1- 20 D3 D4 JSR $D4D3 +0ED4- C1 D2 CMP ($D2,X) +0ED6- D4 ??? +0ED7- D3 ??? +0ED8- 20 C1 D4 JSR $D4C1 +0EDB- 20 B0 AC JSR $ACB0 +0EDE- 20 D3 CF JSR $CFD3 +0EE1- 20 C1 CE JSR $CEC1 +0EE4- 20 C1 D2 JSR $D2C1 +0EE7- D2 C1 CMP ($C1) +0EE9- D9 8D AA CMP $AA8D,Y +0EEC- AA TAX +0EED- 20 CF C6 JSR $C6CF +0EF0- 20 D4 C5 JSR $C5D4 +0EF3- CE 20 C5 DEC $C520 +0EF6- CC C5 CD CPY $CDC5 +0EF9- C5 CE CMP $CE +0EFB- D4 ??? +0EFC- D3 ??? +0EFD- 20 D7 CF JSR $CFD7 +0F00- D5 CC CMP $CC,X +0F02- C4 20 CPY $20 +0F04- C2 ??? +0F05- C5 20 CMP $20 +0F07- CC C9 D3 CPY $D3C9 +0F0A- D4 ??? +0F0B- C5 C4 CMP $C4 +0F0D- 20 C1 D3 JSR $D3C1 +0F10- 20 B0 AE JSR $AEB0 +0F13- AE B9 8D LDX $8DB9 +0F16- AA TAX +0F17- AA TAX +0F18- 20 D3 CF JSR $CFD3 +0F1B- 20 C8 C5 JSR $C5C8 +0F1E- D2 C5 CMP ($C5) +0F20- 20 D7 C5 JSR $C5D7 +0F23- 20 C1 D2 JSR $D2C1 +0F26- C5 20 CMP $20 +0F28- C1 C3 CMP ($C3,X) +0F2A- D4 ??? +0F2B- D5 C1 CMP $C1,X +0F2D- CC CC D9 CPY $D9CC +0F30- 20 C1 D3 JSR $D3C1 +0F33- CB ??? +0F34- C9 CE CMP #$CE +0F36- C7 ??? +0F37- 20 C6 CF JSR $CFC6 +0F3A- D2 20 CMP ($20) +0F3C- D4 ??? +0F3D- C8 INY +0F3E- C5 8D CMP $8D +0F40- AA TAX +0F41- AA TAX +0F42- 20 C1 C4 JSR $C4C1 +0F45- C4 D2 CPY $D2 +0F47- C5 D3 CMP $D3 +0F49- D3 ??? +0F4A- 20 CF C6 JSR $C6CF +0F4D- 20 D4 C8 JSR $C8D4 +0F50- C5 20 CMP $20 +0F52- D3 ??? +0F53- C9 D8 CMP #$D8 +0F55- D4 ??? +0F56- C8 INY +0F57- 20 C5 CC JSR $CCC5 +0F5A- C5 CD CMP $CD +0F5C- C5 CE CMP $CE +0F5E- D4 ??? +0F5F- A1 8D LDA ($8D,X) +0F61- AA TAX +0F62- 8D AA 8D STA $8DAA +0F65- AA TAX +0F66- AA TAX +0F67- 20 C1 D0 JSR $D0C1 +0F6A- D5 D4 CMP $D4,X +0F6C- B8 CLV +0F6D- B1 20 LDA ($20),Y +0F6F- C3 ??? +0F70- CF ??? +0F71- D0 C9 BNE $0F3C +0F73- C5 D3 CMP $D3 +0F75- 20 C4 C1 JSR $C1C4 +0F78- D4 ??? +0F79- C1 20 CMP ($20,X) +0F7B- C6 D2 DEC $D2 +0F7D- CF ??? +0F7E- CD 20 CF CMP $CF20 +0F81- CE C5 20 DEC $20C5 +0F84- D3 ??? +0F85- D0 C5 BNE $0F4C +0F87- C3 ??? +0F88- C9 C6 CMP #$C6 +0F8A- C9 C5 CMP #$C5 +0F8C- C4 20 CPY $20 +0F8E- CC CF C3 CPY $C3CF +0F91- C1 D4 CMP ($D4,X) +0F93- C9 CF CMP #$CF +0F95- CE 8D AA DEC $AA8D +0F98- AA TAX +0F99- 20 D4 CF JSR $CFD4 +0F9C- 20 D4 C8 JSR $C8D4 +0F9F- C5 20 CMP $20 +0FA1- C5 CC CMP $CC +0FA3- C5 CD CMP $CD +0FA5- C5 CE CMP $CE +0FA7- D4 ??? +0FA8- 20 C9 CE JSR $CEC9 +0FAB- C4 C5 CPY $C5 +0FAD- D8 CLD +0FAE- C5 C4 CMP $C4 +0FB0- 20 C9 CE JSR $CEC9 +0FB3- 20 C1 CE JSR $CEC1 +0FB6- 20 C1 D2 JSR $D2C1 +0FB9- D2 C1 CMP ($C1) +0FBB- D9 20 C1 CMP $C120,Y +0FBE- D4 ??? +0FBF- 20 C1 CE JSR $CEC1 +0FC2- CF ??? +0FC3- D4 ??? +0FC4- C8 INY +0FC5- C5 D2 CMP $D2 +0FC7- 8D AA AA STA $AAAA +0FCA- 20 CC CF JSR $CFCC +0FCD- C3 ??? +0FCE- C1 D4 CMP ($D4,X) +0FD0- C9 CF CMP #$CF +0FD2- CE AE 8D DEC $8DAE +0FD5- AA TAX +0FD6- 8D AA AA STA $AAAA +0FD9- AA TAX +0FDA- 20 CD C1 JSR $C1CD +0FDD- C3 ??? +0FDE- D2 CF CMP ($CF) +0FE0- BA TSX +0FE1- 20 DF D0 JSR $D0DF +0FE4- D5 D4 CMP $D4,X +0FE6- B8 CLV +0FE7- B1 20 LDA ($20),Y +0FE9- A4 B3 LDY $B3 +0FEB- B0 B0 BCS $0F9D +0FED- BB ??? +0FEE- A4 B3 LDY $B3 +0FF0- B0 B0 BCS $0FA2 +0FF2- BB ??? +0FF3- A3 ??? +0FF4- B5 20 LDA $20,X +0FF6- A8 TAY +0FF7- D3 ??? +0FF8- D2 C3 CMP ($C3) +0FFA- AC C1 D2 LDY $D2C1 +0FFD- D2 C1 CMP ($C1) +0FFF- D9 AC C9 CMP $C9AC,Y +1002- CE C4 C5 DEC $C5C4 +1005- D8 CLD +1006- A9 8D LDA #$8D +1008- AA TAX +1009- 8D A0 CC STA $CCA0 +100C- C4 C1 CPY $C1 +100E- A0 A3 LDY #$A3 +1010- BE A4 B3 LDX $B3A4,Y +1013- B0 B0 BCS $0FC5 +1015- A0 BB LDY #$BB +1017- 20 C1 C4 JSR $C4C1 +101A- C4 D2 CPY $D2 +101C- C5 D3 CMP $D3 +101E- D3 ??? +101F- 20 D4 CF JSR $CFD4 +1022- 20 C3 CF JSR $CFC3 +1025- D0 D9 BNE $1000 +1027- 8D A0 D0 STA $D0A0 +102A- C8 INY +102B- C1 8D CMP ($8D,X) +102D- A0 CC LDY #$CC +102F- C4 C1 CPY $C1 +1031- A0 A3 LDY #$A3 +1033- BC A4 B3 LDY $B3A4,X +1036- B0 B0 BCS $0FE8 +1038- 8D A0 D0 STA $D0A0 +103B- C8 INY +103C- C1 8D CMP ($8D,X) +103E- A0 CC LDY #$CC +1040- C4 C1 CPY $C1 +1042- A0 A3 LDY #$A3 +1044- BE A4 B3 LDX $B3A4,Y +1047- B0 B0 BCS $0FF9 +1049- A0 BB LDY #$BB +104B- 20 C1 D2 JSR $D2C1 +104E- D2 C1 CMP ($C1) +1050- D9 20 C1 CMP $C120,Y +1053- C4 C4 CPY $C4 +1055- D2 C5 CMP ($C5) +1057- D3 ??? +1058- D3 ??? +1059- 8D A0 D0 STA $D0A0 +105C- C8 INY +105D- C1 8D CMP ($8D,X) +105F- A0 CC LDY #$CC +1061- C4 C1 CPY $C1 +1063- A0 A3 LDY #$A3 +1065- BC A4 B3 LDY $B3A4,X +1068- B0 B0 BCS $101A +106A- 8D A0 D0 STA $D0A0 +106D- C8 INY +106E- C1 8D CMP ($8D,X) +1070- A0 CC LDY #$CC +1072- C4 C1 CPY $C1 +1074- A0 A3 LDY #$A3 +1076- B5 8D LDA $8D,X +1078- A0 D0 LDY #$D0 +107A- C8 INY +107B- C1 A0 CMP ($A0,X) +107D- BB ??? +107E- 20 C9 CE JSR $CEC9 +1081- C4 C5 CPY $C5 +1083- D8 CLD +1084- 8D A0 CA STA $CAA0 +1087- D3 ??? +1088- D2 A0 CMP ($A0) +108A- C1 D0 CMP ($D0,X) +108C- D5 D4 CMP $D4,X +108E- B8 CLV +108F- B1 8D LDA ($8D),Y +1091- AA TAX +1092- C2 ??? +1093- D2 CB CMP ($CB) +1095- 8D AA 8D STA $8DAA +1098- AA TAX +1099- AA TAX +109A- 20 CE CF JSR $CFCE +109D- D4 ??? +109E- C5 20 CMP $20 +10A0- D4 ??? +10A1- C8 INY +10A2- C1 D4 CMP ($D4,X) +10A4- 20 D4 C8 JSR $C8D4 +10A7- C9 D3 CMP #$D3 +10A9- 20 CA D5 JSR $D5CA +10AC- D3 ??? +10AD- D4 ??? +10AE- 20 C3 CF JSR $CFC3 +10B1- D0 C9 BNE $107C +10B3- C5 C4 CMP $C4 +10B5- 20 D4 C8 JSR $C8D4 +10B8- C5 20 CMP $20 +10BA- C9 CE CMP #$CE +10BC- C4 C5 CPY $C5 +10BE- D8 CLD +10BF- C9 CE CMP #$CE +10C1- C7 ??? +10C2- 20 C4 C1 JSR $C1C4 +10C5- D4 ??? +10C6- C1 8D CMP ($8D,X) +10C8- AA TAX +10C9- AA TAX +10CA- 20 CF C6 JSR $C6CF +10CD- 20 D4 C8 JSR $C8D4 +10D0- C5 20 CMP $20 +10D2- C1 D2 CMP ($D2,X) +10D4- D2 C1 CMP ($C1) +10D6- D9 20 D4 CMP $D420,Y +10D9- CF ??? +10DA- 20 C9 D4 JSR $D4C9 +10DD- D3 ??? +10DE- 20 D3 C9 JSR $C9D3 +10E1- D8 CLD +10E2- D4 ??? +10E3- C8 INY +10E4- 20 C5 CC JSR $CCC5 +10E7- C5 CD CMP $CD +10E9- C5 CE CMP $CE +10EB- D4 ??? +10EC- 20 A8 A3 JSR $A3A8 +10EF- B5 A9 LDA $A9,X +10F1- AC 20 D3 LDY $D320 +10F4- CF ??? +10F5- 8D AA AA STA $AAAA +10F8- 20 D4 C8 JSR $C8D4 +10FB- C1 D4 CMP ($D4,X) +10FD- 20 CE CF JSR $CFCE +1100- D7 ??? +1101- 20 B0 B3 JSR $B3B0 +1104- B0 C3 BCS $10C9 +1106- 20 C3 CF JSR $CFC3 +1109- CE D4 C1 DEC $C1D4 +110C- C9 CE CMP #$CE +110E- D3 ??? +110F- 20 C1 B0 JSR $B0C1 +1112- B0 B2 BCS $10C6 +1114- 20 A8 C1 JSR $C1A8 +1117- D2 D2 CMP ($D2) +1119- C1 D9 CMP ($D9,X) +111B- 20 CC C5 JSR $C5CC +111E- CE C7 D4 DEC $D4C7 +1121- C8 INY +1122- AC 8D AA LDY $AA8D +1125- AA TAX +1126- 20 C5 CC JSR $CCC5 +1129- C5 CD CMP $CD +112B- C5 CE CMP $CE +112D- D4 ??? +112E- 20 CC C5 JSR $C5CC +1131- CE C7 D4 DEC $D4C7 +1134- C8 INY +1135- A9 AE LDA #$AE +1137- 8D AA 8D STA $8DAA +113A- AA TAX +113B- 8D AA AA STA $AAAA +113E- 20 C4 C9 JSR $C9C4 +1141- CD B8 B2 CMP $B2B8 +1144- 20 C3 D2 JSR $D2C3 +1147- C5 C1 CMP $C1 +1149- D4 ??? +114A- C5 D3 CMP $D3 +114C- 20 C1 CE JSR $CEC1 +114F- 20 B8 C2 JSR $C2B8 +1152- C9 D4 CMP #$D4 +1154- AC 20 B2 LDY $B220 +1157- C4 20 CPY $20 +1159- C1 D2 CMP ($D2,X) +115B- D2 C1 CMP ($C1) +115D- D9 20 C1 CMP $C120,Y +1160- D4 ??? +1161- 20 D4 C8 JSR $C8D4 +1164- C5 8D CMP $8D +1166- AA TAX +1167- AA TAX +1168- 20 D3 D0 JSR $D0D3 +116B- C5 C3 CMP $C3 +116D- C9 C6 CMP #$C6 +116F- C9 C5 CMP #$C5 +1171- C4 20 CPY $20 +1173- CC CF C3 CPY $C3CF +1176- C1 D4 CMP ($D4,X) +1178- C9 CF CMP #$CF +117A- CE 20 D7 DEC $D720 +117D- C9 D4 CMP #$D4 +117F- C8 INY +1180- 20 D4 C8 JSR $C8D4 +1183- C5 20 CMP $20 +1185- CC C5 CE CPY $CEC5 +1188- C7 ??? +1189- D4 ??? +118A- C8 INY +118B- 20 C1 CE JSR $CEC1 +118E- C4 8D CPY $8D +1190- AA TAX +1191- AA TAX +1192- 20 C8 C5 JSR $C5C8 +1195- C9 C7 CMP #$C7 +1197- C8 INY +1198- D4 ??? +1199- 20 D0 C1 JSR $C1D0 +119C- D3 ??? +119D- D3 ??? +119E- C5 C4 CMP $C4 +11A0- 20 D6 C9 JSR $C9D6 +11A3- C1 20 CMP ($20,X) +11A5- D4 ??? +11A6- C8 INY +11A7- C5 20 CMP $20 +11A9- D3 ??? +11AA- D4 ??? +11AB- C1 C3 CMP ($C3,X) +11AD- CB ??? +11AE- 8D AA 8D STA $8DAA +11B1- AA TAX +11B2- AA TAX +11B3- 20 CD C1 JSR $C1CD +11B6- C3 ??? +11B7- D2 CF CMP ($CF) +11B9- BA TSX +11BA- 20 DF C4 JSR $C4DF +11BD- C9 CD CMP #$CD +11BF- B8 CLV +11C0- B2 20 LDA ($20) +11C2- A4 B3 LDY $B3 +11C4- B0 B0 BCS $1176 +11C6- BB ??? +11C7- A3 ??? +11C8- B4 BB LDY $BB,X +11CA- A3 ??? +11CB- B4 BB LDY $BB,X +11CD- A3 ??? +11CE- B1 8D LDA ($8D),Y +11D0- AA TAX +11D1- 8D A0 CC STA $CCA0 +11D4- C4 C1 CPY $C1 +11D6- A0 A3 LDY #$A3 +11D8- BE A4 B3 LDX $B3A4,Y +11DB- B0 B0 BCS $118D +11DD- 8D A0 D0 STA $D0A0 +11E0- C8 INY +11E1- C1 8D CMP ($8D,X) +11E3- A0 CC LDY #$CC +11E5- C4 C1 CPY $C1 +11E7- A0 A3 LDY #$A3 +11E9- BC A4 B3 LDY $B3A4,X +11EC- B0 B0 BCS $119E +11EE- A0 BB LDY #$BB +11F0- 20 C1 D2 JSR $D2C1 +11F3- D2 C1 CMP ($C1) +11F5- D9 20 C1 CMP $C120,Y +11F8- C4 C4 CPY $C4 +11FA- D2 C5 CMP ($C5) +11FC- D3 ??? +11FD- D3 ??? +11FE- 8D A0 D0 STA $D0A0 +1201- C8 INY +1202- C1 8D CMP ($8D,X) +1204- A0 CC LDY #$CC +1206- C4 C1 CPY $C1 +1208- A0 A3 LDY #$A3 +120A- B4 A0 LDY $A0,X +120C- BB ??? +120D- 20 D8 AD JSR $ADD8 +1210- C4 C9 CPY $C9 +1212- CD C5 CE CMP $CEC5 +1215- D3 ??? +1216- C9 CF CMP #$CF +1218- CE 8D A0 DEC $A08D +121B- D0 C8 BNE $11E5 +121D- C1 8D CMP ($8D,X) +121F- A0 CC LDY #$CC +1221- C4 C1 CPY $C1 +1223- A0 A3 LDY #$A3 +1225- B4 A0 LDY $A0,X +1227- BB ??? +1228- 20 D9 AD JSR $ADD9 +122B- C4 C9 CPY $C9 +122D- CD C5 D3 CMP $D3C5 +1230- C9 CF CMP #$CF +1232- CE 8D A0 DEC $A08D +1235- D0 C8 BNE $11FF +1237- C1 8D CMP ($8D,X) +1239- A0 CC LDY #$CC +123B- C4 C1 CPY $C1 +123D- A0 A3 LDY #$A3 +123F- B1 A0 LDA ($A0),Y +1241- BB ??? +1242- 20 C5 CC JSR $CCC5 +1245- C5 CD CMP $CD +1247- C5 CE CMP $CE +1249- D4 ??? +124A- 20 D3 C9 JSR $C9D3 +124D- DA PHX +124E- C5 8D CMP $8D +1250- A0 D0 LDY #$D0 +1252- C8 INY +1253- C1 8D CMP ($8D,X) +1255- A0 CA LDY #$CA +1257- D3 ??? +1258- D2 A0 CMP ($A0) +125A- C4 C9 CPY $C9 +125C- CD B8 B2 CMP $B2B8 +125F- 8D AA C2 STA $C2AA +1262- D2 CB CMP ($CB) +1264- 8D AA 8D STA $8DAA +1267- AA TAX +1268- 8D AA AA STA $AAAA +126B- 20 C1 C7 JSR $C7C1 +126E- C5 D4 CMP $D4 +1270- B8 CLV +1271- B2 20 LDA ($20) +1273- C7 ??? +1274- C5 D4 CMP $D4 +1276- D3 ??? +1277- 20 D4 C8 JSR $C8D4 +127A- C5 20 CMP $20 +127C- CD C5 CD CMP $CDC5 +127F- CF ??? +1280- D2 D9 CMP ($D9) +1282- 20 CC CF JSR $CFCC +1285- C3 ??? +1286- C1 D4 CMP ($D4,X) +1288- C9 CF CMP #$CF +128A- CE 20 CF DEC $CF20 +128D- C6 20 DEC $20 +128F- D4 ??? +1290- C8 INY +1291- C5 20 CMP $20 +1293- C5 CC CMP $CC +1295- C5 CD CMP $CD +1297- C5 CE CMP $CE +1299- D4 ??? +129A- 8D AA AA STA $AAAA +129D- 20 D3 D4 JSR $D4D3 +12A0- CF ??? +12A1- D2 C5 CMP ($C5) +12A3- C4 20 CPY $20 +12A5- C1 D4 CMP ($D4,X) +12A7- 20 C9 CE JSR $CEC9 +12AA- C4 C5 CPY $C5 +12AC- D8 CLD +12AD- 20 D8 AC JSR $ACD8 +12B0- D9 20 C9 CMP $C920,Y +12B3- CE 20 D4 DEC $D420 +12B6- C8 INY +12B7- C5 20 CMP $20 +12B9- C7 ??? +12BA- C9 D6 CMP #$D6 +12BC- C5 CE CMP $CE +12BE- 20 C1 D2 JSR $D2C1 +12C1- D2 C1 CMP ($C1) +12C3- D9 D3 20 CMP $20D3,Y +12C6- C1 CE CMP ($CE,X) +12C8- C4 8D CPY $8D +12CA- AA TAX +12CB- AA TAX +12CC- 20 D2 C5 JSR $C5D2 +12CF- D4 ??? +12D0- D5 D2 CMP $D2,X +12D2- CE D3 20 DEC $20D3 +12D5- C9 D4 CMP #$D4 +12D7- 20 C9 CE JSR $CEC9 +12DA- 20 D9 20 JSR $20D9 +12DD- A8 TAY +12DE- CC CF D7 CPY $D7CF +12E1- A9 20 LDA #$20 +12E3- C1 CE CMP ($CE,X) +12E5- C4 20 CPY $20 +12E7- D8 CLD +12E8- 20 A8 C8 JSR $C8A8 +12EB- C9 C7 CMP #$C7 +12ED- C8 INY +12EE- A9 8D LDA #$8D +12F0- AA TAX +12F1- 8D AA AA STA $AAAA +12F4- 20 CD C1 JSR $C1CD +12F7- C3 ??? +12F8- D2 CF CMP ($CF) +12FA- BA TSX +12FB- 20 DF C7 JSR $C7DF +12FE- C5 D4 CMP $D4 +1300- B8 CLV +1301- B2 20 LDA ($20) +1303- A4 B3 LDY $B3 +1305- B0 B0 BCS $12B7 +1307- BB ??? +1308- A3 ??? +1309- B2 BB LDA ($BB) +130B- A3 ??? +130C- B3 ??? +130D- 8D AA 8D STA $8DAA +1310- A0 CC LDY #$CC +1312- C4 C1 CPY $C1 +1314- A0 A3 LDY #$A3 +1316- BE A4 B3 LDX $B3A4,Y +1319- B0 B0 BCS $12CB +131B- 8D A0 D0 STA $D0A0 +131E- C8 INY +131F- C1 8D CMP ($8D,X) +1321- A0 CC LDY #$CC +1323- C4 C1 CPY $C1 +1325- A0 A3 LDY #$A3 +1327- BC A4 B3 LDY $B3A4,X +132A- B0 B0 BCS $12DC +132C- 8D A0 D0 STA $D0A0 +132F- C8 INY +1330- C1 8D CMP ($8D,X) +1332- A0 CC LDY #$CC +1334- C4 C1 CPY $C1 +1336- A0 A3 LDY #$A3 +1338- B2 A0 LDA ($A0) +133A- BB ??? +133B- 20 D8 20 JSR $20D8 +133E- C9 CE CMP #$CE +1340- C4 C5 CPY $C5 +1342- D8 CLD +1343- 8D A0 D0 STA $D0A0 +1346- C8 INY +1347- C1 8D CMP ($8D,X) +1349- A0 CC LDY #$CC +134B- C4 C1 CPY $C1 +134D- A0 A3 LDY #$A3 +134F- B3 ??? +1350- A0 BB LDY #$BB +1352- 20 D9 20 JSR $20D9 +1355- C9 CE CMP #$CE +1357- C4 C5 CPY $C5 +1359- D8 CLD +135A- 8D A0 D0 STA $D0A0 +135D- C8 INY +135E- C1 8D CMP ($8D,X) +1360- A0 CA LDY #$CA +1362- D3 ??? +1363- D2 A0 CMP ($A0) +1365- C1 C7 CMP ($C7,X) +1367- C5 D4 CMP $D4 +1369- B8 CLV +136A- B2 8D LDA ($8D) +136C- AA TAX +136D- C2 ??? +136E- D2 CB CMP ($CB) +1370- 20 BB 20 JSR $20BB +1373- D8 CLD +1374- BD B0 B3 LDA $B3B0,X +1377- BB ??? +1378- 20 D9 BD JSR $BDD9 +137B- B0 B9 BCS $1336 +137D- 8D AA 8D STA $8DAA +1380- AA TAX +1381- 8D AA AA STA $AAAA +1384- 20 C1 D0 JSR $D0C1 +1387- D5 D4 CMP $D4,X +1389- B8 CLV +138A- B2 20 LDA ($20) +138C- D0 D5 BNE $1363 +138E- D4 ??? +138F- D3 ??? +1390- 20 D4 C8 JSR $C8D4 +1393- C5 20 CMP $20 +1395- C4 C1 CPY $C1 +1397- D4 ??? +1398- C1 20 CMP ($20,X) +139A- D3 ??? +139B- D4 ??? +139C- CF ??? +139D- D2 C5 CMP ($C5) +139F- C4 20 CPY $20 +13A1- C9 CE CMP #$CE +13A3- 20 CF CE JSR $CECF +13A6- C5 20 CMP $20 +13A8- CC CF C3 CPY $C3CF +13AB- C1 D4 CMP ($D4,X) +13AD- C9 CF CMP #$CF +13AF- CE 8D AA DEC $AA8D +13B2- AA TAX +13B3- 20 C9 CE JSR $CEC9 +13B6- D4 ??? +13B7- CF ??? +13B8- 20 D4 C8 JSR $C8D4 +13BB- C5 20 CMP $20 +13BD- C1 D2 CMP ($D2,X) +13BF- D2 C1 CMP ($C1) +13C1- D9 20 C1 CMP $C120,Y +13C4- D4 ??? +13C5- 20 D4 C8 JSR $C8D4 +13C8- C5 20 CMP $20 +13CA- D3 ??? +13CB- D0 C5 BNE $1392 +13CD- C3 ??? +13CE- C9 C6 CMP #$C6 +13D0- C9 C5 CMP #$C5 +13D2- C4 20 CPY $20 +13D4- C9 CE CMP #$CE +13D6- C4 C5 CPY $C5 +13D8- D8 CLD +13D9- 20 D8 AC JSR $ACD8 +13DC- D9 AE 8D CMP $8DAE,Y +13DF- AA TAX +13E0- 8D AA AA STA $AAAA +13E3- 20 CD C1 JSR $C1CD +13E6- C3 ??? +13E7- D2 CF CMP ($CF) +13E9- BA TSX +13EA- 20 DF D0 JSR $D0DF +13ED- D5 D4 CMP $D4,X +13EF- B8 CLV +13F0- B2 20 LDA ($20) +13F2- A4 B3 LDY $B3 +13F4- B0 B0 BCS $13A6 +13F6- BB ??? +13F7- A4 B3 LDY $B3 +13F9- B0 B0 BCS $13AB +13FB- BB ??? +13FC- A3 ??? +13FD- B2 BB LDA ($BB) +13FF- A3 ??? +1400- B3 ??? +1401- 8D AA 8D STA $8DAA +1404- A0 CC LDY #$CC +1406- C4 C1 CPY $C1 +1408- A0 A3 LDY #$A3 +140A- BE A4 B3 LDX $B3A4,Y +140D- B0 B0 BCS $13BF +140F- A0 BB LDY #$BB +1411- 20 D3 D2 JSR $D2D3 +1414- C3 ??? +1415- 8D A0 D0 STA $D0A0 +1418- C8 INY +1419- C1 8D CMP ($8D,X) +141B- A0 CC LDY #$CC +141D- C4 C1 CPY $C1 +141F- A0 A3 LDY #$A3 +1421- BC A4 B3 LDY $B3A4,X +1424- B0 B0 BCS $13D6 +1426- 8D A0 D0 STA $D0A0 +1429- C8 INY +142A- C1 8D CMP ($8D,X) +142C- A0 CC LDY #$CC +142E- C4 C1 CPY $C1 +1430- A0 A3 LDY #$A3 +1432- BE A4 B3 LDX $B3A4,Y +1435- B0 B0 BCS $13E7 +1437- A0 BB LDY #$BB +1439- 20 C4 C5 JSR $C5C4 +143C- D3 ??? +143D- D4 ??? +143E- 8D A0 D0 STA $D0A0 +1441- C8 INY +1442- C1 8D CMP ($8D,X) +1444- A0 CC LDY #$CC +1446- C4 C1 CPY $C1 +1448- A0 A3 LDY #$A3 +144A- BC A4 B3 LDY $B3A4,X +144D- B0 B0 BCS $13FF +144F- 8D A0 D0 STA $D0A0 +1452- C8 INY +1453- C1 8D CMP ($8D,X) +1455- A0 CC LDY #$CC +1457- C4 C1 CPY $C1 +1459- A0 A3 LDY #$A3 +145B- B2 A0 LDA ($A0) +145D- BB ??? +145E- 20 D8 20 JSR $20D8 +1461- C9 CE CMP #$CE +1463- C4 C5 CPY $C5 +1465- D8 CLD +1466- 8D A0 D0 STA $D0A0 +1469- C8 INY +146A- C1 8D CMP ($8D,X) +146C- A0 CC LDY #$CC +146E- C4 C1 CPY $C1 +1470- A0 A3 LDY #$A3 +1472- B3 ??? +1473- 8D A0 D0 STA $D0A0 +1476- C8 INY +1477- C1 A0 CMP ($A0,X) +1479- BB ??? +147A- 20 D9 20 JSR $20D9 +147D- C9 CE CMP #$CE +147F- C4 C5 CPY $C5 +1481- D8 CLD +1482- 8D A0 CA STA $CAA0 +1485- D3 ??? +1486- D2 A0 CMP ($A0) +1488- C1 D0 CMP ($D0,X) +148A- D5 D4 CMP $D4,X +148C- B8 CLV +148D- B2 8D LDA ($8D) +148F- AA TAX +1490- 8D AA C2 STA $C2AA +1493- D2 CB CMP ($CB) +1495- 20 BB 20 JSR $20BB +1498- CE CF D7 DEC $D7CF +149B- 20 A4 B0 JSR $B0A4 +149E- B3 ??? +149F- B0 B9 BCS $145A +14A1- 20 D7 C9 JSR $C9D7 +14A4- CC CC 20 CPY $20CC +14A7- C8 INY +14A8- CF ??? +14A9- CC C4 20 CPY $20C4 +14AC- B0 B4 BCS $1462 +14AE- AC 20 D4 LDY $D420 +14B1- C8 INY +14B2- C5 20 CMP $20 +14B4- D8 CLD +14B5- AD C2 CF LDA $CFC2 +14B8- D5 CE CMP $CE,X +14BA- C4 C1 CPY $C1 +14BC- D2 D9 CMP ($D9) +14BE- 8D AA 8D STA $8DAA +14C1- AA TAX +14C2- 8D AA 8D STA $8DAA +14C5- AA TAX +14C6- 8D AA 8D STA $8DAA +14C9- AA TAX +14CA- AA TAX +14CB- 20 CC C9 JSR $C9CC +14CE- D4 ??? +14CF- D4 ??? +14D0- CC C5 20 CPY $20C5 +14D3- CC D5 CD CPY $CDD5 +14D6- D0 D3 BNE $14AB +14D8- 20 AD AD JSR $ADAD +14DB- 20 CD C9 JSR $C9CD +14DE- C4 AF CPY $AF +14E0- CC CF D7 CPY $D7CF +14E3- 20 CC C5 JSR $C5CC +14E6- D6 C5 DEC $C5,X +14E8- CC 8D AA CPY $AA8D +14EB- 8D AA 8D STA $8DAA +14EE- A0 CA LDY #$CA +14F0- CD D0 A0 CMP $A0D0 +14F3- D2 C5 CMP ($C5) +14F5- C5 CE CMP $CE +14F7- D4 ??? +14F8- D2 D9 CMP ($D9) +14FA- 8D AA 8D STA $8DAA +14FD- AA TAX +14FE- E0 E0 CPX #$E0 +1500- E0 E0 CPX #$E0 +1502- E0 E0 CPX #$E0 +1504- E0 E0 CPX #$E0 +1506- E0 E0 CPX #$E0 +1508- E0 E0 CPX #$E0 +150A- E0 E0 CPX #$E0 +150C- E0 E0 CPX #$E0 +150E- E0 E0 CPX #$E0 +1510- E0 E0 CPX #$E0 +1512- E0 E0 CPX #$E0 +1514- E0 E0 CPX #$E0 +1516- E0 E0 CPX #$E0 +1518- E0 E0 CPX #$E0 +151A- E0 E0 CPX #$E0 +151C- AA TAX +151D- 8D AA 20 STA $20AA +1520- 20 20 20 JSR $2020 +1523- 20 20 20 JSR $2020 +1526- 20 C2 CF JSR $CFC2 +1529- D4 ??? +152A- D4 ??? +152B- CF ??? +152C- CD 20 C9 CMP $C920 +152F- CE C3 CC DEC $CCC3 +1532- D5 C4 CMP $C4,X +1534- C5 D3 CMP $D3 +1536- 20 20 20 JSR $2020 +1539- 20 20 20 JSR $2020 +153C- 20 AA 8D JSR $8DAA +153F- AA TAX +1540- AC AC AC LDY $ACAC +1543- AC AC AC LDY $ACAC +1546- AC AC AC LDY $ACAC +1549- AC AC AC LDY $ACAC +154C- AC AC AC LDY $ACAC +154F- AC AC AC LDY $ACAC +1552- AC AC AC LDY $ACAC +1555- AC AC AC LDY $ACAC +1558- AC AC AC LDY $ACAC +155B- AC AC AC LDY $ACAC +155E- AA TAX +155F- 8D AA 8D STA $8DAA +1562- AA TAX +1563- 8D AA AA STA $AAAA +1566- 20 C2 CF JSR $CFC2 +1569- D4 ??? +156A- D4 ??? +156B- CF ??? +156C- CD 20 C9 CMP $C920 +156F- CE C3 CC DEC $CCC3 +1572- D5 C4 CMP $C4,X +1574- C5 D3 CMP $D3 +1576- 8D AA 8D STA $8DAA +1579- A0 D0 LDY #$D0 +157B- D5 D4 CMP $D4,X +157D- A0 C1 LDY #$C1 +157F- D2 D2 CMP ($D2) +1581- C1 D9 CMP ($D9,X) +1583- D3 ??? +1584- B8 CLV +1585- B1 AE LDA ($AE),Y +1587- CC C9 C2 CPY $C2C9 +158A- 8D A0 D0 STA $D0A0 +158D- D5 D4 CMP $D4,X +158F- A0 C1 LDY #$C1 +1591- D2 D2 CMP ($D2) +1593- C1 D9 CMP ($D9,X) +1595- D3 ??? +1596- B8 CLV +1597- B2 AE LDA ($AE) +1599- CC C9 C2 CPY $C2C9 +159C- 8D AA 8D STA $8DAA diff --git a/disks/disk3_arrays/T.ARRAYS.DEMO b/disks/disk3_arrays/T.ARRAYS.DEMO new file mode 100644 index 0000000..165ee70 --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS.DEMO @@ -0,0 +1,187 @@ +* +******************************** +* * +* -< ARRAYS DEMO >- * +* * +* VERSION 00.00.01 * +* * +* 03/04/1980 * +* * +******************************** +* * +* NATHAN D. RIGGS * +* NATHAN.RIGGS@OUTLOOK.COM * +* * +******************************** +* +** ASSEMBLER DIRECTIVES +* + CYC AVE + EXP ONLY + DSK ARRAYS.DEMO +* +*``````````````````````````````* +* TOP INCLUDES (PUTS, MACROS) * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* + PUT DECS + USE ARRAYS.MAC +* + PUT ARRAYS.HOOKS +* + OBJ $BFE0 + ORG $6000 +* +*``````````````````````````````* +* PROGRAM MAIN BODY * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* +* +** BIG LUMPS -- HIGH LEVEL CODE +* +* +** DIM81 CLEARS THE MEMORY AT THE SPECIFIED +** LOCATION AND SETS UP THE DATA CONFIGURATION +** FOR AN ARRAY (ARRAY LENGTH, ELEMENT LENGTH, DATA) +* +** MACRO: _DIM81 $300;#10;#2 +* + LDA #>$300 ; HIGH LOCATION FOR ARRAY + PHA + LDA #<$300 ; LOW LOCATION + PHA + LDA #10 ; ARRAY LENGTH + PHA + LDA #2 ; ELEMENT LENGTH + PHA + JSR DIM81 +* +** NOW CHECK $300 TO SEE RESULT +* +* +** AGET81 RETURNS THE MEMORY ADDRESS WHERE +** AN ELEMENT AT THE SPECIFIED INDEX IN THE +** ARRAY AT THE SPECIFIED ADDRESS IS LOCATED +* +*** MACRO: _GET81 $300;#5 +* + LDA #>$300 + PHA + LDA #<$300 + PHA + LDA #05 ; INDEX + PHA + JSR AGET81 +* +*BRK ; X=03 (HI), Y=0C (LOW) +* +** NOTE THAT INDEXING STARTS AT 0, SO AN ARRAY +** OF TEN ELEMENTS WOULD BE LISTED AS 0..9 +** SO HERE WE ARE ACTUALLY ASKING FOR THE +** ADDRESS OF THE SIXTH ELEMENT! +* +* +** APUT81 COPIES DATA FROM ONE SPECIFIED LOCATION +** TO THE ELEMENT INDEXED IN AN ARRAY AT ANOTHER +** LOCATION. +* +*** MACRO: _PUT81 $300;$300;#5 (SRC,ARRAY,INDEX) +* + LDA #>$300 ; ADDRESS TO COPY + PHA + LDA #<$300 + PHA + LDA #>$300 ; ARRAY ADDRESS + PHA + LDA #<$300 + PHA + LDA #5 + PHA ; INDEX + JSR APUT81 +*BRK +* +** NOTE THAT THIS JUST COPIED THE INDEXING DATA +** OF THE ARRAY TO ITS SIXTH ELEMENT (#5), SO +** THAT NOW 030C CONTAINS A002 (ARRAY LENGTH, +** ELEMENT LENGTH). +* +* +** DIM82 CREATES AN 8BIT, 2D ARRAY AT THE +** SPECIFIED LOCATION WITH THE LENGTH AND +** HEIGHT PASSED VIA THE STACK +* +** MACRO: _DIM82 $300;#4;#4;#1 +* + LDA #>$300 + PHA + LDA #<$300 ; ARRAY ADDRESS + PHA + LDA #4 ; X-DIMENSION + PHA + LDA #4 ; Y-DIMESION + PHA + LDA #1 ; ELEMENT SIZE + PHA + JSR DIM82 +*BRK +* +* +** AGET82 GETS THE MEMORY LOCATION OF THE ELEMENT +** STORED AT INDEX X,Y IN THE GIVEN ARRAYS AND +** RETURNS IT IN Y (LOW) AND X (HIGH) +* +** MACRO: _GET82 $300;#2;#3 +* + LDA #>$300 + PHA + LDA #<$300 + PHA + LDA #2 ; X INDEX + PHA + LDA #3 ; Y INDEX + PHA + JSR AGET82 +*BRK ; X=03; Y=09 +* +* +** APUT82 PUTS THE DATA STORED IN ONE LOCATION +** INTO THE ARRAY AT THE SPECIFIED INDEX X,Y. +* +** MACRO: _PUT82 $300;$300;#2;#3 +* + LDA #>$300 ; SRC + PHA + LDA #<$300 + PHA + LDA #>$300 ; DEST + PHA + LDA #<$300 + PHA + LDA #2 ; X INDEX + PHA + LDA #3 + PHA ; Y INDEX + JSR APUT82 +* +*BRK ; NOW $0309 WILL HOLD 04, THE X-BOUNDARY +* +* +* +* +* +** LITTLE LUMPS -- MID/LOW LEVEL +* +* + JMP REENTRY +* +*``````````````````````````````* +* BOTTOM INCLUDES * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* +** BOTTOM INCLUDES +* + PUT ARRAYS81.LIB + PUT ARRAYS82.LIB +* diff --git a/disks/disk3_arrays/T.ARRAYS.HOOKS b/disks/disk3_arrays/T.ARRAYS.HOOKS new file mode 100644 index 0000000..d33c50b --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS.HOOKS.PUT * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +* WELL I GOT NOTHIN +* diff --git a/disks/disk3_arrays/T.ARRAYS.MAC b/disks/disk3_arrays/T.ARRAYS.MAC new file mode 100644 index 0000000..fd0120d --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS.MAC @@ -0,0 +1,234 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS.MAC * +* * +* AUTHOR: NATHAN RIGGS * +* CONTACT: NATHAN.RIGGS@ * +* OUTLOOK.COM * +* * +* VERSION: 0.1.2 * +* DATE: 30-OCT-2018 * +* ASSEMBLER: MERLIN 8 PRO * +* * +* LICENSE: APACHE 2.0 LICENSE, * +* WHERE APPLICABLE. CODE * +* INSPIRED BY OR COPIED FROM * +* OTHERS MAY FALL UNDER A * +* DIFFERENT LICENSE. I WILL * +* DO MY BEST TO NOTIFY SUCH * +* CASES. * +* * +*------------------------------* +* * +* THIS IS A MACRO LIBRARY FOR * +* THE 8BIT ARRAY LIBRARIES, * +* ARRAYS81.LIB & ARRAYS82.LIB. * +* THESE ARE 8BIT 1D AND 2D * +* ARRAY LIBS, RESPECTIVELY. * +* * +*------------------------------* +* * +* LIST OF MACROS * +* * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +*``````````````````````````````* +* _DIM81 : INIT 1D, 8BIT ARRAY * +*- -* +* INITS A 1-DIMENSIONAL ARRAY * +* BY CLEARING MEMORY IT WILL * +* SPAN ACROSS AND PUTTING THE * +* INDEXING INFORMATION AS THE * +* ARRAY HEADER (0 = ARRAY * +* LENGTH, 1 = ELEMEN LENGTH). * +*- -* +* PARAMETERS: * +* * +* PARAM1 = ARRAY ADDRESS * +* PARAM2 = ARRAY BYTE LENGTH * +* PARAM3 = ELEMENT BYTE LENGTH * +*- -* +* SAMPLE USAGE: * +* _DIM81 $300;#10;#2 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_DIM81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ARRAY LENGTH + PHA + LDA ]3 ; ELEMENT LENGTH + PHA + JSR DIM1D + <<< +* +*``````````````````````````````* +* _GET81 : GET ARRAY ELEMENT * +* FROM 1D, 8BIT ARRAY * +*- -* +* CALCULATES THE ADDRESS OF AN * +* ELEMENT IN THE GIVEN ARRAY * +* AND RETURNS THE ADDRESS IN * +* Y (LOW) AND X (HIGH), WITH * +* THE ELEMENT LENGTH IN A. * +* THEN, DATA CAN BE READ VIA * +* REGULAR STATEMENTS WITH THAT * +* ADDRESS. * +*- -* +* PARAMETERS: * +* * +* PARAM1 = ARRAY ADDRESS * +* PARAM2 = ELEMENT INDEX * +*- -* +* SAMPLE USAGE: * +* _GET81 $300;#5 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_GET81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ELEM INDEX + PHA + JSR AGET81 + <<< +* +*``````````````````````````````* +* _PUT81 : PUT ARRAY ELEMENT * +* IN 1D, 8BIT ARRAY * +*- -* +* COPIES DATA FROM ONE MEMORY * +* LOCATION (P1) AND PUTS IT * +* IN THE SPECIFIED ARRAY (P2) * +* AT THE SPECIFIED INDEX (P3). * +*- -* +* PARAMETERS: * +* * +* PARAM1 = SOURCE ADDRESS * +* PARAM2 = ARRAY ADDRESS * +* PARAM3 = ELEMENT INDEX * +*- -* +* SAMPLE USAGE: * +* _PUT81 $300;$3A0;#5 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_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 : INIT 12, 8BIT ARRAY * +*- -* +* INITS AN 8BIT 2D ARRAY AT * +* SPECIFIED LOCATION WITH THE * +* DIMENSIONS OF X,Y. ARRAY * +* BEGINS WITH A 4 BYTE HEADER * +* WITH THE ARRAY LENGTH, X * +* DIM, Y DIM, AND ELEM LENGTH. * +*- -* +* PARAMETERS: * +* * +* PARAM1 = ARRAY ADDRESS * +* PARAM2 = X DIMENSION * +* PARAM3 = Y DIMENSION * +* PARAM4 = ELEMENT SIZE * +*- -* +* SAMPLE USAGE: * +* _DIM82 $300;#4;#4;#1 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_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 + JSR DIM82 + <<< +* +*``````````````````````````````* +* _GET82 : GET ARRAY ELEMENT * +* FROM 2D, 8BIT ARRAY * +*- -* +* RETURNS THE MEMORY LOCATION * +* OF AN X,Y INDEX IN THE ARRAY * +* VIA THE REGISTERS: Y (LOW), * +* X (HIGH), A (ELEMENT LENGTH) * +*- -* +* PARAMETERS: * +* * +* PARAM1 = ARRAY ADDRESS * +* PARAM2 = X INDEX * +* PARAM3 = Y INDEX * +*- -* +* SAMPLE USAGE: * +* _GET82 $300;#2;#3 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_GET82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X INDEX + PHA + LDA ]3 ; Y INDEX + PHA + JSR AGET82 + <<< +* +*``````````````````````````````* +* _PUT82 : PUT ARRAY ELEMENT * +* IN 2D, 8BIT ARRAY * +*- -* +* COPIES DATA FROM SOURCE LOC * +* TO THE MEMLOC OF INDEX X,Y * +* IN THE SPECIFIED ARRAY. * +*- -* +* PARAMETERS: * +* * +* PARAM1 = SOURCE ADDRESS * +* PARAM2 = DEST ARRAY ADDRESS * +* PARAM3 = ELEMENT X INDEX * +* PARAM4 = Y INDEX * +*- -* +* SAMPLE USAGE: * +* _PUT82 $300;$3A0;#2;#3 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_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/disk3_arrays/T.ARRAYS81.AGET b/disks/disk3_arrays/T.ARRAYS81.AGET new file mode 100644 index 0000000..cb69a5c --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS81.AGET @@ -0,0 +1,145 @@ +* +*``````````````````````````````* +* AGET81 :: GET ARRAY ELEMENT * +* ADDRESS * +*- -* +* GETS THE ADDRESS LOCATION OF * +* AN ELEMENT IN THE SPECIFIED * +* ARRAY AT THE SPECIFIED INDEX * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ;HI ARADDR * +* PHA * +* LDA #<$300 ; LOW * +* PHA * +* LDA #5 ; INDEX * +* PHA * +* JSR AGET81 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* INDEX OF ELEMENT TO GET * +* ADDRESS OF ARRAY LO BYTE * +* ADDRESS OF ARRAY HI BYTE * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LOBYTE OF ELEMENT ADDR * +* X = HIBYTE OF ELEMENT ADDR * +* A = TRASH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +AGET81 +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :IDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** GET ELEMENT SIZE +* + LDY #1 ; ELEMENT SIZE LOC + LDA (ADDR1),Y + STA :ESIZE +* +* +** FIRST, MUL INDEX BY ELEMENT SIZE, +** THEN ADD TWO TO GET THE PROPER ADDRESS. +* + 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 +* +** ARRAY INDEX STORED IN X (LOW) AND Y (HIGH) +* + STX :IDX + STY :IDX+1 +* +** ADD 2 TO INDEX +* + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 +* +** NOW ADD THAT TO BASE ARRAY ADDRESS +** TO GET ADDRESS OF INDEX VALUE +* + CLC + LDA :RES + ADC ADDR1 ; LOW OF ARRAY ADDRESS + STA :RES + LDA :RES+1 + ADC ADDR1+1 + STA :RES+1 +* +** ADDRESS TO ARRAY ELEMENT IS STORED +** IN Y (LOW BYTE), X (HIGH BYTE) +* + LDY :RES + LDX :RES+1 +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* + RTS +* +** DATA +* +:RES DS 2 +:IDX DS 2 +:ESIZE DS 1 +* diff --git a/disks/disk3_arrays/T.ARRAYS81.APUT b/disks/disk3_arrays/T.ARRAYS81.APUT new file mode 100644 index 0000000..d13d3c9 --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS81.APUT @@ -0,0 +1,134 @@ +* +*``````````````````````````````* +* APUT81 :: PUT TO ARR ELEMNT * +*- -* +* COPIES FROM SOURCE LOCATION * +* AND PUTS IT IN MEMLOC FOR * +* DESIRED ELEMENT. DIRECT * +* PUTTING OF ELEMENT DATA * +* CAN BE DONE VIA SIMPLE * +* LDA/STA OPERATIONS. * +*- -* +* NOTE THAT THIS DOES NOT * +* CHECK FOR OUT OF BOUNDS * +* SO THAT CYCLES ARE NOT * +* WASTED. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; SRC ADDR * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #>$300 ;DEST ADDR * +* PHA * +* STA #<$300 * +* PHA * +* LDA #5 ; INDEX * +* PHA * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* INDEX OF PUT ELEMENT * +* LOW BYTE OF DESTINATION ADDR * +* HI BYTE OF DESTINATION ADDR * +* LO BYTE OF SOURCE ADDRESS * +* HI BYTE OF SOURCE ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LOBYTE OF ELEMENT ADDR * +* X = HIBYTE OF ELEMENT ADDR * +* A = BYTE LENGTH OF ELEMENT * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +APUT81 +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR ; LOCAL RETURN ADDRESS STORAGE + PLA ; BECAUSE OF CALLING AGET81 + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :AIDX + PLA + STA ADDR4 ; ARRAY ADDRESS; USES ADDR4 + ; BECAUSE CALL TO AGET81 USES + ; ADDR1 + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA TO BE + ; COPIED TO ELEMENT + PLA + STA ADDR3+1 +* + LDA ADDR4+1 + PHA + LDA ADDR4 + PHA + LDA :AIDX + PHA + JSR AGET81 ; GET MEMORY POS OF ELEM + STY ADDR2 + STX ADDR2+1 +* +** GET ARRAY'S ELEMENT SIZE +* + LDY #1 + LDA (ADDR4),Y + STA :ESIZE + LDY #0 +* +** COPY FROM ADDR1 TO ADDR2 +* +:LP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :LP +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* +** RETURN ELEMENT ADDRESS AND SIZE +** IN REGISTERS +* + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE +* + RTS +* +** DATA +* +:RETADR DS 2 +:ESIZE DS 1 +:ASIZE DS 1 +:AIDX DS 1 +* diff --git a/disks/disk3_arrays/T.ARRAYS81.DIM b/disks/disk3_arrays/T.ARRAYS81.DIM new file mode 100644 index 0000000..c8ba2f1 --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS81.DIM @@ -0,0 +1,181 @@ +* +*``````````````````````````````* +* DIM81 :: INIT 1D ARRAY * +*- -* +* CREATES AN ARRAY OF LENGTH * +* :ASIZE WITH ELEMENTS OF * +* LENGTH :ESIZE AT MEMORY * +* LOCATION POINTED TO BY * +* :ALOC. RETURNS ARRAY START * +* LOCATION IF SUCCESSFUL IN A, * +* OR 0FF IF UNSUCCESSFUL. * +*- -* +* FIRST BYTE OF MEMORY USED * +* HOLDS LENGTH OF ARRAY; * +* SECOND BYTE HOLDS LENGTH OF * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; ARRAYLOC * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #10 ; ARRAY SIZE * +* PHA * +* LDA #2 ; ELEMENT SIZE * +* PHA * +* JSR DIM81 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* ELEMENT SIZE * +* ARRAY SIZE * +* LOW BYTE OF ARRAY ADDRESS * +* HIGH BYTE OF ARRAY ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LO BYTE OF ARRAY ADDR * +* X = HI BYTE OF ARRAY ADDR * +* A = TRASH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +DIM81 +* +** FIRST, CLEAR BLOCK OF MEM TO BE USED +** THEN MUL ASIZE BY ESIZE, AND ADD 2 TO +** GET TOTAL MEMORY USED BY ARRAY +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :ESIZE ; ELEMENT SIZE + STA :ESZBAK + PLA + STA :ASIZE ; ARRAY SIZE + STA :ASZBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDX #0 + LDA #0 + STY SCRATCH + BEQ :ENTLP +* +** MULTIPLY ASIZE AND ESIZE TO GET TOTAL SIZE +** OF MEMORY TO CLEAR AND USE +* +: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 +* +** NOW CLEAR MEMORY BLOCKS +* +** FILL WHOLE PAGES FIRST +* + LDA #0 ; 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 +* +** NOW DO REMAINING PARTIAL PAGES +* +: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 +* +** MEMORY FILL IS DONE +* +** THEN, SET SIZES +* + LDY #0 + LDA :ASZBAK + STA (ADDR1),Y + INY + LDA :ESZBAK + STA (ADDR1),Y +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* +** RETURN POINTER TO STARTING ADDR OF ARRAY +* + LDY ADDR1 ; LOW + LDX ADDR1+1 ; HIGH +* + RTS +* +** DATA +* +:MSIZE DS 2 +:ASIZE DS 1 +:ESIZE DS 1 +:ASZBAK DS 1 +:ESZBAK DS 1 diff --git a/disks/disk3_arrays/T.ARRAYS81.LIB b/disks/disk3_arrays/T.ARRAYS81.LIB new file mode 100644 index 0000000..fad5c86 --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS81.LIB @@ -0,0 +1,498 @@ + JMP ARRAYS81X +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS81.LIB * +* * +* AUTHOR: NATHAN RIGGS * +* CONTACT: NATHAN.RIGGS@ * +* OUTLOOK.COM * +* * +* VERSION: 0.1.2 * +* DATE: 30-OCT-2018 * +* ASSEMBLER: MERLIN 8 PRO * +* * +* LICENSE: APACHE 2.0, WHERE * +* APPLICABLE. CODE INSPIRED * +* BY THE WORKS OF OTHERS MAY * +* FALL UNDER A DIFFERENT * +* LICENSE (NOTED IN ROUTINE). * +* * +* THIS IS A STANDARD LIBRARY * +* FOR 1-DIMENSIONAL 8-BIT * +* ARRAY MANIPUALTION. ARRAYS * +* ARE PRECEDED BY LENGTH AND * +* INDEXING INFORMATION. * +* * +*------------------------------* +* * +* LIST OF ROUTINES * +* * +* DIM81 : DIM 8BIT,1D ARRAY * +* AGET81 : GET ADDR OF ELEMENT * +* APUT81 : COPY DATA FROM MEM * +* INTO ELEMENT AT * +* SPECIFIED LOCATION * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +*``````````````````````````````* +* DIM81D :: INIT 1D ARRAY * +*- -* +* CREATES AN ARRAY OF LENGTH * +* :ASIZE WITH ELEMENTS OF * +* LENGTH :ESIZE AT MEMORY * +* LOCATION POINTED TO BY * +* :ALOC. RETURNS ARRAY START * +* LOCATION IF SUCCESSFUL IN A, * +* OR 0FF IF UNSUCCESSFUL. * +*- -* +* FIRST BYTE OF MEMORY USED * +* HOLDS LENGTH OF ARRAY; * +* SECOND BYTE HOLDS LENGTH OF * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; ARRAYLOC * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #10 ; ARRAY SIZE * +* PHA * +* LDA #2 ; ELEMENT SIZE * +* PHA * +* JSR DIM81 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* ELEMENT SIZE * +* ARRAY SIZE * +* LOW BYTE OF ARRAY ADDRESS * +* HIGH BYTE OF ARRAY ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LO BYTE OF ARRAY ADDR * +* X = HI BYTE OF ARRAY ADDR * +* A = TRASH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +DIM81 +* +** FIRST, CLEAR BLOCK OF MEM TO BE USED +** THEN MUL ASIZE BY ESIZE, AND ADD 2 TO +** GET TOTAL MEMORY USED BY ARRAY +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :ESIZE ; ELEMENT SIZE + STA :ESZBAK + PLA + STA :ASIZE ; ARRAY SIZE + STA :ASZBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDX #0 + LDA #0 + STY SCRATCH + BEQ :ENTLP +* +** MULTIPLY ASIZE AND ESIZE TO GET TOTAL SIZE +** OF MEMORY TO CLEAR AND USE +* +: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 +* +** NOW CLEAR MEMORY BLOCKS +* +** FILL WHOLE PAGES FIRST +* + LDA #0 ; 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 +* +** NOW DO REMAINING PARTIAL PAGES +* +: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 +* +** MEMORY FILL IS DONE +* +** THEN, SET SIZES +* + LDY #0 + LDA :ASZBAK + STA (ADDR1),Y + INY + LDA :ESZBAK + STA (ADDR1),Y +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* +** RETURN POINTER TO STARTING ADDR OF ARRAY +* + LDY ADDR1 ; LOW + LDX ADDR1+1 ; HIGH +* + RTS +* +** DATA +* +:MSIZE DS 2 +:ASIZE DS 1 +:ESIZE DS 1 +:ASZBAK DS 1 +:ESZBAK DS 1 +* +*``````````````````````````````* +* AGET81 :: GET ARRAY ELEMENT * +* ADDRESS * +*- -* +* GETS THE ADDRESS LOCATION OF * +* AN ELEMENT IN THE SPECIFIED * +* ARRAY AT THE SPECIFIED INDEX * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ;HI ARADDR * +* PHA * +* LDA #<$300 ; LOW * +* PHA * +* LDA #5 ; INDEX * +* PHA * +* JSR AGET81 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* INDEX OF ELEMENT TO GET * +* ADDRESS OF ARRAY LO BYTE * +* ADDRESS OF ARRAY HI BYTE * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LOBYTE OF ELEMENT ADDR * +* X = HIBYTE OF ELEMENT ADDR * +* A = TRASH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +AGET81 +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :IDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** GET ELEMENT SIZE +* + LDY #1 ; ELEMENT SIZE LOC + LDA (ADDR1),Y + STA :ESIZE +* +* +** FIRST, MUL INDEX BY ELEMENT SIZE, +** THEN ADD TWO TO GET THE PROPER ADDRESS. +* + 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 +* +** ARRAY INDEX STORED IN X (LOW) AND Y (HIGH) +* + STX :IDX + STY :IDX+1 +* +** ADD 2 TO INDEX +* + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 +* +** NOW ADD THAT TO BASE ARRAY ADDRESS +** TO GET ADDRESS OF INDEX VALUE +* + CLC + LDA :RES + ADC ADDR1 ; LOW OF ARRAY ADDRESS + STA :RES + LDA :RES+1 + ADC ADDR1+1 + STA :RES+1 +* +** ADDRESS TO ARRAY ELEMENT IS STORED +** IN Y (LOW BYTE), X (HIGH BYTE) +* + LDY :RES + LDX :RES+1 +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* + RTS +* +** DATA +* +:RES DS 2 +:IDX DS 2 +:ESIZE DS 1 +* +*``````````````````````````````* +* APUT81 :: PUT TO ARR ELEMNT * +*- -* +* COPIES FROM SOURCE LOCATION * +* AND PUTS IT IN MEMLOC FOR * +* DESIRED ELEMENT. DIRECT * +* PUTTING OF ELEMENT DATA * +* CAN BE DONE VIA SIMPLE * +* LDA/STA OPERATIONS. * +*- -* +* NOTE THAT THIS DOES NOT * +* CHECK FOR OUT OF BOUNDS * +* SO THAT CYCLES ARE NOT * +* WASTED. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; SRC ADDR * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #>$300 ;DEST ADDR * +* PHA * +* STA #<$300 * +* PHA * +* LDA #5 ; INDEX * +* PHA * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* INDEX OF PUT ELEMENT * +* LOW BYTE OF DESTINATION ADDR * +* HI BYTE OF DESTINATION ADDR * +* LO BYTE OF SOURCE ADDRESS * +* HI BYTE OF SOURCE ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LOBYTE OF ELEMENT ADDR * +* X = HIBYTE OF ELEMENT ADDR * +* A = BYTE LENGTH OF ELEMENT * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +APUT81 +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR ; LOCAL RETURN ADDRESS STORAGE + PLA ; BECAUSE OF CALLING AGET81 + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :AIDX + PLA + STA ADDR4 ; ARRAY ADDRESS; USES ADDR4 + ; BECAUSE CALL TO AGET81 USES + ; ADDR1 + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA TO BE + ; COPIED TO ELEMENT + PLA + STA ADDR3+1 +* + LDA ADDR4+1 + PHA + LDA ADDR4 + PHA + LDA :AIDX + PHA + JSR AGET81 ; GET MEMORY POS OF ELEM + STY ADDR2 + STX ADDR2+1 +* +** GET ARRAY'S ELEMENT SIZE +* + LDY #1 + LDA (ADDR4),Y + STA :ESIZE + LDY #0 +* +** COPY FROM ADDR1 TO ADDR2 +* +:LP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :LP +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* +** RETURN ELEMENT ADDRESS AND SIZE +** IN REGISTERS +* + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE +* + RTS +* +** DATA +* +:RETADR DS 2 +:ESIZE DS 1 +:ASIZE DS 1 +:AIDX DS 1 +* +ARRAYS81X +* diff --git a/disks/disk3_arrays/T.ARRAYS82.AGET b/disks/disk3_arrays/T.ARRAYS82.AGET new file mode 100644 index 0000000..96c7c5c --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS82.AGET @@ -0,0 +1,163 @@ +* +*``````````````````````````````* +* AGET82 :: INIT 2D ARRAY * +*- -* +* THIS GETS THE ADDRESS OF AN * +* ELEMENT AT THE INDEX X,Y IN * +* THE SPECIFIED ARRAY. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; ARRAY ADDR * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #2 ; X INDEX * +* PHA * +* LDA #3 ; Y INDEX * +* PHA * +* JSR AGET82 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* Y INDEX OF ELEMENT * +* X INDEX OF ELEMENT * +* LOW BYTE OF ARRAY ADDRESS * +* HIGH BYTE OF ARRAY ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LO BYTE OF ELEM ADDR * +* X = HI BYTE OF ELEM ADDR * +* A = CLOBBERED; TRASH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +AGET82 +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :YIDX + PLA + STA :XIDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* + LDY #2 + LDA (ADDR1),Y ; ELEMENT LENGTH + STA :MCAND ; ELEMENT LENGTH +* +** MULTIPLY X AND Y +* + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +* +:DOADD + CLC + ADC :XIDX + TAX +* + TYA + ADC SCRATCH + TAY + TXA +* +:LP + ASL :XIDX + ROL SCRATCH +:ENTLP + LSR :YIDX + BCS :DOADD + BNE :LP +* + STX :MLIER + STY :MLIER+1 +* +** NOW MULTIPLY BY LENGTH OF ELEMENTS +* + 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 +* + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD +* +** NOW ADD BASE ADDRESS OF ARRAY TO GET +** THE ADDRESS OF THE INDEX VALUE +* + CLC + LDA :PROD + ADC ADDR1 + STA :PROD + LDA :PROD+1 + ADC ADDR1+1 + STA :PROD+1 +* +** RETURN ADDRESS IN Y(LOW) AND X(HIGH) +* + LDY :PROD + LDX :PROD+1 +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* + RTS +* +** DATA +* +:XIDX DS 2 +:YIDX DS 2 +:PROD DS 4 +:MLIER DS 2 +:MCAND DS 2 +* diff --git a/disks/disk3_arrays/T.ARRAYS82.APUT b/disks/disk3_arrays/T.ARRAYS82.APUT new file mode 100644 index 0000000..f6be656 --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS82.APUT @@ -0,0 +1,132 @@ +* +*``````````````````````````````* +* APUT82 :: PUT DATA INTO ELEM * +*- -* +* THIS PUTS DATA FROM ONE ADDR * +* INTO THE ADDRESS OF AN ARRAY * +* WITH THE INDEX OF X,Y. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; SOURCE DATA * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #>$3A0 ; DEST ARRAY * +* PHA * +* LDA #<$3A0 * +* PHA * +* LDA #2 ; ELEM X INDEX * +* PHA * +* LDA #3 ; ELEM Y INDEX * +* PHA * +* JSR APUT82 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* ELEMENT Y INDEX * +* ELEMENT X INDEX * +* LOW BYTE OF DESTINATION ADDR * +* HI BYTE OF DESTINATION ADDR * +* LO BYTE OF SOURCE ADDRESS * +* HI BYTE OF SOURCE ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LOBYTE ELEMENT ADDRESS * +* X = HIBYTE ELEMENT ADDRESS * +* A = ELEMENT BYTE LENGTH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +APUT82 +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR ; LOCAL BECAUSE OF + PLA ; CALLING AGET82 + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :YIDX ; Y INDEX + PLA + STA :XIDX ; X INDEX + PLA + STA ADDR4 ; ADDRESS OF ARRAY + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA + PLA ; TO BE COPIED + STA ADDR3+1 +* +** NOW RUN AGET82 TO GET PROPER ADDRESS +* + LDA ADDR4+1 ; ARRAY ADDRESS + PHA + LDA ADDR4 + PHA + LDA :XIDX ; X INDEX + PHA + LDA :YIDX ; Y INDEX + PHA + JSR AGET82 + STY ADDR2 ; STORE ADDRESS OF INDEX + STX ADDR2+1 ; IN ZERO PAGE +* +** GET ARRAY ELEMENT SIZE +* + LDY #2 + LDA (ADDR4),Y + STA :ESIZE + LDY #0 +* +** COPY FROM SRC ADDR TO DEST ADDR +* +:CLP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :CLP +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* +** RETURN ELEMENT ADDRESS AND SIZE +* + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE +* + RTS +* +** DATA +* +:RETADR DS 2 +:ESIZE DS 1 +:XIDX DS 1 +:YIDX DS 1 +* diff --git a/disks/disk3_arrays/T.ARRAYS82.DIM b/disks/disk3_arrays/T.ARRAYS82.DIM new file mode 100644 index 0000000..cc8db98 --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS82.DIM @@ -0,0 +1,214 @@ +* +*``````````````````````````````* +* DIM82 :: INIT 2D ARRAY * +*- -* +* THIS SIMPLY CREATES A 1D * +* ARRAY WITH THE DIM OF * +* ARRAYX BY ARRAYY. * +*- -* +* FIRST BYTE OF MEMORY USED * +* HOLDS LENGTH OF X (ROWS); * +* SECOND BYTE HOLDS LENGTH OF * +* Y (COLUMNS); THIRD BYTE * +* HOLDS LENGTH OF EACH ELEMENT * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; ARRAY ADDR * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #4 ; X DIMENSION BOUND * +* PHA * +* LDA #4 ; Y DIMENSION BOUND * +* PHA * +* LDA #1 ; ELEMENT BYTESIZE * +* PHA * +* JSR DIM82 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* ELEMENT SIZE IN BYTES * +* Y DIMENSION BOUNDARY * +* X DIMENSION BOUNDARY * +* ARRAY ADDRESS, LOW BYTE * +* ARRAY ADDRESS, HIGH BYTE * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = ARRAY ADDRESS LO BYTE * +* X = ARRAY ADDRESS HI BYTE * +* A = CLOBBERED * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +DIM82 +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :MCAND ; ELEMENT LENGTH + PLA + STA :AYSIZE + STA :AYBAK + PLA + STA :AXSIZE + STA :AXBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** LOOP THROUGH Y, CLEARING MEMORY +** FOR X BYTES TIMES ELEMENT SIZE, +** MOVING TO END OF LAST CLEAR +** UNTIL FINISHED +* +** MULTIPLY X AND Y +* + 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 +* +** NOW MULTIPLY BY LENGTH OF ELEMENTS +* + 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 +* + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + LDX :PROD + LDY :PROD+1 +* +** NOW CLEAR MEMORY BLOCKS, WHOLE PAGES FIRST +* + LDA #$00 ; 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 +* +** NOW DO REMAINING BYTES +* +:PART + LDX :PROD + BEQ :MFEXIT + LDY #0 +:PARTLP + STA (ADDR1),Y + INY + DEX + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT +* +** NOW SET SIZES +* + LDY #0 + LDA :AXBAK + STA (ADDR1),Y + INY + LDA :AYBAK + STA (ADDR1),Y + INY + LDA :MCAND + STA (ADDR1),Y +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* +** RETURN POINTER TO STARTING ADDRESS OF ARRAY +* + LDY ADDR1 + LDX ADDR1+1 +* + RTS +* +** DATA +* +:PROD DS 4 +:AXSIZE DS 1 +:AYSIZE DS 1 +:AXBAK DS 1 +:AYBAK DS 1 +:MLIER DS 2 +:MCAND DS 2 +* diff --git a/disks/disk3_arrays/T.ARRAYS82.LIB b/disks/disk3_arrays/T.ARRAYS82.LIB new file mode 100644 index 0000000..36e2428 --- /dev/null +++ b/disks/disk3_arrays/T.ARRAYS82.LIB @@ -0,0 +1,547 @@ + JMP ARRAYS82X +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS82.LIB * +* * +* AUTHOR: NATHAN RIGGS * +* CONTACT: NATHAN.RIGGS@ * +* OUTLOOK.COM * +* * +* VERSION: 0.1.2 * +* DATE: 30-OCT-2018 * +* ASSEMBLER: MERLIN 8 PRO * +* * +* LICENSE: APACHE 2.0, WHERE * +* APPLICABLE. CODE INSPIRED * +* BY THE WORKS OF OTHERS MAY * +* FALL UNDER A DIFFERENT * +* LICENSE (NOTED IN ROUTINE). * +* * +* THIS IS A STANDARD LIBRARY * +* FOR 8BIT, 2 DIMENSIONAL * +* ARRAY MANIPULATION. ARRAYS * +* ARE PRECEDED BY LENGTH AND * +* INDEXING INFORMATION. * +* * +*------------------------------* +* * +* LIST OF ROUTINES * +* * +* DIM82 : DIM A 2D, 8BIT ARRAY * +* AGET82: GET ADDRESS OF ELEM * +* IN ARRAY AT X,Y * +* APUT82: PUT CONTENTS OF ONE * +* ADDRESS INTO ARRAY * +* AT INDEX X,Y * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +*``````````````````````````````* +* DIM82 :: INIT 2D ARRAY * +*- -* +* THIS SIMPLY CREATES A 1D * +* ARRAY WITH THE DIM OF * +* ARRAYX BY ARRAYY. * +*- -* +* FIRST BYTE OF MEMORY USED * +* HOLDS LENGTH OF X (ROWS); * +* SECOND BYTE HOLDS LENGTH OF * +* Y (COLUMNS); THIRD BYTE * +* HOLDS LENGTH OF EACH ELEMENT * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; ARRAY ADDR * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #4 ; X DIMENSION BOUND * +* PHA * +* LDA #4 ; Y DIMENSION BOUND * +* PHA * +* LDA #1 ; ELEMENT BYTESIZE * +* PHA * +* JSR DIM82 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* ELEMENT SIZE IN BYTES * +* Y DIMENSION BOUNDARY * +* X DIMENSION BOUNDARY * +* ARRAY ADDRESS, LOW BYTE * +* ARRAY ADDRESS, HIGH BYTE * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = ARRAY ADDRESS LO BYTE * +* X = ARRAY ADDRESS HI BYTE * +* A = CLOBBERED * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +DIM82 +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :MCAND ; ELEMENT LENGTH + PLA + STA :AYSIZE + STA :AYBAK + PLA + STA :AXSIZE + STA :AXBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** LOOP THROUGH Y, CLEARING MEMORY +** FOR X BYTES TIMES ELEMENT SIZE, +** MOVING TO END OF LAST CLEAR +** UNTIL FINISHED +* +** MULTIPLY X AND Y +* + 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 +* +** NOW MULTIPLY BY LENGTH OF ELEMENTS +* + 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 +* + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + LDX :PROD + LDY :PROD+1 +* +** NOW CLEAR MEMORY BLOCKS, WHOLE PAGES FIRST +* + LDA #$00 ; 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 +* +** NOW DO REMAINING BYTES +* +:PART + LDX :PROD + BEQ :MFEXIT + LDY #0 +:PARTLP + STA (ADDR1),Y + INY + DEX + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT +* +** NOW SET SIZES +* + LDY #0 + LDA :AXBAK + STA (ADDR1),Y + INY + LDA :AYBAK + STA (ADDR1),Y + INY + LDA :MCAND + STA (ADDR1),Y +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* +** RETURN POINTER TO STARTING ADDRESS OF ARRAY +* + LDY ADDR1 + LDX ADDR1+1 +* + RTS +* +** DATA +* +:PROD DS 4 +:AXSIZE DS 1 +:AYSIZE DS 1 +:AXBAK DS 1 +:AYBAK DS 1 +:MLIER DS 2 +:MCAND DS 2 +* +*``````````````````````````````* +* AGET82 :: INIT 2D ARRAY * +*- -* +* THIS GETS THE ADDRESS OF AN * +* ELEMENT AT THE INDEX X,Y IN * +* THE SPECIFIED ARRAY. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; ARRAY ADDR * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #2 ; X INDEX * +* PHA * +* LDA #3 ; Y INDEX * +* PHA * +* JSR AGET82 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* Y INDEX OF ELEMENT * +* X INDEX OF ELEMENT * +* LOW BYTE OF ARRAY ADDRESS * +* HIGH BYTE OF ARRAY ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LO BYTE OF ELEM ADDR * +* X = HI BYTE OF ELEM ADDR * +* A = CLOBBERED; TRASH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +AGET82 +* +** SAVE RETURN ADDRESS +* + PLA + STA RETADR + PLA + STA RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :YIDX + PLA + STA :XIDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* + LDY #2 + LDA (ADDR1),Y ; ELEMENT LENGTH + STA :MCAND ; ELEMENT LENGTH +* +** MULTIPLY X AND Y +* + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +* +:DOADD + CLC + ADC :XIDX + TAX +* + TYA + ADC SCRATCH + TAY + TXA +* +:LP + ASL :XIDX + ROL SCRATCH +:ENTLP + LSR :YIDX + BCS :DOADD + BNE :LP +* + STX :MLIER + STY :MLIER+1 +* +** NOW MULTIPLY BY LENGTH OF ELEMENTS +* + 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 +* + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD +* +** NOW ADD BASE ADDRESS OF ARRAY TO GET +** THE ADDRESS OF THE INDEX VALUE +* + CLC + LDA :PROD + ADC ADDR1 + STA :PROD + LDA :PROD+1 + ADC ADDR1+1 + STA :PROD+1 +* +** RETURN ADDRESS IN Y(LOW) AND X(HIGH) +* + LDY :PROD + LDX :PROD+1 +* +** RESTORE RETURN ADDRESS +* + LDA RETADR+1 + PHA + LDA RETADR + PHA +* + RTS +* +** DATA +* +:XIDX DS 2 +:YIDX DS 2 +:PROD DS 4 +:MLIER DS 2 +:MCAND DS 2 +* +*``````````````````````````````* +* APUT82 :: PUT DATA INTO ELEM * +*- -* +* THIS PUTS DATA FROM ONE ADDR * +* INTO THE ADDRESS OF AN ARRAY * +* WITH THE INDEX OF X,Y. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$300 ; SOURCE DATA * +* PHA * +* LDA #<$300 * +* PHA * +* LDA #>$3A0 ; DEST ARRAY * +* PHA * +* LDA #<$3A0 * +* PHA * +* LDA #2 ; ELEM X INDEX * +* PHA * +* LDA #3 ; ELEM Y INDEX * +* PHA * +* JSR APUT82 * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* ELEMENT Y INDEX * +* ELEMENT X INDEX * +* LOW BYTE OF DESTINATION ADDR * +* HI BYTE OF DESTINATION ADDR * +* LO BYTE OF SOURCE ADDRESS * +* HI BYTE OF SOURCE ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = LOBYTE ELEMENT ADDRESS * +* X = HIBYTE ELEMENT ADDRESS * +* A = ELEMENT BYTE LENGTH * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +APUT82 +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR ; LOCAL BECAUSE OF + PLA ; CALLING AGET82 + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :YIDX ; Y INDEX + PLA + STA :XIDX ; X INDEX + PLA + STA ADDR4 ; ADDRESS OF ARRAY + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA + PLA ; TO BE COPIED + STA ADDR3+1 +* +** NOW RUN AGET82 TO GET PROPER ADDRESS +* + LDA ADDR4+1 ; ARRAY ADDRESS + PHA + LDA ADDR4 + PHA + LDA :XIDX ; X INDEX + PHA + LDA :YIDX ; Y INDEX + PHA + JSR AGET82 + STY ADDR2 ; STORE ADDRESS OF INDEX + STX ADDR2+1 ; IN ZERO PAGE +* +** GET ARRAY ELEMENT SIZE +* + LDY #2 + LDA (ADDR4),Y + STA :ESIZE + LDY #0 +* +** COPY FROM SRC ADDR TO DEST ADDR +* +:CLP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :CLP +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* +** RETURN ELEMENT ADDRESS AND SIZE +* + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE +* + RTS +* +** DATA +* +:RETADR DS 2 +:ESIZE DS 1 +:XIDX DS 1 +:YIDX DS 1 +* +ARRAYS82X +* diff --git a/disks/disk3_arrays/T.DECS b/disks/disk3_arrays/T.DECS new file mode 100644 index 0000000..d4589e1 --- /dev/null +++ b/disks/disk3_arrays/T.DECS @@ -0,0 +1,46 @@ +* +*``````````````````````````````* +* DECLARATIONS.PUT * +*- -* +* USED IN CONJUNCTION WITH * +* OTHER PUT FILES. DEFINES * +* BASIC DECLARATIONS USED * +* ACROSS DIFFERENT ROUTINES * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** ADDRESS STORAGE LOCATIONS FOR +** INDIRECT ADDRESSING. +* +ADDR1 EQU $06 +ADDR2 EQU $08 +ADDR3 EQU $EB +ADDR4 EQU $ED +* +** SCRATCHPAD ZERO PAGE LOCATIONS AND +** DEDICATED ZERO PAGE ADDRESS TO HOLD +** A RETURN ADDRESS PASSED VIA THE STACK +* +SCRATCH EQU $19 +SCRATCH2 EQU $1E +RETADR EQU $FE +* +** ZERO PAGE ADDRESSES DEDICATED TO PASSING +** BACK RESULTS WHEN THERE ARE MORE THAN +** THREE BYTES BEING PASSED (AXY) AND THE +** USE OF THE STACK IS IMPRACTICAL OR TOO SLOW +* +RESULT EQU $FA +RESULT2 EQU $FC +* +** VARIOUS HOOKS USED BY ALL ROUTINES +* +REENTRY EQU $3D0 +* +** ERROR HANDLING MEMORY LOCATIONS +* +** THIS DESIGNATES A 16-BYTE BLOCK OF MEMORY +** THAT HOLDS DATA RELATED TO IDENTIFYING +** RUNTIME VALUES FOR DEBUGGING. +* +ERRLOC EQU $0C00 +* diff --git a/disks/disk3_arrays/T.STRINGS.MAC b/disks/disk3_arrays/T.STRINGS.MAC new file mode 100644 index 0000000..de72b94 --- /dev/null +++ b/disks/disk3_arrays/T.STRINGS.MAC @@ -0,0 +1,122 @@ +* +*``````````````````````````````* +*- -* +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +*``````````````````````````````* +* PRINT INDEXED STRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_PRS MAC + LDA #<]1 + STA RESULT2 + LDA #>]1 + STA RESULT2+1 + JSR PRNSTR + <<< +* +*``````````````````````````````* +* CONCATENATE STRINGS * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_SCAT MAC + LDA #<]1 + STA __S1A + LDA #>]1 + STA __S1A+1 + LDA #<]2 + STA __S2A + LDA #>]2 + STA __S2A+1 + LDA ]3 + STA __MLEN + JSR STRCAT + <<< +* +*``````````````````````````````* +* FIND SUBSTRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_SPOS MAC + LDA #<]1 + STA __SUB + LDA #>]1 + STA __SUB+1 + LDA #<]2 + STA __STR + LDA #>]2 + STA __STR+1 + JSR SUBPOS + <<< +* +*``````````````````````````````* +* _SCPY :: SUBSTRING COPY * +*- -* +* USAGE: _SCPY ]1;]2;]3;]4;]5 * +* * +* ]1 SRC STRING ADDR * +* ]2 DEST STRING ADDRESS * +* ]3 STARTING SUBSTRING INDEX * +* ]4 SUBSTRING LENGTH * +* ]5 MAX LENGTH OF DEST STR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_SCPY MAC + LDA #<]1 + STA __S1A + LDA #>]1 + STA __S1A+1 + LDA #<]2 + STA __S2A + LDA #>]2 + STA __S2A+1 + LDA ]3 + STA __SINDEX + LDA ]4 + STA __SCNT + LDA ]5 + STA __MLEN + JSR SUBCOPY + <<< +* +*``````````````````````````````* +* _SDEL :: DELETE SUBSTRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_SDEL MAC + LDA #<]1 + STA __S1A + LDA #>]1 + STA __S1A+1 + LDA ]2 + STA __SINDEX + LDA ]3 + STA __SCNT + JSR SUBDEL + <<< +* +*``````````````````````````````* +* _SINS :: INSERT SUBSTRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_SINS MAC + LDA #<]1 + STA __S1A + LDA #>]1 + STA __S1A+1 + LDA #<]2 + STA __S2A + LDA #>]2 + STA __S2A+1 + LDA ]3 + STA __SINDEX + LDA ]4 + STA __MLEN + JSR SUBINS + <<<