diff --git a/disks/disk1__stdio_common/COMMON.DEMO b/disks/disk1__stdio_common/COMMON.DEMO new file mode 100644 index 0000000..33db9ce --- /dev/null +++ b/disks/disk1__stdio_common/COMMON.DEMO @@ -0,0 +1,339 @@ +6000- A9 03 LDA #$03 +6002- 48 PHA +6003- A9 00 LDA #$00 +6005- 48 PHA +6006- A9 00 LDA #$00 +6008- 48 PHA +6009- A9 0A LDA #$0A +600B- 48 PHA +600C- A9 00 LDA #$00 +600E- 48 PHA +600F- 20 63 60 JSR $6063 +6012- A9 03 LDA #$03 +6014- 48 PHA +6015- A9 00 LDA #$00 +6017- 48 PHA +6018- A9 03 LDA #$03 +601A- 48 PHA +601B- A9 20 LDA #$20 +601D- 48 PHA +601E- A9 00 LDA #$00 +6020- 48 PHA +6021- A9 0A LDA #$0A +6023- 48 PHA +6024- 20 AC 60 JSR $60AC +6027- A0 FA LDY #$FA +6029- 20 4E 61 JSR $614E +602C- A0 FA LDY #$FA +602E- 20 4E 61 JSR $614E +6031- A0 FA LDY #$FA +6033- 20 4E 61 JSR $614E +6036- A0 FA LDY #$FA +6038- 20 4E 61 JSR $614E +603B- A9 01 LDA #$01 +603D- 85 06 STA $06 +603F- A9 02 LDA #$02 +6041- 85 07 STA $07 +6043- A9 03 LDA #$03 +6045- 85 08 STA $08 +6047- A9 04 LDA #$04 +6049- 85 09 STA $09 +604B- A9 6D LDA #$6D +604D- 48 PHA +604E- A9 00 LDA #$00 +6050- 48 PHA +6051- 20 6B 61 JSR $616B +6054- A9 6D LDA #$6D +6056- 48 PHA +6057- A9 00 LDA #$00 +6059- 48 PHA +605A- 20 E3 61 JSR $61E3 +605D- 4C D0 03 JMP $03D0 +6060- 4C 59 62 JMP $6259 +6063- 68 PLA +6064- 8D AA 60 STA $60AA +6067- 68 PLA +6068- 8D AB 60 STA $60AB +606B- 68 PLA +606C- 8D A7 60 STA $60A7 +606F- 68 PLA +6070- 8D A8 60 STA $60A8 +6073- 68 PLA +6074- 8D A9 60 STA $60A9 +6077- 68 PLA +6078- 85 06 STA $06 +607A- 68 PLA +607B- 85 07 STA $07 +607D- AD A7 60 LDA $60A7 +6080- AE A9 60 LDX $60A9 +6083- F0 0C BEQ $6091 +6085- A0 00 LDY #$00 +6087- 91 06 STA ($06),Y +6089- C8 INY +608A- D0 FB BNE $6087 +608C- E6 07 INC $07 +608E- CA DEX +608F- D0 F6 BNE $6087 +6091- AE A8 60 LDX $60A8 +6094- F0 08 BEQ $609E +6096- A0 00 LDY #$00 +6098- 91 06 STA ($06),Y +609A- C8 INY +609B- CA DEX +609C- D0 FA BNE $6098 +609E- AD AB 60 LDA $60AB +60A1- 48 PHA +60A2- AD AA 60 LDA $60AA +60A5- 48 PHA +60A6- 60 RTS +60A7- 00 BRK +60A8- 00 BRK +60A9- 00 BRK +60AA- 00 BRK +60AB- 00 BRK +60AC- 68 PLA +60AD- 8D 4A 61 STA $614A +60B0- 68 PLA +60B1- 8D 4B 61 STA $614B +60B4- 68 PLA +60B5- 8D 4C 61 STA $614C +60B8- 68 PLA +60B9- 8D 4D 61 STA $614D +60BC- 68 PLA +60BD- 85 08 STA $08 +60BF- 68 PLA +60C0- 85 09 STA $09 +60C2- 68 PLA +60C3- 85 06 STA $06 +60C5- 68 PLA +60C6- 85 07 STA $07 +60C8- A5 08 LDA $08 +60CA- 38 SEC +60CB- E5 06 SBC $06 +60CD- AA TAX +60CE- A5 09 LDA $09 +60D0- E5 07 SBC $07 +60D2- A8 TAY +60D3- 8A TXA +60D4- CD 4C 61 CMP $614C +60D7- 98 TYA +60D8- ED 4D 61 SBC $614D +60DB- B0 06 BCS $60E3 +60DD- 20 0E 61 JSR $610E +60E0- 4C E6 60 JMP $60E6 +60E3- 20 E9 60 JSR $60E9 +60E6- 4C 41 61 JMP $6141 +60E9- A0 00 LDY #$00 +60EB- AE 4D 61 LDX $614D +60EE- F0 0E BEQ $60FE +60F0- B1 06 LDA ($06),Y +60F2- 91 08 STA ($08),Y +60F4- C8 INY +60F5- D0 F9 BNE $60F0 +60F7- E6 07 INC $07 +60F9- E6 09 INC $09 +60FB- CA DEX +60FC- D0 F2 BNE $60F0 +60FE- AE 4C 61 LDX $614C +6101- F0 08 BEQ $610B +6103- B1 06 LDA ($06),Y +6105- 91 08 STA ($08),Y +6107- C8 INY +6108- CA DEX +6109- D0 F8 BNE $6103 +610B- 4C 41 61 JMP $6141 +610E- AD 4D 61 LDA $614D +6111- 18 CLC +6112- 65 07 ADC $07 +6114- 85 07 STA $07 +6116- AD 4D 61 LDA $614D +6119- 18 CLC +611A- 65 09 ADC $09 +611C- 85 09 STA $09 +611E- AC 4C 61 LDY $614C +6121- F0 09 BEQ $612C +6123- 88 DEY +6124- B1 06 LDA ($06),Y +6126- 91 08 STA ($08),Y +6128- C0 00 CPY #$00 +612A- D0 F7 BNE $6123 +612C- AE 4D 61 LDX $614D +612F- F0 10 BEQ $6141 +6131- C6 07 DEC $07 +6133- C6 09 DEC $09 +6135- 88 DEY +6136- B1 06 LDA ($06),Y +6138- 91 08 STA ($08),Y +613A- C0 00 CPY #$00 +613C- D0 F7 BNE $6135 +613E- CA DEX +613F- D0 F0 BNE $6131 +6141- AD 4B 61 LDA $614B +6144- 48 PHA +6145- AD 4A 61 LDA $614A +6148- 48 PHA +6149- 60 RTS +614A- 00 BRK +614B- 00 BRK +614C- 00 BRK +614D- 00 BRK +614E- C0 00 CPY #$00 +6150- F0 18 BEQ $616A +6152- EA NOP +6153- C0 01 CPY #$01 +6155- D0 03 BNE $615A +6157- 4C 65 61 JMP $6165 +615A- 88 DEY +615B- A2 CA LDX #$CA +615D- CA DEX +615E- D0 FD BNE $615D +6160- EA NOP +6161- EA NOP +6162- 88 DEY +6163- D0 F6 BNE $615B +6165- A2 C7 LDX #$C7 +6167- CA DEX +6168- D0 FD BNE $6167 +616A- 60 RTS +616B- A6 06 LDX $06 +616D- A4 07 LDY $07 +616F- 68 PLA +6170- 8D E1 61 STA $61E1 +6173- 68 PLA +6174- 8D E2 61 STA $61E2 +6177- 68 PLA +6178- 85 06 STA $06 +617A- 68 PLA +617B- 85 07 STA $07 +617D- 98 TYA +617E- A0 01 LDY #$01 +6180- 91 06 STA ($06),Y +6182- A0 00 LDY #$00 +6184- 8A TXA +6185- 91 06 STA ($06),Y +6187- A0 02 LDY #$02 +6189- A5 08 LDA $08 +618B- 91 06 STA ($06),Y +618D- C8 INY +618E- A5 09 LDA $09 +6190- 91 06 STA ($06),Y +6192- C8 INY +6193- A5 19 LDA $19 +6195- 91 06 STA ($06),Y +6197- C8 INY +6198- A5 1E LDA $1E +619A- 91 06 STA ($06),Y +619C- C8 INY +619D- A5 E3 LDA $E3 +619F- 91 06 STA ($06),Y +61A1- C8 INY +61A2- A5 EB LDA $EB +61A4- 91 06 STA ($06),Y +61A6- C8 INY +61A7- A5 EC LDA $EC +61A9- 91 06 STA ($06),Y +61AB- C8 INY +61AC- A5 ED LDA $ED +61AE- 91 06 STA ($06),Y +61B0- C8 INY +61B1- A5 EE LDA $EE +61B3- 91 06 STA ($06),Y +61B5- C8 INY +61B6- A5 EF LDA $EF +61B8- 91 06 STA ($06),Y +61BA- C8 INY +61BB- A5 FA LDA $FA +61BD- 91 06 STA ($06),Y +61BF- C8 INY +61C0- A5 FB LDA $FB +61C2- 91 06 STA ($06),Y +61C4- C8 INY +61C5- A5 FC LDA $FC +61C7- 91 06 STA ($06),Y +61C9- C8 INY +61CA- A5 FD LDA $FD +61CC- 91 06 STA ($06),Y +61CE- C8 INY +61CF- A5 FE LDA $FE +61D1- 91 06 STA ($06),Y +61D3- C8 INY +61D4- A5 FF LDA $FF +61D6- 91 06 STA ($06),Y +61D8- AD E2 61 LDA $61E2 +61DB- 48 PHA +61DC- AD E1 61 LDA $61E1 +61DF- 48 PHA +61E0- 60 RTS +61E1- 00 BRK +61E2- 00 BRK +61E3- 68 PLA +61E4- 8D 57 62 STA $6257 +61E7- 68 PLA +61E8- 8D 58 62 STA $6258 +61EB- 68 PLA +61EC- 85 06 STA $06 +61EE- 68 PLA +61EF- 85 07 STA $07 +61F1- A0 02 LDY #$02 +61F3- B1 06 LDA ($06),Y +61F5- 85 08 STA $08 +61F7- C8 INY +61F8- B1 06 LDA ($06),Y +61FA- 85 09 STA $09 +61FC- C8 INY +61FD- B1 06 LDA ($06),Y +61FF- 85 19 STA $19 +6201- C8 INY +6202- B1 06 LDA ($06),Y +6204- 85 1E STA $1E +6206- C8 INY +6207- B1 06 LDA ($06),Y +6209- 85 E3 STA $E3 +620B- C8 INY +620C- B1 06 LDA ($06),Y +620E- 85 EB STA $EB +6210- C8 INY +6211- B1 06 LDA ($06),Y +6213- 85 EC STA $EC +6215- C8 INY +6216- B1 06 LDA ($06),Y +6218- 85 ED STA $ED +621A- C8 INY +621B- B1 06 LDA ($06),Y +621D- 85 EE STA $EE +621F- C8 INY +6220- B1 06 LDA ($06),Y +6222- 85 EF STA $EF +6224- C8 INY +6225- B1 06 LDA ($06),Y +6227- 85 FA STA $FA +6229- C8 INY +622A- B1 06 LDA ($06),Y +622C- 85 FB STA $FB +622E- C8 INY +622F- B1 06 LDA ($06),Y +6231- 85 FC STA $FC +6233- C8 INY +6234- B1 06 LDA ($06),Y +6236- 85 FD STA $FD +6238- C8 INY +6239- B1 06 LDA ($06),Y +623B- 85 FE STA $FE +623D- C8 INY +623E- B1 06 LDA ($06),Y +6240- 85 FF STA $FF +6242- A0 00 LDY #$00 +6244- B1 06 LDA ($06),Y +6246- AA TAX +6247- B1 07 LDA ($07),Y +6249- A8 TAY +624A- 86 06 STX $06 +624C- 84 07 STY $07 +624E- AD 58 62 LDA $6258 +6251- 48 PHA +6252- AD 57 62 LDA $6257 +6255- 48 PHA +6256- 60 RTS +6257- 00 BRK +6258- 00 BRK +6259- 60 RTS diff --git a/disks/disk1__stdio_common/COMMON.DEMO.S b/disks/disk1__stdio_common/COMMON.DEMO.S new file mode 100644 index 0000000..fb93974 --- /dev/null +++ b/disks/disk1__stdio_common/COMMON.DEMO.S @@ -0,0 +1,1433 @@ +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 C3 LDY $C320,X +0950- CF ??? +0951- CD CD CF CMP $CFCD +0954- CE 20 C4 DEC $C420 +0957- C5 CD CMP $CD +0959- CF ??? +095A- 20 A9 AD JSR $ADA9 +095D- 20 20 20 JSR $2020 +0960- 20 20 20 JSR $2020 +0963- 20 AA 8D JSR $8DAA +0966- AA TAX +0967- 20 20 20 JSR $2020 +096A- 20 20 20 JSR $2020 +096D- 20 20 20 JSR $2020 +0970- 20 20 20 JSR $2020 +0973- 20 20 20 JSR $2020 +0976- 20 20 20 JSR $2020 +0979- 20 20 20 JSR $2020 +097C- 20 20 20 JSR $2020 +097F- 20 20 20 JSR $2020 +0982- 20 20 20 JSR $2020 +0985- AA TAX +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 C3 LDY #$C3 +0B06- CF ??? +0B07- CD CD CF CMP $CFCD +0B0A- CE AE C4 DEC $C4AE +0B0D- C5 CD CMP $CD +0B0F- CF ??? +0B10- 8D AA 8D STA $8DAA +0B13- AA TAX +0B14- E0 E0 CPX #$E0 +0B16- E0 E0 CPX #$E0 +0B18- E0 E0 CPX #$E0 +0B1A- E0 E0 CPX #$E0 +0B1C- E0 E0 CPX #$E0 +0B1E- E0 E0 CPX #$E0 +0B20- E0 E0 CPX #$E0 +0B22- E0 E0 CPX #$E0 +0B24- E0 E0 CPX #$E0 +0B26- E0 E0 CPX #$E0 +0B28- E0 E0 CPX #$E0 +0B2A- E0 E0 CPX #$E0 +0B2C- E0 E0 CPX #$E0 +0B2E- E0 E0 CPX #$E0 +0B30- E0 E0 CPX #$E0 +0B32- AA TAX +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 A0 CMP $A0 +0B87- C3 ??? +0B88- CF ??? +0B89- CD CD CF CMP $CFCD +0B8C- CE AE CD DEC $CDAE +0B8F- C1 C3 CMP ($C3,X) +0B91- 8D AA 8D STA $8DAA +0B94- A0 D0 LDY #$D0 +0B96- D5 D4 CMP $D4,X +0B98- 20 A0 C3 JSR $C3A0 +0B9B- CF ??? +0B9C- CD CD CF CMP $CFCD +0B9F- CE AE C8 DEC $C8AE +0BA2- CF ??? +0BA3- CF ??? +0BA4- CB ??? +0BA5- D3 ??? +0BA6- 8D AA 8D STA $8DAA +0BA9- A0 CF LDY #$CF +0BAB- D2 C7 CMP ($C7) +0BAD- A0 A4 LDY #$A4 +0BAF- B6 B0 LDX $B0,Y +0BB1- B0 B0 BCS $0B63 +0BB3- 8D AA 8D STA $8DAA +0BB6- AA TAX +0BB7- E0 E0 CPX #$E0 +0BB9- E0 E0 CPX #$E0 +0BBB- E0 E0 CPX #$E0 +0BBD- E0 E0 CPX #$E0 +0BBF- E0 E0 CPX #$E0 +0BC1- E0 E0 CPX #$E0 +0BC3- E0 E0 CPX #$E0 +0BC5- E0 E0 CPX #$E0 +0BC7- E0 E0 CPX #$E0 +0BC9- E0 E0 CPX #$E0 +0BCB- E0 E0 CPX #$E0 +0BCD- E0 E0 CPX #$E0 +0BCF- E0 E0 CPX #$E0 +0BD1- E0 E0 CPX #$E0 +0BD3- E0 E0 CPX #$E0 +0BD5- AA TAX +0BD6- 8D AA 20 STA $20AA +0BD9- 20 20 20 JSR $2020 +0BDC- 20 20 D0 JSR $D020 +0BDF- D2 CF CMP ($CF) +0BE1- C7 ??? +0BE2- D2 C1 CMP ($C1) +0BE4- CD 20 CD CMP $CD20 +0BE7- C1 C9 CMP ($C9,X) +0BE9- CE 20 C2 DEC $C220 +0BEC- CF ??? +0BED- C4 D9 CPY $D9 +0BEF- 20 20 20 JSR $2020 +0BF2- 20 20 20 JSR $2020 +0BF5- 20 AA 8D JSR $8DAA +0BF8- AA TAX +0BF9- AC AC AC LDY $ACAC +0BFC- AC AC AC LDY $ACAC +0BFF- AC AC AC LDY $ACAC +0C02- AC AC AC LDY $ACAC +0C05- AC AC AC LDY $ACAC +0C08- AC AC AC LDY $ACAC +0C0B- AC AC AC LDY $ACAC +0C0E- AC AC AC LDY $ACAC +0C11- AC AC AC LDY $ACAC +0C14- AC AC AC LDY $ACAC +0C17- AA TAX +0C18- 8D AA 8D STA $8DAA +0C1B- AA TAX +0C1C- 8D AA 8D STA $8DAA +0C1F- AA TAX +0C20- AA TAX +0C21- 20 C2 C9 JSR $C9C2 +0C24- C7 ??? +0C25- 20 CC D5 JSR $D5CC +0C28- CD D0 D3 CMP $D3D0 +0C2B- 20 AD AD JSR $ADAD +0C2E- 20 C8 C9 JSR $C9C8 +0C31- C7 ??? +0C32- C8 INY +0C33- 20 CC C5 JSR $C5CC +0C36- D6 C5 DEC $C5,X +0C38- CC 20 C3 CPY $C320 +0C3B- CF ??? +0C3C- C4 C5 CPY $C5 +0C3E- 8D AA 8D STA $8DAA +0C41- AA TAX +0C42- 8D AA AA STA $AAAA +0C45- 20 CD C5 JSR $C5CD +0C48- CD C6 C9 CMP $C9C6 +0C4B- CC CC 20 CPY $20CC +0C4E- C4 CF CPY $CF +0C50- C5 D3 CMP $D3 +0C52- 20 C1 C2 JSR $C2C1 +0C55- CF ??? +0C56- D5 D4 CMP $D4,X +0C58- 20 D7 C8 JSR $C8D7 +0C5B- C1 D4 CMP ($D4,X) +0C5D- 20 C9 D4 JSR $D4C9 +0C60- D3 ??? +0C61- 20 CE C1 JSR $C1CE +0C64- CD C5 8D CMP $8DC5 +0C67- AA TAX +0C68- AA TAX +0C69- 20 C9 CD JSR $CDC9 +0C6C- D0 CC BNE $0C3A +0C6E- C9 C5 CMP #$C5 +0C70- D3 ??? +0C71- BA TSX +0C72- 20 C9 D4 JSR $D4C9 +0C75- 20 C6 C9 JSR $C9C6 +0C78- CC CC D3 CPY $D3CC +0C7B- 20 C1 20 JSR $20C1 +0C7E- C2 ??? +0C7F- CC CF C3 CPY $C3CF +0C82- CB ??? +0C83- 20 CF C6 JSR $C6CF +0C86- 20 CD C5 JSR $C5CD +0C89- CD CF D2 CMP $D2CF +0C8C- D9 8D AA CMP $AA8D,Y +0C8F- AA TAX +0C90- 20 D7 C9 JSR $C9D7 +0C93- D4 ??? +0C94- C8 INY +0C95- 20 C1 20 JSR $20C1 +0C98- D0 C1 BNE $0C5B +0C9A- D2 D4 CMP ($D4) +0C9C- C9 C3 CMP #$C3 +0C9E- D5 CC CMP $CC,X +0CA0- C1 D2 CMP ($D2,X) +0CA2- 20 C3 C8 JSR $C8C3 +0CA5- C1 D2 CMP ($D2,X) +0CA7- C1 C3 CMP ($C3,X) +0CA9- D4 ??? +0CAA- C5 D2 CMP $D2 +0CAC- AE 20 D4 LDX $D420 +0CAF- CF ??? +0CB0- 20 D3 C5 JSR $C5D3 +0CB3- C5 8D CMP $8D +0CB5- AA TAX +0CB6- AA TAX +0CB7- 20 D4 C8 JSR $C8D4 +0CBA- C9 D3 CMP #$D3 +0CBC- 20 C9 CE JSR $CEC9 +0CBF- 20 C1 C3 JSR $C3C1 +0CC2- D4 ??? +0CC3- C9 CF CMP #$CF +0CC5- CE AC 20 DEC $20AC +0CC8- C8 INY +0CC9- C5 C1 CMP $C1 +0CCB- C4 20 CPY $20 +0CCD- CF ??? +0CCE- D6 C5 DEC $C5,X +0CD0- D2 20 CMP ($20) +0CD2- D4 ??? +0CD3- CF ??? +0CD4- 20 D4 C8 JSR $C8D4 +0CD7- C5 8D CMP $8D +0CD9- AA TAX +0CDA- AA TAX +0CDB- 20 CD CF JSR $CFCD +0CDE- CE C9 D4 DEC $D4C9 +0CE1- CF ??? +0CE2- D2 20 CMP ($20) +0CE4- C2 ??? +0CE5- C5 C6 CMP $C6 +0CE7- CF ??? +0CE8- D2 C5 CMP ($C5) +0CEA- 20 C1 CE JSR $CEC1 +0CED- C4 20 CPY $20 +0CEF- C1 C6 CMP ($C6,X) +0CF1- D4 ??? +0CF2- C5 D2 CMP $D2 +0CF4- 20 D4 C8 JSR $C8D4 +0CF7- C9 D3 CMP #$D3 +0CF9- 20 D2 D5 JSR $D5D2 +0CFC- CE D3 8D DEC $8DD3 +0CFF- AA TAX +0D00- AA TAX +0D01- 20 C1 CE JSR $CEC1 +0D04- C4 20 CPY $20 +0D06- D4 ??? +0D07- D9 D0 C5 CMP $C5D0,Y +0D0A- 20 B3 B0 JSR $B0B3 +0D0D- B0 CC BCS $0CDB +0D0F- AE 8D AA LDX $AA8D +0D12- 8D AA AA STA $AAAA +0D15- 20 D4 C8 JSR $C8D4 +0D18- C5 20 CMP $20 +0D1A- D3 ??? +0D1B- C1 CD CMP ($CD,X) +0D1D- C5 20 CMP $20 +0D1F- C1 D3 CMP ($D3,X) +0D21- 20 C2 C5 JSR $C5C2 +0D24- CC CF D7 CPY $D7CF +0D27- 20 C3 C1 JSR $C1C3 +0D2A- CE 20 C2 DEC $C220 +0D2D- C5 20 CMP $20 +0D2F- C1 C3 CMP ($C3,X) +0D31- C3 ??? +0D32- CF ??? +0D33- CD D0 CC CMP $CCD0 +0D36- C9 D3 CMP #$D3 +0D38- C8 INY +0D39- C5 C4 CMP $C4 +0D3B- 8D AA AA STA $AAAA +0D3E- 20 D7 C9 JSR $C9D7 +0D41- D4 ??? +0D42- C8 INY +0D43- 20 D4 C8 JSR $C8D4 +0D46- C5 20 CMP $20 +0D48- C6 CF DEC $CF +0D4A- CC CC CF CPY $CFCC +0D4D- D7 ??? +0D4E- C9 CE CMP #$CE +0D50- C7 ??? +0D51- 20 CD C1 JSR $C1CD +0D54- C3 ??? +0D55- D2 CF CMP ($CF) +0D57- BA TSX +0D58- 8D AA 8D STA $8DAA +0D5B- AA TAX +0D5C- AA TAX +0D5D- 20 20 20 JSR $2020 +0D60- 20 20 20 JSR $2020 +0D63- 20 DF CD JSR $CDDF +0D66- C6 C9 DEC $C9 +0D68- CC 20 A4 CPY $A420 +0D6B- B3 ??? +0D6C- B0 B0 BCS $0D1E +0D6E- BB ??? +0D6F- A3 ??? +0D70- B1 B0 LDA ($B0),Y +0D72- BB ??? +0D73- A3 ??? +0D74- B0 8D BCS $0D03 +0D76- AA TAX +0D77- 8D A0 CC STA $CCA0 +0D7A- C4 C1 CPY $C1 +0D7C- A0 A3 LDY #$A3 +0D7E- BE A4 B3 LDX $B3A4,Y +0D81- B0 B0 BCS $0D33 +0D83- A0 BB LDY #$BB +0D85- 20 C1 D2 JSR $D2C1 +0D88- C5 C1 CMP $C1 +0D8A- 20 D4 CF JSR $CFD4 +0D8D- 20 C6 C9 JSR $C9C6 +0D90- CC CC BB CPY $BBCC +0D93- 20 C8 C9 JSR $C9C8 +0D96- C7 ??? +0D97- C8 INY +0D98- 8D A0 D0 STA $D0A0 +0D9B- C8 INY +0D9C- C1 8D CMP ($8D,X) +0D9E- A0 CC LDY #$CC +0DA0- C4 C1 CPY $C1 +0DA2- A0 A3 LDY #$A3 +0DA4- BC A4 B3 LDY $B3A4,X +0DA7- B0 B0 BCS $0D59 +0DA9- A0 BB LDY #$BB +0DAB- 20 CC CF JSR $CFCC +0DAE- D7 ??? +0DAF- 8D A0 D0 STA $D0A0 +0DB2- C8 INY +0DB3- C1 8D CMP ($8D,X) +0DB5- A0 CC LDY #$CC +0DB7- C4 C1 CPY $C1 +0DB9- A0 A3 LDY #$A3 +0DBB- BE B1 B0 LDX $B0B1,Y +0DBE- 8D A0 D0 STA $D0A0 +0DC1- C8 INY +0DC2- C1 8D CMP ($8D,X) +0DC4- A0 CC LDY #$CC +0DC6- C4 C1 CPY $C1 +0DC8- A0 A3 LDY #$A3 +0DCA- BC B1 B0 LDY $B0B1,X +0DCD- 8D A0 D0 STA $D0A0 +0DD0- C8 INY +0DD1- C1 8D CMP ($8D,X) +0DD3- A0 CC LDY #$CC +0DD5- C4 C1 CPY $C1 +0DD7- A0 A3 LDY #$A3 +0DD9- B0 A0 BCS $0D7B +0DDB- BB ??? +0DDC- 20 C6 C9 JSR $C9C6 +0DDF- CC CC 20 CPY $20CC +0DE2- C3 ??? +0DE3- C8 INY +0DE4- C1 D2 CMP ($D2,X) +0DE6- C1 C3 CMP ($C3,X) +0DE8- D4 ??? +0DE9- C5 D2 CMP $D2 +0DEB- 8D A0 D0 STA $D0A0 +0DEE- C8 INY +0DEF- C1 8D CMP ($8D,X) +0DF1- A0 CA LDY #$CA +0DF3- D3 ??? +0DF4- D2 A0 CMP ($A0) +0DF6- CD C5 CD CMP $CDC5 +0DF9- C6 C9 DEC $C9 +0DFB- CC CC 8D CPY $8DCC +0DFE- AA TAX +0DFF- 8D AA AA STA $AAAA +0E02- 20 CD C5 JSR $C5CD +0E05- CD CD CF CMP $CFCD +0E08- D6 C5 DEC $C5,X +0E0A- 20 C1 CC JSR $CCC1 +0E0D- D3 ??? +0E0E- CF ??? +0E0F- 20 C4 CF JSR $CFC4 +0E12- C5 D3 CMP $D3 +0E14- 20 D7 C8 JSR $C8D7 +0E17- C1 D4 CMP ($D4,X) +0E19- 20 C9 D4 JSR $D4C9 +0E1C- 20 D3 C1 JSR $C1D3 +0E1F- D9 D3 BA CMP $BAD3,Y +0E22- 20 C9 D4 JSR $D4C9 +0E25- 20 CD CF JSR $CFCD +0E28- D6 C5 DEC $C5,X +0E2A- D3 ??? +0E2B- 8D AA AA STA $AAAA +0E2E- 20 C1 20 JSR $20C1 +0E31- C2 ??? +0E32- CC CF C3 CPY $C3CF +0E35- CB ??? +0E36- 20 CF C6 JSR $C6CF +0E39- 20 CD C5 JSR $C5CD +0E3C- CD CF D2 CMP $D2CF +0E3F- D9 20 C6 CMP $C620,Y +0E42- D2 CF CMP ($CF) +0E44- CD 20 C1 CMP $C120 +0E47- 20 D3 CF JSR $CFD3 +0E4A- D5 D2 CMP $D2,X +0E4C- C3 ??? +0E4D- C5 20 CMP $20 +0E4F- CC CF C3 CPY $C3CF +0E52- C1 D4 CMP ($D4,X) +0E54- C9 CF CMP #$CF +0E56- CE 8D AA DEC $AA8D +0E59- AA TAX +0E5A- 20 D4 CF JSR $CFD4 +0E5D- 20 C1 20 JSR $20C1 +0E60- C4 C5 CPY $C5 +0E62- D3 ??? +0E63- D4 ??? +0E64- C9 CE CMP #$CE +0E66- C1 D4 CMP ($D4,X) +0E68- C9 CF CMP #$CF +0E6A- CE 20 CC DEC $CC20 +0E6D- CF ??? +0E6E- C3 ??? +0E6F- C1 D4 CMP ($D4,X) +0E71- C9 CF CMP #$CF +0E73- CE AE 20 DEC $20AE +0E76- D7 ??? +0E77- C5 A7 CMP $A7 +0E79- CC CC 20 CPY $20CC +0E7C- CE CF D7 DEC $D7CF +0E7F- 20 CD CF JSR $CFCD +0E82- D6 C5 DEC $C5,X +0E84- 8D AA AA STA $AAAA +0E87- 20 D4 C8 JSR $C8D4 +0E8A- CF ??? +0E8B- D3 ??? +0E8C- C5 20 CMP $20 +0E8E- DA PHX +0E8F- C5 D2 CMP $D2 +0E91- CF ??? +0E92- C5 D3 CMP $D3 +0E94- 20 D0 CC JSR $CCD0 +0E97- C1 C3 CMP ($C3,X) +0E99- C5 C4 CMP $C4 +0E9B- 20 C2 D9 JSR $D9C2 +0E9E- 20 CD C5 JSR $C5CD +0EA1- CD C6 C9 CMP $C9C6 +0EA4- CC CC 20 CPY $20CC +0EA7- D4 ??? +0EA8- CF ??? +0EA9- 20 C1 CE JSR $CEC1 +0EAC- CF ??? +0EAD- D4 ??? +0EAE- C8 INY +0EAF- C5 D2 CMP $D2 +0EB1- 8D AA AA STA $AAAA +0EB4- 20 CC CF JSR $CFCC +0EB7- C3 ??? +0EB8- C1 D4 CMP ($D4,X) +0EBA- C9 CF CMP #$CF +0EBC- CE AE 20 DEC $20AE +0EBF- C1 C7 CMP ($C7,X) +0EC1- C1 C9 CMP ($C9,X) +0EC3- CE AC 20 DEC $20AC +0EC6- D9 CF D5 CMP $D5CF,Y +0EC9- A7 ??? +0ECA- CC CC 20 CPY $20CC +0ECD- CF ??? +0ECE- CE CC D9 DEC $D9CC +0ED1- 20 D3 C5 JSR $C5D3 +0ED4- C5 20 CMP $20 +0ED6- D4 ??? +0ED7- C8 INY +0ED8- C9 D3 CMP #$D3 +0EDA- 8D AA AA STA $AAAA +0EDD- 20 C3 C8 JSR $C8C3 +0EE0- C1 CE CMP ($CE,X) +0EE2- C7 ??? +0EE3- C5 20 CMP $20 +0EE5- D6 C9 DEC $C9,X +0EE7- C1 20 CMP ($20,X) +0EE9- D4 ??? +0EEA- C8 INY +0EEB- C5 20 CMP $20 +0EED- CD CF CE CMP $CECF +0EF0- C9 D4 CMP #$D4 +0EF2- CF ??? +0EF3- D2 20 CMP ($20) +0EF5- A8 TAY +0EF6- C3 ??? +0EF7- C1 CC CMP ($CC,X) +0EF9- CC AD B1 CPY $B1AD +0EFC- B5 B1 LDA $B1,X +0EFE- A9 AE LDA #$AE +0F00- 8D AA 8D STA $8DAA +0F03- AA TAX +0F04- 8D AA AA STA $AAAA +0F07- 20 D4 C8 JSR $C8D4 +0F0A- C9 D3 CMP #$D3 +0F0C- 20 C3 C1 JSR $C1C3 +0F0F- CE 20 C1 DEC $C120 +0F12- CC D3 CF CPY $CFD3 +0F15- 20 C2 C5 JSR $C5C2 +0F18- 20 C4 CF JSR $CFC4 +0F1B- CE C5 20 DEC $20C5 +0F1E- D7 ??? +0F1F- C9 D4 CMP #$D4 +0F21- C8 INY +0F22- 20 D4 C8 JSR $C8D4 +0F25- C5 20 CMP $20 +0F27- CD C1 C3 CMP $C3C1 +0F2A- D2 CF CMP ($CF) +0F2C- BA TSX +0F2D- 8D AA 8D STA $8DAA +0F30- AA TAX +0F31- AA TAX +0F32- 20 20 20 JSR $2020 +0F35- 20 20 20 JSR $2020 +0F38- 20 DF CD JSR $CDDF +0F3B- CD CF D6 CMP $D6CF +0F3E- 20 A4 B3 JSR $B3A4 +0F41- B0 B0 BCS $0EF3 +0F43- BB ??? +0F44- A4 B3 LDY $B3 +0F46- B2 B0 LDA ($B0) +0F48- BB ??? +0F49- A3 ??? +0F4A- B1 B0 LDA ($B0),Y +0F4C- 8D AA 8D STA $8DAA +0F4F- A0 CC LDY #$CC +0F51- C4 C1 CPY $C1 +0F53- A0 A3 LDY #$A3 +0F55- BE A4 B3 LDX $B3A4,Y +0F58- B0 B0 BCS $0F0A +0F5A- A0 BB LDY #$BB +0F5C- 20 D3 D2 JSR $D2D3 +0F5F- C3 ??? +0F60- 20 C8 C9 JSR $C9C8 +0F63- C7 ??? +0F64- C8 INY +0F65- 8D A0 D0 STA $D0A0 +0F68- C8 INY +0F69- C1 8D CMP ($8D,X) +0F6B- A0 CC LDY #$CC +0F6D- C4 C1 CPY $C1 +0F6F- A0 A3 LDY #$A3 +0F71- BC A4 B3 LDY $B3A4,X +0F74- B0 B0 BCS $0F26 +0F76- A0 BB LDY #$BB +0F78- 20 D3 D2 JSR $D2D3 +0F7B- C3 ??? +0F7C- 20 CC CF JSR $CFCC +0F7F- D7 ??? +0F80- 8D A0 D0 STA $D0A0 +0F83- C8 INY +0F84- C1 8D CMP ($8D,X) +0F86- A0 CC LDY #$CC +0F88- C4 C1 CPY $C1 +0F8A- A0 A3 LDY #$A3 +0F8C- BE A4 B3 LDX $B3A4,Y +0F8F- B2 B0 LDA ($B0) +0F91- A0 BB LDY #$BB +0F93- 20 C4 C5 JSR $C5C4 +0F96- D3 ??? +0F97- D4 ??? +0F98- 20 C8 C9 JSR $C9C8 +0F9B- C7 ??? +0F9C- C8 INY +0F9D- 8D A0 D0 STA $D0A0 +0FA0- C8 INY +0FA1- C1 8D CMP ($8D,X) +0FA3- A0 CC LDY #$CC +0FA5- C4 C1 CPY $C1 +0FA7- A0 A3 LDY #$A3 +0FA9- BC A4 B3 LDY $B3A4,X +0FAC- B2 B0 LDA ($B0) +0FAE- A0 BB LDY #$BB +0FB0- 20 C4 C5 JSR $C5C4 +0FB3- D3 ??? +0FB4- D4 ??? +0FB5- 20 CC CF JSR $CFCC +0FB8- D7 ??? +0FB9- 8D A0 D0 STA $D0A0 +0FBC- C8 INY +0FBD- C1 8D CMP ($8D,X) +0FBF- A0 CC LDY #$CC +0FC1- C4 C1 CPY $C1 +0FC3- A0 A3 LDY #$A3 +0FC5- BE B1 B0 LDX $B0B1,Y +0FC8- A0 BB LDY #$BB +0FCA- 20 A3 20 JSR $20A3 +0FCD- CF ??? +0FCE- C6 20 DEC $20 +0FD0- C2 ??? +0FD1- D9 D4 C5 CMP $C5D4,Y +0FD4- D3 ??? +0FD5- 20 D4 CF JSR $CFD4 +0FD8- 20 CD CF JSR $CFCD +0FDB- D6 C5 DEC $C5,X +0FDD- 8D A0 D0 STA $D0A0 +0FE0- C8 INY +0FE1- C1 8D CMP ($8D,X) +0FE3- A0 CC LDY #$CC +0FE5- C4 C1 CPY $C1 +0FE7- A0 A3 LDY #$A3 +0FE9- BC B1 B0 LDY $B0B1,X +0FEC- A0 BB LDY #$BB +0FEE- 20 CC CF JSR $CFCC +0FF1- D7 ??? +0FF2- 20 C2 D9 JSR $D9C2 +0FF5- D4 ??? +0FF6- C5 8D CMP $8D +0FF8- A0 D0 LDY #$D0 +0FFA- C8 INY +0FFB- C1 8D CMP ($8D,X) +0FFD- A0 CA LDY #$CA +0FFF- D3 ??? +1000- D2 A0 CMP ($A0) +1002- CD C5 CD CMP $CDC5 +1005- CD CF D6 CMP $D6CF +1008- C5 8D CMP $8D +100A- AA TAX +100B- 8D AA AA STA $AAAA +100E- 20 C4 C5 JSR $C5C4 +1011- CC C1 D9 CPY $D9C1 +1014- CD D3 20 CMP $20D3 +1017- D2 D5 CMP ($D5) +1019- CE D3 20 DEC $20D3 +101C- D4 ??? +101D- C8 INY +101E- D2 CF CMP ($CF) +1020- D5 C7 CMP $C7,X +1022- C8 INY +1023- 20 C3 D9 JSR $D9C3 +1026- C3 ??? +1027- CC C5 D3 CPY $D3C5 +102A- 20 CF C6 JSR $C6CF +102D- 20 D4 C8 JSR $C8D4 +1030- C5 8D CMP $8D +1032- AA TAX +1033- AA TAX +1034- 20 B6 B5 JSR $B5B6 +1037- B0 B2 BCS $0FEB +1039- 20 D5 CE JSR $CED5 +103C- D4 ??? +103D- C9 CC CMP #$CC +103F- 20 C1 20 JSR $20C1 +1042- C3 ??? +1043- C5 D2 CMP $D2 +1045- D4 ??? +1046- C1 C9 CMP ($C9,X) +1048- CE 20 C1 DEC $C120 +104B- CD CF D5 CMP $D5CF +104E- CE D4 20 DEC $20D4 +1051- CF ??? +1052- C6 20 DEC $20 +1054- D4 ??? +1055- C9 CD CMP #$CD +1057- C5 8D CMP $8D +1059- AA TAX +105A- AA TAX +105B- 20 C8 C1 JSR $C1C8 +105E- D3 ??? +105F- 20 D0 C1 JSR $C1D0 +1062- D3 ??? +1063- D3 ??? +1064- C5 C4 CMP $C4 +1066- AE 8D AA LDX $AA8D +1069- 8D AA AA STA $AAAA +106C- 20 C9 CE JSR $CEC9 +106F- 20 CD C1 JSR $C1CD +1072- C3 ??? +1073- D2 CF CMP ($CF) +1075- 20 C6 CF JSR $CFC6 +1078- D2 CD CMP ($CD) +107A- BA TSX +107B- 8D AA 8D STA $8DAA +107E- AA TAX +107F- AA TAX +1080- 20 20 20 JSR $2020 +1083- 20 20 20 JSR $2020 +1086- 20 DF C4 JSR $C4DF +1089- CC C1 D9 CPY $D9C1 +108C- 20 A3 B2 JSR $B2A3 +108F- B5 B0 LDA $B0,X +1091- 8D AA AA STA $AAAA +1094- 20 20 20 JSR $2020 +1097- 20 20 20 JSR $2020 +109A- 20 DF C4 JSR $C4DF +109D- CC C1 D9 CPY $D9C1 +10A0- 20 A3 B2 JSR $B2A3 +10A3- B5 B0 LDA $B0,X +10A5- 8D AA AA STA $AAAA +10A8- 20 20 20 JSR $2020 +10AB- 20 20 20 JSR $2020 +10AE- 20 DF C4 JSR $C4DF +10B1- CC C1 D9 CPY $D9C1 +10B4- 20 A3 B2 JSR $B2A3 +10B7- B5 B0 LDA $B0,X +10B9- 8D AA AA STA $AAAA +10BC- 20 20 20 JSR $2020 +10BF- 20 20 20 JSR $2020 +10C2- 20 DF C4 JSR $C4DF +10C5- CC C1 D9 CPY $D9C1 +10C8- 20 A3 B2 JSR $B2A3 +10CB- B5 B0 LDA $B0,X +10CD- 8D AA 8D STA $8DAA +10D0- A0 CC LDY #$CC +10D2- C4 D9 CPY $D9 +10D4- A0 A3 LDY #$A3 +10D6- B2 B5 LDA ($B5) +10D8- B0 A0 BCS $107A +10DA- BB ??? +10DB- 20 D4 C9 JSR $C9D4 +10DE- CD C5 20 CMP $20C5 +10E1- C9 CE CMP #$CE +10E3- 20 CD C9 JSR $C9CD +10E6- CC CC C9 CPY $C9CC +10E9- D3 ??? +10EA- C5 C3 CMP $C3 +10EC- CF ??? +10ED- CE C4 D3 DEC $D3C4 +10F0- 8D BB 20 STA $20BB +10F3- C9 D3 CMP #$D3 +10F5- 20 D0 C1 JSR $C1D0 +10F8- D3 ??? +10F9- D3 ??? +10FA- C5 C4 CMP $C4 +10FC- 20 D6 C9 JSR $C9D6 +10FF- C1 20 CMP ($20,X) +1101- D9 8D BB CMP $BB8D,Y +1104- 20 B2 B5 JSR $B5B2 +1107- B0 20 BCS $1129 +1109- BD 20 B1 LDA $B120,X +110C- AF ??? +110D- B4 20 LDY $20,X +110F- D3 ??? +1110- C5 C3 CMP $C3 +1112- CF ??? +1113- CE C4 8D DEC $8DC4 +1116- A0 CA LDY #$CA +1118- D3 ??? +1119- D2 A0 CMP ($A0) +111B- C4 C5 CPY $C5 +111D- CC C1 D9 CPY $D9C1 +1120- CD D3 8D CMP $8DD3 +1123- A0 CC LDY #$CC +1125- C4 D9 CPY $D9 +1127- A0 A3 LDY #$A3 +1129- B2 B5 LDA ($B5) +112B- B0 8D BCS $10BA +112D- A0 CA LDY #$CA +112F- D3 ??? +1130- D2 A0 CMP ($A0) +1132- C4 C5 CPY $C5 +1134- CC C1 D9 CPY $D9C1 +1137- CD D3 8D CMP $8DD3 +113A- A0 CC LDY #$CC +113C- C4 D9 CPY $D9 +113E- A0 A3 LDY #$A3 +1140- B2 B5 LDA ($B5) +1142- B0 8D BCS $10D1 +1144- A0 CA LDY #$CA +1146- D3 ??? +1147- D2 A0 CMP ($A0) +1149- C4 C5 CPY $C5 +114B- CC C1 D9 CPY $D9C1 +114E- CD D3 8D CMP $8DD3 +1151- A0 CC LDY #$CC +1153- C4 D9 CPY $D9 +1155- A0 A3 LDY #$A3 +1157- B2 B5 LDA ($B5) +1159- B0 8D BCS $10E8 +115B- A0 CA LDY #$CA +115D- D3 ??? +115E- D2 A0 CMP ($A0) +1160- C4 C5 CPY $C5 +1162- CC C1 D9 CPY $D9C1 +1165- CD D3 A0 CMP $A0D3 +1168- BB ??? +1169- 20 BD 20 JSR $20BD +116C- B1 20 LDA ($20),Y +116E- D3 ??? +116F- C5 C3 CMP $C3 +1171- CF ??? +1172- CE C4 20 DEC $20C4 +1175- C4 C5 CPY $C5 +1177- CC C1 D9 CPY $D9C1 +117A- 8D AA 8D STA $8DAA +117D- AA TAX +117E- AA TAX +117F- 20 DA D3 JSR $D3DA +1182- C1 D6 CMP ($D6,X) +1184- C5 20 CMP $20 +1186- C2 ??? +1187- C1 C3 CMP ($C3,X) +1189- CB ??? +118A- D3 ??? +118B- 20 D5 D0 JSR $D0D5 +118E- 20 D4 C8 JSR $C8D4 +1191- C5 20 CMP $20 +1193- A2 C6 LDX #$C6 +1195- D2 C5 CMP ($C5) +1197- C5 A2 CMP $A2 +1199- 20 C1 D2 JSR $D2C1 +119C- C5 C1 CMP $C1 +119E- D3 ??? +119F- 20 CF C6 JSR $C6CF +11A2- 8D AA AA STA $AAAA +11A5- 20 D4 C8 JSR $C8D4 +11A8- C5 20 CMP $20 +11AA- DA PHX +11AB- C5 D2 CMP $D2 +11AD- CF ??? +11AE- 20 D0 C1 JSR $C1D0 +11B1- C7 ??? +11B2- C5 20 CMP $20 +11B4- D4 ??? +11B5- CF ??? +11B6- 20 C1 CE JSR $CEC1 +11B9- 20 C1 CC JSR $CCC1 +11BC- D4 ??? +11BD- C5 D2 CMP $D2 +11BF- CE C1 D4 DEC $D4C1 +11C2- C5 20 CMP $20 +11C4- CD C5 CD CMP $CDC5 +11C7- CF ??? +11C8- D2 D9 CMP ($D9) +11CA- 8D AA AA STA $AAAA +11CD- 20 CC CF JSR $CFCC +11D0- C3 ??? +11D1- C1 D4 CMP ($D4,X) +11D3- C9 CF CMP #$CF +11D5- CE AE 20 DEC $20AE +11D8- D4 ??? +11D9- C8 INY +11DA- C9 D3 CMP #$D3 +11DC- 20 C9 D3 JSR $D3C9 +11DF- 20 CD CF JSR $CFCD +11E2- D3 ??? +11E3- D4 ??? +11E4- CC D9 20 CPY $20D9 +11E7- D5 D3 CMP $D3,X +11E9- C5 C6 CMP $C6 +11EB- D5 CC CMP $CC,X +11ED- 20 D7 C8 JSR $C8D7 +11F0- C5 CE CMP $CE +11F2- 8D AA AA STA $AAAA +11F5- 20 D9 CF JSR $CFD9 +11F8- D5 20 CMP $20,X +11FA- CB ??? +11FB- CE CF D7 DEC $D7CF +11FE- 20 C1 20 JSR $20C1 +1201- D2 CF CMP ($CF) +1203- D5 D4 CMP $D4,X +1205- C9 CE CMP #$CE +1207- C5 20 CMP $20 +1209- D5 D3 CMP $D3,X +120B- C5 D3 CMP $D3 +120D- 20 D4 C8 JSR $C8D4 +1210- C5 20 CMP $20 +1212- DA PHX +1213- C5 D2 CMP $D2 +1215- CF ??? +1216- 20 D0 C1 JSR $C1D0 +1219- C7 ??? +121A- C5 AC CMP $AC +121C- 8D AA AA STA $AAAA +121F- 20 C2 D5 JSR $D5C2 +1222- D4 ??? +1223- 20 D9 CF JSR $CFD9 +1226- D5 20 CMP $20,X +1228- D7 ??? +1229- C1 CE CMP ($CE,X) +122B- D4 ??? +122C- 20 D4 CF JSR $CFD4 +122F- 20 CB C5 JSR $C5CB +1232- C5 D0 CMP $D0 +1234- 20 D4 C8 JSR $C8D4 +1237- C5 20 CMP $20 +1239- D6 C1 DEC $C1,X +123B- CC D5 C5 CPY $C5D5 +123E- D3 ??? +123F- 20 C3 D5 JSR $D5C3 +1242- D2 D2 CMP ($D2) +1244- C5 CE CMP $CE +1246- D4 ??? +1247- CC D9 8D CPY $8DD9 +124A- AA TAX +124B- AA TAX +124C- 20 D3 D4 JSR $D4D3 +124F- CF ??? +1250- D2 C5 CMP ($C5) +1252- C4 20 CPY $20 +1254- D4 ??? +1255- C8 INY +1256- C5 D2 CMP $D2 +1258- C5 20 CMP $20 +125A- C1 C6 CMP ($C6,X) +125C- D4 ??? +125D- C5 D2 CMP $D2 +125F- 20 C3 C1 JSR $C1C3 +1262- CC CC C9 CPY $C9CC +1265- CE C7 20 DEC $20C7 +1268- D4 ??? +1269- C8 INY +126A- C5 20 CMP $20 +126C- D2 CF CMP ($CF) +126E- D5 D4 CMP $D4,X +1270- C9 CE CMP #$CE +1272- C5 AE CMP $AE +1274- 8D AA 8D STA $8DAA +1277- AA TAX +1278- AA TAX +1279- 20 C9 CE JSR $CEC9 +127C- 20 CD C1 JSR $C1CD +127F- C3 ??? +1280- D2 CF CMP ($CF) +1282- 20 C6 CF JSR $CFC6 +1285- D2 CD CMP ($CD) +1287- BA TSX +1288- 8D AA 8D STA $8DAA +128B- AA TAX +128C- AA TAX +128D- 20 20 20 JSR $2020 +1290- 20 20 20 JSR $2020 +1293- 20 DF DA JSR $DADF +1296- D3 ??? +1297- D6 20 DEC $20,X +1299- 20 A4 B6 JSR $B6A4 +129C- C4 B0 CPY $B0 +129E- B0 8D BCS $122D +12A0- AA TAX +12A1- 8D A0 CC STA $CCA0 +12A4- C4 C1 CPY $C1 +12A6- A0 A3 LDY #$A3 +12A8- B0 B1 BCS $125B +12AA- 8D A0 D3 STA $D3A0 +12AD- D4 ??? +12AE- C1 A0 CMP ($A0,X) +12B0- A4 B0 LDY $B0 +12B2- B6 8D LDX $8D,Y +12B4- A0 CC LDY #$CC +12B6- C4 C1 CPY $C1 +12B8- A0 A3 LDY #$A3 +12BA- B0 B2 BCS $126E +12BC- 8D A0 D3 STA $D3A0 +12BF- D4 ??? +12C0- C1 A0 CMP ($A0,X) +12C2- A4 B0 LDY $B0 +12C4- B7 ??? +12C5- 8D A0 CC STA $CCA0 +12C8- C4 C1 CPY $C1 +12CA- A0 A3 LDY #$A3 +12CC- B0 B3 BCS $1281 +12CE- 8D A0 D3 STA $D3A0 +12D1- D4 ??? +12D2- C1 A0 CMP ($A0,X) +12D4- A4 B0 LDY $B0 +12D6- B8 CLV +12D7- 8D A0 CC STA $CCA0 +12DA- C4 C1 CPY $C1 +12DC- A0 A3 LDY #$A3 +12DE- B0 B4 BCS $1294 +12E0- 8D A0 D3 STA $D3A0 +12E3- D4 ??? +12E4- C1 A0 CMP ($A0,X) +12E6- A4 B0 LDY $B0 +12E8- B9 8D A0 LDA $A08D,Y +12EB- CC C4 C1 CPY $C1C4 +12EE- A0 A3 LDY #$A3 +12F0- BE A4 B6 LDX $B6A4,Y +12F3- C4 B0 CPY $B0 +12F5- B0 8D BCS $1284 +12F7- A0 D0 LDY #$D0 +12F9- C8 INY +12FA- C1 8D CMP ($8D,X) +12FC- A0 CC LDY #$CC +12FE- C4 C1 CPY $C1 +1300- A0 A3 LDY #$A3 +1302- BC A4 B6 LDY $B6A4,X +1305- C4 B0 CPY $B0 +1307- B0 A0 BCS $12A9 +1309- BB ??? +130A- 20 CC CF JSR $CFCC +130D- D7 ??? +130E- 20 C4 C5 JSR $C5C4 +1311- D3 ??? +1312- D4 ??? +1313- 8D A0 D0 STA $D0A0 +1316- C8 INY +1317- C1 8D CMP ($8D,X) +1319- A0 CA LDY #$CA +131B- D3 ??? +131C- D2 A0 CMP ($A0) +131E- DA PHX +131F- D3 ??? +1320- C1 D6 CMP ($D6,X) +1322- C5 8D CMP $8D +1324- AA TAX +1325- 8D AA AA STA $AAAA +1328- 20 D9 CF JSR $CFD9 +132B- D5 20 CMP $20,X +132D- C3 ??? +132E- C1 CE CMP ($CE,X) +1330- 20 D2 C5 JSR $C5D2 +1333- D3 ??? +1334- D4 ??? +1335- CF ??? +1336- D2 C5 CMP ($C5) +1338- 20 D4 C8 JSR $C8D4 +133B- C5 20 CMP $20 +133D- DA PHX +133E- C5 D2 CMP $D2 +1340- CF ??? +1341- 20 D0 C1 JSR $C1D0 +1344- C7 ??? +1345- C5 20 CMP $20 +1347- D4 ??? +1348- CF ??? +1349- 20 C9 D4 JSR $D4C9 +134C- D3 ??? +134D- 8D AA AA STA $AAAA +1350- 20 D0 D2 JSR $D2D0 +1353- C9 CF CMP #$CF +1355- D2 20 CMP ($20) +1357- D3 ??? +1358- D4 ??? +1359- C1 D4 CMP ($D4,X) +135B- C5 20 CMP $20 +135D- C2 ??? +135E- D9 20 D4 CMP $D420,Y +1361- C8 INY +1362- C5 CE CMP $CE +1364- 20 C3 C1 JSR $C1C3 +1367- CC CC C9 CPY $C9CC +136A- CE C7 20 DEC $20C7 +136D- DA PHX +136E- CC CF C1 CPY $C1CF +1371- C4 AE CPY $AE +1373- 8D AA 8D STA $8DAA +1376- AA TAX +1377- AA TAX +1378- 20 CD C1 JSR $C1CD +137B- C3 ??? +137C- D2 CF CMP ($CF) +137E- BA TSX +137F- 8D AA 8D STA $8DAA +1382- AA TAX +1383- AA TAX +1384- 20 20 20 JSR $2020 +1387- 20 20 20 JSR $2020 +138A- 20 DF DA JSR $DADF +138D- CC C4 20 CPY $20C4 +1390- 20 A4 B6 JSR $B6A4 +1393- C4 B0 CPY $B0 +1395- B0 8D BCS $1324 +1397- AA TAX +1398- 8D A0 CC STA $CCA0 +139B- C4 C1 CPY $C1 +139D- A0 A3 LDY #$A3 +139F- BE A4 B6 LDX $B6A4,Y +13A2- C4 B0 CPY $B0 +13A4- B0 A0 BCS $1346 +13A6- BB ??? +13A7- 20 C8 C9 JSR $C9C8 +13AA- C7 ??? +13AB- C8 INY +13AC- BB ??? +13AD- 20 D3 CF JSR $CFD3 +13B0- D5 D2 CMP $D2,X +13B2- C3 ??? +13B3- C5 8D CMP $8D +13B5- A0 D0 LDY #$D0 +13B7- C8 INY +13B8- C1 8D CMP ($8D,X) +13BA- A0 CC LDY #$CC +13BC- C4 C1 CPY $C1 +13BE- A0 A3 LDY #$A3 +13C0- BC A4 B6 LDY $B6A4,X +13C3- C4 B0 CPY $B0 +13C5- B0 A0 BCS $1367 +13C7- BB ??? +13C8- 20 CC CF JSR $CFCC +13CB- D7 ??? +13CC- 8D A0 D0 STA $D0A0 +13CF- C8 INY +13D0- C1 8D CMP ($8D,X) +13D2- A0 CA LDY #$CA +13D4- D3 ??? +13D5- D2 20 CMP ($20) +13D7- DA PHX +13D8- CC CF C1 CPY $C1CF +13DB- C4 8D CPY $8D +13DD- AA TAX +13DE- 8D AA 8D STA $8DAA +13E1- AA TAX +13E2- AA TAX +13E3- 20 CC C9 JSR $C9CC +13E6- D4 ??? +13E7- D4 ??? +13E8- CC C5 20 CPY $20C5 +13EB- CC D5 CD CPY $CDD5 +13EE- D0 D3 BNE $13C3 +13F0- 20 AD AD JSR $ADAD +13F3- 20 CD C9 JSR $C9CD +13F6- C4 AF CPY $AF +13F8- CC CF D7 CPY $D7CF +13FB- 20 CC C5 JSR $C5CC +13FE- D6 C5 DEC $C5,X +1400- CC 8D AA CPY $AA8D +1403- 8D AA 8D STA $8DAA +1406- A0 CA LDY #$CA +1408- CD D0 A0 CMP $A0D0 +140B- D2 C5 CMP ($C5) +140D- C5 CE CMP $CE +140F- D4 ??? +1410- D2 D9 CMP ($D9) +1412- 8D AA 8D STA $8DAA +1415- AA TAX +1416- E0 E0 CPX #$E0 +1418- E0 E0 CPX #$E0 +141A- E0 E0 CPX #$E0 +141C- E0 E0 CPX #$E0 +141E- E0 E0 CPX #$E0 +1420- E0 E0 CPX #$E0 +1422- E0 E0 CPX #$E0 +1424- E0 E0 CPX #$E0 +1426- E0 E0 CPX #$E0 +1428- E0 E0 CPX #$E0 +142A- E0 E0 CPX #$E0 +142C- E0 E0 CPX #$E0 +142E- E0 E0 CPX #$E0 +1430- E0 E0 CPX #$E0 +1432- E0 E0 CPX #$E0 +1434- AA TAX +1435- 8D AA 20 STA $20AA +1438- 20 20 20 JSR $2020 +143B- 20 20 20 JSR $2020 +143E- 20 C2 CF JSR $CFC2 +1441- D4 ??? +1442- D4 ??? +1443- CF ??? +1444- CD 20 C9 CMP $C920 +1447- CE C3 CC DEC $CCC3 +144A- D5 C4 CMP $C4,X +144C- C5 D3 CMP $D3 +144E- 20 20 20 JSR $2020 +1451- 20 20 20 JSR $2020 +1454- 20 AA 8D JSR $8DAA +1457- AA TAX +1458- AC AC AC LDY $ACAC +145B- AC AC AC LDY $ACAC +145E- AC AC AC LDY $ACAC +1461- AC AC AC LDY $ACAC +1464- AC AC AC LDY $ACAC +1467- AC AC AC LDY $ACAC +146A- AC AC AC LDY $ACAC +146D- AC AC AC LDY $ACAC +1470- AC AC AC LDY $ACAC +1473- AC AC AC LDY $ACAC +1476- AA TAX +1477- 8D AA 8D STA $8DAA +147A- AA TAX +147B- 8D AA AA STA $AAAA +147E- 20 C2 CF JSR $CFC2 +1481- D4 ??? +1482- D4 ??? +1483- CF ??? +1484- CD 20 C9 CMP $C920 +1487- CE C3 CC DEC $CCC3 +148A- D5 C4 CMP $C4,X +148C- C5 D3 CMP $D3 +148E- 8D AA 8D STA $8DAA +1491- A0 D0 LDY #$D0 +1493- D5 D4 CMP $D4,X +1495- A0 C3 LDY #$C3 +1497- CF ??? +1498- CD CD CF CMP $CFCD +149B- CE AE CC DEC $CCAE +149E- C9 C2 CMP #$C2 +14A0- 8D AA 8D STA $8DAA +14A3- AA TAX +14A4- 8D 00 00 STA $0000 diff --git a/disks/disk1__stdio_common/STDIO.DEMO b/disks/disk1__stdio_common/STDIO.DEMO new file mode 100644 index 0000000..41d3f45 --- /dev/null +++ b/disks/disk1__stdio_common/STDIO.DEMO @@ -0,0 +1,338 @@ +6000- 20 58 FC JSR $FC58 F8ROM:HOME +6003- 20 BF 60 JSR $60BF +6006- D7 ??? +6007- D4 ??? +6008- C6 A0 DEC $A0 +600A- D7 ??? +600B- CF ??? +600C- D2 CC CMP ($CC) +600E- C4 8D CPY $8D +6010- 00 BRK +6011- A9 18 LDA #$18 +6013- 8D 00 03 STA $0300 +6016- 8D 01 03 STA $0301 +6019- 8D 02 03 STA $0302 +601C- A9 00 LDA #$00 +601E- 8D 03 03 STA $0303 +6021- A9 03 LDA #$03 +6023- 48 PHA +6024- A9 00 LDA #$00 +6026- 48 PHA +6027- 20 E0 60 JSR $60E0 +602A- A9 00 LDA #$00 +602C- 48 PHA +602D- A9 0F LDA #$0F +602F- 48 PHA +6030- A9 0A LDA #$0A +6032- 48 PHA +6033- A9 18 LDA #$18 +6035- 48 PHA +6036- 20 05 61 JSR $6105 +6039- A9 00 LDA #$00 +603B- 48 PHA +603C- A9 0F LDA #$0F +603E- 48 PHA +603F- A9 0A LDA #$0A +6041- 48 PHA +6042- A9 18 LDA #$18 +6044- 48 PHA +6045- 20 48 61 JSR $6148 +6048- A9 0A LDA #$0A +604A- 48 PHA +604B- A9 1E LDA #$1E +604D- 48 PHA +604E- A9 05 LDA #$05 +6050- 48 PHA +6051- A9 0F LDA #$0F +6053- 48 PHA +6054- A9 1A LDA #$1A +6056- 48 PHA +6057- 20 C4 61 JSR $61C4 +605A- A9 03 LDA #$03 +605C- 48 PHA +605D- A9 00 LDA #$00 +605F- 48 PHA +6060- 20 13 62 JSR $6213 +6063- 20 58 FC JSR $FC58 F8ROM:HOME +6066- 20 BF 60 JSR $60BF +6069- D7 ??? +606A- D4 ??? +606B- C6 AC DEC $AC +606D- A0 D7 LDY #$D7 +606F- CF ??? +6070- D2 CC CMP ($CC) +6072- C4 BF CPY $BF +6074- 00 BRK +6075- A2 0A LDX #$0A +6077- A0 0A LDY #$0A +6079- 86 24 STX $24 +607B- 84 25 STY $25 +607D- 20 22 FC JSR $FC22 F8ROM:VTAB +6080- A9 05 LDA #$05 +6082- 48 PHA +6083- A9 14 LDA #$14 +6085- 48 PHA +6086- A9 1E LDA #$1E +6088- 48 PHA +6089- A9 18 LDA #$18 +608B- 48 PHA +608C- 20 48 61 JSR $6148 +608F- A9 05 LDA #$05 +6091- 48 PHA +6092- A9 1E LDA #$1E +6094- 48 PHA +6095- A9 14 LDA #$14 +6097- 48 PHA +6098- A9 1A LDA #$1A +609A- 48 PHA +609B- 20 05 61 JSR $6105 +609E- A9 03 LDA #$03 +60A0- 48 PHA +60A1- A9 00 LDA #$00 +60A3- 48 PHA +60A4- 20 13 62 JSR $6213 +60A7- A9 00 LDA #$00 +60A9- 48 PHA +60AA- A9 27 LDA #$27 +60AC- 48 PHA +60AD- A9 00 LDA #$00 +60AF- 48 PHA +60B0- A9 15 LDA #$15 +60B2- 48 PHA +60B3- A9 19 LDA #$19 +60B5- 48 PHA +60B6- 20 C4 61 JSR $61C4 +60B9- 4C D0 03 JMP $03D0 +60BC- 4C 75 62 JMP $6275 +60BF- 68 PLA +60C0- 85 06 STA $06 +60C2- 68 PLA +60C3- 85 07 STA $07 +60C5- A0 01 LDY #$01 +60C7- B1 06 LDA ($06),Y +60C9- F0 06 BEQ $60D1 +60CB- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +60CE- C8 INY +60CF- D0 F6 BNE $60C7 +60D1- 18 CLC +60D2- 98 TYA +60D3- 65 06 ADC $06 +60D5- 85 06 STA $06 +60D7- A5 07 LDA $07 +60D9- 69 00 ADC #$00 +60DB- 48 PHA +60DC- A5 06 LDA $06 +60DE- 48 PHA +60DF- 60 RTS +60E0- 68 PLA +60E1- 8D 03 61 STA $6103 +60E4- 68 PLA +60E5- 8D 04 61 STA $6104 +60E8- 68 PLA +60E9- 85 06 STA $06 +60EB- 68 PLA +60EC- 85 07 STA $07 +60EE- A0 00 LDY #$00 +60F0- B1 06 LDA ($06),Y +60F2- F0 06 BEQ $60FA +60F4- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +60F7- C8 INY +60F8- D0 F6 BNE $60F0 +60FA- AD 04 61 LDA $6104 +60FD- 48 PHA +60FE- AD 03 61 LDA $6103 +6101- 48 PHA +6102- 60 RTS +6103- 00 BRK +6104- 00 BRK +6105- 68 PLA +6106- 8D 46 61 STA $6146 +6109- 68 PLA +610A- 8D 47 61 STA $6147 +610D- 68 PLA +610E- 8D 45 61 STA $6145 +6111- 68 PLA +6112- 8D 44 61 STA $6144 +6115- 68 PLA +6116- 8D 43 61 STA $6143 +6119- 68 PLA +611A- 8D 42 61 STA $6142 +611D- AE 42 61 LDX $6142 +6120- 86 24 STX $24 +6122- AC 44 61 LDY $6144 +6125- 84 25 STY $25 +6127- 20 22 FC JSR $FC22 F8ROM:VTAB +612A- AD 45 61 LDA $6145 +612D- AC 42 61 LDY $6142 +6130- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6133- C8 INY +6134- CC 43 61 CPY $6143 +6137- D0 F7 BNE $6130 +6139- AD 47 61 LDA $6147 +613C- 48 PHA +613D- AD 46 61 LDA $6146 +6140- 48 PHA +6141- 60 RTS +6142- 00 BRK +6143- 00 BRK +6144- 00 BRK +6145- 00 BRK +6146- 00 BRK +6147- 00 BRK +6148- 68 PLA +6149- 8D 8C 61 STA $618C +614C- 68 PLA +614D- 8D 8D 61 STA $618D +6150- 68 PLA +6151- 8D 91 61 STA $6191 +6154- 68 PLA +6155- 8D 8E 61 STA $618E +6158- 68 PLA +6159- 8D 90 61 STA $6190 +615C- 68 PLA +615D- 8D 8F 61 STA $618F +6160- AE 8E 61 LDX $618E +6163- AC 8F 61 LDY $618F +6166- 84 25 STY $25 +6168- 86 24 STX $24 +616A- 20 22 FC JSR $FC22 F8ROM:VTAB +616D- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6170- AE 8E 61 LDX $618E +6173- 86 24 STX $24 +6175- 84 25 STY $25 +6177- 20 22 FC JSR $FC22 F8ROM:VTAB +617A- AD 91 61 LDA $6191 +617D- C8 INY +617E- CC 90 61 CPY $6190 +6181- D0 EA BNE $616D +6183- AD 8D 61 LDA $618D +6186- 48 PHA +6187- AD 8C 61 LDA $618C +618A- 48 PHA +618B- 60 RTS +618C- 00 BRK +618D- 00 BRK +618E- 00 BRK +618F- 00 BRK +6190- 00 BRK +6191- 00 BRK +6192- 18 CLC +6193- 65 24 ADC $24 +6195- 85 24 STA $24 +6197- 20 22 FC JSR $FC22 F8ROM:VTAB +619A- 60 RTS +619B- 38 SEC +619C- 8D AA 61 STA $61AA +619F- A5 24 LDA $24 +61A1- ED AA 61 SBC $61AA +61A4- 85 24 STA $24 +61A6- 20 22 FC JSR $FC22 F8ROM:VTAB +61A9- 60 RTS +61AA- 00 BRK +61AB- 18 CLC +61AC- 65 25 ADC $25 +61AE- 85 25 STA $25 +61B0- 20 22 FC JSR $FC22 F8ROM:VTAB +61B3- 60 RTS +61B4- 38 SEC +61B5- 8D C3 61 STA $61C3 +61B8- A5 25 LDA $25 +61BA- ED C3 61 SBC $61C3 +61BD- 85 25 STA $25 +61BF- 20 22 FC JSR $FC22 F8ROM:VTAB +61C2- 60 RTS +61C3- 00 BRK +61C4- 68 PLA +61C5- 8D 11 62 STA $6211 +61C8- 68 PLA +61C9- 8D 12 62 STA $6212 +61CC- 68 PLA +61CD- 8D 10 62 STA $6210 +61D0- 68 PLA +61D1- 8D 0E 62 STA $620E +61D4- 68 PLA +61D5- 8D 0F 62 STA $620F +61D8- 68 PLA +61D9- 8D 0D 62 STA $620D +61DC- 68 PLA +61DD- 8D 0C 62 STA $620C +61E0- AC 0F 62 LDY $620F +61E3- 84 25 STY $25 +61E5- 20 22 FC JSR $FC22 F8ROM:VTAB +61E8- AE 0C 62 LDX $620C +61EB- CA DEX +61EC- E8 INX +61ED- 86 24 STX $24 +61EF- 20 22 FC JSR $FC22 F8ROM:VTAB +61F2- AD 10 62 LDA $6210 +61F5- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +61F8- EC 0D 62 CPX $620D +61FB- D0 EF BNE $61EC +61FD- C8 INY +61FE- CC 0E 62 CPY $620E +6201- D0 E0 BNE $61E3 +6203- AD 12 62 LDA $6212 +6206- 48 PHA +6207- AD 11 62 LDA $6211 +620A- 48 PHA +620B- 60 RTS +620C- 00 BRK +620D- 00 BRK +620E- 00 BRK +620F- 00 BRK +6210- 00 BRK +6211- 00 BRK +6212- 00 BRK +6213- 68 PLA +6214- 8D 49 62 STA $6249 +6217- 68 PLA +6218- 8D 4A 62 STA $624A +621B- 68 PLA +621C- 85 06 STA $06 +621E- 68 PLA +621F- 85 07 STA $07 +6221- A2 00 LDX #$00 +6223- 20 6F FD JSR $FD6F F8ROM:GETLN1 +6226- 8E 48 62 STX $6248 +6229- E0 00 CPX #$00 +622B- F0 12 BEQ $623F +622D- A0 00 LDY #$00 +622F- AD 48 62 LDA $6248 +6232- 91 06 STA ($06),Y +6234- B9 00 02 LDA $0200,Y +6237- C8 INY +6238- 91 06 STA ($06),Y +623A- CC 48 62 CPY $6248 +623D- D0 F5 BNE $6234 +623F- AD 4A 62 LDA $624A +6242- 48 PHA +6243- AD 49 62 LDA $6249 +6246- 48 PHA +6247- 60 RTS +6248- 00 BRK +6249- 00 BRK +624A- 00 BRK +624B- 68 PLA +624C- 8D 73 62 STA $6273 +624F- 68 PLA +6250- 8D 74 62 STA $6274 +6253- 68 PLA +6254- 85 06 STA $06 +6256- 68 PLA +6257- 85 07 STA $07 +6259- A0 00 LDY #$00 +625B- B1 06 LDA ($06),Y +625D- 30 03 BMI $6262 +625F- 4C 67 62 JMP $6267 +6262- A0 01 LDY #$01 +6264- 4C 69 62 JMP $6269 +6267- A0 00 LDY #$00 +6269- AD 74 62 LDA $6274 +626C- 48 PHA +626D- AD 73 62 LDA $6273 +6270- 48 PHA +6271- 98 TYA +6272- 60 RTS +6273- 00 BRK +6274- 00 BRK +6275- 60 RTS diff --git a/disks/disk1__stdio_common/STDIO.DEMO.S b/disks/disk1__stdio_common/STDIO.DEMO.S new file mode 100644 index 0000000..46f84f4 --- /dev/null +++ b/disks/disk1__stdio_common/STDIO.DEMO.S @@ -0,0 +1,1930 @@ +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 D3 LDY $D320,X +0950- D4 ??? +0951- C4 C9 CPY $C9 +0953- CF ??? +0954- 20 C4 C5 JSR $C5C4 +0957- CD CF 20 CMP $20CF +095A- BE AD 20 LDX $20AD,Y +095D- 20 20 20 JSR $2020 +0960- 20 20 20 JSR $2020 +0963- 20 AA 8D JSR $8DAA +0966- AA TAX +0967- 20 20 20 JSR $2020 +096A- 20 20 20 JSR $2020 +096D- 20 20 20 JSR $2020 +0970- 20 20 20 JSR $2020 +0973- 20 20 20 JSR $2020 +0976- 20 20 20 JSR $2020 +0979- 20 20 20 JSR $2020 +097C- 20 20 20 JSR $2020 +097F- 20 20 20 JSR $2020 +0982- 20 20 20 JSR $2020 +0985- AA TAX +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 D3 LDY #$D3 +0B06- D4 ??? +0B07- C4 C9 CPY $C9 +0B09- CF ??? +0B0A- AE C4 C5 LDX $C5C4 +0B0D- CD CF 8D CMP $8DCF +0B10- AA TAX +0B11- 8D AA E0 STA $E0AA +0B14- E0 E0 CPX #$E0 +0B16- E0 E0 CPX #$E0 +0B18- E0 E0 CPX #$E0 +0B1A- E0 E0 CPX #$E0 +0B1C- E0 E0 CPX #$E0 +0B1E- E0 E0 CPX #$E0 +0B20- E0 E0 CPX #$E0 +0B22- E0 E0 CPX #$E0 +0B24- E0 E0 CPX #$E0 +0B26- E0 E0 CPX #$E0 +0B28- E0 E0 CPX #$E0 +0B2A- E0 E0 CPX #$E0 +0B2C- E0 E0 CPX #$E0 +0B2E- E0 E0 CPX #$E0 +0B30- E0 AA CPX #$AA +0B32- 8D AA 20 STA $20AA +0B35- 20 D4 CF JSR $CFD4 +0B38- D0 20 BNE $0B5A +0B3A- C9 CE CMP #$CE +0B3C- C3 ??? +0B3D- CC D5 C4 CPY $C4D5 +0B40- C5 D3 CMP $D3 +0B42- 20 A8 D0 JSR $D0A8 +0B45- D5 D4 CMP $D4,X +0B47- D3 ??? +0B48- AC 20 CD LDY $CD20 +0B4B- C1 C3 CMP ($C3,X) +0B4D- D2 CF CMP ($CF) +0B4F- D3 ??? +0B50- A9 20 LDA #$20 +0B52- AA TAX +0B53- 8D AA AC STA $ACAA +0B56- AC AC AC LDY $ACAC +0B59- AC AC AC LDY $ACAC +0B5C- AC AC AC LDY $ACAC +0B5F- AC AC AC LDY $ACAC +0B62- AC AC AC LDY $ACAC +0B65- AC AC AC LDY $ACAC +0B68- AC AC AC LDY $ACAC +0B6B- AC AC AC LDY $ACAC +0B6E- AC AC AC LDY $ACAC +0B71- AC AC AA LDY $AAAC +0B74- 8D AA 8D STA $8DAA +0B77- A0 D0 LDY #$D0 +0B79- D5 D4 CMP $D4,X +0B7B- A0 C4 LDY #$C4 +0B7D- C5 C3 CMP $C3 +0B7F- D3 ??? +0B80- 8D A0 D5 STA $D5A0 +0B83- D3 ??? +0B84- C5 A0 CMP $A0 +0B86- D3 ??? +0B87- D4 ??? +0B88- C4 C9 CPY $C9 +0B8A- CF ??? +0B8B- AE CD C1 LDX $C1CD +0B8E- C3 ??? +0B8F- 8D AA 8D STA $8DAA +0B92- A0 D0 LDY #$D0 +0B94- D5 D4 CMP $D4,X +0B96- A0 D3 LDY #$D3 +0B98- D4 ??? +0B99- C4 C9 CPY $C9 +0B9B- CF ??? +0B9C- AE C8 CF LDX $CFC8 +0B9F- CF ??? +0BA0- CB ??? +0BA1- D3 ??? +0BA2- 8D A0 D0 STA $D0A0 +0BA5- D5 D4 CMP $D4,X +0BA7- 20 A0 C3 JSR $C3A0 +0BAA- CF ??? +0BAB- CD CD CF CMP $CFCD +0BAE- CE AE C8 DEC $C8AE +0BB1- CF ??? +0BB2- CF ??? +0BB3- CB ??? +0BB4- D3 ??? +0BB5- 8D AA 8D STA $8DAA +0BB8- A0 CF LDY #$CF +0BBA- D2 C7 CMP ($C7) +0BBC- A0 A4 LDY #$A4 +0BBE- B6 B0 LDX $B0,Y +0BC0- B0 B0 BCS $0B72 +0BC2- 8D AA 8D STA $8DAA +0BC5- AA TAX +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 E0 CPX #$E0 +0BE0- E0 E0 CPX #$E0 +0BE2- E0 E0 CPX #$E0 +0BE4- AA TAX +0BE5- 8D AA 20 STA $20AA +0BE8- 20 20 20 JSR $2020 +0BEB- 20 20 D0 JSR $D020 +0BEE- D2 CF CMP ($CF) +0BF0- C7 ??? +0BF1- D2 C1 CMP ($C1) +0BF3- CD 20 CD CMP $CD20 +0BF6- C1 C9 CMP ($C9,X) +0BF8- CE 20 C2 DEC $C220 +0BFB- CF ??? +0BFC- C4 D9 CPY $D9 +0BFE- 20 20 20 JSR $2020 +0C01- 20 20 20 JSR $2020 +0C04- 20 AA 8D JSR $8DAA +0C07- AA TAX +0C08- AC AC AC LDY $ACAC +0C0B- AC AC AC LDY $ACAC +0C0E- AC AC AC LDY $ACAC +0C11- AC AC AC LDY $ACAC +0C14- AC AC AC LDY $ACAC +0C17- AC AC AC LDY $ACAC +0C1A- AC AC AC LDY $ACAC +0C1D- AC AC AC LDY $ACAC +0C20- AC AC AC LDY $ACAC +0C23- AC AC AC LDY $ACAC +0C26- AA TAX +0C27- 8D AA 8D STA $8DAA +0C2A- AA TAX +0C2B- 8D AA 8D STA $8DAA +0C2E- AA TAX +0C2F- AA TAX +0C30- 20 C2 C9 JSR $C9C2 +0C33- C7 ??? +0C34- 20 CC D5 JSR $D5CC +0C37- CD D0 D3 CMP $D3D0 +0C3A- 20 AD AD JSR $ADAD +0C3D- 20 C8 C9 JSR $C9C8 +0C40- C7 ??? +0C41- C8 INY +0C42- 20 CC C5 JSR $C5CC +0C45- D6 C5 DEC $C5,X +0C47- CC 20 C3 CPY $C320 +0C4A- CF ??? +0C4B- C4 C5 CPY $C5 +0C4D- 8D AA 8D STA $8DAA +0C50- AA TAX +0C51- 8D A0 CA STA $CAA0 +0C54- D3 ??? +0C55- D2 A0 CMP ($A0) +0C57- C8 INY +0C58- CF ??? +0C59- CD C5 A0 CMP $A0C5 +0C5C- BB ??? +0C5D- 20 C3 CC JSR $CCC3 +0C60- C5 C1 CMP $C1 +0C62- D2 20 CMP ($20) +0C64- D3 ??? +0C65- C3 ??? +0C66- D2 C5 CMP ($C5) +0C68- C5 CE CMP $CE +0C6A- 8D AA 8D STA $8DAA +0C6D- AA TAX +0C6E- AA TAX +0C6F- AA TAX +0C70- 8D AA AA STA $AAAA +0C73- AA TAX +0C74- 20 D5 D3 JSR $D3D5 +0C77- C5 20 CMP $20 +0C79- D8 CLD +0C7A- D0 D2 BNE $0C4E +0C7C- C9 CE CMP #$CE +0C7E- D4 ??? +0C7F- 20 D4 CF JSR $CFD4 +0C82- 20 D0 D2 JSR $D2D0 +0C85- C9 CE CMP #$CE +0C87- D4 ??? +0C88- 20 C1 20 JSR $20C1 +0C8B- D3 ??? +0C8C- D4 ??? +0C8D- D2 C9 CMP ($C9) +0C8F- CE C7 20 DEC $20C7 +0C92- CF ??? +0C93- C6 20 DEC $20 +0C95- C3 ??? +0C96- C8 INY +0C97- C1 D2 CMP ($D2,X) +0C99- C1 C3 CMP ($C3,X) +0C9B- D4 ??? +0C9C- C5 D2 CMP $D2 +0C9E- D3 ??? +0C9F- 8D AA AA STA $AAAA +0CA2- AA TAX +0CA3- 20 D4 CF JSR $CFD4 +0CA6- 20 D4 C8 JSR $C8D4 +0CA9- C5 20 CMP $20 +0CAB- D3 ??? +0CAC- C3 ??? +0CAD- D2 C5 CMP ($C5) +0CAF- C5 CE CMP $CE +0CB1- AE 20 D4 LDX $D420 +0CB4- C8 INY +0CB5- C5 20 CMP $20 +0CB7- D3 ??? +0CB8- D4 ??? +0CB9- D2 C9 CMP ($C9) +0CBB- CE C7 20 DEC $20C7 +0CBE- C3 ??? +0CBF- CF ??? +0CC0- CD C5 D3 CMP $D3C5 +0CC3- 20 C1 C6 JSR $C6C1 +0CC6- D4 ??? +0CC7- C5 D2 CMP $D2 +0CC9- 8D AA AA STA $AAAA +0CCC- AA TAX +0CCD- 20 D4 C8 JSR $C8D4 +0CD0- C5 20 CMP $20 +0CD2- CA DEX +0CD3- D3 ??? +0CD4- D2 20 CMP ($20) +0CD6- D3 ??? +0CD7- D4 ??? +0CD8- C1 D4 CMP ($D4,X) +0CDA- C5 CD CMP $CD +0CDC- C5 CE CMP $CE +0CDE- D4 ??? +0CDF- 20 C9 CE JSR $CEC9 +0CE2- 20 C1 CE JSR $CEC1 +0CE5- 20 C1 D3 JSR $D3C1 +0CE8- C3 ??? +0CE9- AF ??? +0CEA- C8 INY +0CEB- C5 D8 CMP $D8 +0CED- AE 8D AA LDX $AA8D +0CF0- AA TAX +0CF1- AA TAX +0CF2- 8D A0 CA STA $CAA0 +0CF5- D3 ??? +0CF6- D2 A0 CMP ($A0) +0CF8- D8 CLD +0CF9- D0 D2 BNE $0CCD +0CFB- C9 CE CMP #$CE +0CFD- D4 ??? +0CFE- 8D A0 C1 STA $C1A0 +0D01- D3 ??? +0D02- C3 ??? +0D03- A0 A2 LDY #$A2 +0D05- D7 ??? +0D06- D4 ??? +0D07- C6 20 DEC $20 +0D09- D7 ??? +0D0A- CF ??? +0D0B- D2 CC CMP ($CC) +0D0D- C4 A2 CPY $A2 +0D0F- 8D A0 C8 STA $C8A0 +0D12- C5 D8 CMP $D8 +0D14- A0 B8 LDY #$B8 +0D16- C4 B0 CPY $B0 +0D18- B0 A0 BCS $0CBA +0D1A- BB ??? +0D1B- 20 D4 C8 JSR $C8D4 +0D1E- C9 D3 CMP #$D3 +0D20- 20 D4 C5 JSR $C5D4 +0D23- CC CC D3 CPY $D3CC +0D26- 20 D4 C8 JSR $C8D4 +0D29- C5 8D CMP $8D +0D2B- BB ??? +0D2C- 20 D2 CF JSR $CFD2 +0D2F- D5 D4 CMP $D4,X +0D31- C9 CE CMP #$CE +0D33- C5 20 CMP $20 +0D35- D4 ??? +0D36- CF ??? +0D37- 20 D3 D4 JSR $D4D3 +0D3A- CF ??? +0D3B- D0 8D BNE $0CCA +0D3D- BB ??? +0D3E- 20 D0 D2 JSR $D2D0 +0D41- C9 CE CMP #$CE +0D43- D4 ??? +0D44- C9 CE CMP #$CE +0D46- C7 ??? +0D47- 20 D4 C8 JSR $C8D4 +0D4A- C5 20 CMP $20 +0D4C- D3 ??? +0D4D- D4 ??? +0D4E- D2 C9 CMP ($C9) +0D50- CE C7 8D DEC $8DC7 +0D53- AA TAX +0D54- 8D AA AA STA $AAAA +0D57- AA TAX +0D58- 20 D5 D3 JSR $D3D5 +0D5B- C5 20 CMP $20 +0D5D- C4 D0 CPY $D0 +0D5F- D2 C9 CMP ($C9) +0D61- CE D4 20 DEC $20D4 +0D64- D4 ??? +0D65- CF ??? +0D66- 20 D0 D2 JSR $D2D0 +0D69- C9 CE CMP #$CE +0D6B- D4 ??? +0D6C- 20 D4 C8 JSR $C8D4 +0D6F- C5 20 CMP $20 +0D71- D4 ??? +0D72- C5 D8 CMP $D8 +0D74- D4 ??? +0D75- 20 C1 D4 JSR $D4C1 +0D78- 20 C1 20 JSR $20C1 +0D7B- D3 ??? +0D7C- D0 C5 BNE $0D43 +0D7E- C3 ??? +0D7F- C9 C6 CMP #$C6 +0D81- C9 C3 CMP #$C3 +0D83- 8D AA AA STA $AAAA +0D86- AA TAX +0D87- 20 CD C5 JSR $C5CD +0D8A- CD CF D2 CMP $D2CF +0D8D- D9 20 CC CMP $CC20,Y +0D90- CF ??? +0D91- C3 ??? +0D92- C1 D4 CMP ($D4,X) +0D94- C9 CF CMP #$CF +0D96- CE AE 20 DEC $20AE +0D99- CE CF D4 DEC $D4CF +0D9C- C5 20 CMP $20 +0D9E- D4 ??? +0D9F- C8 INY +0DA0- C1 D4 CMP ($D4,X) +0DA2- 20 D4 C8 JSR $C8D4 +0DA5- C9 D3 CMP #$D3 +0DA7- 20 C9 D3 JSR $D3C9 +0DAA- 20 CE CF JSR $CFCE +0DAD- D4 ??? +0DAE- 8D AA AA STA $AAAA +0DB1- AA TAX +0DB2- 20 D4 D9 JSR $D9D4 +0DB5- D0 C9 BNE $0D80 +0DB7- C3 ??? +0DB8- C1 CC CMP ($CC,X) +0DBA- CC D9 20 CPY $20D9 +0DBD- D5 D3 CMP $D3,X +0DBF- C5 C4 CMP $C4 +0DC1- 20 D4 CF JSR $CFD4 +0DC4- 20 D0 D2 JSR $D2D0 +0DC7- C9 CE CMP #$CE +0DC9- D4 ??? +0DCA- 20 D3 D4 JSR $D4D3 +0DCD- D2 C9 CMP ($C9) +0DCF- CE C7 D3 DEC $D3C7 +0DD2- AC 20 C1 LDY $C120 +0DD5- CE C4 20 DEC $20C4 +0DD8- CC C9 CB CPY $CBC9 +0DDB- C5 8D CMP $8D +0DDD- AA TAX +0DDE- AA TAX +0DDF- AA TAX +0DE0- 20 D8 D0 JSR $D0D8 +0DE3- D2 C9 CMP ($C9) +0DE5- CE D4 20 DEC $20D4 +0DE8- D5 D3 CMP $D3,X +0DEA- C5 D3 CMP $D3 +0DEC- 20 D4 C8 JSR $C8D4 +0DEF- C5 20 CMP $20 +0DF1- CE D5 CC DEC $CCD5 +0DF4- CC 20 D4 CPY $D420 +0DF7- C5 D2 CMP $D2 +0DF9- CD C9 CE CMP $CEC9 +0DFC- C1 D4 CMP ($D4,X) +0DFE- CF ??? +0DFF- D2 20 CMP ($20) +0E01- D4 ??? +0E02- CF ??? +0E03- 20 C1 CC JSR $CCC1 +0E06- C5 D2 CMP $D2 +0E08- D4 ??? +0E09- 8D AA AA STA $AAAA +0E0C- AA TAX +0E0D- 20 D4 C8 JSR $C8D4 +0E10- C5 20 CMP $20 +0E12- D2 CF CMP ($CF) +0E14- D5 D4 CMP $D4,X +0E16- C9 CE CMP #$CE +0E18- C5 20 CMP $20 +0E1A- D4 ??? +0E1B- CF ??? +0E1C- 20 D3 D4 JSR $D4D3 +0E1F- CF ??? +0E20- D0 20 BNE $0E42 +0E22- D0 D2 BNE $0DF6 +0E24- C9 CE CMP #$CE +0E26- D4 ??? +0E27- C9 CE CMP #$CE +0E29- C7 ??? +0E2A- AE 20 D4 LDX $D420 +0E2D- CF ??? +0E2E- 20 D0 D2 JSR $D2D0 +0E31- C9 CE CMP #$CE +0E33- D4 ??? +0E34- 8D AA AA STA $AAAA +0E37- AA TAX +0E38- 20 D3 D4 JSR $D4D3 +0E3B- D2 C9 CMP ($C9) +0E3D- CE C7 D3 DEC $D3C7 +0E40- AC 20 D7 LDY $D720 +0E43- C8 INY +0E44- C9 C3 CMP #$C3 +0E46- C8 INY +0E47- 20 C8 C1 JSR $C1C8 +0E4A- D6 C5 DEC $C5,X +0E4C- 20 D4 C8 JSR $C8D4 +0E4F- C5 20 CMP $20 +0E51- CC C5 CE CPY $CEC5 +0E54- C7 ??? +0E55- D4 ??? +0E56- C8 INY +0E57- 20 CF C6 JSR $C6CF +0E5A- 20 D4 C8 JSR $C8D4 +0E5D- C5 20 CMP $20 +0E5F- D3 ??? +0E60- D4 ??? +0E61- D2 C9 CMP ($C9) +0E63- CE C7 8D DEC $8DC7 +0E66- AA TAX +0E67- AA TAX +0E68- AA TAX +0E69- 20 C1 D3 JSR $D3C1 +0E6C- 20 D4 C8 JSR $C8D4 +0E6F- C5 C9 CMP $C9 +0E71- D2 20 CMP ($20) +0E73- C6 C9 DEC $C9 +0E75- D2 D3 CMP ($D3) +0E77- D4 ??? +0E78- 20 C2 D9 JSR $D9C2 +0E7B- D4 ??? +0E7C- C5 20 CMP $20 +0E7E- D6 C1 DEC $C1,X +0E80- CC D5 C5 CPY $C5D5 +0E83- AC 20 D5 LDY $D520 +0E86- D3 ??? +0E87- C5 20 CMP $20 +0E89- D3 ??? +0E8A- D0 D2 BNE $0E5E +0E8C- C9 CE CMP #$CE +0E8E- D4 ??? +0E8F- AE 8D AA LDX $AA8D +0E92- 8D AA 8D STA $8DAA +0E95- A0 CC LDY #$CC +0E97- C4 C1 CPY $C1 +0E99- A0 A3 LDY #$A3 +0E9B- A4 B1 LDY $B1 +0E9D- B8 CLV +0E9E- A0 BB LDY #$BB +0EA0- 20 D0 D5 JSR $D5D0 +0EA3- D4 ??? +0EA4- 20 A7 D8 JSR $D8A7 +0EA7- D8 CLD +0EA8- D8 CLD +0EA9- A7 ??? +0EAA- 20 C9 CE JSR $CEC9 +0EAD- D4 ??? +0EAE- CF ??? +0EAF- 8D A0 D3 STA $D3A0 +0EB2- D4 ??? +0EB3- C1 A0 CMP ($A0,X) +0EB5- A4 B3 LDY $B3 +0EB7- B0 B0 BCS $0E69 +0EB9- A0 BB LDY #$BB +0EBB- 20 CC CF JSR $CFCC +0EBE- C3 ??? +0EBF- C1 D4 CMP ($D4,X) +0EC1- C9 CF CMP #$CF +0EC3- CE 20 A4 DEC $A420 +0EC6- B3 ??? +0EC7- B0 B0 BCS $0E79 +0EC9- 8D A0 D3 STA $D3A0 +0ECC- D4 ??? +0ECD- C1 A0 CMP ($A0,X) +0ECF- A4 B3 LDY $B3 +0ED1- B0 B1 BCS $0E84 +0ED3- 8D A0 D3 STA $D3A0 +0ED6- D4 ??? +0ED7- C1 A0 CMP ($A0,X) +0ED9- A4 B3 LDY $B3 +0EDB- B0 B2 BCS $0E8F +0EDD- 8D A0 CC STA $CCA0 +0EE0- C4 C1 CPY $C1 +0EE2- A0 A3 LDY #$A3 +0EE4- B0 B0 BCS $0E96 +0EE6- 8D A0 D3 STA $D3A0 +0EE9- D4 ??? +0EEA- C1 A0 CMP ($A0,X) +0EEC- A4 B3 LDY $B3 +0EEE- B0 B3 BCS $0EA3 +0EF0- 8D A0 CC STA $CCA0 +0EF3- C4 C1 CPY $C1 +0EF5- A0 A3 LDY #$A3 +0EF7- BE A4 B3 LDX $B3A4,Y +0EFA- B0 B0 BCS $0EAC +0EFC- A0 BB LDY #$BB +0EFE- 20 D0 D5 JSR $D5D0 +0F01- D3 ??? +0F02- C8 INY +0F03- 20 C8 C9 JSR $C9C8 +0F06- C2 ??? +0F07- D9 D4 C5 CMP $C5D4,Y +0F0A- 8D A0 D0 STA $D0A0 +0F0D- C8 INY +0F0E- C1 8D CMP ($8D,X) +0F10- A0 CC LDY #$CC +0F12- C4 C1 CPY $C1 +0F14- A0 A3 LDY #$A3 +0F16- BC A4 B3 LDY $B3A4,X +0F19- B0 B0 BCS $0ECB +0F1B- A0 BB LDY #$BB +0F1D- 20 D0 D5 JSR $D5D0 +0F20- D3 ??? +0F21- C8 INY +0F22- 20 CC CF JSR $CFCC +0F25- C2 ??? +0F26- D9 D4 C5 CMP $C5D4,Y +0F29- 8D A0 D0 STA $D0A0 +0F2C- C8 INY +0F2D- C1 8D CMP ($8D,X) +0F2F- A0 CA LDY #$CA +0F31- D3 ??? +0F32- D2 A0 CMP ($A0) +0F34- C4 D0 CPY $D0 +0F36- D2 C9 CMP ($C9) +0F38- CE D4 A0 DEC $A0D4 +0F3B- BB ??? +0F3C- 20 CE CF JSR $CFCE +0F3F- D7 ??? +0F40- 20 D0 D2 JSR $D2D0 +0F43- C9 CE CMP #$CE +0F45- D4 ??? +0F46- 20 C9 D4 JSR $D4C9 +0F49- 8D AA 8D STA $8DAA +0F4C- AA TAX +0F4D- 20 DE DE JSR $DEDE +0F50- DE 20 CE DEC $CE20,X +0F53- CF ??? +0F54- D4 ??? +0F55- C5 20 CMP $20 +0F57- C1 C2 CMP ($C2,X) +0F59- CF ??? +0F5A- D6 C5 DEC $C5,X +0F5C- 20 D4 C8 JSR $C8D4 +0F5F- C1 D4 CMP ($D4,X) +0F61- 20 D4 C8 JSR $C8D4 +0F64- C5 20 CMP $20 +0F66- C8 INY +0F67- C9 C7 CMP #$C7 +0F69- C8 INY +0F6A- 20 C2 D9 JSR $D9C2 +0F6D- D4 ??? +0F6E- C5 8D CMP $8D +0F70- AA TAX +0F71- 20 C9 D3 JSR $D3C9 +0F74- 20 D0 D5 JSR $D5D0 +0F77- D3 ??? +0F78- C8 INY +0F79- C5 C4 CMP $C4 +0F7B- 20 C2 C5 JSR $C5C2 +0F7E- C6 CF DEC $CF +0F80- D2 C5 CMP ($C5) +0F82- 20 D4 C8 JSR $C8D4 +0F85- C5 20 CMP $20 +0F87- CC CF D7 CPY $D7CF +0F8A- 20 C2 D9 JSR $D9C2 +0F8D- D4 ??? +0F8E- C5 20 CMP $20 +0F90- C2 ??? +0F91- C5 C3 CMP $C3 +0F93- C1 D5 CMP ($D5,X) +0F95- D3 ??? +0F96- C5 8D CMP $8D +0F98- AA TAX +0F99- 20 B6 B5 JSR $B5B6 +0F9C- B0 B2 BCS $0F50 +0F9E- 20 C3 CF JSR $CFC3 +0FA1- CE D6 C5 DEC $C5D6 +0FA4- CE D4 C9 DEC $C9D4 +0FA7- CF ??? +0FA8- CE 20 C9 DEC $C920 +0FAB- D3 ??? +0FAC- 20 D4 CF JSR $CFD4 +0FAF- 20 D2 C5 JSR $C5D2 +0FB2- C1 C4 CMP ($C4,X) +0FB4- 20 D4 C8 JSR $C8D4 +0FB7- C5 20 CMP $20 +0FB9- CC CF D7 CPY $D7CF +0FBC- 20 C2 D9 JSR $D9C2 +0FBF- D4 ??? +0FC0- C5 8D CMP $8D +0FC2- AA TAX +0FC3- 20 C6 C9 JSR $C9C6 +0FC6- D2 D3 CMP ($D3) +0FC8- D4 ??? +0FC9- AC 20 D4 LDY $D420 +0FCC- C8 INY +0FCD- C5 CE CMP $CE +0FCF- 20 D4 C8 JSR $C8D4 +0FD2- C5 20 CMP $20 +0FD4- C8 INY +0FD5- C9 C7 CMP #$C7 +0FD7- C8 INY +0FD8- 20 C2 D9 JSR $D9C2 +0FDB- D4 ??? +0FDC- C5 AE CMP $AE +0FDE- 20 D4 C8 JSR $C8D4 +0FE1- C9 D3 CMP #$D3 +0FE3- 20 C9 D3 JSR $D3C9 +0FE6- 20 D4 C8 JSR $C8D4 +0FE9- C5 8D CMP $8D +0FEB- AA TAX +0FEC- 20 CF D2 JSR $D2CF +0FEF- C4 C5 CPY $C5 +0FF1- D2 20 CMP ($20) +0FF3- C9 D4 CMP #$D4 +0FF5- 20 D7 C9 JSR $C9D7 +0FF8- CC CC 20 CPY $20CC +0FFB- D0 CF BNE $0FCC +0FFD- D0 20 BNE $101F +0FFF- CF ??? +1000- C6 C6 DEC $C6 +1002- 20 D4 C8 JSR $C8D4 +1005- C5 20 CMP $20 +1007- D3 ??? +1008- D4 ??? +1009- C1 C3 CMP ($C3,X) +100B- CB ??? +100C- AE 8D AA LDX $AA8D +100F- 8D AA AA STA $AAAA +1012- AA TAX +1013- 8D AA AA STA $AAAA +1016- AA TAX +1017- 20 D5 D3 JSR $D3D5 +101A- C5 20 CMP $20 +101C- D4 ??? +101D- C8 INY +101E- CC C9 CE CPY $CEC9 +1021- 20 D4 CF JSR $CFD4 +1024- 20 C3 D2 JSR $D2C3 +1027- C5 C1 CMP $C1 +1029- D4 ??? +102A- C5 20 CMP $20 +102C- C1 20 CMP ($20,X) +102E- CC C9 CE CPY $CEC9 +1031- C5 20 CMP $20 +1033- CF ??? +1034- C6 20 DEC $20 +1036- C8 INY +1037- CF ??? +1038- D2 C9 CMP ($C9) +103A- DA PHX +103B- CF ??? +103C- CE D4 C1 DEC $C1D4 +103F- CC 8D AA CPY $AA8D +1042- AA TAX +1043- AA TAX +1044- 20 D4 C5 JSR $C5D4 +1047- D8 CLD +1048- D4 ??? +1049- 20 C3 CF JSR $CFC3 +104C- CE D3 C9 DEC $C9D3 +104F- D3 ??? +1050- D4 ??? +1051- C9 CE CMP #$CE +1053- C7 ??? +1054- 20 CF C6 JSR $C6CF +1057- 20 C1 20 JSR $20C1 +105A- D3 ??? +105B- C9 CE CMP #$CE +105D- C7 ??? +105E- CC C5 20 CPY $20C5 +1061- C3 ??? +1062- C8 INY +1063- C1 D2 CMP ($D2,X) +1065- C1 C3 CMP ($C3,X) +1067- D4 ??? +1068- C5 D2 CMP $D2 +106A- AE 8D AA LDX $AA8D +106D- AA TAX +106E- AA TAX +106F- 20 CC C9 JSR $C9CC +1072- CB ??? +1073- C5 20 CMP $20 +1075- CD C1 CE CMP $CEC1 +1078- D9 20 CF CMP $CF20,Y +107B- D4 ??? +107C- C8 INY +107D- C5 D2 CMP $D2 +107F- 20 D3 D5 JSR $D5D3 +1082- C2 ??? +1083- D2 CF CMP ($CF) +1085- D5 D4 CMP $D4,X +1087- C9 CE CMP #$CE +1089- C5 D3 CMP $D3 +108B- AC 20 D4 LDY $D420 +108E- C8 INY +108F- C9 D3 CMP #$D3 +1091- 20 D5 D3 JSR $D3D5 +1094- C5 D3 CMP $D3 +1096- 8D AA AA STA $AAAA +1099- AA TAX +109A- 20 D4 C8 JSR $C8D4 +109D- C5 20 CMP $20 +109F- D3 ??? +10A0- D4 ??? +10A1- C1 C3 CMP ($C3,X) +10A3- CB ??? +10A4- 20 D4 CF JSR $CFD4 +10A7- 20 D0 C1 JSR $C1D0 +10AA- D3 ??? +10AB- D3 ??? +10AC- 20 D6 C1 JSR $C1D6 +10AF- D2 C9 CMP ($C9) +10B1- C1 C2 CMP ($C2,X) +10B3- CC C5 D3 CPY $D3C5 +10B6- AE 8D AA LDX $AA8D +10B9- AA TAX +10BA- AA TAX +10BB- 8D AA 8D STA $8DAA +10BE- A0 CC LDY #$CC +10C0- C4 C1 CPY $C1 +10C2- A0 A3 LDY #$A3 +10C4- B0 A0 BCS $1066 +10C6- BB ??? +10C7- 20 D3 D4 JSR $D4D3 +10CA- C1 D2 CMP ($D2,X) +10CC- D4 ??? +10CD- 20 CF C6 JSR $C6CF +10D0- 20 CC C9 JSR $C9CC +10D3- CE C5 8D DEC $8DC5 +10D6- A0 D0 LDY #$D0 +10D8- C8 INY +10D9- C1 8D CMP ($8D,X) +10DB- A0 CC LDY #$CC +10DD- C4 C1 CPY $C1 +10DF- A0 A3 LDY #$A3 +10E1- B1 B5 LDA ($B5),Y +10E3- A0 BB LDY #$BB +10E5- 20 C5 CE JSR $CEC5 +10E8- C4 20 CPY $20 +10EA- CF ??? +10EB- C6 20 DEC $20 +10ED- CC C9 CE CPY $CEC9 +10F0- C5 8D CMP $8D +10F2- A0 D0 LDY #$D0 +10F4- C8 INY +10F5- C1 8D CMP ($8D,X) +10F7- A0 CC LDY #$CC +10F9- C4 C1 CPY $C1 +10FB- A0 A3 LDY #$A3 +10FD- B1 B0 LDA ($B0),Y +10FF- A0 BB LDY #$BB +1101- 20 D9 20 JSR $20D9 +1104- D0 CF BNE $10D5 +1106- D3 ??? +1107- C9 D4 CMP #$D4 +1109- C9 CF CMP #$CF +110B- CE 8D A0 DEC $A08D +110E- D0 C8 BNE $10D8 +1110- C1 8D CMP ($8D,X) +1112- A0 CC LDY #$CC +1114- C4 C1 CPY $C1 +1116- A0 A3 LDY #$A3 +1118- A4 B1 LDY $B1 +111A- B8 CLV +111B- A0 BB LDY #$BB +111D- 20 A2 D8 JSR $D8A2 +1120- A2 20 LDX #$20 +1122- C3 ??? +1123- C8 INY +1124- C1 D2 CMP ($D2,X) +1126- C1 C3 CMP ($C3,X) +1128- D4 ??? +1129- C5 D2 CMP $D2 +112B- AC 20 C9 LDY $C920 +112E- CE D6 C5 DEC $C5D6 +1131- D2 D3 CMP ($D3) +1133- C5 8D CMP $8D +1135- A0 D0 LDY #$D0 +1137- C8 INY +1138- C1 8D CMP ($8D,X) +113A- A0 CA LDY #$CA +113C- D3 ??? +113D- D2 A0 CMP ($A0) +113F- D4 ??? +1140- C8 INY +1141- CC C9 CE CPY $CEC9 +1144- 8D AA 8D STA $8DAA +1147- AA TAX +1148- AA TAX +1149- AA TAX +114A- 20 D4 D6 JSR $D6D4 +114D- CC C9 CE CPY $CEC9 +1150- 20 D7 CF JSR $CFD7 +1153- D2 CB CMP ($CB) +1155- D3 ??? +1156- 20 CC C9 JSR $C9CC +1159- CB ??? +115A- C5 20 CMP $20 +115C- D4 ??? +115D- C8 INY +115E- CC C9 CE CPY $CEC9 +1161- AC 20 C2 LDY $C220 +1164- D5 D4 CMP $D4,X +1166- 20 C3 D2 JSR $D2C3 +1169- C5 C1 CMP $C1 +116B- D4 ??? +116C- C5 D3 CMP $D3 +116E- 20 C1 20 JSR $20C1 +1171- D6 C5 DEC $C5,X +1173- D2 D4 CMP ($D4) +1175- C9 C3 CMP #$C3 +1177- C1 CC CMP ($CC,X) +1179- 8D AA AA STA $AAAA +117C- AA TAX +117D- 20 CC C9 JSR $C9CC +1180- CE C5 20 DEC $20C5 +1183- C9 CE CMP #$CE +1185- D3 ??? +1186- D4 ??? +1187- C5 C1 CMP $C1 +1189- C4 20 CPY $20 +118B- CF ??? +118C- C6 20 DEC $20 +118E- C1 20 CMP ($20,X) +1190- C8 INY +1191- CF ??? +1192- D2 C9 CMP ($C9) +1194- DA PHX +1195- CF ??? +1196- CE D4 C1 DEC $C1D4 +1199- CC 20 CF CPY $CF20 +119C- CE C5 AE DEC $AEC5 +119F- 8D AA 8D STA $8DAA +11A2- A0 CC LDY #$CC +11A4- C4 C1 CPY $C1 +11A6- A0 A3 LDY #$A3 +11A8- B0 A0 BCS $114A +11AA- BB ??? +11AB- 20 D3 D4 JSR $D4D3 +11AE- C1 D2 CMP ($D2,X) +11B0- D4 ??? +11B1- C9 CE CMP #$CE +11B3- C7 ??? +11B4- 20 D9 20 JSR $20D9 +11B7- D0 CF BNE $1188 +11B9- D3 ??? +11BA- 20 CF C6 JSR $C6CF +11BD- 20 CC C9 JSR $C9CC +11C0- CE C5 8D DEC $8DC5 +11C3- A0 D0 LDY #$D0 +11C5- C8 INY +11C6- C1 8D CMP ($8D,X) +11C8- A0 CC LDY #$CC +11CA- C4 C1 CPY $C1 +11CC- A0 A3 LDY #$A3 +11CE- B1 B5 LDA ($B5),Y +11D0- A0 BB LDY #$BB +11D2- 20 C5 CE JSR $CEC5 +11D5- C4 20 CPY $20 +11D7- D9 D0 CF CMP $CFD0,Y +11DA- D3 ??? +11DB- 20 CF C6 JSR $C6CF +11DE- 20 CC C9 JSR $C9CC +11E1- CE C5 8D DEC $8DC5 +11E4- A0 D0 LDY #$D0 +11E6- C8 INY +11E7- C1 8D CMP ($8D,X) +11E9- A0 CC LDY #$CC +11EB- C4 C1 CPY $C1 +11ED- A0 A3 LDY #$A3 +11EF- B1 B0 LDA ($B0),Y +11F1- A0 BB LDY #$BB +11F3- 20 D8 20 JSR $20D8 +11F6- D0 CF BNE $11C7 +11F8- D3 ??? +11F9- C9 D4 CMP #$D4 +11FB- C9 CF CMP #$CF +11FD- CE 8D A0 DEC $A08D +1200- D0 C8 BNE $11CA +1202- C1 8D CMP ($8D,X) +1204- A0 CC LDY #$CC +1206- C4 C1 CPY $C1 +1208- A0 A3 LDY #$A3 +120A- A4 B1 LDY $B1 +120C- B8 CLV +120D- A0 BB LDY #$BB +120F- 20 A2 D8 JSR $D8A2 +1212- A2 20 LDX #$20 +1214- C3 ??? +1215- C8 INY +1216- C1 D2 CMP ($D2,X) +1218- C1 C3 CMP ($C3,X) +121A- D4 ??? +121B- C5 D2 CMP $D2 +121D- AC 20 C9 LDY $C920 +1220- CE D6 C5 DEC $C5D6 +1223- D2 D3 CMP ($D3) +1225- C5 8D CMP $8D +1227- A0 D0 LDY #$D0 +1229- C8 INY +122A- C1 8D CMP ($8D,X) +122C- A0 CA LDY #$CA +122E- D3 ??? +122F- D2 A0 CMP ($A0) +1231- D4 ??? +1232- D6 CC DEC $CC,X +1234- C9 CE CMP #$CE +1236- 8D AA 8D STA $8DAA +1239- AA TAX +123A- 8D AA AA STA $AAAA +123D- AA TAX +123E- 20 D4 C8 JSR $C8D4 +1241- C5 20 CMP $20 +1243- D4 ??? +1244- C6 C9 DEC $C9 +1246- CC CC C1 CPY $C1CC +1249- 20 D2 CF JSR $CFD2 +124C- D5 D4 CMP $D4,X +124E- C9 CE CMP #$CE +1250- C5 20 CMP $20 +1252- C1 C3 CMP ($C3,X) +1254- D4 ??? +1255- D3 ??? +1256- 20 CC C9 JSR $C9CC +1259- CB ??? +125A- C5 20 CMP $20 +125C- C1 20 CMP ($20,X) +125E- C3 ??? +125F- CF ??? +1260- CD C2 C9 CMP $C9C2 +1263- CE C1 D4 DEC $D4C1 +1266- C9 CF CMP #$CF +1268- CE 20 CF DEC $CF20 +126B- C6 8D DEC $8D +126D- AA TAX +126E- AA TAX +126F- AA TAX +1270- 20 D4 C8 JSR $C8D4 +1273- CC C9 CE CPY $CEC9 +1276- 20 C1 CE JSR $CEC1 +1279- C4 20 CPY $20 +127B- D4 ??? +127C- D6 CC DEC $CC,X +127E- C9 CE CMP #$CE +1280- AE 20 C9 LDX $C920 +1283- D4 ??? +1284- 20 C6 C9 JSR $C9C6 +1287- CC CC D3 CPY $D3CC +128A- 20 C1 20 JSR $20C1 +128D- C7 ??? +128E- C9 D6 CMP #$D6 +1290- C5 CE CMP $CE +1292- 20 D2 C5 JSR $C5D2 +1295- C3 ??? +1296- D4 ??? +1297- C1 CE CMP ($CE,X) +1299- C7 ??? +129A- D5 CC CMP $CC,X +129C- C1 D2 CMP ($D2,X) +129E- 8D AA AA STA $AAAA +12A1- AA TAX +12A2- 20 C1 D2 JSR $D2C1 +12A5- C5 C1 CMP $C1 +12A7- 20 CF C6 JSR $C6CF +12AA- 20 D4 C8 JSR $C8D4 +12AD- C5 20 CMP $20 +12AF- D3 ??? +12B0- C3 ??? +12B1- D2 C5 CMP ($C5) +12B3- C5 CE CMP $CE +12B5- 20 D7 C9 JSR $C9D7 +12B8- D4 ??? +12B9- C8 INY +12BA- 20 D4 C8 JSR $C8D4 +12BD- C5 20 CMP $20 +12BF- C4 C5 CPY $C5 +12C1- D3 ??? +12C2- C9 C7 CMP #$C7 +12C4- CE C1 D4 DEC $D4C1 +12C7- C5 C4 CMP $C4 +12C9- 8D AA AA STA $AAAA +12CC- AA TAX +12CD- 20 C3 C8 JSR $C8C3 +12D0- C1 D2 CMP ($D2,X) +12D2- C1 C3 CMP ($C3,X) +12D4- D4 ??? +12D5- C5 D2 CMP $D2 +12D7- 20 C1 D4 JSR $D4C1 +12DA- 20 D8 B1 JSR $B1D8 +12DD- AC D9 B1 LDY $B1D9 +12E0- BA TSX +12E1- D8 CLD +12E2- B2 AC LDA ($AC) +12E4- D9 B2 AE CMP $AEB2,Y +12E7- 8D AA 8D STA $8DAA +12EA- A0 CC LDY #$CC +12EC- C4 C1 CPY $C1 +12EE- A0 A3 LDY #$A3 +12F0- B1 B0 LDA ($B0),Y +12F2- A0 BB LDY #$BB +12F4- 20 CC C5 JSR $C5CC +12F7- C6 D4 DEC $D4 +12F9- 20 C2 CF JSR $CFC2 +12FC- D5 CE CMP $CE,X +12FE- C4 C1 CPY $C1 +1300- D2 D9 CMP ($D9) +1302- 8D A0 D0 STA $D0A0 +1305- C8 INY +1306- C1 8D CMP ($8D,X) +1308- A0 CC LDY #$CC +130A- C4 C1 CPY $C1 +130C- A0 A3 LDY #$A3 +130E- B3 ??? +130F- B0 A0 BCS $12B1 +1311- BB ??? +1312- 20 D2 C9 JSR $C9D2 +1315- C7 ??? +1316- C8 INY +1317- D4 ??? +1318- 20 C2 CF JSR $CFC2 +131B- D5 CE CMP $CE,X +131D- C4 C1 CPY $C1 +131F- D2 D9 CMP ($D9) +1321- 8D A0 D0 STA $D0A0 +1324- C8 INY +1325- C1 8D CMP ($8D,X) +1327- A0 CC LDY #$CC +1329- C4 C1 CPY $C1 +132B- A0 A3 LDY #$A3 +132D- B5 A0 LDA $A0,X +132F- BB ??? +1330- 20 D4 CF JSR $CFD4 +1333- D0 20 BNE $1355 +1335- C2 ??? +1336- CF ??? +1337- D5 CE CMP $CE,X +1339- C4 C1 CPY $C1 +133B- D2 D9 CMP ($D9) +133D- 8D A0 D0 STA $D0A0 +1340- C8 INY +1341- C1 8D CMP ($8D,X) +1343- A0 CC LDY #$CC +1345- C4 C1 CPY $C1 +1347- A0 A3 LDY #$A3 +1349- B1 B5 LDA ($B5),Y +134B- A0 BB LDY #$BB +134D- 20 C2 CF JSR $CFC2 +1350- D4 ??? +1351- D4 ??? +1352- CF ??? +1353- CD 20 C2 CMP $C220 +1356- CF ??? +1357- D5 CE CMP $CE,X +1359- C4 C1 CPY $C1 +135B- D2 D9 CMP ($D9) +135D- 8D A0 D0 STA $D0A0 +1360- C8 INY +1361- C1 8D CMP ($8D,X) +1363- A0 CC LDY #$CC +1365- C4 C1 CPY $C1 +1367- A0 A3 LDY #$A3 +1369- A4 B1 LDY $B1 +136B- C1 A0 CMP ($A0,X) +136D- BB ??? +136E- 20 A2 DA JSR $DAA2 +1371- A2 20 LDX #$20 +1373- C3 ??? +1374- C8 INY +1375- C1 D2 CMP ($D2,X) +1377- C1 C3 CMP ($C3,X) +1379- D4 ??? +137A- C5 D2 CMP $D2 +137C- 8D A0 D0 STA $D0A0 +137F- C8 INY +1380- C1 8D CMP ($8D,X) +1382- A0 CA LDY #$CA +1384- D3 ??? +1385- D2 A0 CMP ($A0) +1387- D4 ??? +1388- C6 C9 DEC $C9 +138A- CC CC C1 CPY $C1CC +138D- 8D AA 8D STA $8DAA +1390- AA TAX +1391- 8D AA AA STA $AAAA +1394- AA TAX +1395- 20 D4 C8 JSR $C8D4 +1398- C5 20 CMP $20 +139A- D3 ??? +139B- C9 CE CMP #$CE +139D- D0 D5 BNE $1374 +139F- D4 ??? +13A0- 20 D2 CF JSR $CFD2 +13A3- D5 D4 CMP $D4,X +13A5- C9 CE CMP #$CE +13A7- C5 20 CMP $20 +13A9- A8 TAY +13AA- D3 ??? +13AB- D0 C5 BNE $1372 +13AD- C3 ??? +13AE- C9 C1 CMP #$C1 +13B0- CC 20 C9 CPY $C920 +13B3- CE D0 D5 DEC $D5D0 +13B6- D4 ??? +13B7- A9 20 LDA #$20 +13B9- D0 D2 BNE $138D +13BB- CF ??? +13BC- CD D0 D4 CMP $D4D0 +13BF- D3 ??? +13C0- 8D AA AA STA $AAAA +13C3- AA TAX +13C4- 20 D4 C8 JSR $C8D4 +13C7- C5 20 CMP $20 +13C9- D5 D3 CMP $D3,X +13CB- C5 D2 CMP $D2 +13CD- 20 C6 CF JSR $CFC6 +13D0- D2 20 CMP ($20) +13D2- C1 20 CMP ($20,X) +13D4- D3 ??? +13D5- D4 ??? +13D6- D2 C9 CMP ($C9) +13D8- CE C7 20 DEC $20C7 +13DB- CF ??? +13DC- C6 20 DEC $20 +13DE- D4 ??? +13DF- C5 D8 CMP $D8 +13E1- D4 ??? +13E2- 20 C6 CF JSR $CFC6 +13E5- CC CC CF CPY $CFCC +13E8- D7 ??? +13E9- C5 C4 CMP $C4 +13EB- 20 C2 D9 JSR $D9C2 +13EE- 8D AA AA STA $AAAA +13F1- AA TAX +13F2- 20 C1 20 JSR $20C1 +13F5- BC D2 C5 LDY $C5D2,X +13F8- D4 ??? +13F9- D5 D2 CMP $D2,X +13FB- CE BE 20 DEC $20BE +13FE- D0 D2 BNE $13D2 +1400- C5 D3 CMP $D3 +1402- D3 ??? +1403- AC 20 D4 LDY $D420 +1406- C8 INY +1407- C5 CE CMP $CE +1409- 20 D3 D4 JSR $D4D3 +140C- CF ??? +140D- D2 C5 CMP ($C5) +140F- D3 ??? +1410- 20 D4 C8 JSR $C8D4 +1413- C5 20 CMP $20 +1415- C9 CE CMP #$CE +1417- D0 D5 BNE $13EE +1419- D4 ??? +141A- D4 ??? +141B- C5 C4 CMP $C4 +141D- 8D AA AA STA $AAAA +1420- AA TAX +1421- 20 D3 D4 JSR $D4D3 +1424- D2 C9 CMP ($C9) +1426- CE C7 20 DEC $20C7 +1429- C1 D4 CMP ($D4,X) +142B- 20 D4 C8 JSR $C8D4 +142E- C5 20 CMP $20 +1430- D3 ??? +1431- D0 C5 BNE $13F8 +1433- C3 ??? +1434- C9 C6 CMP #$C6 +1436- C9 C5 CMP #$C5 +1438- C4 20 CPY $20 +143A- CC CF C3 CPY $C3CF +143D- C1 D4 CMP ($D4,X) +143F- C9 CF CMP #$CF +1441- CE AC 20 DEC $20AC +1444- D7 ??? +1445- C9 D4 CMP #$D4 +1447- C8 INY +1448- 20 C9 D4 JSR $D4C9 +144B- D3 ??? +144C- 8D AA AA STA $AAAA +144F- AA TAX +1450- 20 CC C5 JSR $C5CC +1453- CE C7 D4 DEC $D4C7 +1456- C8 INY +1457- 20 C1 D3 JSR $D3C1 +145A- 20 D4 C8 JSR $C8D4 +145D- C5 20 CMP $20 +145F- C6 C9 DEC $C9 +1461- D2 D3 CMP ($D3) +1463- D4 ??? +1464- 20 C2 D9 JSR $D9C2 +1467- D4 ??? +1468- C5 20 CMP $20 +146A- A8 TAY +146B- CD C1 D8 CMP $D8C1 +146E- BA TSX +146F- 20 B2 B5 JSR $B5B2 +1472- B5 A9 LDA $A9,X +1474- 8D AA 8D STA $8DAA +1477- A0 CC LDY #$CC +1479- C4 C1 CPY $C1 +147B- A0 A3 LDY #$A3 +147D- BE A4 B3 LDX $B3A4,Y +1480- B0 B0 BCS $1432 +1482- A0 BB LDY #$BB +1484- 20 D0 D5 JSR $D5D0 +1487- D3 ??? +1488- C8 INY +1489- 20 C8 C9 JSR $C9C8 +148C- C7 ??? +148D- C8 INY +148E- 20 C2 D9 JSR $D9C2 +1491- D4 ??? +1492- C5 20 CMP $20 +1494- C6 C9 DEC $C9 +1496- D2 D3 CMP ($D3) +1498- D4 ??? +1499- 8D A0 D0 STA $D0A0 +149C- C8 INY +149D- C1 8D CMP ($8D,X) +149F- A0 CC LDY #$CC +14A1- C4 C1 CPY $C1 +14A3- A0 A3 LDY #$A3 +14A5- BC A4 B3 LDY $B3A4,X +14A8- B0 B0 BCS $145A +14AA- A0 BB LDY #$BB +14AC- 20 D4 C8 JSR $C8D4 +14AF- C5 CE CMP $CE +14B1- 20 CC CF JSR $CFCC +14B4- D7 ??? +14B5- 20 C2 D9 JSR $D9C2 +14B8- D4 ??? +14B9- C5 AC CMP $AC +14BB- 20 D3 CF JSR $CFD3 +14BE- 8D BB 20 STA $20BB +14C1- D4 ??? +14C2- C8 INY +14C3- C1 D4 CMP ($D4,X) +14C5- 20 D4 C8 JSR $C8D4 +14C8- C5 20 CMP $20 +14CA- D2 CF CMP ($CF) +14CC- D5 D4 CMP $D4,X +14CE- C9 CE CMP #$CE +14D0- C5 8D CMP $8D +14D2- A0 BB LDY #$BB +14D4- 20 D2 C5 JSR $C5D2 +14D7- C1 C4 CMP ($C4,X) +14D9- D3 ??? +14DA- 20 CC CF JSR $CFCC +14DD- D7 ??? +14DE- AC 20 C8 LDY $C820 +14E1- C9 C7 CMP #$C7 +14E3- C8 INY +14E4- 8D A0 D0 STA $D0A0 +14E7- C8 INY +14E8- C1 8D CMP ($8D,X) +14EA- A0 CA LDY #$CA +14EC- D3 ??? +14ED- D2 A0 CMP ($A0) +14EF- D3 ??? +14F0- C9 CE CMP #$CE +14F2- D0 D5 BNE $14C9 +14F4- D4 ??? +14F5- A0 BB LDY #$BB +14F7- 20 D3 D4 JSR $D4D3 +14FA- CF ??? +14FB- D2 C5 CMP ($C5) +14FD- D3 ??? +14FE- 20 C9 CE JSR $CEC9 +1501- 20 A4 B3 JSR $B3A4 +1504- B0 B0 BCS $14B6 +1506- 8D AA 8D STA $8DAA +1509- AA TAX +150A- 8D AA AA STA $AAAA +150D- AA TAX +150E- 20 D4 C8 JSR $C8D4 +1511- C5 20 CMP $20 +1513- D0 C1 BNE $14D6 +1515- C4 C4 CPY $C4 +1517- CC C5 20 CPY $20C5 +151A- C2 ??? +151B- D5 D4 CMP $D4,X +151D- D4 ??? +151E- CF ??? +151F- CE 20 D2 DEC $D220 +1522- CF ??? +1523- D5 D4 CMP $D4,X +1525- C9 CE CMP #$CE +1527- C5 20 CMP $20 +1529- C3 ??? +152A- C8 INY +152B- C5 C3 CMP $C3 +152D- CB ??? +152E- D3 ??? +152F- 8D AA AA STA $AAAA +1532- AA TAX +1533- 20 D7 C8 JSR $C8D7 +1536- C5 D4 CMP $D4 +1538- C8 INY +1539- C5 D2 CMP $D2 +153B- 20 D4 C8 JSR $C8D4 +153E- C5 20 CMP $20 +1540- C4 C5 CPY $C5 +1542- D3 ??? +1543- C9 C7 CMP #$C7 +1545- CE C1 D4 DEC $D4C1 +1548- C5 C4 CMP $C4 +154A- 20 D0 C1 JSR $C1D0 +154D- C4 C4 CPY $C4 +154F- CC C5 20 CPY $20C5 +1552- C2 ??? +1553- D5 D4 CMP $D4,X +1555- D4 ??? +1556- CF ??? +1557- CE 8D AA DEC $AA8D +155A- AA TAX +155B- AA TAX +155C- 20 C9 D3 JSR $D3C9 +155F- 20 C3 D5 JSR $D5C3 +1562- D2 D2 CMP ($D2) +1564- C5 CE CMP $CE +1566- D4 ??? +1567- CC D9 20 CPY $20D9 +156A- C2 ??? +156B- C5 C9 CMP $C9 +156D- CE C7 20 DEC $20C7 +1570- D0 D2 BNE $1544 +1572- C5 D3 CMP $D3 +1574- D3 ??? +1575- C5 C4 CMP $C4 +1577- AE 8D AA LDX $AA8D +157A- 8D AA 8D STA $8DAA +157D- AA TAX +157E- 8D AA 8D STA $8DAA +1581- AA TAX +1582- 8D AA 8D STA $8DAA +1585- AA TAX +1586- AA TAX +1587- AA TAX +1588- AA TAX +1589- AA TAX +158A- AA TAX +158B- AA TAX +158C- AA TAX +158D- AA TAX +158E- AA TAX +158F- AA TAX +1590- AA TAX +1591- AA TAX +1592- AA TAX +1593- AA TAX +1594- AA TAX +1595- AA TAX +1596- AA TAX +1597- AA TAX +1598- AA TAX +1599- AA TAX +159A- AA TAX +159B- AA TAX +159C- AA TAX +159D- AA TAX +159E- AA TAX +159F- AA TAX +15A0- AA TAX +15A1- AA TAX +15A2- AA TAX +15A3- AA TAX +15A4- AA TAX +15A5- 8D AA AA STA $AAAA +15A8- AA TAX +15A9- AA TAX +15AA- AA TAX +15AB- AA TAX +15AC- AA TAX +15AD- AA TAX +15AE- AA TAX +15AF- AA TAX +15B0- AA TAX +15B1- AA TAX +15B2- AA TAX +15B3- AA TAX +15B4- AA TAX +15B5- AA TAX +15B6- AA TAX +15B7- AA TAX +15B8- AA TAX +15B9- AA TAX +15BA- AA TAX +15BB- AA TAX +15BC- AA TAX +15BD- AA TAX +15BE- AA TAX +15BF- AA TAX +15C0- AA TAX +15C1- AA TAX +15C2- AA TAX +15C3- AA TAX +15C4- AA TAX +15C5- AA TAX +15C6- 8D AA 20 STA $20AA +15C9- CE CF D7 DEC $D7CF +15CC- 20 CC C5 JSR $C5CC +15CF- D4 ??? +15D0- A7 ??? +15D1- D3 ??? +15D2- 20 C4 CF JSR $CFC4 +15D5- 20 C9 D4 JSR $D4C9 +15D8- 20 C1 C7 JSR $C7C1 +15DB- C1 C9 CMP ($C9,X) +15DD- CE A1 20 DEC $20A1 +15E0- 20 20 20 JSR $2020 +15E3- 20 20 20 JSR $2020 +15E6- AA TAX +15E7- 8D AA 20 STA $20AA +15EA- A8 TAY +15EB- C2 ??? +15EC- D5 D4 CMP $D4,X +15EE- 20 D7 C9 JSR $C9D7 +15F1- D4 ??? +15F2- C8 INY +15F3- 20 CD C1 JSR $C1CD +15F6- C3 ??? +15F7- D2 CF CMP ($CF) +15F9- D3 ??? +15FA- A9 20 LDA #$20 +15FC- 20 20 20 JSR $2020 +15FF- 20 20 20 JSR $2020 +1602- 20 20 20 JSR $2020 +1605- 20 20 AA JSR $AA20 +1608- 8D AA AA STA $AAAA +160B- AA TAX +160C- AA TAX +160D- AA TAX +160E- AA TAX +160F- AA TAX +1610- AA TAX +1611- AA TAX +1612- AA TAX +1613- AA TAX +1614- AA TAX +1615- AA TAX +1616- AA TAX +1617- AA TAX +1618- AA TAX +1619- AA TAX +161A- AA TAX +161B- AA TAX +161C- AA TAX +161D- AA TAX +161E- AA TAX +161F- AA TAX +1620- AA TAX +1621- AA TAX +1622- AA TAX +1623- AA TAX +1624- AA TAX +1625- AA TAX +1626- AA TAX +1627- AA TAX +1628- AA TAX +1629- 8D AA AA STA $AAAA +162C- AA TAX +162D- AA TAX +162E- AA TAX +162F- AA TAX +1630- AA TAX +1631- AA TAX +1632- AA TAX +1633- AA TAX +1634- AA TAX +1635- AA TAX +1636- AA TAX +1637- AA TAX +1638- AA TAX +1639- AA TAX +163A- AA TAX +163B- AA TAX +163C- AA TAX +163D- AA TAX +163E- AA TAX +163F- AA TAX +1640- AA TAX +1641- AA TAX +1642- AA TAX +1643- AA TAX +1644- AA TAX +1645- AA TAX +1646- AA TAX +1647- AA TAX +1648- AA TAX +1649- AA TAX +164A- 8D AA 8D STA $8DAA +164D- A0 CA LDY #$CA +164F- D3 ??? +1650- D2 A0 CMP ($A0) +1652- C8 INY +1653- CF ??? +1654- CD C5 8D CMP $8DC5 +1657- A0 DF LDY #$DF +1659- D0 D2 BNE $162D +165B- CE A0 A2 DEC $A2A0 +165E- D7 ??? +165F- D4 ??? +1660- C6 AC DEC $AC +1662- 20 D7 CF JSR $CFD7 +1665- D2 CC CMP ($CC) +1667- C4 BF CPY $BF +1669- A2 8D LDX #$8D +166B- A0 DF LDY #$DF +166D- C3 ??? +166E- D8 CLD +166F- D9 A0 A3 CMP $A3A0,Y +1672- B1 B0 LDA ($B0),Y +1674- BB ??? +1675- A3 ??? +1676- B1 B0 LDA ($B0),Y +1678- 8D A0 DF STA $DFA0 +167B- D4 ??? +167C- D6 CC DEC $CC,X +167E- CE A0 A3 DEC $A3A0 +1681- B5 BB LDA $BB,X +1683- A3 ??? +1684- B2 B0 LDA ($B0) +1686- BB ??? +1687- A3 ??? +1688- B3 ??? +1689- B0 BB BCS $1646 +168B- A3 ??? +168C- A4 B1 LDY $B1 +168E- B8 CLV +168F- 8D A0 DF STA $DFA0 +1692- D4 ??? +1693- C8 INY +1694- CC CE A0 CPY $A0CE +1697- A3 ??? +1698- B5 BB LDA $BB,X +169A- A3 ??? +169B- B3 ??? +169C- B0 BB BCS $1659 +169E- A3 ??? +169F- B2 B0 LDA ($B0) +16A1- BB ??? +16A2- A3 ??? +16A3- A4 B1 LDY $B1 +16A5- C1 8D CMP ($8D,X) +16A7- A0 DF LDY #$DF +16A9- C9 CE CMP #$CE +16AB- D0 A0 BNE $164D +16AD- A4 B3 LDY $B3 +16AF- B0 B0 BCS $1661 +16B1- 8D A0 DF STA $DFA0 +16B4- D4 ??? +16B5- C6 C9 DEC $C9 +16B7- CC A0 A3 CPY $A3A0 +16BA- B0 BB BCS $1677 +16BC- A3 ??? +16BD- B3 ??? +16BE- B9 BB A3 LDA $A3BB,Y +16C1- B0 BB BCS $167E +16C3- A3 ??? +16C4- B2 B1 LDA ($B1) +16C6- BB ??? +16C7- A3 ??? +16C8- A4 B1 LDY $B1 +16CA- B9 8D AA LDA $AA8D,Y +16CD- 8D AA 8D STA $8DAA +16D0- AA TAX +16D1- 8D AA AA STA $AAAA +16D4- 20 CC C9 JSR $C9CC +16D7- D4 ??? +16D8- D4 ??? +16D9- CC C5 20 CPY $20C5 +16DC- CC D5 CD CPY $CDD5 +16DF- D0 D3 BNE $16B4 +16E1- 20 AD AD JSR $ADAD +16E4- 20 CD C9 JSR $C9CD +16E7- C4 AF CPY $AF +16E9- CC CF D7 CPY $D7CF +16EC- 20 CC C5 JSR $C5CC +16EF- D6 C5 DEC $C5,X +16F1- CC 8D AA CPY $AA8D +16F4- 8D AA 8D STA $8DAA +16F7- A0 CA LDY #$CA +16F9- CD D0 A0 CMP $A0D0 +16FC- D2 C5 CMP ($C5) +16FE- C5 CE CMP $CE +1700- D4 ??? +1701- D2 D9 CMP ($D9) +1703- 8D AA 8D STA $8DAA +1706- AA TAX +1707- E0 E0 CPX #$E0 +1709- E0 E0 CPX #$E0 +170B- E0 E0 CPX #$E0 +170D- E0 E0 CPX #$E0 +170F- E0 E0 CPX #$E0 +1711- E0 E0 CPX #$E0 +1713- E0 E0 CPX #$E0 +1715- E0 E0 CPX #$E0 +1717- E0 E0 CPX #$E0 +1719- E0 E0 CPX #$E0 +171B- E0 E0 CPX #$E0 +171D- E0 E0 CPX #$E0 +171F- E0 E0 CPX #$E0 +1721- E0 E0 CPX #$E0 +1723- E0 E0 CPX #$E0 +1725- AA TAX +1726- 8D AA 20 STA $20AA +1729- 20 20 20 JSR $2020 +172C- 20 20 20 JSR $2020 +172F- 20 C2 CF JSR $CFC2 +1732- D4 ??? +1733- D4 ??? +1734- CF ??? +1735- CD 20 C9 CMP $C920 +1738- CE C3 CC DEC $CCC3 +173B- D5 C4 CMP $C4,X +173D- C5 D3 CMP $D3 +173F- 20 20 20 JSR $2020 +1742- 20 20 20 JSR $2020 +1745- 20 AA 8D JSR $8DAA +1748- AA TAX +1749- AC AC AC LDY $ACAC +174C- AC AC AC LDY $ACAC +174F- AC AC AC LDY $ACAC +1752- AC AC AC LDY $ACAC +1755- AC AC AC LDY $ACAC +1758- AC AC AC LDY $ACAC +175B- AC AC AC LDY $ACAC +175E- AC AC AC LDY $ACAC +1761- AC AC AC LDY $ACAC +1764- AC AC AC LDY $ACAC +1767- AA TAX +1768- 8D AA 8D STA $8DAA +176B- AA TAX +176C- 8D AA AA STA $AAAA +176F- 20 C2 CF JSR $CFC2 +1772- D4 ??? +1773- D4 ??? +1774- CF ??? +1775- CD 20 C9 CMP $C920 +1778- CE C3 CC DEC $CCC3 +177B- D5 C4 CMP $C4,X +177D- C5 D3 CMP $D3 +177F- 8D AA 8D STA $8DAA +1782- A0 D0 LDY #$D0 +1784- D5 D4 CMP $D4,X +1786- A0 D3 LDY #$D3 +1788- D4 ??? +1789- C4 C9 CPY $C9 +178B- CF ??? +178C- AE CC C9 LDX $C9CC +178F- C2 ??? +1790- 8D AA 8D STA $8DAA +1793- AA TAX +1794- 8D 00 00 STA $0000 diff --git a/disks/disk1__stdio_common/T.COMMON.DELAYMS b/disks/disk1__stdio_common/T.COMMON.DELAYMS new file mode 100644 index 0000000..6327c59 --- /dev/null +++ b/disks/disk1__stdio_common/T.COMMON.DELAYMS @@ -0,0 +1,92 @@ +*``````````````````````````````* +* DELAYMS :: DELAY X MILLISECS * +*- -* +* DELAYS FOR X NUMBER OF * +* MILLISECONDS BY LOOPING * +* THROUGH PRECISELY CALCULATED * +* NUMBER OF CYCLES. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: -XY- * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDY #250 ;1/4 SEC * +* JSR DELAYMS * +*- -* +* ENTRY * +* * +* Y = NUMBER OF MILLISECONDS * +*- -* +* EXIT * +* * +* Y = COUNTER; TRASH * +* X = COUNTER; TRASH * +* A = UNCHANGED * +*- -* +* ADAPTED FROM LEVANTHAL AND * +* WINTHROP'S /6502 ASSEMBLY * +* LANGUAGE ROUTINES/. * +* AS SUCH, THIS MAY NOT FALL * +* UNDER THE APACHE 2.0 LICENSE * +* AGREEMENT, SINCE THE BOOK * +* WAS WRITTEN BEFORE THE * +* LICENSE! * +* * +* THAT SAID, LEVENTHAL WROTE * +* THAT THE PURPOSE OF THE BOOK * +* WAS TO COPY THE SOURCE CODE, * +* AS REINVENTING THE WHEEL IS * +* TEDIOUS, AND HE PLACED NO * +* RESTRICTIONS ON ITS USE. * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +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) +* +** IF DELAY IS 1MS THEN GOTO LAST1 +** THIS LOGIC IS DESIGNED TO BE +** 5 CYCLES THROUGH EITHER ATH +* + CPY #1 ; 2 CYCLES + BNE :DELAYA ; 3C IF TAKEN, ELSE 2C + JMP :LAST1 ; 3C +* +** DELAY 1 MILLISENCOND TIMES (Y-1) +* +: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 +* +** DELAY THE LAST TIME 25 CYCLES +** LESS TO TAKE THE CALL, RETURN, +** AND ROUTINE OVERHEAD INTO +** ACCOUNT. +* + LDX #MSCNT-3 ; 2C +:DELAY2 + DEX ; 2C + BNE :DELAY2 ; 3C +:EXIT + RTS ; 6C +* diff --git a/disks/disk1__stdio_common/T.COMMON.DEMO b/disks/disk1__stdio_common/T.COMMON.DEMO new file mode 100644 index 0000000..d690067 --- /dev/null +++ b/disks/disk1__stdio_common/T.COMMON.DEMO @@ -0,0 +1,168 @@ +* +******************************** +* * +* -< COMMON DEMO )- * +* * +* VERSION 00.00.01 * +* * +* 03/04/1980 * +* * +******************************** +* * +* NATHAN D. RIGGS * +* NATHAN.RIGGS@OUTLOOK.COM * +* * +******************************** +* +** ASSEMBLER DIRECTIVES +* + CYC AVE + EXP ONLY + DSK COMMON.DEMO +* +*``````````````````````````````* +* TOP INCLUDES (PUTS, MACROS) * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* + PUT DECS + USE COMMON.MAC +* + PUT COMMON.HOOKS +* + ORG $6000 +* +*``````````````````````````````* +* PROGRAM MAIN BODY * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* +* +** BIG LUMPS -- HIGH LEVEL CODE +* +* +** MEMFILL DOES ABOUT WHAT ITS NAME +** IMPLIES: IT FILLS A BLOCK OF MEMORY +** WITH A PARTICULAR CHARACTER. TO SEE +** THIS IN ACTION, HEAD OVER TO THE +** MONITOR BEFORE AND AFTER THIS RUNS +** AND TYPE 300L. +* +** THE SAME AS BELOW CAN BE ACCOMPLISHED +** WITH THE FOLLOWING MACRO: +* +** _MFIL $300;#10;#0 +* + LDA #>$300 ; AREA TO FILL; HIGH + PHA + LDA #<$300 ; LOW + PHA + LDA #>10 + PHA + LDA #<10 + PHA + LDA #0 ; FILL CHARACTER + PHA + JSR MEMFILL +* +** MEMMOVE ALSO DOES WHAT IT SAYS: IT MOVES +** A BLOCK OF MEMORY FROM A SOURCE LOCATION +** TO A DESTINATION LOCATION. WE'LL NOW MOVE +** THOSE ZEROES PLACED BY MEMFILL TO ANOTHER +** LOCATION. AGAIN, YOU'LL ONLY SEE THIS +** CHANGE VIA THE MONITOR (CALL-151). +* +* +** THIS CAN ALSO BE DONE WITH THE MACRO: +* +** _MMOV $300;$320;#10 +* + LDA #>$300 ; SRC HIGH + PHA + LDA #<$300 ; SRC LOW + PHA + LDA #>$320 ; DEST HIGH + PHA + LDA #<$320 ; DEST LOW + PHA + LDA #>10 ; # OF BYTES TO MOVE + PHA + LDA #<10 ; LOW BYTE + PHA + JSR MEMMOVE +* +** DELAYMS RUNS THROUGH CYCLES OF THE +** 6502 UNTIL A CERTAIN AMOUNT OF TIME +** HAS PASSED. +* +** IN MACRO FORM: +* +** _DLAY #250 +** _DLAY #250 +** _DLAY #250 +** _DLAY #250 +* + LDY #250 ; TIME IN MILLISECONDS + ; IS PASSED VIA Y + ; 250 = 1/4 SECOND + JSR DELAYMS + LDY #250 + JSR DELAYMS + LDY #250 + JSR DELAYMS + LDY #250 + JSR DELAYMS ; = 1 SECOND DELAY +* +** ZSAVE BACKS UP THE "FREE" AREAS OF +** THE ZERO PAGE TO AN ALTERNATE MEMORY +** LOCATION. THIS IS MOSTLY USEFUL WHEN +** YOU KNOW A ROUTINE USES THE ZERO PAGE, +** BUT YOU WANT TO KEEP THE VALUES CURRENTLY +** STORED THERE AFTER CALLING THE ROUTINE. +* +** IN MACRO FORM: +* +** _ZSV $6D00 +* + LDA #01 + STA $06 + LDA #02 + STA $07 + LDA #03 + STA $08 + LDA #04 + STA $09 + LDA #>$6D00 + PHA + LDA #<$6D00 ; LOW DEST + PHA + JSR ZSAVE +* +** YOU CAN RESTORE THE ZERO PAGE TO ITS +** PRIOR STATE BY THEN CALLING ZLOAD. +* +** MACRO: +* +** _ZLD $6D00 +* + LDA #>$6D00 ; HIGH; SOURCE + PHA + LDA #<$6D00 ; LOW + PHA + JSR ZLOAD +* +* +** LITTLE LUMPS -- MID/LOW LEVEL +* +* + JMP REENTRY +* +*``````````````````````````````* +* BOTTOM INCLUDES * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* +** BOTTOM INCLUDES +* + PUT COMMON.LIB +* +* diff --git a/disks/disk1__stdio_common/T.COMMON.HOOKS b/disks/disk1__stdio_common/T.COMMON.HOOKS new file mode 100644 index 0000000..f5793e1 --- /dev/null +++ b/disks/disk1__stdio_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/disk1__stdio_common/T.COMMON.LIB b/disks/disk1__stdio_common/T.COMMON.LIB new file mode 100644 index 0000000..ed5fa29 --- /dev/null +++ b/disks/disk1__stdio_common/T.COMMON.LIB @@ -0,0 +1,780 @@ + JMP COMMONX +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* COMMON.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 LICENSE * +* WHEN APPLICABLE. CODE * +* INSPIRED BY THE WORKS OF * +* OTHERS MAY FALL UNDER A * +* DIFFERENT LICENSE. * +* * +* COMMON ASM ROUTINES * +* LIBRARY FOR FUNCTIONS SUCH * +* AS MEMORY SWAPPING. * +* * +*------------------------------* +* * +* LIST OF ROUTINES * +* * +* MEMFILL : FILL LOCATION WITH * +* A SINGLE VALUE. * +* * +* MEMMOVE : MOVE A BLOCK OF * +* MEMORY FROM ONE * +* LOC TO ANOTHER. * +* * +* DELAYMS : DELAY FOR A NUMBER * +* OF MILLISECONDS. * +* THIS DEPENDS ON * +* THE ACTUAL SYSTEM * +* BEING USED, SO * +* ISN'T AS EASILY * +* PORTED TO OTHER * +* 6502 SIBLINGS. * +* * +* ZSAVE : SAVE STATE OF FREE * +* ZERO PAGE LOCATIONS * +* AT MEM LOC SPECIFIED * +* * +* ZLOAD : LOAD PREVIOUS SAVED * +* ZERO PAGE VALUES * +* BACK INTO PROPER * +* LOCATION. * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +*``````````````````````````````* +* MEMFILL :: FILL MEMORY LOC * +*- -* +* FILLS A BLOCK OF MEMORY WITH * +* THE SPECIFIED VALUE; USED * +* OFTEN TO CLEAR LARGE BLOCKS. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* LDA #>1024 * +* PHA * +* LDA #<1024 * +* PHA * +* LDA #0 * +* PHA * +* JSR MEMFILL * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* FILL VALUE FOR MEMORY * +* ARRAY SIZE * +* LOW BYTE OF STARTING POINT * +* HIGH BYTE OF STARTING POINT * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = COUNTER; TRASH * +* X = COUNTER; TRASH * +* A = LOW BYTE OF RET ADDR * +*- -* +* ADAPTED FROM LEVANTHAL AND * +* WINTHROP'S /6502 ASSEMBLY * +* LANGUAGE ROUTINES/. * +* AS SUCH, THIS MAY NOT FALL * +* UNDER THE APACHE 2.0 LICENSE * +* AGREEMENT, SINCE THE BOOK * +* WAS WRITTEN BEFORE THE * +* LICENSE! * +* * +* THAT SAID, LEVENTHAL WROTE * +* THAT THE PURPOSE OF THE BOOK * +* WAS TO COPY THE SOURCE CODE, * +* AS REINVENTING THE WHEEL IS * +* TEDIOUS, AND HE PLACED NO * +* RESTRICTIONS ON ITS USE. * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +MEMFILL +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :VALUE + PLA + STA :ARYSZ + PLA + STA :ARYSZ+1 + PLA + STA ADDR1 ; ZERO PAGE POINTER + PLA ; DEFINED IN + STA ADDR1+1 ; DECS +* +** FILL WHOLE PAGES FIRST +* + 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 +* +** DO THE REMAINING PARTIAL PAGE +** REGISTER A STILL CONTAINS VALUE +* +: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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +* +** DATA +* +:VALUE DS 1 ; FILL VALUE +:ARYSZ DS 2 ; ARRAY SIZE +:RETADR DS 2 +* +*``````````````````````````````* +* MEMMOVE :: MOVE MEM BLOCK * +*- -* +* MOVES A SPECIFIED BLOCK OF * +* MEMORY FROM A SOURCE ADDRESS * +* TO A DESTINATION ADDRESS * +* RANGE. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* LDA #>$7000 ; DEST * +* PHA * +* LDA #<$7000 * +* PHA * +* LDA #>1024 * +* PHA * +* LDA #<1024 * +* PHA * +* JSR MEMMOVE * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* NUMBER OF BYTES TO MOVE * +* LOW BYTE OF DESTINATION * +* HIGH BYTE OF DESTINATION * +* LOW BYTE OF SOURCE ADDRESS * +* HIGH BYTE OF SOURCE ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = COUNTER; TRASH * +* X = COUNTER; TRASH * +* A = LOW BYTE OF RET ADDR * +*- -* +* ADAPTED FROM LEVANTHAL AND * +* WINTHROP'S /6502 ASSEMBLY * +* LANGUAGE ROUTINES/. * +* AS SUCH, THIS MAY NOT FALL * +* UNDER THE APACHE 2.0 LICENSE * +* AGREEMENT, SINCE THE BOOK * +* WAS WRITTEN BEFORE THE * +* LICENSE! * +* * +* THAT SAID, LEVENTHAL WROTE * +* THAT THE PURPOSE OF THE BOOK * +* WAS TO COPY THE SOURCE CODE, * +* AS REINVENTING THE WHEEL IS * +* TEDIOUS, AND HE PLACED NO * +* RESTRICTIONS ON ITS USE. * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +MEMMOVE +* +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :MVELEN + PLA + STA :MVELEN+1 + PLA + STA ADDR2 ; ZERO PAGE POINTER + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** DETERMINE IF DEST AREA IS +** ABOVE SRC AREA BUT OVERLAPS +** IT. REMEMBER, OVERLAP CAN BE +** MOD 64K. OVERLAP OCCURS IF +** STARTING DEST ADDRESS MINUS +** STARTING SRC ADDRESS (MOD +** 64K) IS LESS THAN NUMBER +** OF BYTES TO MOVE. +* + 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 +* +** DEST AREA IS ABOVE SRC AREA +** BUT OVERLAPS IT. +** MOVE FROM HIGHEST ADDR TO +** AVOID DESTROYING DATA +* + JSR :MVERHT + JMP :EXIT +* +** NO PROB DOING ORDINARY MOVE +** STARTING AT LOWEST ADDR +* +:DOLEFT + JSR :MVELEFT +:EXIT + JMP :MREXIT +* +******************************** +* SUBROUTINE: MVELEFT * +******************************** +* +: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 +* +******************************** +* SUBROUTINE: MVERHT * +******************************** +* +:MVERHT +* +** MOVE THE PARTIAL PAGE FIRST +* + 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 +* +** MOVE THE LAST PARTIAL PAGE FIRST +* + 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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +* +** DATA +* +:RETADR DS 2 +:MVELEN DS 2 +* +*``````````````````````````````* +* DELAYMS :: DELAY X MILLISECS * +*- -* +* DELAYS FOR X NUMBER OF * +* MILLISECONDS BY LOOPING * +* THROUGH PRECISELY CALCULATED * +* NUMBER OF CYCLES. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: -XY- * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDY #250 ;1/4 SEC * +* JSR DELAYMS * +*- -* +* ENTRY * +* * +* Y = NUMBER OF MILLISECONDS * +*- -* +* EXIT * +* * +* Y = COUNTER; TRASH * +* X = COUNTER; TRASH * +* A = UNCHANGED * +*- -* +* ADAPTED FROM LEVANTHAL AND * +* WINTHROP'S /6502 ASSEMBLY * +* LANGUAGE ROUTINES/. * +* AS SUCH, THIS MAY NOT FALL * +* UNDER THE APACHE 2.0 LICENSE * +* AGREEMENT, SINCE THE BOOK * +* WAS WRITTEN BEFORE THE * +* LICENSE! * +* * +* THAT SAID, LEVENTHAL WROTE * +* THAT THE PURPOSE OF THE BOOK * +* WAS TO COPY THE SOURCE CODE, * +* AS REINVENTING THE WHEEL IS * +* TEDIOUS, AND HE PLACED NO * +* RESTRICTIONS ON ITS USE. * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +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) +* +** IF DELAY IS 1MS THEN GOTO LAST1 +** THIS LOGIC IS DESIGNED TO BE +** 5 CYCLES THROUGH EITHER ATH +* + CPY #1 ; 2 CYCLES + BNE :DELAYA ; 3C IF TAKEN, ELSE 2C + JMP :LAST1 ; 3C +* +** DELAY 1 MILLISENCOND TIMES (Y-1) +* +: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 +* +** DELAY THE LAST TIME 25 CYCLES +** LESS TO TAKE THE CALL, RETURN, +** AND ROUTINE OVERHEAD INTO +** ACCOUNT. +* + LDX #MSCNT-3 ; 2C +:DELAY2 + DEX ; 2C + BNE :DELAY2 ; 3C +:EXIT + RTS ; 6C +* +* +*``````````````````````````````* +* ZSAVE :: SAVE 0-PAGE FREE * +*- -* +* STORES THE VALUES IN THE * +* LITTLE FREE SPACE ON THE * +* ZERO PAGE AT AN ALTERNATE * +* MEMORY LOCATION TO BE * +* RETRIEVED AND RESTORED AT A * +* LATER POINT. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* JSR ZSAVE * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF DESTINATION * +* HIGH BYTE OF DESTINATION * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = TRASH * +* X = TRASH * +* A = LOW BYTE OF RET ADDR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +ZSAVE +* +** LOAD ADDR1 ZERO PAGE AREA FIRST, +** SINCE WE'LL BE USING THAT +* +** NOTE THAT THIS SHOULD ALWAYS BE +** $06 AND $07, OR ELSE CODE WILL +** HAVE TO CHANGE. +* + LDX ADDR1 + LDY ADDR1+1 +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** COPY ZERO PAGE TO SPECIFIED +** NON-ZERO LOCATION (ONLY THE +** FREE ONES..) +* + 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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +* +*``````````````````````````````* +* ZLOAD :: RESTORE 0-PAGE FREE * +*- -* +* RESTORES PREVIOUSLY SAVED * +* ZERO PAGE VALUES FROM * +* HIGHER MEMORY LOCATION. * +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* JSR ZLOAD * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF SOURCE * +* HIGH BYTE OF SOURCE * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +ZLOAD +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** COPY ZERO PAGE TO SPECIFIED +** NON-ZERO LOCATION (ONLY THE +** FREE ONES..) +* + 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 +* +** NOW GET ZERO PAGE VALUES +** FOR SPACE OCCUPIED BY ADDR; RETURN IN X,Y +* + LDY #0 + LDA (ADDR1),Y + TAX + LDA (ADDR1+1),Y + TAY + STX ADDR1 + STY ADDR1+1 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +* +* +COMMONX RTS diff --git a/disks/disk1__stdio_common/T.COMMON.MAC b/disks/disk1__stdio_common/T.COMMON.MAC new file mode 100644 index 0000000..0680647 --- /dev/null +++ b/disks/disk1__stdio_common/T.COMMON.MAC @@ -0,0 +1,180 @@ +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* COMMON.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 * +* COMMON.LIB, AND CAN BE USED * +* REGARDLESS OF WHETHER A * +* SPECIFIC FUNCTION IS * +* INCLUDED AS A PUT IN THE * +* MAIN SOURCE. * +* * +*------------------------------* +* * +* LIST OF MACROS * +* * +* _MFIL :: FILL MEMORY BLOCK * +* _MMOV :: MOVE MEMORY BLOCK * +* _BELL :: RING MY BELL * +* _DLAY :: DELAY IN MILLISECS * +* _ZSV :: SAVE FREE ZERO PAGE * +* _ZLD :: LOAD SAVE ZERO PAGE * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +*``````````````````````````````* +* _MFIL :: FILL MEMORY BLOCK * +*- -* +* FILL BLOCK OF MEMORY WITH * +* SPECIFIED VALUE. * +*- -* +* PARAMETERS: * +* * +* PARAM1 = STARTING ADDRESS * +* PARAM2 = LENGTH IN BYTES * +* PARAM3 = FILL VALUE * +*- -* +* SAMPLE USAGE: * +* _MFIL $300;#256;#0 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_MFIL MAC + LDA #>]1 ; STARTING POINT + PHA + LDA #<]1 + PHA + LDA #>]2 ; # OF BYTES + PHA + LDA #<]2 + PHA + LDA ]3 ; FILL VALUE + PHA + JSR MEMFILL + <<< +* +*``````````````````````````````* +* _BELL :: RING BELL X TIMES -* +*- -* +* RING THE STANDARD BELL. * +*- -* +* PARAMETERS: * +* * +* PARAM1 = NUMBER OF RINGS * +*- -* +* SAMPLE USAGE: _BELL * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_BELL MAC + LUP ]1 + JSR BELL + --^ + <<< +* +*``````````````````````````````* +* _MMOV :: MOVE MEMORY BLOCK -* +*- -* +* MOVE A BLOCK OF MEMORY FROM * +* A SOURCE TO DESTINATION. * +*- -* +* PARAMETERS: * +* PARAM1 = SOURCE ADDRESS * +* PARAM2 = DESTINATION ADDRESS * +* PARAM3 = NUMBER OF BYTES * +*- -* +* SAMPLE USAGE: * +* * +* _MMOV $6A00;$7B00;#1024 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_MMOV MAC + LDA #>]1 ; SRC ADDR + PHA + LDA #<]1 + PHA + LDA #>]2 ; DEST ADDR + PHA + LDA #<]2 + PHA + LDA #>]3 ; # OF BYTES + PHA + LDA #<]3 + PHA + JSR MEMMOVE + <<< +* +*``````````````````````````````* +* _DLAY :: DELAY X MILLISECS * +*- -* +* DELAY FOR PASSED MILLISECS * +*- -* +* PARAMETERS: * +* * +* PARAM1 = NUM OF MILLISECONDS * +*- -* +* SAMPLE USAGE: _DLAY #250 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_DLAY MAC + LDY ]1 + JSR DELAYMS + <<< +* +*``````````````````````````````* +* _ZSV :: SAVE ZERO PAGE * +*- -* +* SAVE ZERO PAGE FREE AREAS * +* FOR LATER RESTORE. * +*- -* +* PARAMETERS: * +* * +* PARAM1 = ADDRESS TO STORE AT * +*- -* +* SAMPLE USAGE: _ZSV $300 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_ZSV MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZSAVE + <<< +* +*``````````````````````````````* +* _ZLD :: LOAD ZERO PAGE * +*- -* +* RESTORE PREVIOUSLY SAVED * +* FREE ZERO PAGE VALUES. * +*- -* +* PARAMETERS: * +* * +* PARAM1 = ADDR TO LOAD FROM * +*- -* +* SAMPLE USAGE: _ZLD $300 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_ZLD MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZLOAD + <<< diff --git a/disks/disk1__stdio_common/T.COMMON.MEMFILL b/disks/disk1__stdio_common/T.COMMON.MEMFILL new file mode 100644 index 0000000..bec8df2 --- /dev/null +++ b/disks/disk1__stdio_common/T.COMMON.MEMFILL @@ -0,0 +1,130 @@ +*``````````````````````````````* +* MEMFILL :: FILL MEMORY LOC * +*- -* +* FILLS A BLOCK OF MEMORY WITH * +* THE SPECIFIED VALUE; USED * +* OFTEN TO CLEAR LARGE BLOCKS. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* LDA #>1024 * +* PHA * +* LDA #<1024 * +* PHA * +* LDA #0 * +* PHA * +* JSR MEMFILL * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* FILL VALUE FOR MEMORY * +* ARRAY SIZE * +* LOW BYTE OF STARTING POINT * +* HIGH BYTE OF STARTING POINT * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = COUNTER; TRASH * +* X = COUNTER; TRASH * +* A = LOW BYTE OF RET ADDR * +*- -* +* ADAPTED FROM LEVANTHAL AND * +* WINTHROP'S /6502 ASSEMBLY * +* LANGUAGE ROUTINES/. * +* AS SUCH, THIS MAY NOT FALL * +* UNDER THE APACHE 2.0 LICENSE * +* AGREEMENT, SINCE THE BOOK * +* WAS WRITTEN BEFORE THE * +* LICENSE! * +* * +* THAT SAID, LEVENTHAL WROTE * +* THAT THE PURPOSE OF THE BOOK * +* WAS TO COPY THE SOURCE CODE, * +* AS REINVENTING THE WHEEL IS * +* TEDIOUS, AND HE PLACED NO * +* RESTRICTIONS ON ITS USE. * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +MEMFILL +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :VALUE + PLA + STA :ARYSZ + PLA + STA :ARYSZ+1 + PLA + STA ADDR1 ; ZERO PAGE POINTER + PLA ; DEFINED IN + STA ADDR1+1 ; DECS +* +** FILL WHOLE PAGES FIRST +* + 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 +* +** DO THE REMAINING PARTIAL PAGE +** REGISTER A STILL CONTAINS VALUE +* +: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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +* +** DATA +* +:VALUE DS 1 ; FILL VALUE +:ARYSZ DS 2 ; ARRAY SIZE +:RETADR DS 2 diff --git a/disks/disk1__stdio_common/T.COMMON.MEMMOVE b/disks/disk1__stdio_common/T.COMMON.MEMMOVE new file mode 100644 index 0000000..ac2955e --- /dev/null +++ b/disks/disk1__stdio_common/T.COMMON.MEMMOVE @@ -0,0 +1,222 @@ +*``````````````````````````````* +* MEMMOVE :: MOVE MEM BLOCK * +*- -* +* MOVES A SPECIFIED BLOCK OF * +* MEMORY FROM A SOURCE ADDRESS * +* TO A DESTINATION ADDRESS * +* RANGE. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* LDA #>$7000 ; DEST * +* PHA * +* LDA #<$7000 * +* PHA * +* LDA #>1024 * +* PHA * +* LDA #<1024 * +* PHA * +* JSR MEMMOVE * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* NUMBER OF BYTES TO MOVE * +* LOW BYTE OF DESTINATION * +* HIGH BYTE OF DESTINATION * +* LOW BYTE OF SOURCE ADDRESS * +* HIGH BYTE OF SOURCE ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = COUNTER; TRASH * +* X = COUNTER; TRASH * +* A = LOW BYTE OF RET ADDR * +*- -* +* ADAPTED FROM LEVANTHAL AND * +* WINTHROP'S /6502 ASSEMBLY * +* LANGUAGE ROUTINES/. * +* AS SUCH, THIS MAY NOT FALL * +* UNDER THE APACHE 2.0 LICENSE * +* AGREEMENT, SINCE THE BOOK * +* WAS WRITTEN BEFORE THE * +* LICENSE! * +* * +* THAT SAID, LEVENTHAL WROTE * +* THAT THE PURPOSE OF THE BOOK * +* WAS TO COPY THE SOURCE CODE, * +* AS REINVENTING THE WHEEL IS * +* TEDIOUS, AND HE PLACED NO * +* RESTRICTIONS ON ITS USE. * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +MEMMOVE +* +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :MVELEN + PLA + STA :MVELEN+1 + PLA + STA ADDR2 ; ZERO PAGE POINTER + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** DETERMINE IF DEST AREA IS +** ABOVE SRC AREA BUT OVERLAPS +** IT. REMEMBER, OVERLAP CAN BE +** MOD 64K. OVERLAP OCCURS IF +** STARTING DEST ADDRESS MINUS +** STARTING SRC ADDRESS (MOD +** 64K) IS LESS THAN NUMBER +** OF BYTES TO MOVE. +* + 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 +* +** DEST AREA IS ABOVE SRC AREA +** BUT OVERLAPS IT. +** MOVE FROM HIGHEST ADDR TO +** AVOID DESTROYING DATA +* + JSR :MVERHT + JMP :EXIT +* +** NO PROB DOING ORDINARY MOVE +** STARTING AT LOWEST ADDR +* +:DOLEFT + JSR :MVELEFT +:EXIT + JMP :MREXIT +* +******************************** +* SUBROUTINE: MVELEFT * +******************************** +* +: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 +* +******************************** +* SUBROUTINE: MVERHT * +******************************** +* +:MVERHT +* +** MOVE THE PARTIAL PAGE FIRST +* + 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 +* +** MOVE THE LAST PARTIAL PAGE FIRST +* + 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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +* +** DATA +* +:RETADR DS 2 +:MVELEN DS 2 diff --git a/disks/disk1__stdio_common/T.COMMON.ZBACKUP b/disks/disk1__stdio_common/T.COMMON.ZBACKUP new file mode 100644 index 0000000..b08b6b2 --- /dev/null +++ b/disks/disk1__stdio_common/T.COMMON.ZBACKUP @@ -0,0 +1,278 @@ +*``````````````````````````````* +* ZSAVE :: SAVE 0-PAGE FREE * +*- -* +* STORES THE VALUES IN THE * +* LITTLE FREE SPACE ON THE * +* ZERO PAGE AT AN ALTERNATE * +* MEMORY LOCATION TO BE * +* RETRIEVED AND RESTORED AT A * +* LATER POINT. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* JSR ZSAVE * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF DESTINATION * +* HIGH BYTE OF DESTINATION * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = TRASH * +* X = TRASH * +* A = LOW BYTE OF RET ADDR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +ZSAVE +* +** LOAD ADDR1 ZERO PAGE AREA FIRST, +** SINCE WE'LL BE USING THAT +* +** NOTE THAT THIS SHOULD ALWAYS BE +** $06 AND $07, OR ELSE CODE WILL +** HAVE TO CHANGE. +* + LDX ADDR1 + LDY ADDR1+1 +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** COPY ZERO PAGE TO SPECIFIED +** NON-ZERO LOCATION (ONLY THE +** FREE ONES..) +* + 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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +* +*``````````````````````````````* +* ZLOAD :: RESTORE 0-PAGE FREE * +*- -* +* RESTORES PREVIOUSLY SAVED * +* ZERO PAGE VALUES FROM * +* HIGHER MEMORY LOCATION. * +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* * +* LDA #>$6A00 * +* PHA * +* LDA #<$6A00 * +* PHA * +* JSR ZLOAD * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF SOURCE * +* HIGH BYTE OF SOURCE * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +ZLOAD +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* +** COPY ZERO PAGE TO SPECIFIED +** NON-ZERO LOCATION (ONLY THE +** FREE ONES..) +* + 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 +* +** NOW GET ZERO PAGE VALUES +** FOR SPACE OCCUPIED BY ADDR; RETURN IN X,Y +* + LDY #0 + LDA (ADDR1),Y + TAX + LDA (ADDR1+1),Y + TAY + STX ADDR1 + STY ADDR1+1 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +* +* +COMMONX RTS diff --git a/disks/disk1__stdio_common/T.DECS b/disks/disk1__stdio_common/T.DECS new file mode 100644 index 0000000..24c19ae --- /dev/null +++ b/disks/disk1__stdio_common/T.DECS @@ -0,0 +1,20 @@ +*``````````````````````````````* +* DECLARATIONS.PUT * +*- -* +* USED IN CONJUNCTION WITH * +* OTHER PUT FILES. DEFINES * +* BASIC DECLARATIONS USED * +* ACROSS DIFFERENT ROUTINES * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +REENTRY EQU $03D0 +SMALLASM EQU $300 ; STADDR FOR SMALL PROGRAMS +* +ADDR1 EQU $06 +ADDR2 EQU $08 +ADDR3 EQU $EB +ADDR4 EQU $ED +ADDR5 EQU $FA +ADDR6 EQU $FC +ADDR7 EQU $FE +* diff --git a/disks/disk1__stdio_common/T.STDIO.CURSOR b/disks/disk1__stdio_common/T.STDIO.CURSOR new file mode 100644 index 0000000..0d84fd6 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.CURSOR @@ -0,0 +1,89 @@ +* +*``````````````````````````````* +*CURSFOR :: MOVE CURSOR FORWD * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 20 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSFOR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSFOR + CLC + ADC CURSH + STA CURSH + JSR VTAB + RTS +* +*``````````````````````````````* +*CURSBAK :: MOVE CURSOR BACKWD * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 26 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSBAK * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSBAK + SEC + STA :SCRATCH + LDA CURSH + SBC :SCRATCH + STA CURSH + JSR VTAB + RTS +* +** DATA +* +:SCRATCH DS 1 +* +*``````````````````````````````* +* CURSDN :: MOVE CURSOR DOWN * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 20 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSDN * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSDN + CLC + ADC CURSV + STA CURSV + JSR VTAB + RTS +* +*``````````````````````````````* +* CURSUP :: MOVE CURSOR UP * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 26 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSUP * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSUP + SEC + STA :SCRATCH + LDA CURSV + SBC :SCRATCH + STA CURSV + JSR VTAB + RTS +* +** DATA +* +:SCRATCH DS 1 +* diff --git a/disks/disk1__stdio_common/T.STDIO.DEMO b/disks/disk1__stdio_common/T.STDIO.DEMO new file mode 100644 index 0000000..9d5a386 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.DEMO @@ -0,0 +1,188 @@ +* +******************************** +* * +* -< STDIO DEMO >- * +* * +* VERSION 00.00.01 * +* * +* 03/04/1980 * +* * +******************************** +* * +* NATHAN D. RIGGS * +* NATHAN.RIGGS@OUTLOOK.COM * +* * +******************************** +* +** ASSEMBLER DIRECTIVES +* + CYC AVE + EXP ONLY + DSK STDIO.DEMO +* +*``````````````````````````````* +* TOP INCLUDES (PUTS, MACROS) * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* + PUT DECS + USE STDIO.MAC +* + PUT STDIO.HOOKS + PUT COMMON.HOOKS +* + ORG $6000 +* +*``````````````````````````````* +* PROGRAM MAIN BODY * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* +* +** BIG LUMPS -- HIGH LEVEL CODE +* +* + JSR HOME ; CLEAR SCREEN +* +*** +*** USE XPRINT TO PRINT A STRING OF CHARACTERS +*** TO THE SCREEN. THE STRING COMES AFTER +*** THE JSR STATEMENT IN AN ASC/HEX. +*** + JSR XPRINT + ASC "WTF WORLD" + HEX 8D00 ; THIS TELLS THE + ; ROUTINE TO STOP + ; PRINTING THE STRING +* +*** USE DPRINT TO PRINT THE TEXT AT A SPECIFIC +*** MEMORY LOCATION. NOTE THAT THIS IS NOT +*** TYPICALLY USED TO PRINT STRINGS, AND LIKE +*** XPRINT USES THE NULL TERMINATOR TO ALERT +*** THE ROUTINE TO STOP PRINTING. TO PRINT +*** STRINGS, WHICH HAVE THE LENGTH OF THE STRING +*** AS THEIR FIRST BYTE VALUE, USE SPRINT. +* +* + LDA #$18 ; PUT 'XXX' INTO + STA $300 ; LOCATION $300 + STA $301 + STA $302 + LDA #00 + STA $303 + LDA #>$300 ; PUSH HIBYTE + PHA + LDA #<$300 ; PUSH LOBYTE + PHA + JSR DPRINT ; NOW PRINT IT +* +* ^^^ NOTE ABOVE THAT THE HIGH BYTE +* IS PUSHED BEFORE THE LOW BYTE BECAUSE +* 6502 CONVENTION IS TO READ THE LOW BYTE +* FIRST, THEN THE HIGH BYTE. THIS IS THE +* ORDER IT WILL POP OFF THE STACK. +* +*** +*** USE THLIN TO CREATE A LINE OF HORIZONTAL +*** TEXT CONSISTING OF A SINGLE CHARACTER. +*** LIKE MANY OTHER SUBROUTINES, THIS USES +*** THE STACK TO PASS VARIABLES. +*** +* + LDA #0 ; START OF LINE + PHA + LDA #15 ; END OF LINE + PHA + LDA #10 ; Y POSITION + PHA + LDA #$18 ; "X" CHARACTER, INVERSE + PHA + JSR THLIN +* +*** TVLIN WORKS LIKE THLIN, BUT CREATES A VERTICAL +*** LINE INSTEAD OF A HORIZONTAL ONE. +* + LDA #0 ; STARTING Y POS OF LINE + PHA + LDA #15 ; END YPOS OF LINE + PHA + LDA #10 ; X POSITION + PHA + LDA #$18 ; "X" CHARACTER, INVERSE + PHA + JSR TVLIN +* +* +*** THE TFILLA ROUTINE ACTS LIKE A COMBINATION OF +*** THLIN AND TVLIN. IT FILLS A GIVEN RECTANGULAR +*** AREA OF THE SCREEN WITH THE DESIGNATED +*** CHARACTER AT X1,Y1:X2,Y2. +* + LDA #10 ; LEFT BOUNDARY + PHA + LDA #30 ; RIGHT BOUNDARY + PHA + LDA #5 ; TOP BOUNDARY + PHA + LDA #15 ; BOTTOM BOUNDARY + PHA + LDA #$1A ; "Z" CHARACTER + PHA + JSR TFILLA +* +* +*** THE SINPUT ROUTINE (SPECIAL INPUT) PROMPTS +*** THE USER FOR A STRING OF TEXT FOLLOWED BY +*** A PRESS, THEN STORES THE INPUTTED +*** STRING AT THE SPECIFIED LOCATION, WITH ITS +*** LENGTH AS THE FIRST BYTE (MAX: 255) +* + LDA #>$300 ; PUSH HIGH BYTE FIRST + PHA + LDA #<$300 ; THEN LOW BYTE, SO + ; THAT THE ROUTINE + ; READS LOW, HIGH + PHA + JSR SINPUT ; STORES IN $300 +* +* +*** THE PADDLE BUTTON ROUTINE CHECKS +*** WHETHER THE DESIGNATED PADDLE BUTTON +*** IS CURRENTLY BEING PRESSED. +* +* +* +* +* +* +******************************** +******************************** +* NOW LET'S DO IT AGAIN! * +* (BUT WITH MACROS) * +******************************** +******************************** +* + JSR HOME + _PRN "WTF, WORLD?" + _CXY #10;#10 + _TVLN #5;#20;#30;#$18 + _THLN #5;#30;#20;#$1A + _INP $300 + _TFIL #0;#39;#0;#21;#$19 +* +* +* +** LITTLE LUMPS -- MID/LOW LEVEL +* +* + JMP REENTRY +* +*``````````````````````````````* +* BOTTOM INCLUDES * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* +** BOTTOM INCLUDES +* + PUT STDIO.LIB +* +* diff --git a/disks/disk1__stdio_common/T.STDIO.DPRINT b/disks/disk1__stdio_common/T.STDIO.DPRINT new file mode 100644 index 0000000..f11e56a --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.DPRINT @@ -0,0 +1,82 @@ +* +*``````````````````````````````* +* DPRINT :: PRINT FROM MEMORY * +*- -* +* PRINTS DATA FROM SPECIFIED * +* MEMORY LOCATION UNTIL * +* REACHING 00 (STRING TERM). * +*- -* +* CLOBBERS: * +* * +* FLAGS: -------- REG: A-YM * +*- -* +* CYCLES: 25+ * +* SIZE: * +*- -* +* USAGE: * +* LDA #>(ADDRESS) * +* PHA * +* LDA #<(ADDRESS) * +* PHA * +* JSR DPRINT * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF PRINT ADDRESS * +* HI BYTE OF PRINT ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = LOW BYTE OF ADDRESS * +* X = UNCHANGED * +* Y = LENGTH OF PRINTED * +* STRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +DPRINT +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET ADDRESS, STORE IN ZERO PAGE +* + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* + LDY #$00 +:LOOP + LDA (ADDR1),Y + BEQ :EXIT + JSR COUT1 + INY + BNE :LOOP +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +* diff --git a/disks/disk1__stdio_common/T.STDIO.GPBX b/disks/disk1__stdio_common/T.STDIO.GPBX new file mode 100644 index 0000000..8f392d0 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.GPBX @@ -0,0 +1,94 @@ +* +*``````````````````````````````* +* GPBX :: GET PADDLE BUTTON X * +* * +* GETS STATE OF PADDLE BUTTON * +* SPECIFIED AND RET 0, 1 IN A * +*- -* +* CLOBBERS: * +* * +* FLAGS: ???----- REG: A-YM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA #>(ADDRESS) * +* PHA * +* LDA #<(ADDRESS) * +* PHA * +* JSR GPBX * +* * +* --- WHERE: * +* * +* BUTTON 0 = $C061 (PB0) * +* BUTTON 1 = $CO62 (PB1) * +* BUTTON 2 - $C063 (PB2) * +* BUTTON 3 = $C060 (PB3) * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF PDL BTN ADDRESS * +* HI BYTE OF PDL BTN ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = 1 IF PRESSED, 0 IF NOT * +* X = UNCHANGED * +* Y = GARBAGE * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* CHANGE THIS LATER TO ACCEPT ALL BUTTONS, 0-4 +* +GBPX +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETER +* + PLA + STA ADDR1 ; ZERO PAGE + PLA + STA ADDR1+1 +* +* + 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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + TYA ; BTN FLAG MOVE TO A + RTS +* +** DATA +* +:RETADR DS 2 +* diff --git a/disks/disk1__stdio_common/T.STDIO.HOOKS b/disks/disk1__stdio_common/T.STDIO.HOOKS new file mode 100644 index 0000000..571056f --- /dev/null +++ b/disks/disk1__stdio_common/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_common/T.STDIO.LIB b/disks/disk1__stdio_common/T.STDIO.LIB new file mode 100644 index 0000000..bfce116 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.LIB @@ -0,0 +1,788 @@ +* + JMP STDIOX +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STDIO.PUT * +* * +* AUTHOR: NATHAN RIGGS * +* CONTACT: NATHAN.RIGGS@ * +* OUTLOOK.COM * +* * +* VERSION: 0.1.2 * +* DATE: 30-OCT-2018 * +* ASSEMBLER: MERLIN 8 PRO * +* * +**** SEE CHANGELOG FOR **** +**** HISTORY OF CHANGES **** +* * +* LICENSE: MIT LICENSE, WHERE * +* APPLICABLE. CODE INSPIRED * +* BY THE WORKS OF OTHERS MAY * +* FALL UNDER A DIFFERENT * +* LICENSE (NOTED IN ROUTINE). * +* * +* STANDARD INPUT / OUTPUT * +* LIBRARY. PRIMARILY FOR THE * +* APPLE II FAMILY, BUT COULD * +* BE PORTED TO OTHER 6502- * +* BASED SYSTEMS FAIRLY * +* EASILY. * +* * +*------------------------------* +* * +* LIST OF ROUTINES * +* * +* XPRINT : SPECIAL PRINT * +* DPRINT : PRINT FROM MEMORY * +* THLIN : TEXT LINE HORIZONTAL * +* TVLIN : TEXT LINE VERTICAL * +* CURSFOR : CURSOR FORWARD * +* CURSBAK : CURSOR BACKWARD * +* CURSDN : CURSOR DOWN * +* CURSUP : CURSOR UP * +* TFILLA : TEXT FILL AREA * +* SINPUT : STRING INPUT * +* GPBX : GET PADDLE BUTTON X * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +*``````````````````````````````* +* XPRINT :: SPECIAL PRINT * +*- -* +* PRINTS DATA IMMEDIATELY * +* FOLLOWING THE JSR TO SPRINT * +*- -* +* CLOBBERS: * +* * +* FLAGS: NZC----- REG: AYM- * +*- -* +* CYCLES: 53+ * +* SIZE: * +*- -* +* USAGE: * +* JSR SPRINT * +* ASC "HELLO, WORLD!" * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A,Y = LOW BYTE OF ADDRESS * +* X = UNCHANGED * +*- -* +* NOTE: PARTIALLY ADOPTED FROM * +* ROGER WAGNER'S AND CHRIS * +* TORRENCE'S /ASSEMBLY LINES/ * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +XPRINT +* +** GET CURRENT EXEC ADDRESS +* + 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 +* +*``````````````````````````````* +* DPRINT :: PRINT FROM MEMORY * +*- -* +* PRINTS DATA FROM SPECIFIED * +* MEMORY LOCATION UNTIL * +* REACHING 00 (STRING TERM). * +*- -* +* CLOBBERS: * +* * +* FLAGS: -------- REG: A-YM * +*- -* +* CYCLES: 25+ * +* SIZE: * +*- -* +* USAGE: * +* LDA #>(ADDRESS) * +* PHA * +* LDA #<(ADDRESS) * +* PHA * +* JSR DPRINT * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF PRINT ADDRESS * +* HI BYTE OF PRINT ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = LOW BYTE OF ADDRESS * +* X = UNCHANGED * +* Y = LENGTH OF PRINTED * +* STRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +DPRINT +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET ADDRESS, STORE IN ZERO PAGE +* + PLA + STA ADDR1 + PLA + STA ADDR1+1 +* + LDY #$00 +:LOOP + LDA (ADDR1),Y + BEQ :EXIT + JSR COUT1 + INY + BNE :LOOP +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +* +* +*``````````````````````````````* +* THLIN :: TEXT HORIZ LINE * +*- -* +* CREATES A HORIZONTAL LINE OF * +* TEXT COMPOSED OF THE FILL * +* CHARACTER SPECIFIED AT Y. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA (X-START) * +* PHA * +* LDA (X-END) * +* PHA * +* LDA (Y-POS) * +* PHA * +* LDA (FILL CHAR) * +* PHA * +* JSR THLIN * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* XPOS START OF LINE (:X1) * +* XPOS END OF LINE (:X2) * +* YPOS OF LINE (:Y) * +* FILL CHARACTER (:F) * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* X,Y = START,END OF LINE * +* A = LOW BYTE OF RET ADDR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +THLIN +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :F + PLA + STA :Y + PLA + STA :X2 + PLA + STA :X1 +* +* + LDX :X1 ; LOAD X START POS + STX CURSH ; STORE IN CURSH + LDY :Y ; LDY Y POS + STY CURSV ; STORE IN CURSV + JSR VTAB ; MOVE CURSOR + LDA :F ; LOAD FILL CHAR + LDY :X1 ; LOAD X START POS +:LOOP + JSR COUT1 ; PRINT FILL CHAR + INY ; INCREASE X POS + CPY :X2 ; IF LESS THAN X END POS + BNE :LOOP ; REPEAT UNTIL DONE +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +* +** DATA +* +:X1 DS 1 +:X2 DS 1 +:Y DS 1 +:F DS 1 ; FILL CHAR +:RETADR DS 2 +* +*``````````````````````````````* +* TVLIN :: TEXT VERTICAL LINE * +*- -* +* CREATES A VERTICAL LINE OF * +* TEXT COMPOSED OF THE FILL * +* CHARACTER SPECIFIED AT X. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA (Y-START) * +* PHA * +* LDA (Y-END) * +* PHA * +* LDA (X-POS) * +* PHA * +* LDA (FILL CHAR) * +* PHA * +* JSR TVLIN * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* XPOS START OF LINE (:Y1) * +* XPOS END OF LINE (:Y2) * +* YPOS OF LINE (:X) * +* FILL CHARACTER (:F) * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = END OF LINE * +* X = HORIZONTAL POSITION * +* A = LOW BYTE OF RET ADDR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TVLIN +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :F ; FILL CHAR + PLA + STA :X ; X POS + PLA + STA :Y2 ; END + PLA + STA :Y1 ; START +* + LDX :X + LDY :Y1 + STY CURSV + STX CURSH + JSR VTAB ; SET CURSOR POS +:LOOP + JSR COUT1 ; PRINT CHAR + LDX :X + STX CURSH + STY CURSV + JSR VTAB ; SET NEW CURSOR POS + LDA :F ; RELOAD FILL CHAR + INY ; INCREASE COUNTER + CPY :Y2 ; IF Y1 < Y2 + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +:X DS 1 +:Y1 DS 1 +:Y2 DS 1 +:F DS 1 +* +* +*``````````````````````````````* +*CURSFOR :: MOVE CURSOR FORWD * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 20 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSFOR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSFOR + CLC + ADC CURSH + STA CURSH + JSR VTAB + RTS +* +*``````````````````````````````* +*CURSBAK :: MOVE CURSOR BACKWD * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 26 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSBAK * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSBAK + SEC + STA :SCRATCH + LDA CURSH + SBC :SCRATCH + STA CURSH + JSR VTAB + RTS +* +** DATA +* +:SCRATCH DS 1 +* +*``````````````````````````````* +* CURSDN :: MOVE CURSOR DOWN * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 20 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSDN * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSDN + CLC + ADC CURSV + STA CURSV + JSR VTAB + RTS +* +*``````````````````````````````* +* CURSUP :: MOVE CURSOR UP * +* * +*- -* +* FLAGS: NZC----- REG: AYM- * +* CYCLES: 26 * +*- -* +* USAGE: * +* LDA (AMT TO MOVE) * +* JSR CURSUP * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURSUP + SEC + STA :SCRATCH + LDA CURSV + SBC :SCRATCH + STA CURSV + JSR VTAB + RTS +* +** DATA +* +:SCRATCH DS 1 +* +*``````````````````````````````* +* TFILLA :: TEXT FILL AREA * +*- -* +* FILLS A RECTANGULAR AREA OF * +* THE SCREEN WITH THE DESIRED * +* CHARACTER. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ???----- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA (LEFT BOUND) * +* PHA * +* LDA (RIGHT BOUND) * +* PHA * +* LDA (TOP BOUND) * +* PHA * +* LDA (BOTTOM BOUND) * +* PHA * +* LDA (FILL CHAR) * +* PHA * +* JSR TFILLA * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* FILL CHAR (:FILL) * +* BOTTOM BOUND (:BOTTOM) * +* TOP BOUND (:TOP) * +* RIGHT BOUND (:RIGHT) * +* LEFT BOUND (:LEFT) * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = LOW BYTE OF ADDRESS * +* X = COUNTER DATA; TRASH * +* Y = COUNTER DATA; TRASH * +* STRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TFILLA +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** LOAD PARAMETERS +* + PLA + STA :FILL + PLA + STA :BOTTOM + PLA + STA :TOP + PLA + STA :RIGHT + PLA + STA :LEFT +* + + LDY :TOP ; LOAD STARTING Y +:LOOPY + STY CURSV + JSR VTAB ; SET VERTICAL + LDX :LEFT ; CURSOR POSITION + DEX +:LOOPX + INX + STX CURSH + JSR VTAB ; SET HORIZONTAL + LDA :FILL + JSR COUT1 ; PRINT FILL CHAR + CPX :RIGHT ; IF X < RIGHT MAX + BNE :LOOPX ; LOOP; ELSE, CONTINUE +* ; END X LOOP + INY + CPY :BOTTOM ; IF Y < BOTTOM MAX + BNE :LOOPY ; LOOP; ELSE, CONTINUE +* +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:LEFT DS 1 +:RIGHT DS 1 +:BOTTOM DS 1 +:TOP DS 1 +:FILL DS 1 +:RETADR DS 2 +* +*``````````````````````````````* +* SINPUT :: SPECIAL INPUT * +* * +* INPUTS A STRING OF TEXT VIA * +* MONITOR HOOKS. MAC 255 CHARS * +*- -* +* CLOBBERS: * +* * +* FLAGS: ???----- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA #>(ADDRESS) * +* PHA * +* LDA #<(ADDRESS) * +* PHA * +* JSR SINPUT * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF INPUT ADDRESS * +* HI BYTE OF INPUT ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = LOW BYTE OF ADDRESS * +* X = LENGTH OF STRING * +* Y = LENGTH OF STRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +SINPUT +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA ADDR1 ; STORE IN ZERO + PLA ; PAGE + STA ADDR1+1 +* + LDX #$00 + JSR GETLN + STX :STRLEN ; STORE STR LENGTH + CPX #0 + BEQ :EXIT +* +:INP_CLR + LDY #0 + LDA :STRLEN ; LENGTH OF STRING + STA (ADDR1),Y ; PUT LENGTH AT START OF LOC +:LOOP + LDA KEYBUFF,Y ; PUT STR INTO NEW LOC + INY + STA (ADDR1),Y + CPY :STRLEN ; IF Y < STR LENGTH + BNE :LOOP ; LOOP; ELSE, CONTINUE +* +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:STRLEN DS 1 +:RETADR DS 2 +* +* +*``````````````````````````````* +* GPBX :: GET PADDLE BUTTON X * +* * +* GETS STATE OF PADDLE BUTTON * +* SPECIFIED AND RET 0, 1 IN A * +*- -* +* CLOBBERS: * +* * +* FLAGS: ???----- REG: A-YM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA #>(ADDRESS) * +* PHA * +* LDA #<(ADDRESS) * +* PHA * +* JSR GPBX * +* * +* --- WHERE: * +* * +* BUTTON 0 = $C061 (PB0) * +* BUTTON 1 = $CO62 (PB1) * +* BUTTON 2 - $C063 (PB2) * +* BUTTON 3 = $C060 (PB3) * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF PDL BTN ADDRESS * +* HI BYTE OF PDL BTN ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = 1 IF PRESSED, 0 IF NOT * +* X = UNCHANGED * +* Y = GARBAGE * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* CHANGE THIS LATER TO ACCEPT ALL BUTTONS, 0-4 +* +GBPX +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETER +* + PLA + STA ADDR1 ; ZERO PAGE + PLA + STA ADDR1+1 +* +* + 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 +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + TYA ; BTN FLAG MOVE TO A + RTS +* +** DATA +* +:RETADR DS 2 +* +STDIOX RTS diff --git a/disks/disk1__stdio_common/T.STDIO.MAC b/disks/disk1__stdio_common/T.STDIO.MAC new file mode 100644 index 0000000..059f113 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.MAC @@ -0,0 +1,583 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STDIO.MAC * +* * +* AUTHOR: NATHAN RIGGS * +* CONTACT: NATHAN.RIGGS@ * +* OUTLOOK.COM * +* * +* VERSION: 0.1.2 * +* DATE: 30-OCT-2018 * +* ASSEMBLER: MERLIN 8 PRO * +* * +**** SEE CHANGELOG FOR **** +**** HISTORY OF CHANGES **** +* * +* LICENSE: MIT LICENSE, WHERE * +* APPLICABLE. CODE INSPIRED * +* BY THE WORKS OF OTHERS MAY * +* FALL UNDER A DIFFERENT * +* LICENSE (NOTED IN ROUTINE). * +* * +*------------------------------* +* * +* THIS IS A MACRO LIBRARY FOR * +* STDIO.LIB, AND CAN BE USED * +* REGARDLESS OF WHETHER A * +* SPECIFIC FUNCTION IS * +* INCLUDED AS A PUT IN THE * +* MAIN SOURCE. IT IS INTENDED * +* TO SERVE AS A USEFUL SHORT- * +* CUT FOR CALLING THE VARIOUS * +* ROUTINES. SO, YOU KNOW. LIKE * +* A MACRO LIBRARY. * +* * +*------------------------------* +* * +* LIST OF MACROS * +* * +* _TPG1 : SET TEXT PAGE 1 * +* _TPG2 : SET TEXT PAGE 2 * +* _PRN : FLEXIBLE PRINT * +* _PCR : PRINT CARRIAGE RET * +* _PLN : PRINT LINE * +* _INP : SPECIAL INPUT * +* _GKEY : GET SINGLE KEY * +* _WKEY : WAIT FOR KEY * +* _CXY : SET CURS POS AT X,Y * +* _CX : SET CURSOR X * +* _CY : SET CURSOR Y * +* _CURF : CURSOR FORWARD * +* _CURB : CURSOR BACKWARD * +* _CURU : CURSOR UP * +* _CURD : CURSOR DOWN * +* _RCXY : READ CURSOR POSITION * +* _PDL : READ PADDLE STATE * +* _PBX : READ PDL BTN X * +* _TVLN : TEXT VERTICAL LINE * +* _THLN : TEXT HORIZ LINE * +* _TFIL : TEXT FILL AREA * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +*``````````````````````````````* +* _TPG1 : SET TEXT PAGE 1 * +* * +* SIMPLY SETS TEXT PAGE 1. * +* BARELY WORTH BEING A MACRO, * +* BUT KEEPING FOR NOW. * +*- -* +* PARAMETERS: NONE * +*- -* +* SAMPLE USAGE: _TPG1 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_TPG1 MAC ;SET P1 + LDA PAGE1 + <<< +* +*``````````````````````````````* +* _TPG2 : SET TEXT PAGE 2 * +* * +* SIMPLY SETS TEXT PAGE 2. * +* BARELY WORTH BEING A MACRO, * +* BUT KEEPING FOR NOW. * +*- -* +* PARAMETERS: NONE * +*- -* +* SAMPLE USAGE: _TPG2 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_TPG2 MAC ;SET P2 + LDA PAGE2 + <<< +* +*``````````````````````````````* +* _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. * +* * +* IF FIRST LETTER OF VAR1 IS * +* AN 'S', THEN A STRING PRINT * +* IS BEING INDICATED. VAR2 * +* (]2) HOLDS THE ADDRESS TO * +* THE STRING; TRANSFER CONTROL * +* TO SPRINT. * +*- -* +* SAMPLE USAGE: * +* * +* _PRN "HELLO!" * +* _PRN $300 * +* _PRN S;$310 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_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). * +*- -* +* PARAMETERS: NONE * +*- -* +* SAMPLE USAGE: _PCR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_PCR MAC + LDA #$8D + JSR COUT1 + LDA #$00 + JSR COUT1 + <<< +* +*``````````````````````````````* +* _PLN: PRINT LINE * +* * +* PRINTS A STRING OF TEXT FROM * +* PARAMETER, PRINTS IT AND * +* THEN PRINTS A NEWLINE. * +* CURRENTLY, THIS WILL ONLY * +* SUPPORT DIRECT PRINTS, NOT * +* MEMORY CALLS OR STRINGS. * +*- -* +* PARAMETERS * +* * +* VAR1 SHOULD CONTAIN THE * +* STRING OF CHARACTERS TO BE * +* PRINTED (]1). * +*- -* +* SAMPLE USAGE: * +* * +* _PLN "HELLO!" * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_PLN MAC + JSR XPRINT + ASC ]1 + HEX 8D00 + <<< +* +*``````````````````````````````* +* _INP: INPUT MACRO * +* * +* INPUTS A STRING FROM KEYBRD * +* AND STORES IT AT SPECIFIED * +* LOCATION. * +*- -* +* PARAMETERS * +* * +* VAR1 (]1) SHOULD CONTAIN THE * +* ADDRESS WHERE THE INPUTTED * +* STRING WILL BE STORED. * +*- -* +* SAMPLE USAGE: * +* * +* _INP $6A00 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_INP MAC + LDA #>]1 ; HIGH ORDER + PHA + LDA #<]1 ; LOW ORDER + PHA + JSR SINPUT + <<< +* +*``````````````````````````````* +* _GKEY [LOC] : GETKEY * +* * +* WAITS FOR USER TO PRESS A * +* KEY, THEN STORES THAT IN * +* THE SPECIFIED LOCATION. * +*- -* +* PARAMETERS * +* * +* THE FIRST PARAMETER SHOULD * +* HOLD THE ADDRESS WHERE THE * +* CHARACTER IS TO BE STORED. * +*- -* +* SAMPLE USAGE: * +* * +* _GKEY $6A00 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_GKEY MAC + LDA #<]1 + LDX #>]1 + STX ADDR1+1 + STA ADDR1 + JSR GETKEY + LDY #$00 + STA (ADDR1),Y + LDA #$00 + STA STROBE + <<< +* +*``````````````````````````````* +* WKEY : WAIT FOR KEYPRESS * +* * +* SIMPLY LOOPS UNTIL A KEY IS * +* PRESSED. KEY VALUE STORED * +* IN ACCUMULATOR. * +*- -* +* PARAMETERS: NONE * +*- -* +* SAMPLE USAGE: _WKEY * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_WKEY MAC +_LOOP LDA KYBD + CMP #$80 + BCC _LOOP + STA STROBE + <<< +* +*``````````````````````````````* +* _CXY: POSITION CURSOR X,Y * +*- -* +* SETS THE CURSOR POSITION. * +*- -* +* PARAMETERS * +* * +* THE FIRST PARAMETER SHOULD * +* HOLD THE X POSITION; THE * +* SECOND SHOULD HOLD Y. * +*- -* +* SAMPLE USAGE: * +* * +* _CXY #10;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_CXY MAC + LDX ]1 + LDY ]2 + STX CURSH + STY CURSV + JSR VTAB + <<< +* +*``````````````````````````````* +*- _CX: POSITION CURSOR HORIZ -* +*- -* +* SETS THE HORIZONTAL POSITION * +* OF THE TEXT CURSOR. * +* NUMBER Y TO MOVE UPWARD. * +*- -* +* PARAMETERS * +* * +* FIRST PARAMETER HOLDS X. * +*- -* +* SAMPLE USAGE: _CX #10 * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_CX MAC + LDX ]1 + STX CURSH + JSR VTAB + <<< +* +*``````````````````````````````* +* _CY: POSITION CURSOR VERT * +*- -* +* SET CURSOR VERTICAL POSITION * +*- -* +* PARAMETERS * +* * +* FIRST PARAMETER HOLDS Y. * +*- -* +* SAMPLE USAGE: _CY #10 * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_CY MAC + LDY ]1 + STY CURSV + JSR VTAB + <<< +* +*``````````````````````````````* +* _CURF : TEXT CURSOR FORWRD * +*- -* +* MOVES THE CURSOR FORWARD BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* FIRST PARAMETER SHOULD HOLD * +* NUMBER X 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 * +* * +* FIRST PARAMETER SHOULD HOLD * +* NUMBER X 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 * +* * +* FIRST PARAMETER SHOULD HOLD * +* NUMBER Y TO MOVE UPWARD. * +*- -* +* SAMPLE USAGE: _CURU #10 * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_CURU MAC + LDA ]1 + JSR CURSUP + <<< +* +*``````````````````````````````* +* _CURD : TEXT CURSOR DOWN * +*- -* +* MOVES THE CURSOR DOWN BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* FIRST PARAMETER SHOULD HOLD * +* THE AMOUNT TO MOVE DOWN IN Y * +*- -* +* SAMPLE USAGE: #10 * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_CURD MAC + LDA ]1 + JSR CURSDN + <<< +* +*``````````````````````````````* +* _RCXY : READ SCREEN AT XY * +*- -* +* READ THE CHARACTER AT POS * +* X,Y AND LOADS INTO ACCUM * +*- -* +* PARAMETERS * +* * +* PARAMETER 1 SHOULD HOLD THE * +* X POSITION ON SCREEN TO BE * +* READ, PARAMETER 2 HOLDS Y. * +*- -* +* SAMPLE USAGE: _RCXY #3;#9 * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_RCXY MAC + LDA ]1 ; ROW + LDY ]2 ; COLUMN + JSR $F847 ; NOT SURE ABOUT THIS MAGIC NUM + LDA ($26),Y ; LOAD CHAR INTO ACCUM +* +* THANKS GO TO ERIC JACOBS +* IN THE APPLE II ENTHUSIASTS +* FACEBOOK GROUP FOR THIS +* + <<< +* +*``````````````````````````````* +* PADDLE / MOUSE INPUT * +*- -* +* SIMPLY READS STATE OF PADDLE * +* NUMBER [NUM] AND STORES IT * +* IN THE Y REGISTER. * +*- -* +* PARAMETERS * +* * +* PARAMETER 1 SHOULD HOLD THE * +* NUMBER THAT CORRESPONDS TO * +* THE PADDLE TO READ. * +*- -* +* SAMPLE USAGE: _PDL #0 * +* * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_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 * +* * +* PARAMETER1 SHOULD HOLD THE * +* ADDRESS OF THE PADDLE BUTTON * +* READ. THEY ARE AS FOLLOWS: * +* * +* PB0: $C061 PB1: $C062 * +* PB2: $C063 PB4: $C060 * +*- -* +* SAMPLE USAGE: _PBX $C061 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_PBX MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR GPBX + <<< +* +*``````````````````````````````* +* _TVLN : TEXT VERTICAL LINE * +*- -* +* CREATES A VERTICAL LINE OF * +* TEXT AT THE CURRENT CURSOR * +* COLUMN CONSISTING OF THE * +* SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* PARAM1 = START OF VLINE, * +* PARAM2 = END POS OF VLINE, * +* PARAM3 = X POSITION OF LINE, * +* PARAM4 = FILL CHARACTER. * +*- -* +* SAMPLE USAGE: * +* * +* _TVLN #0;#10;#3;#$18 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_TVLN MAC + LDA ]1 ; Y START + PHA + LDA ]2 ; Y END + PHA + LDA ]3 ; X POSITION + PHA + LDA ]4 ; CHARACTER + PHA + JSR TVLIN + <<< +* +*``````````````````````````````* +* _THLN : TEXT HORIZONTAL LINE * +* * +* CREATES A HORIZONTAL LINE OF * +* TEXT FROM X1,Y TO X2,Y WITH * +* THE SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* PARAM1 = START OF HLINE, * +* PARAM2 = END POS OF HLINE, * +* PARAM3 = Y POSITION OF LINE, * +* PARAM4 = FILL CHARACTER. * +*- -* +* SAMPLE USAGE: * +* * +* _THLN #0;#10;#12;#$18 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_THLN MAC + LDA ]1 ; X START + PHA + LDA ]2 ; X END + PHA + LDA ]3 ; Y POS + PHA + LDA ]4 ; FILL CHAR + PHA + JSR THLIN + <<< +* +*``````````````````````````````* +* _TFIL : TEXT FILL (A) -* +*- -* +* FILL X1,Y1 TO X2,Y2 WITH * +* SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* PARAM1 = LEFT BOUNDARY * +* PARAM2 = RIGHT BOUNDARY * +* PARAM3 = TOP BOUNDARY * +* PARAM4 = BOTTOM BOUNDARY * +*- -* +* SAMPLE USAGE: * +* * +* _TFIL #0;#10;#0;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +_TFIL MAC + LDA ]1 ; LEFT BOUNDARY + PHA + LDA ]2 ; RIGHT BOUNDARY + PHA + LDA ]3 ; TOP BOUNDARY + PHA + LDA ]4 ; BOTTOM BOUNDARY + PHA + LDA ]5 ; FILL CHAR + PHA + JSR TFILLA + <<< +* diff --git a/disks/disk1__stdio_common/T.STDIO.SINPUT b/disks/disk1__stdio_common/T.STDIO.SINPUT new file mode 100644 index 0000000..46ecb32 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.SINPUT @@ -0,0 +1,91 @@ +* +*``````````````````````````````* +* SINPUT :: SPECIAL INPUT * +* * +* INPUTS A STRING OF TEXT VIA * +* MONITOR HOOKS. MAC 255 CHARS * +*- -* +* CLOBBERS: * +* * +* FLAGS: ???----- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA #>(ADDRESS) * +* PHA * +* LDA #<(ADDRESS) * +* PHA * +* JSR SINPUT * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* LOW BYTE OF INPUT ADDRESS * +* HI BYTE OF INPUT ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = LOW BYTE OF ADDRESS * +* X = LENGTH OF STRING * +* Y = LENGTH OF STRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +SINPUT +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA ADDR1 ; STORE IN ZERO + PLA ; PAGE + STA ADDR1+1 +* + LDX #$00 + JSR GETLN + STX :STRLEN ; STORE STR LENGTH + CPX #0 + BEQ :EXIT +* +:INP_CLR + LDY #0 + LDA :STRLEN ; LENGTH OF STRING + STA (ADDR1),Y ; PUT LENGTH AT START OF LOC +:LOOP + LDA KEYBUFF,Y ; PUT STR INTO NEW LOC + INY + STA (ADDR1),Y + CPY :STRLEN ; IF Y < STR LENGTH + BNE :LOOP ; LOOP; ELSE, CONTINUE +* +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:STRLEN DS 1 +:RETADR DS 2 +* diff --git a/disks/disk1__stdio_common/T.STDIO.TFILLA b/disks/disk1__stdio_common/T.STDIO.TFILLA new file mode 100644 index 0000000..c18b4b4 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.TFILLA @@ -0,0 +1,114 @@ +* +*``````````````````````````````* +* TFILLA :: TEXT FILL AREA * +*- -* +* FILLS A RECTANGULAR AREA OF * +* THE SCREEN WITH THE DESIRED * +* CHARACTER. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ???----- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA (LEFT BOUND) * +* PHA * +* LDA (RIGHT BOUND) * +* PHA * +* LDA (TOP BOUND) * +* PHA * +* LDA (BOTTOM BOUND) * +* PHA * +* LDA (FILL CHAR) * +* PHA * +* JSR TFILLA * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* FILL CHAR (:FILL) * +* BOTTOM BOUND (:BOTTOM) * +* TOP BOUND (:TOP) * +* RIGHT BOUND (:RIGHT) * +* LEFT BOUND (:LEFT) * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A = LOW BYTE OF ADDRESS * +* X = COUNTER DATA; TRASH * +* Y = COUNTER DATA; TRASH * +* STRING * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TFILLA +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** LOAD PARAMETERS +* + PLA + STA :FILL + PLA + STA :BOTTOM + PLA + STA :TOP + PLA + STA :RIGHT + PLA + STA :LEFT +* + + LDY :TOP ; LOAD STARTING Y +:LOOPY + STY CURSV + JSR VTAB ; SET VERTICAL + LDX :LEFT ; CURSOR POSITION + DEX +:LOOPX + INX + STX CURSH + JSR VTAB ; SET HORIZONTAL + LDA :FILL + JSR COUT1 ; PRINT FILL CHAR + CPX :RIGHT ; IF X < RIGHT MAX + BNE :LOOPX ; LOOP; ELSE, CONTINUE +* ; END X LOOP + INY + CPY :BOTTOM ; IF Y < BOTTOM MAX + BNE :LOOPY ; LOOP; ELSE, CONTINUE +* +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:LEFT DS 1 +:RIGHT DS 1 +:BOTTOM DS 1 +:TOP DS 1 +:FILL DS 1 +:RETADR DS 2 diff --git a/disks/disk1__stdio_common/T.STDIO.THLIN b/disks/disk1__stdio_common/T.STDIO.THLIN new file mode 100644 index 0000000..f509d83 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.THLIN @@ -0,0 +1,98 @@ +* +*``````````````````````````````* +* THLIN :: TEXT HORIZ LINE * +*- -* +* CREATES A HORIZONTAL LINE OF * +* TEXT COMPOSED OF THE FILL * +* CHARACTER SPECIFIED AT Y. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA (X-START) * +* PHA * +* LDA (X-END) * +* PHA * +* LDA (Y-POS) * +* PHA * +* LDA (FILL CHAR) * +* PHA * +* JSR THLIN * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* XPOS START OF LINE (:X1) * +* XPOS END OF LINE (:X2) * +* YPOS OF LINE (:Y) * +* FILL CHARACTER (:F) * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* X,Y = START,END OF LINE * +* A = LOW BYTE OF RET ADDR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +THLIN +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :F + PLA + STA :Y + PLA + STA :X2 + PLA + STA :X1 +* +* + LDX :X1 ; LOAD X START POS + STX CURSH ; STORE IN CURSH + LDY :Y ; LDY Y POS + STY CURSV ; STORE IN CURSV + JSR VTAB ; MOVE CURSOR + LDA :F ; LOAD FILL CHAR + LDY :X1 ; LOAD X START POS +:LOOP + JSR COUT1 ; PRINT FILL CHAR + INY ; INCREASE X POS + CPY :X2 ; IF LESS THAN X END POS + BNE :LOOP ; REPEAT UNTIL DONE +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +* +** DATA +* +:X1 DS 1 +:X2 DS 1 +:Y DS 1 +:F DS 1 ; FILL CHAR +:RETADR DS 2 diff --git a/disks/disk1__stdio_common/T.STDIO.TVLIN b/disks/disk1__stdio_common/T.STDIO.TVLIN new file mode 100644 index 0000000..b810ba5 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.TVLIN @@ -0,0 +1,103 @@ +* +*``````````````````````````````* +* TVLIN :: TEXT VERTICAL LINE * +*- -* +* CREATES A VERTICAL LINE OF * +* TEXT COMPOSED OF THE FILL * +* CHARACTER SPECIFIED AT X. * +*- -* +* CLOBBERS: * +* * +* FLAGS: ????---- REG: AXYM * +*- -* +* CYCLES: ??? * +* SIZE: * +*- -* +* USAGE: * +* LDA (Y-START) * +* PHA * +* LDA (Y-END) * +* PHA * +* LDA (X-POS) * +* PHA * +* LDA (FILL CHAR) * +* PHA * +* JSR TVLIN * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* XPOS START OF LINE (:Y1) * +* XPOS END OF LINE (:Y2) * +* YPOS OF LINE (:X) * +* FILL CHARACTER (:F) * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* Y = END OF LINE * +* X = HORIZONTAL POSITION * +* A = LOW BYTE OF RET ADDR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TVLIN +* +** SAVE RETURN ADDRESS +* + PLA + STA :RETADR + PLA + STA :RETADR+1 +* +** GET PARAMETERS +* + PLA + STA :F ; FILL CHAR + PLA + STA :X ; X POS + PLA + STA :Y2 ; END + PLA + STA :Y1 ; START +* + LDX :X + LDY :Y1 + STY CURSV + STX CURSH + JSR VTAB ; SET CURSOR POS +:LOOP + JSR COUT1 ; PRINT CHAR + LDX :X + STX CURSH + STY CURSV + JSR VTAB ; SET NEW CURSOR POS + LDA :F ; RELOAD FILL CHAR + INY ; INCREASE COUNTER + CPY :Y2 ; IF Y1 < Y2 + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT +* +** RESTORE RETURN ADDRESS +* + LDA :RETADR+1 + PHA + LDA :RETADR + PHA +* + RTS +* +** DATA +* +:RETADR DS 2 +:X DS 1 +:Y1 DS 1 +:Y2 DS 1 +:F DS 1 + diff --git a/disks/disk1__stdio_common/T.STDIO.XPRINT b/disks/disk1__stdio_common/T.STDIO.XPRINT new file mode 100644 index 0000000..17ba3a8 --- /dev/null +++ b/disks/disk1__stdio_common/T.STDIO.XPRINT @@ -0,0 +1,70 @@ +* +*``````````````````````````````* +* XPRINT :: SPECIAL PRINT * +*- -* +* PRINTS DATA IMMEDIATELY * +* FOLLOWING THE JSR TO SPRINT * +*- -* +* CLOBBERS: * +* * +* FLAGS: NZC----- REG: AYM- * +*- -* +* CYCLES: 53+ * +* SIZE: * +*- -* +* USAGE: * +* JSR SPRINT * +* ASC "HELLO, WORLD!" * +*- -* +* ENTRY * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +*- -* +* EXIT * +* * +* TOP OF STACK * +* * +* LOW BYTE OF RETURN ADDRESS * +* HI BYTE OF RETURN ADDRESS * +* * +* A,Y = LOW BYTE OF ADDRESS * +* X = UNCHANGED * +*- -* +* NOTE: PARTIALLY ADOPTED FROM * +* ROGER WAGNER'S AND CHRIS * +* TORRENCE'S /ASSEMBLY LINES/ * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +XPRINT +* +** GET CURRENT EXEC ADDRESS +* + 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 +*