Added Extracted Source Code
Additionally, reorganized disks
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
|
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
@@ -1,645 +0,0 @@
|
||||
6000- 4C 38 61 JMP $6138
|
||||
6003- 00 BRK
|
||||
6004- 00 BRK
|
||||
6005- 00 BRK
|
||||
6006- 00 BRK
|
||||
6007- 00 BRK
|
||||
6008- 00 BRK
|
||||
6009- 00 BRK
|
||||
600A- 00 BRK
|
||||
600B- 00 BRK
|
||||
600C- 00 BRK
|
||||
600D- 00 BRK
|
||||
600E- 00 BRK
|
||||
600F- 00 BRK
|
||||
6010- 00 BRK
|
||||
6011- 00 BRK
|
||||
6012- 00 BRK
|
||||
6013- 00 BRK
|
||||
6014- 00 BRK
|
||||
6015- 00 BRK
|
||||
6016- 00 BRK
|
||||
6017- 00 BRK
|
||||
6018- 00 BRK
|
||||
6019- 00 BRK
|
||||
601A- 00 BRK
|
||||
601B- 00 BRK
|
||||
601C- 00 BRK
|
||||
601D- 00 BRK
|
||||
601E- 00 BRK
|
||||
601F- 00 BRK
|
||||
6020- 00 BRK
|
||||
6021- 00 BRK
|
||||
6022- 00 BRK
|
||||
6023- 00 BRK
|
||||
6024- 00 BRK
|
||||
6025- 00 BRK
|
||||
6026- 00 BRK
|
||||
6027- 00 BRK
|
||||
6028- 00 BRK
|
||||
6029- 00 BRK
|
||||
602A- 00 BRK
|
||||
602B- 00 BRK
|
||||
602C- 00 BRK
|
||||
602D- 00 BRK
|
||||
602E- 00 BRK
|
||||
602F- 00 BRK
|
||||
6030- 00 BRK
|
||||
6031- 00 BRK
|
||||
6032- 00 BRK
|
||||
6033- 00 BRK
|
||||
6034- 00 BRK
|
||||
6035- 00 BRK
|
||||
6036- 00 BRK
|
||||
6037- 00 BRK
|
||||
6038- 00 BRK
|
||||
6039- 00 BRK
|
||||
603A- 00 BRK
|
||||
603B- 00 BRK
|
||||
603C- 00 BRK
|
||||
603D- 00 BRK
|
||||
603E- 00 BRK
|
||||
603F- 00 BRK
|
||||
6040- 00 BRK
|
||||
6041- 00 BRK
|
||||
6042- 00 BRK
|
||||
6043- 00 BRK
|
||||
6044- 00 BRK
|
||||
6045- 00 BRK
|
||||
6046- 00 BRK
|
||||
6047- 00 BRK
|
||||
6048- 00 BRK
|
||||
6049- 00 BRK
|
||||
604A- 00 BRK
|
||||
604B- 00 BRK
|
||||
604C- 00 BRK
|
||||
604D- 00 BRK
|
||||
604E- 00 BRK
|
||||
604F- 00 BRK
|
||||
6050- 00 BRK
|
||||
6051- 00 BRK
|
||||
6052- 00 BRK
|
||||
6053- 00 BRK
|
||||
6054- 00 BRK
|
||||
6055- 00 BRK
|
||||
6056- 00 BRK
|
||||
6057- 00 BRK
|
||||
6058- 00 BRK
|
||||
6059- 00 BRK
|
||||
605A- 00 BRK
|
||||
605B- 00 BRK
|
||||
605C- 00 BRK
|
||||
605D- 00 BRK
|
||||
605E- 00 BRK
|
||||
605F- 00 BRK
|
||||
6060- 00 BRK
|
||||
6061- 00 BRK
|
||||
6062- 00 BRK
|
||||
6063- 00 BRK
|
||||
6064- 00 BRK
|
||||
6065- 00 BRK
|
||||
6066- 00 BRK
|
||||
6067- 00 BRK
|
||||
6068- 00 BRK
|
||||
6069- 00 BRK
|
||||
606A- 00 BRK
|
||||
606B- 00 BRK
|
||||
606C- 00 BRK
|
||||
606D- 00 BRK
|
||||
606E- 00 BRK
|
||||
606F- 00 BRK
|
||||
6070- 00 BRK
|
||||
6071- 00 BRK
|
||||
6072- 00 BRK
|
||||
6073- 00 BRK
|
||||
6074- 00 BRK
|
||||
6075- 00 BRK
|
||||
6076- 00 BRK
|
||||
6077- 00 BRK
|
||||
6078- 00 BRK
|
||||
6079- 00 BRK
|
||||
607A- 00 BRK
|
||||
607B- 00 BRK
|
||||
607C- 00 BRK
|
||||
607D- 00 BRK
|
||||
607E- 00 BRK
|
||||
607F- 00 BRK
|
||||
6080- 00 BRK
|
||||
6081- 00 BRK
|
||||
6082- 00 BRK
|
||||
6083- 00 BRK
|
||||
6084- 00 BRK
|
||||
6085- 00 BRK
|
||||
6086- 00 BRK
|
||||
6087- 00 BRK
|
||||
6088- 00 BRK
|
||||
6089- 00 BRK
|
||||
608A- 00 BRK
|
||||
608B- 00 BRK
|
||||
608C- 00 BRK
|
||||
608D- 00 BRK
|
||||
608E- 00 BRK
|
||||
608F- 00 BRK
|
||||
6090- 00 BRK
|
||||
6091- 00 BRK
|
||||
6092- 00 BRK
|
||||
6093- 00 BRK
|
||||
6094- 00 BRK
|
||||
6095- 00 BRK
|
||||
6096- 00 BRK
|
||||
6097- 00 BRK
|
||||
6098- 00 BRK
|
||||
6099- 00 BRK
|
||||
609A- 00 BRK
|
||||
609B- 00 BRK
|
||||
609C- 00 BRK
|
||||
609D- 00 BRK
|
||||
609E- 00 BRK
|
||||
609F- 00 BRK
|
||||
60A0- 00 BRK
|
||||
60A1- 00 BRK
|
||||
60A2- 00 BRK
|
||||
60A3- 00 BRK
|
||||
60A4- 00 BRK
|
||||
60A5- 00 BRK
|
||||
60A6- 00 BRK
|
||||
60A7- 00 BRK
|
||||
60A8- 00 BRK
|
||||
60A9- 00 BRK
|
||||
60AA- 00 BRK
|
||||
60AB- 00 BRK
|
||||
60AC- 00 BRK
|
||||
60AD- 00 BRK
|
||||
60AE- 00 BRK
|
||||
60AF- 00 BRK
|
||||
60B0- 00 BRK
|
||||
60B1- 00 BRK
|
||||
60B2- 00 BRK
|
||||
60B3- 00 BRK
|
||||
60B4- 00 BRK
|
||||
60B5- 00 BRK
|
||||
60B6- 00 BRK
|
||||
60B7- 00 BRK
|
||||
60B8- 00 BRK
|
||||
60B9- 00 BRK
|
||||
60BA- 00 BRK
|
||||
60BB- 00 BRK
|
||||
60BC- 00 BRK
|
||||
60BD- 00 BRK
|
||||
60BE- 00 BRK
|
||||
60BF- 00 BRK
|
||||
60C0- 00 BRK
|
||||
60C1- 00 BRK
|
||||
60C2- 00 BRK
|
||||
60C3- 00 BRK
|
||||
60C4- 00 BRK
|
||||
60C5- 00 BRK
|
||||
60C6- 00 BRK
|
||||
60C7- 00 BRK
|
||||
60C8- 00 BRK
|
||||
60C9- 00 BRK
|
||||
60CA- 00 BRK
|
||||
60CB- 00 BRK
|
||||
60CC- 00 BRK
|
||||
60CD- 00 BRK
|
||||
60CE- 00 BRK
|
||||
60CF- 00 BRK
|
||||
60D0- 00 BRK
|
||||
60D1- 00 BRK
|
||||
60D2- 00 BRK
|
||||
60D3- 00 BRK
|
||||
60D4- 00 BRK
|
||||
60D5- 00 BRK
|
||||
60D6- 00 BRK
|
||||
60D7- 00 BRK
|
||||
60D8- 00 BRK
|
||||
60D9- 00 BRK
|
||||
60DA- 00 BRK
|
||||
60DB- 00 BRK
|
||||
60DC- 00 BRK
|
||||
60DD- 00 BRK
|
||||
60DE- 00 BRK
|
||||
60DF- 00 BRK
|
||||
60E0- 00 BRK
|
||||
60E1- 00 BRK
|
||||
60E2- 00 BRK
|
||||
60E3- 00 BRK
|
||||
60E4- 00 BRK
|
||||
60E5- 00 BRK
|
||||
60E6- 00 BRK
|
||||
60E7- 00 BRK
|
||||
60E8- 00 BRK
|
||||
60E9- 00 BRK
|
||||
60EA- 00 BRK
|
||||
60EB- 00 BRK
|
||||
60EC- 00 BRK
|
||||
60ED- 00 BRK
|
||||
60EE- 00 BRK
|
||||
60EF- 00 BRK
|
||||
60F0- 00 BRK
|
||||
60F1- 00 BRK
|
||||
60F2- 00 BRK
|
||||
60F3- 00 BRK
|
||||
60F4- 00 BRK
|
||||
60F5- 00 BRK
|
||||
60F6- 00 BRK
|
||||
60F7- 00 BRK
|
||||
60F8- 00 BRK
|
||||
60F9- 00 BRK
|
||||
60FA- 00 BRK
|
||||
60FB- 00 BRK
|
||||
60FC- 00 BRK
|
||||
60FD- 00 BRK
|
||||
60FE- 00 BRK
|
||||
60FF- 00 BRK
|
||||
6100- 00 BRK
|
||||
6101- 00 BRK
|
||||
6102- 00 BRK
|
||||
6103- 00 BRK
|
||||
6104- 00 BRK
|
||||
6105- 00 BRK
|
||||
6106- 00 BRK
|
||||
6107- 00 BRK
|
||||
6108- 00 BRK
|
||||
6109- 00 BRK
|
||||
610A- 00 BRK
|
||||
610B- 00 BRK
|
||||
610C- 00 BRK
|
||||
610D- 00 BRK
|
||||
610E- 00 BRK
|
||||
610F- 00 BRK
|
||||
6110- 00 BRK
|
||||
6111- 00 BRK
|
||||
6112- 00 BRK
|
||||
6113- 00 BRK
|
||||
6114- 00 BRK
|
||||
6115- 00 BRK
|
||||
6116- 00 BRK
|
||||
6117- 00 BRK
|
||||
6118- 00 BRK
|
||||
6119- 00 BRK
|
||||
611A- 00 BRK
|
||||
611B- 00 BRK
|
||||
611C- 00 BRK
|
||||
611D- 00 BRK
|
||||
611E- 00 BRK
|
||||
611F- 00 BRK
|
||||
6120- 00 BRK
|
||||
6121- 00 BRK
|
||||
6122- 00 BRK
|
||||
6123- 00 BRK
|
||||
6124- 00 BRK
|
||||
6125- 00 BRK
|
||||
6126- 00 BRK
|
||||
6127- 00 BRK
|
||||
6128- 00 BRK
|
||||
6129- 00 BRK
|
||||
612A- 00 BRK
|
||||
612B- 00 BRK
|
||||
612C- 00 BRK
|
||||
612D- 00 BRK
|
||||
612E- 00 BRK
|
||||
612F- 00 BRK
|
||||
6130- 00 BRK
|
||||
6131- 00 BRK
|
||||
6132- 00 BRK
|
||||
6133- 00 BRK
|
||||
6134- 00 BRK
|
||||
6135- 00 BRK
|
||||
6136- 00 BRK
|
||||
6137- 00 BRK
|
||||
6138- 4C A6 61 JMP $61A6
|
||||
613B- 8D 75 61 STA $6175
|
||||
613E- 8C 76 61 STY $6176
|
||||
6141- 8E 77 61 STX $6177
|
||||
6144- A9 00 LDA #$00
|
||||
6146- A8 TAY
|
||||
6147- AA TAX
|
||||
6148- 8D 76 61 STA $6176
|
||||
614B- F0 11 BEQ $615E
|
||||
614D- 18 CLC
|
||||
614E- 6D 75 61 ADC $6175
|
||||
6151- AA TAX
|
||||
6152- 98 TYA
|
||||
6153- 6D 76 61 ADC $6176
|
||||
6156- A8 TAY
|
||||
6157- 8A TXA
|
||||
6158- 0E 75 61 ASL $6175
|
||||
615B- 2E 76 61 ROL $6176
|
||||
615E- 4E 77 61 LSR $6177
|
||||
6161- B0 EA BCS $614D
|
||||
6163- D0 F3 BNE $6158
|
||||
6165- 8E 75 61 STX $6175
|
||||
6168- 8C 77 61 STY $6177
|
||||
616B- AD 77 61 LDA $6177
|
||||
616E- AE 75 61 LDX $6175
|
||||
6171- AC 76 61 LDY $6176
|
||||
6174- 60 RTS
|
||||
6175- 00 BRK
|
||||
6176- 00 BRK
|
||||
6177- 00 BRK
|
||||
6178- 00 BRK
|
||||
6179- 00 BRK
|
||||
617A- 00 BRK
|
||||
617B- 00 BRK
|
||||
617C- 00 BRK
|
||||
617D- A0 00 LDY #$00
|
||||
617F- 8C 7A 61 STY $617A
|
||||
6182- 8C 7C 61 STY $617C
|
||||
6185- 8E 79 61 STX $6179
|
||||
6188- 8D 7B 61 STA $617B
|
||||
618B- A9 00 LDA #$00
|
||||
618D- A2 08 LDX #$08
|
||||
618F- 0E 7B 61 ASL $617B
|
||||
6192- 2A ROL
|
||||
6193- CD 79 61 CMP $6179
|
||||
6196- 90 03 BCC $619B
|
||||
6198- ED 79 61 SBC $6179
|
||||
619B- 2E 7B 61 ROL $617B
|
||||
619E- CA DEX
|
||||
619F- D0 F1 BNE $6192
|
||||
61A1- AA TAX
|
||||
61A2- AD 7B 61 LDA $617B
|
||||
61A5- 60 RTS
|
||||
61A6- A0 01 LDY #$01
|
||||
61A8- 8C ED 63 STY $63ED
|
||||
61AB- 84 19 STY $19
|
||||
61AD- A0 FF LDY #$FF
|
||||
61AF- A2 D8 LDX #$D8
|
||||
61B1- AD ED 63 LDA $63ED
|
||||
61B4- 20 7E 63 JSR $637E
|
||||
61B7- A4 19 LDY $19
|
||||
61B9- 20 33 63 JSR $6333
|
||||
61BC- C3 ???
|
||||
61BD- BB ???
|
||||
61BE- D7 ???
|
||||
61BF- C8 INY
|
||||
61C0- CF ???
|
||||
61C1- CC C5 8D CPY $8DC5
|
||||
61C4- 8D 00 20 STA $2000
|
||||
61C7- 54 ???
|
||||
61C8- 63 ???
|
||||
61C9- 84 19 STY $19
|
||||
61CB- A0 E3 LDY #$E3
|
||||
61CD- A2 D8 LDX #$D8
|
||||
61CF- AD ED 63 LDA $63ED
|
||||
61D2- 20 7E 63 JSR $637E
|
||||
61D5- A4 19 LDY $19
|
||||
61D7- 20 33 63 JSR $6333
|
||||
61DA- C4 A0 CPY $A0
|
||||
61DC- D7 ???
|
||||
61DD- C8 INY
|
||||
61DE- CF ???
|
||||
61DF- CC C5 8D CPY $8DC5
|
||||
61E2- 8D 00 20 STA $2000
|
||||
61E5- 54 ???
|
||||
61E6- 63 ???
|
||||
61E7- 84 19 STY $19
|
||||
61E9- A0 CA LDY #$CA
|
||||
61EB- A2 D8 LDX #$D8
|
||||
61ED- AD ED 63 LDA $63ED
|
||||
61F0- 20 7E 63 JSR $637E
|
||||
61F3- A4 19 LDY $19
|
||||
61F5- 20 33 63 JSR $6333
|
||||
61F8- C5 A0 CMP $A0
|
||||
61FA- D7 ???
|
||||
61FB- C8 INY
|
||||
61FC- CF ???
|
||||
61FD- CC C5 8D CPY $8DC5
|
||||
6200- 8D 00 20 STA $2000
|
||||
6203- 54 ???
|
||||
6204- 63 ???
|
||||
6205- 84 19 STY $19
|
||||
6207- A0 BF LDY #$BF
|
||||
6209- A2 D8 LDX #$D8
|
||||
620B- AD ED 63 LDA $63ED
|
||||
620E- 20 7E 63 JSR $637E
|
||||
6211- A4 19 LDY $19
|
||||
6213- 20 33 63 JSR $6333
|
||||
6216- C6 A0 DEC $A0
|
||||
6218- D7 ???
|
||||
6219- C8 INY
|
||||
621A- CF ???
|
||||
621B- CC C5 8D CPY $8DC5
|
||||
621E- 8D 00 20 STA $2000
|
||||
6221- 54 ???
|
||||
6222- 63 ???
|
||||
6223- 84 19 STY $19
|
||||
6225- A0 AA LDY #$AA
|
||||
6227- A2 D8 LDX #$D8
|
||||
6229- AD ED 63 LDA $63ED
|
||||
622C- 20 7E 63 JSR $637E
|
||||
622F- A4 19 LDY $19
|
||||
6231- 20 33 63 JSR $6333
|
||||
6234- C7 ???
|
||||
6235- A0 D7 LDY #$D7
|
||||
6237- C8 INY
|
||||
6238- CF ???
|
||||
6239- CC C5 8D CPY $8DC5
|
||||
623C- 8D 00 20 STA $2000
|
||||
623F- 54 ???
|
||||
6240- 63 ???
|
||||
6241- 84 19 STY $19
|
||||
6243- A0 98 LDY #$98
|
||||
6245- A2 D8 LDX #$D8
|
||||
6247- AD ED 63 LDA $63ED
|
||||
624A- 20 7E 63 JSR $637E
|
||||
624D- A4 19 LDY $19
|
||||
624F- 20 33 63 JSR $6333
|
||||
6252- C1 A0 CMP ($A0,X)
|
||||
6254- D7 ???
|
||||
6255- C8 INY
|
||||
6256- CF ???
|
||||
6257- CC C5 8D CPY $8DC5
|
||||
625A- 8D 00 20 STA $2000
|
||||
625D- 54 ???
|
||||
625E- 63 ???
|
||||
625F- 84 19 STY $19
|
||||
6261- A0 87 LDY #$87
|
||||
6263- A2 D8 LDX #$D8
|
||||
6265- AD ED 63 LDA $63ED
|
||||
6268- 20 7E 63 JSR $637E
|
||||
626B- A4 19 LDY $19
|
||||
626D- 20 33 63 JSR $6333
|
||||
6270- C2 ???
|
||||
6271- A0 D7 LDY #$D7
|
||||
6273- C8 INY
|
||||
6274- CF ???
|
||||
6275- CC C5 8D CPY $8DC5
|
||||
6278- 8D 00 20 STA $2000
|
||||
627B- 54 ???
|
||||
627C- 63 ???
|
||||
627D- EE ED 63 INC $63ED
|
||||
6280- AD ED 63 LDA $63ED
|
||||
6283- C9 05 CMP #$05
|
||||
6285- F0 03 BEQ $628A
|
||||
6287- 4C AB 61 JMP $61AB
|
||||
628A- 4C D0 03 JMP $03D0
|
||||
628D- 00 BRK
|
||||
628E- 00 BRK
|
||||
628F- 00 BRK
|
||||
6290- 00 BRK
|
||||
6291- 00 BRK
|
||||
6292- 00 BRK
|
||||
6293- 00 BRK
|
||||
6294- 00 BRK
|
||||
6295- 00 BRK
|
||||
6296- 00 BRK
|
||||
6297- B0 B1 BCS $624A
|
||||
6299- B2 B3 LDA ($B3)
|
||||
629B- B4 B5 LDY $B5,X
|
||||
629D- B6 B7 LDX $B7,Y
|
||||
629F- B8 CLV
|
||||
62A0- B9 C1 C2 LDA $C2C1,Y
|
||||
62A3- C3 ???
|
||||
62A4- C4 C5 CPY $C5
|
||||
62A6- C6 85 DEC $85
|
||||
62A8- 06 86 ASL $86
|
||||
62AA- 07 ???
|
||||
62AB- A0 FF LDY #$FF
|
||||
62AD- C8 INY
|
||||
62AE- B9 38 60 LDA $6038,Y
|
||||
62B1- 91 06 STA ($06),Y
|
||||
62B3- CC 37 60 CPY $6037
|
||||
62B6- D0 F5 BNE $62AD
|
||||
62B8- 60 RTS
|
||||
62B9- 29 F0 AND #$F0
|
||||
62BB- 4A LSR
|
||||
62BC- 4A LSR
|
||||
62BD- 4A LSR
|
||||
62BE- 4A LSR
|
||||
62BF- 60 RTS
|
||||
62C0- 8C 8F 62 STY $628F
|
||||
62C3- 85 06 STA $06
|
||||
62C5- 86 07 STX $07
|
||||
62C7- A9 8D LDA #$8D
|
||||
62C9- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
62CC- A5 07 LDA $07
|
||||
62CE- 20 B9 62 JSR $62B9
|
||||
62D1- AA TAX
|
||||
62D2- BD 97 62 LDA $6297,X
|
||||
62D5- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
62D8- A5 07 LDA $07
|
||||
62DA- 29 0F AND #$0F
|
||||
62DC- AA TAX
|
||||
62DD- BD 97 62 LDA $6297,X
|
||||
62E0- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
62E3- A5 06 LDA $06
|
||||
62E5- 20 B9 62 JSR $62B9
|
||||
62E8- AA TAX
|
||||
62E9- BD 97 62 LDA $6297,X
|
||||
62EC- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
62EF- A5 06 LDA $06
|
||||
62F1- 29 0F AND #$0F
|
||||
62F3- AA TAX
|
||||
62F4- BD 97 62 LDA $6297,X
|
||||
62F7- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
62FA- A9 BA LDA #$BA
|
||||
62FC- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
62FF- A9 A0 LDA #$A0
|
||||
6301- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
6304- A0 00 LDY #$00
|
||||
6306- B1 06 LDA ($06),Y
|
||||
6308- 20 B9 62 JSR $62B9
|
||||
630B- 8D 8E 62 STA $628E
|
||||
630E- B1 06 LDA ($06),Y
|
||||
6310- 29 0F AND #$0F
|
||||
6312- 8D 8D 62 STA $628D
|
||||
6315- AE 8E 62 LDX $628E
|
||||
6318- BD 97 62 LDA $6297,X
|
||||
631B- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
631E- AE 8D 62 LDX $628D
|
||||
6321- BD 97 62 LDA $6297,X
|
||||
6324- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
6327- A9 A0 LDA #$A0
|
||||
6329- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
632C- C8 INY
|
||||
632D- CC 8F 62 CPY $628F
|
||||
6330- D0 D4 BNE $6306
|
||||
6332- 60 RTS
|
||||
6333- 68 PLA
|
||||
6334- 85 06 STA $06
|
||||
6336- 68 PLA
|
||||
6337- 85 07 STA $07
|
||||
6339- A0 01 LDY #$01
|
||||
633B- B1 06 LDA ($06),Y
|
||||
633D- F0 06 BEQ $6345
|
||||
633F- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
6342- C8 INY
|
||||
6343- D0 F6 BNE $633B
|
||||
6345- 18 CLC
|
||||
6346- 98 TYA
|
||||
6347- 65 06 ADC $06
|
||||
6349- 85 06 STA $06
|
||||
634B- A5 07 LDA $07
|
||||
634D- 69 00 ADC #$00
|
||||
634F- 48 PHA
|
||||
6350- A5 06 LDA $06
|
||||
6352- 48 PHA
|
||||
6353- 60 RTS
|
||||
6354- AD 00 C0 LDA $C000 r:KBD w:CLR80COL
|
||||
6357- 10 FB BPL $6354
|
||||
6359- 29 7F AND #$7F
|
||||
635B- 8D 10 C0 STA $C010 r:KBDSTRB
|
||||
635E- 60 RTS
|
||||
635F- A9 01 LDA #$01
|
||||
6361- 8D B6 AA STA $AAB6
|
||||
6364- 85 76 STA $76
|
||||
6366- 85 33 STA $33
|
||||
6368- 85 06 STA $06
|
||||
636A- 86 07 STX $07
|
||||
636C- A9 FF LDA #$FF
|
||||
636E- 85 D8 STA $D8
|
||||
6370- A0 00 LDY #$00
|
||||
6372- B1 06 LDA ($06),Y
|
||||
6374- 8D 5A 9D STA $9D5A
|
||||
6377- C8 INY
|
||||
6378- B1 06 LDA ($06),Y
|
||||
637A- 8D 5B 9D STA $9D5B
|
||||
637D- 60 RTS
|
||||
637E- 8D 27 60 STA $6027
|
||||
6381- 8E 24 60 STX $6024
|
||||
6384- 8C 25 60 STY $6025
|
||||
6387- A9 00 LDA #$00
|
||||
6389- 8D 23 60 STA $6023
|
||||
638C- AE 27 60 LDX $6027
|
||||
638F- AD 25 60 LDA $6025
|
||||
6392- 20 7D 61 JSR $617D
|
||||
6395- 8D 25 60 STA $6025
|
||||
6398- 8A TXA
|
||||
6399- 18 CLC
|
||||
639A- 6D 25 60 ADC $6025
|
||||
639D- 8D 25 60 STA $6025
|
||||
63A0- A9 FF LDA #$FF
|
||||
63A2- 38 SEC
|
||||
63A3- ED 25 60 SBC $6025
|
||||
63A6- 18 CLC
|
||||
63A7- 6D 24 60 ADC $6024
|
||||
63AA- 8D 24 60 STA $6024
|
||||
63AD- AD 23 60 LDA $6023
|
||||
63B0- 69 00 ADC #$00
|
||||
63B2- 8D 23 60 STA $6023
|
||||
63B5- AC 27 60 LDY $6027
|
||||
63B8- AC 24 60 LDY $6024
|
||||
63BB- AD 23 60 LDA $6023
|
||||
63BE- AE 27 60 LDX $6027
|
||||
63C1- 20 3B 61 JSR $613B
|
||||
63C4- 8C 24 60 STY $6024
|
||||
63C7- 8E 23 60 STX $6023
|
||||
63CA- A9 00 LDA #$00
|
||||
63CC- A2 00 LDX #$00
|
||||
63CE- AC 25 60 LDY $6025
|
||||
63D1- 2C 30 C0 BIT $C030 rw:SPKR
|
||||
63D4- 88 DEY
|
||||
63D5- D0 FD BNE $63D4
|
||||
63D7- AD 24 60 LDA $6024
|
||||
63DA- 38 SEC
|
||||
63DB- E9 01 SBC #$01
|
||||
63DD- 8D 24 60 STA $6024
|
||||
63E0- AD 23 60 LDA $6023
|
||||
63E3- E9 00 SBC #$00
|
||||
63E5- 8D 23 60 STA $6023
|
||||
63E8- B0 E0 BCS $63CA
|
||||
63EA- 90 00 BCC $63EC
|
||||
63EC- 60 RTS
|
||||
63ED- 05 00 ORA $00
|
||||
@@ -1,3 +0,0 @@
|
||||
BLOAD MAKEEXEC
|
||||
CALL -151
|
||||
6000G
|
||||
@@ -1,3 +0,0 @@
|
||||
BLOAD MINIFY
|
||||
CALL -151
|
||||
7000G
|
||||
@@ -1,86 +1,168 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* DEMO.LORES *
|
||||
* DEMO.SPEAKER.ASM *
|
||||
* *
|
||||
* A DEMO OF THE MACROS AND *
|
||||
* SUBROUTINES FOR USING LORES *
|
||||
* GRAPHICS. *
|
||||
* A DEMONSTRATION OF HOW TO *
|
||||
* USE THE VARIOUS MACROS IN *
|
||||
* THE SPEAKER COLLECTION. *
|
||||
* *
|
||||
* AUTHOR: NATHAN RIGGS *
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* AUTHOR: NATHAN RIGGS *
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 03-OCT-2019 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
* DATE: 03-JUN-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** ASSEMBLER DIRECTIVES
|
||||
*
|
||||
CYC AVE
|
||||
EXP OFF
|
||||
TR ON
|
||||
DSK DEMO.SPEAKER
|
||||
OBJ $BFE0
|
||||
ORG $6000
|
||||
OBJ $BFE0
|
||||
*
|
||||
PUT MIN.HEAD.REQUIRED.ASM
|
||||
USE MIN.MAC.REQUIRED.ASM
|
||||
PUT MIN.HEAD.SPEAKER.ASM
|
||||
USE MIN.MAC.SPEAKER.ASM
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* TOP INCLUDES (PUTS, MACROS) *
|
||||
* PLAYING A FREQUENCY *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PUT MIN.HEAD.REQUIRED
|
||||
USE MIN.MAC.REQUIRED
|
||||
USE MAC.SPEAKER
|
||||
PUT HOOKS.SPEAKER
|
||||
** THE PFREQ MACRO PLAYS A FREQUENCY AT THE
|
||||
** SPECIFIED PITCH AND DURATION. NOTE THAT
|
||||
** THIS IS NOT ATTACHED TO PLAYING A SONG
|
||||
** SEQUENCE, NOR DOES IT ACCEPT THE NOTE AND
|
||||
** DURATION OFFSETS MEANT FOR PLAYING SONGS.
|
||||
*
|
||||
PFREQ #195;#141
|
||||
PFREQ #174;#141
|
||||
PFREQ #155;#141
|
||||
PFREQ #146;#141
|
||||
PFREQ #130;#141
|
||||
PFREQ #116;#141
|
||||
PFREQ #103;#141
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PROGRAM MAIN BODY *
|
||||
* PLAYING A TONE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
LDY #1
|
||||
STY ]O
|
||||
:RPT
|
||||
PTONE #OCT1_C;#WHOLE;]O
|
||||
_PRN "C;WHOLE",8D8D
|
||||
_WAIT
|
||||
PTONE #OCT1_D;#WHOLE;]O
|
||||
_PRN "D WHOLE",8D8D
|
||||
_WAIT
|
||||
PTONE #OCT1_E;#WHOLE;]O
|
||||
_PRN "E WHOLE",8D8D
|
||||
_WAIT
|
||||
PTONE #OCT1_F;#WHOLE;]O
|
||||
_PRN "F WHOLE",8D8D
|
||||
_WAIT
|
||||
PTONE #OCT1_G;#WHOLE;]O
|
||||
_PRN "G WHOLE",8D8D
|
||||
_WAIT
|
||||
PTONE #OCT1_A;#WHOLE;]O
|
||||
_PRN "A WHOLE",8D8D
|
||||
_WAIT
|
||||
PTONE #OCT1_B;#WHOLE;]O
|
||||
_PRN "B WHOLE",8D8D
|
||||
_WAIT
|
||||
** THE PTONE MACRO PLAYS A TONE OUTSIDE OF
|
||||
** PLAYING NOTES IN A SONG. THIS USES THE NOTE
|
||||
** AND DURATION OFFSETS NORMALLY USED BY SONG-PLAYING
|
||||
** FUNCTIONS.
|
||||
*
|
||||
INC ]O
|
||||
LDA ]O
|
||||
CMP #5
|
||||
BEQ :EXIT
|
||||
JMP :RPT
|
||||
*
|
||||
:EXIT
|
||||
JMP REENTRY
|
||||
PTONE #NIND_C1;#DIND_W
|
||||
PTONE #NIND_D1;#DIND_W
|
||||
PTONE #NIND_E1;#DIND_W
|
||||
PTONE #NIND_F1;#DIND_W
|
||||
PTONE #NIND_G1;#DIND_W
|
||||
PTONE #NIND_A2;#DIND_W
|
||||
PTONE #NIND_B2;#DIND_W
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* BOTTOM INCLUDES *
|
||||
* PLAYING SONGS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** BOTTOM INCLUDES
|
||||
** THE STMPO MACRO SETS THE TEMPO FOR A SONG. THIS
|
||||
** CHANGES THE DURATIONS OF NOTES AS WELL.
|
||||
*
|
||||
PUT MIN.LIB.REQUIRED
|
||||
STMPO #$09
|
||||
*
|
||||
** INDIVIDUAL SUBROUTINE INCLUDES
|
||||
** THE SSONG MACRO SETS THE ADDRESS OF THE SONG TO
|
||||
** BE PLAYED.
|
||||
*
|
||||
PUT SUB.PLAYTONE
|
||||
SSONG #SCALE
|
||||
*
|
||||
]O DB #5
|
||||
** THE PNOTE MACRO PLAYS THE NOTE CURRENTLY INDEXED
|
||||
** IN A SONG SET BY THE SSONG MACRO.
|
||||
*
|
||||
PNOTE
|
||||
*
|
||||
** THE NEXTN ADVANCES THE SONG BY A SINGLE NOTE.
|
||||
*
|
||||
NEXTN
|
||||
PNOTE
|
||||
NEXTN
|
||||
PNOTE
|
||||
NEXTN
|
||||
PNOTE
|
||||
NEXTN
|
||||
PNOTE
|
||||
NEXTN
|
||||
PNOTE
|
||||
NEXTN
|
||||
PNOTE
|
||||
NEXTN
|
||||
*
|
||||
** THE PREVN MACRO MOVES THE SONG NOTE POINTER ONE
|
||||
** NOTE BACKWARDS.
|
||||
*
|
||||
PREVN
|
||||
PNOTE
|
||||
PREVN
|
||||
PNOTE
|
||||
PREVN
|
||||
PNOTE
|
||||
PREVN
|
||||
PNOTE
|
||||
PREVN
|
||||
PNOTE
|
||||
PREVN
|
||||
PNOTE
|
||||
PREVN
|
||||
PNOTE
|
||||
*
|
||||
** THE FFWRD MACRO AND THE REWND MACRO MOVE THE SONG
|
||||
** POINTER A SPECIFIED NUMBER OF NOTES FORWARDS OR
|
||||
** BACKWARD.
|
||||
*
|
||||
FFWRD #2
|
||||
PNOTE
|
||||
REWND #2
|
||||
PNOTE
|
||||
*
|
||||
** THE RSTRT MACRO SETS THE NOTE INDEX OF A SONG
|
||||
** BACK TO THE FIRST NOTE.
|
||||
*
|
||||
RSTRT
|
||||
*
|
||||
** THE PSONG MACRO PLAYS A SONG FROM BEGINNING TO END.
|
||||
*
|
||||
PSONG
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PLAYING SOUND EFFECTS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** THE SFX MACRO PLAYS ONE OF A NUMBER OF DIFFERENT
|
||||
** STANDARDIZED SOUND EFFECTS. WHILE THE SELECTION IS
|
||||
** SMALL NOW, MORE WILL BE ADDED IN A FUTURE DEDICATED
|
||||
** UPDATE TO THE SPEAKER COLLECTION.
|
||||
*
|
||||
SFX #0;#10;#0
|
||||
SFX #1;#1;#160
|
||||
SFX #2;#1;#176
|
||||
SFX #3;#12;#6
|
||||
*
|
||||
JSR $3D0
|
||||
*
|
||||
PUT MIN.LIB.REQUIRED.ASM
|
||||
PUT MIN.SUB.PLAYNOTE.ASM
|
||||
PUT MIN.SUB.SOUNDFX.ASM
|
||||
*
|
||||
SCALE DFB NIND_D1S,DIND_W
|
||||
DFB NIND_C1,DIND_D8
|
||||
DFB NIND_D1,DIND_D8
|
||||
DFB NIND_D1S,DIND_D8
|
||||
DFB NIND_E1,DIND_D8
|
||||
DFB NIND_F1,DIND_H
|
||||
DFB NIND_D1S,DIND_H
|
||||
DFB NIND_D1,DIND_D8
|
||||
DFB NIND_D1S,DIND_D8
|
||||
DFB NIND_F1,DIND_D8
|
||||
DFB NIND_G1S,DIND_D8
|
||||
DFB NIND_G1,DIND_W
|
||||
DFB NIND_END,NIND_END
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* HEAD.SPEAKER.ASM *
|
||||
* *
|
||||
* THIS HEADER FILE HOLDS A *
|
||||
* NUMBER OF DIFFERENT HOOKS, *
|
||||
* VECTORS, SUBROUTINES AND *
|
||||
* MEMORY LOCATIONS FOR USE BY *
|
||||
* THE SPEAKER COLLECTION. *
|
||||
* *
|
||||
* MANY OF THESE INDIRECTLY *
|
||||
* COME FROM DON LANCASTER'S *
|
||||
* /ASSEMBLY COOKBOOK FOR THE *
|
||||
* APPLE II/IIE/ AND THE FAMOUS *
|
||||
* RED BOOK. *
|
||||
* *
|
||||
* AUTHOR: NATHAN RIGGS *
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 03-JUN-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
* *
|
||||
* SIZE: 198 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
SPKR EQU $C030 ; SPEAKER SOFT SWITCH
|
||||
TAPEOUT EQU $C020 ; TAPE OUT SOFT SWITCH; UNUSED IN IIE
|
||||
NWAIT EQU $FCA8 ; MONITOR WAIT SUBROUTINE
|
||||
*
|
||||
** THE FOLLOWING IS A LIST OF INDICES FOR
|
||||
** EACH NOTE IN THE NOTE TABLE.
|
||||
*
|
||||
NIND_END EQU 000 ; END OF SONG, USE TWICE
|
||||
NIND_A1 EQU 001 ; NOTE A BELOW MID C
|
||||
NIND_A1S EQU 002 ; A#
|
||||
NIND_B1F EQU 003 ; B FLAT
|
||||
NIND_B1 EQU 004 ; B
|
||||
NIND_C1 EQU 005 ; C
|
||||
NIND_C1S EQU 006 ; C#
|
||||
NIND_D1F EQU 007 ; D FLAT
|
||||
NIND_D1 EQU 008 ; D
|
||||
NIND_D1S EQU 009 ; D#
|
||||
NIND_E1F EQU 010 ; E FLAT
|
||||
NIND_E1 EQU 011 ; E
|
||||
NIND_F1 EQU 012 ; F
|
||||
NIND_F1S EQU 013 ; F#
|
||||
NIND_G1F EQU 014 ; G FLAT
|
||||
NIND_G1 EQU 015 ; G
|
||||
NIND_G1S EQU 016 ; G#
|
||||
NIND_A1F EQU 017 ; A FLAT
|
||||
NIND_A2 EQU 018 ; NOTE A ABOVE MID C
|
||||
NIND_A2S EQU 019 ; A#
|
||||
NIND_B2F EQU 020 ; B FLAT
|
||||
NIND_B2 EQU 021 ; B
|
||||
NIND_C2 EQU 022 ; C
|
||||
NIND_C2S EQU 023 ; C#
|
||||
NIND_D2F EQU 024 ; D FLAT
|
||||
NIND_D2 EQU 025 ; D
|
||||
NIND_D2S EQU 026 ; D#
|
||||
NIND_E2F EQU 027 ; E FLAT
|
||||
NIND_E2 EQU 028 ; E
|
||||
NIND_F2 EQU 029 ; F
|
||||
NIND_F2S EQU 030 ; F#
|
||||
NIND_G2F EQU 031 ; G FLAT
|
||||
NIND_G2 EQU 032 ; G
|
||||
NIND_G2S EQU 033 ; G#
|
||||
NIND_A2F EQU 034 ; A FLAT
|
||||
NIND_A3 EQU 035 ; SECOND A ABOVE MID C
|
||||
NIND_R EQU 036 ; SILENT OR REST
|
||||
*
|
||||
** THE FOLLOWING IS A LIST OF INDICES TO
|
||||
** THE NOTE DURATIONS IN THE DURATION TABLE
|
||||
*
|
||||
DIND_64 EQU 00 ; 64TH NOTE
|
||||
DIND_32 EQU 01 ; 32ND NOTE
|
||||
DIND_16 EQU 02 ; 16TH NOTE
|
||||
DIND_D16 EQU 03 ; DOTTED 16TH
|
||||
DIND_8 EQU 04 ; 8TH NOTE
|
||||
DIND_D8 EQU 05 ; DOTTED 8TH
|
||||
DIND_4 EQU 06 ; 1/4 NOTE
|
||||
DIND_D4 EQU 07 ; DOTTED 1/4
|
||||
DIND_H EQU 08 ; HALF NOTE
|
||||
DIND_DH EQU 09 ; DOTTED HALF NOTE
|
||||
DIND_W EQU 10 ; WHOLE NOTE
|
||||
*
|
||||
JMP _SKIPSPKR
|
||||
*
|
||||
** THE FOLLOWING TABLE OF NOTES STORES THE
|
||||
** "MAGIC" NUMBERS FOR EACH NOTE FREQUENCY
|
||||
*
|
||||
NOTETBL
|
||||
*
|
||||
NOTE_END DFB $00 ; {0C1B} END OF SONG, USE TWICE
|
||||
NOTE_A1 DFB 232 ; {0C1B} NOTE A BELOW MID C
|
||||
NOTE_A1S DFB 219 ; {0C1B} A#
|
||||
NOTE_B1F DFB 219 ; {0C1B} B FLAT
|
||||
NOTE_B1 DFB 207 ; {0C1B} B
|
||||
NOTE_C1 DFB 195 ; {0C1B} C
|
||||
NOTE_C1S DFB 184 ; {0C1B} C#
|
||||
NOTE_D1F DFB 184 ; {0C1B} D FLAT
|
||||
NOTE_D1 DFB 174 ; {0C1B} D
|
||||
NOTE_D1S DFB 164 ; {0C1B} D#
|
||||
NOTE_E1F DFB 164 ; {0C1B} E FLAT
|
||||
NOTE_E1 DFB 155 ; {0C1B} E
|
||||
NOTE_F1 DFB 146 ; {0C1B} F
|
||||
NOTE_F1S DFB 138 ; {0C1B} F#
|
||||
NOTE_G1F DFB 138 ; {0C1B} G FLAT
|
||||
NOTE_G1 DFB 130 ; {0C1B} G
|
||||
NOTE_G1S DFB 123 ; {0C1B} G#
|
||||
NOTE_A1F DFB 123 ; {0C1B} A FLAT
|
||||
NOTE_A2 DFB 116 ; {0C1B} NOTE A ABOVE MID C
|
||||
NOTE_A2S DFB 110 ; {0C1B} A#
|
||||
NOTE_B2F DFB 110 ; {0C1B} B FLAT
|
||||
NOTE_B2 DFB 103 ; {0C1B} B
|
||||
NOTE_C2 DFB 98 ; {0C1B} C
|
||||
NOTE_C2S DFB 92 ; {0C1B} C#
|
||||
NOTE_D2F DFB 92 ; {0C1B} D FLAT
|
||||
NOTE_D2 DFB 87 ; {0C1B} D
|
||||
NOTE_D2S DFB 82 ; {0C1B} D#
|
||||
NOTE_E2F DFB 82 ; {0C1B} E FLAT
|
||||
NOTE_E2 DFB 78 ; {0C1B} E
|
||||
NOTE_F2 DFB 73 ; {0C1B} F
|
||||
NOTE_F2S DFB 69 ; {0C1B} F#
|
||||
NOTE_G2F DFB 69 ; {0C1B} G FLAT
|
||||
NOTE_G2 DFB 65 ; {0C1B} G
|
||||
NOTE_G2S DFB 61 ; {0C1B} G#
|
||||
NOTE_A2F DFB 61 ; {0C1B} A FLAT
|
||||
NOTE_A3 DFB 58 ; {0C1B} SECOND A ABOVE MID C
|
||||
NOTE_R DFB $FF ; {0C1B} SILENT OR REST
|
||||
*
|
||||
** THE FOLLOWING TABLE HOLDS THE DURATION
|
||||
** VALUES FOR A NOTE. THESE ARE SET BY THE
|
||||
** SETTEMPO SUBROUTINE.
|
||||
*
|
||||
DURTBL
|
||||
*
|
||||
DUR_64 DFB 02 ; {0C1B} 64TH NOTE -- TEMPO / 4
|
||||
DUR_32 DFB 04 ; {0C1B} 32ND NOTE -- TEMPO / 2
|
||||
DUR_16 DFB 09 ; {0C1B} 16TH NOTE -- TEMP0 * 1
|
||||
DUR_D16 DFB 13 ; {0C1B} DOTTED 16TH -- S/2+S
|
||||
DUR_8 DFB 18 ; {0C1B} 8TH NOTE -- TEMPO * 2
|
||||
DUR_D8 DFB 24 ; {0C1B} DOTTED 8TH -- TEMPO * 3
|
||||
DUR_4 DFB 32 ; {0C1B} 1/4 NOTE -- TEMPO * 4
|
||||
DUR_D4 DFB 54 ; {0C1B} DOTTED 1/4 -- TEMPO * 6
|
||||
DUR_H DFB 72 ; {0C1B} HALF NOTE -- TEMPO * 8
|
||||
DUR_DH DFB 108 ; {0C1B} DOTTED HALF NOTE -- TEMPO * 12
|
||||
DUR_W DFB 144 ; {0C1B} WHOLE NOTE -- TEMPO * 16
|
||||
*
|
||||
TEMPO DFB $09 ; {0C1B} MASTER TEMPO CONTROL ($0F MAX)
|
||||
TEMPMUL DFB $80 ; {0C1B} TEMPO MULT (00=X1 $80=X2 $40=X4)
|
||||
NPAUSE DFB $48 ; {0C1B} INTERNOTE PAUSE TIME
|
||||
*
|
||||
** THE FOLLOWING ARE USED BY THE REDTONE PLAYER.
|
||||
** THESE ARE SET BEFORE PLAYING EACH NOTE.
|
||||
*
|
||||
NOTEP DFB 00,00 ; {0C2B} CURRENT ADDRESS IN SONG
|
||||
DURAT DFB $72 ; {0C1B} DURATION GOES HERE
|
||||
DURCNT DFB $72 ; {0C1B} GETS COUNTED HERE
|
||||
DURMUL DFB $80 ; {0C1B} DURATION MULTIPLIER
|
||||
PITCH DFB $72 ; {0C1B} PITCH GOES HERE
|
||||
*
|
||||
SONGLOC DFB 00,00 ; {0C2B} LOW,HIGH OF SONG ADDRESS
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* REDTONE *
|
||||
* *
|
||||
* PLAY A SQUARE WAVE AT THE *
|
||||
* GIVEN FREQUENCY AND FOR A *
|
||||
* GIVEN DURATION. NOTE THAT *
|
||||
* THIS IS A VERY COMMON *
|
||||
* SUBROUTINE, AND I DID NOT *
|
||||
* WRITE IT. THIS COMES FROM *
|
||||
* THE FAMOUS APPLE II REDBOOK, *
|
||||
* WITH SOME MINOR MODIFICATION *
|
||||
* BY DON LANCASTER. *
|
||||
* *
|
||||
* INPUT *
|
||||
* *
|
||||
* NONE *
|
||||
* *
|
||||
* DESTROY: NZCIDV *
|
||||
* ^^^ ^ *
|
||||
* *
|
||||
* CYCLES: 194+ *
|
||||
* SIZE: 51 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
REDTONE PHA ; {3C1B} SAVE REGISTERS
|
||||
TYA ; {2C1B}
|
||||
PHA ; {3C1B}
|
||||
TXA ; {2C1B}
|
||||
PHA ; {3C1B}
|
||||
LDA DURAT ; {4C3B} MOVE DURATION VALUE TO
|
||||
STA DURCNT ; {4C3B} COUNTABLE LOCATION
|
||||
LDY #$00 ; {3C2B} INIT FAST DURATION COUNTER
|
||||
TYA ; {2C1B} INIT DURATION MULTIPLIER
|
||||
:WHAP LDX PITCH ; {4C3B} GET PITCH VALUE
|
||||
CPX #$FF ; {3C2B} IS IT SILENT?
|
||||
BEQ :LOCKX ; {3C2B} YES, KEEP IT SILENT
|
||||
BIT SPKR ; {3C2B} WHAP SPEAKER
|
||||
:NOWHAP DEY ; {2C1B} DECREMENT FAST DURATION COUNT
|
||||
BNE :NOC5 ; {3C2B} IF NO BORROW
|
||||
CLC ; {2C1B}
|
||||
ADC DURMUL ; {4C3B} DURATION MULTIPLIER
|
||||
BNE :NOC5 ; {3C2B} IGNORE ALL BUT ZERO RESULTS
|
||||
DEC DURCNT ; {6C3B} DECREMENT SLOW DURATION
|
||||
BEQ :EXITRED ; {3C2B} IF FINISHED
|
||||
:NOC5 DEX ; {2C1B} DECREMENT PITCH VALUE
|
||||
BNE :NOWHAP ; {3C2B} PITCH NOT DONE
|
||||
BEQ :WHAP ; {3C2B} PITCH DONE, ALWAYS TAKEN
|
||||
:LOCKX INX ; {2C1B} TRAP X TO $FF
|
||||
BEQ :NOWHAP ; {3C2B} ALWAYS TAKEN
|
||||
:EXITRED PLA ; {3C1B} RESTORE REGISTERS
|
||||
TAX ; {2C1B}
|
||||
PLA ; {3C1B}
|
||||
TAY ; {2C1B}
|
||||
PLA ; {3C1B}
|
||||
RTS ; {6C1B} AND EXIT
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* SETTEMPO *
|
||||
* *
|
||||
* SETS THE TEMPO, INCLUDING *
|
||||
* ALTERING THE DURATIONS OF *
|
||||
* NOTES. *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* .A = TEMPO *
|
||||
* *
|
||||
* DESTROY: NZCIDV *
|
||||
* ^^^ ^ *
|
||||
* *
|
||||
* CYCLES: 230 *
|
||||
* SIZE: 84 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
SETTEMPO
|
||||
STA TEMPO ; {4C3B} STORE TEMPO
|
||||
LSR ; {2C1B} DIVIDE BY TWO
|
||||
STA DUR_32 ; {4C3B} = TEMPO / 2
|
||||
LSR ; {2C1B} DIVIDE BY 2 AGAIN
|
||||
STA DUR_64 ; {4C3B} = TEMPO / 4
|
||||
LDA TEMPO ; {4C3B}
|
||||
STA DUR_16 ; {4C3B} = TEMPO
|
||||
LSR ; {2C1B} DIV BY 2
|
||||
CLC ; {2C1B}
|
||||
ADC TEMPO ; {4C3B} ADD 16TH
|
||||
STA DUR_D16 ; {4C3B} = 1.5 * 16TH
|
||||
LDA TEMPO ; {4C3B}
|
||||
ASL ; {2C1B} MUL BY 2
|
||||
STA DUR_8 ; {4C3B} = TEMPO * 2
|
||||
LSR ; {2C1B} DIV BY 2
|
||||
CLC ; {2C1B}
|
||||
ADC DUR_8 ; {4C3B} ADD 8TH
|
||||
STA DUR_D8 ; {4C3B} = 1.5 * 8TH
|
||||
LDA TEMPO ; {4C3B}
|
||||
ASL ; {2C1B} MUL BY 2
|
||||
ASL ; {2C1B} BY 4
|
||||
STA DUR_4 ; {4C3B} = TEMPO * 4
|
||||
LSR ; {2C1B} DIV BY 2
|
||||
CLC ; {2C1B}
|
||||
ADC DUR_4 ; {4C3B} ADD 1/4 NOTE
|
||||
STA DUR_D4 ; {4C3B} = 1.5 * 1/4TH NOTE
|
||||
LDA TEMPO ; {4C3B}
|
||||
ASL ; {2C1B} MUL BY TWO
|
||||
ASL ; {2C1B} BY 4
|
||||
ASL ; {2C1B} BY 8
|
||||
STA DUR_H ; {4C3B} = TEMPO * 8
|
||||
LSR ; {2C1B} DIV BY 2
|
||||
CLC ; {2C1B}
|
||||
ADC DUR_H ; {4C3B} ADD HALF NOTE
|
||||
STA DUR_DH ; {4C3B} = 1.5 * HALF NOTE
|
||||
LDA TEMPO ; {4C3B}
|
||||
ASL ; {2C1B} MUL BY 2
|
||||
ASL ; {2C1B} BY 4
|
||||
ASL ; {2C1B} BY 8
|
||||
ASL ; {2C1B} BY 16
|
||||
STA DUR_W ; {4C3B} = TEMPO * 16
|
||||
RTS ; {6C1B}
|
||||
*
|
||||
_SKIPSPKR
|
||||
*
|
||||
@@ -1,93 +0,0 @@
|
||||
SPKR EQU $C030
|
||||
*
|
||||
** THESE NOTE VALUES ARE IN OCTAVE ONE.
|
||||
** ROUGHLY DIVIDE IN HALF TO GO UP AN OCTAVE.
|
||||
*
|
||||
OCT1_C EQU $FF ; C (255)
|
||||
OCT1_CS EQU $F1 ; C# (241)
|
||||
OCT1_DF EQU $F1 ; Db (241)
|
||||
OCT1_D EQU $E3 ; D (227)
|
||||
OCT1_DS EQU $D6 ; D# (214)
|
||||
OCT1_EF EQU $D6 ; Eb (214)
|
||||
OCT1_E EQU $CA ; E (202)
|
||||
OCT1_F EQU $BF ; F (191)
|
||||
OCT1_FS EQU $B4 ; F# (180)
|
||||
OCT1_GF EQU $B4 ; Gb (180)
|
||||
OCT1_G EQU $AA ; G (170)
|
||||
OCT1_GS EQU $A1 ; G# (161)
|
||||
OCT1_AF EQU $A1 ; Ab (161)
|
||||
OCT1_A EQU $98 ; A (152)
|
||||
OCT1_AS EQU $8F ; A# (143)
|
||||
OCT1_BF EQU $8F ; Bb (143)
|
||||
OCT1_B EQU $87 ; B (135)
|
||||
OCT1_PAU EQU $0 ; NO SOUND
|
||||
*
|
||||
*
|
||||
** THESE REPRESENT THE NOTE DURATION VALUES
|
||||
*
|
||||
WHOLE EQU 216 ; WHOLE NOTE (216*5)
|
||||
HALF EQU 108 ; HALF NOTE DURATION (108*5)
|
||||
QUARTER EQU 54 ; QUARTER NOTE (54*5)
|
||||
SIXTNTH EQU 27 ; 1/16 NOTE (27*5)
|
||||
THRTY2ND EQU 14 ; 1/32 NOTE (14*5)
|
||||
SIXT4TH EQU 7 ; 1/64 NOTE (7*5)
|
||||
*
|
||||
JMP _SPKEXIT
|
||||
*
|
||||
MULOCT
|
||||
STA ]MUL1
|
||||
STY ]MUL1+1
|
||||
STX ]MUL2
|
||||
LDA #0 ; CLEAR REGISTERS
|
||||
TAY
|
||||
TAX
|
||||
STA ]MUL1+1 ; CLEAR HIBYTE
|
||||
BEQ :GOLOOP
|
||||
:DOADD
|
||||
CLC ; CLEAR CARRY
|
||||
ADC ]MUL1 ; ADD MULTIPLIER
|
||||
TAX ; HOLD IN .Y
|
||||
TYA ; XFER .X TO .A
|
||||
ADC ]MUL1+1 ; ADD MULTIPLIER HIBYTE
|
||||
TAY ; HOLD BACK IN .X
|
||||
TXA ; MOVE LOBYTE INTO .A
|
||||
:LP
|
||||
ASL ]MUL1 ; SHIFT LEFT
|
||||
ROL ]MUL1+1 ; ROLL HIBYTE
|
||||
:GOLOOP
|
||||
LSR ]MUL2 ; SHIFT MULTIPLIER
|
||||
BCS :DOADD ; IF 1 SHIFTED INTO CARRY, ADD AGAIN
|
||||
BNE :LP ; OTHERWISE, LOP
|
||||
STX ]MUL1 ; STORE LOBYTE
|
||||
STY ]MUL2 ; STORE HIBYTE
|
||||
LDA ]MUL2 ; LOBYTE TO .A
|
||||
LDX ]MUL1 ; HIBYTE TO .X
|
||||
LDY ]MUL1+1
|
||||
RTS
|
||||
]MUL1 DS 2,0
|
||||
]MUL2 DS 2,0
|
||||
*
|
||||
*
|
||||
*
|
||||
]DVEND DS 2,0
|
||||
]DVSOR DS 2,0
|
||||
DIVOCT
|
||||
LDY #0
|
||||
STY ]DVEND+1
|
||||
STY ]DVSOR+1
|
||||
STX ]DVEND ; .X HOLDS DIVIDEND
|
||||
STA ]DVSOR ; .A HOLDS DIVISOR
|
||||
LDA #$00 ; CLEAR ACCUMULATOR
|
||||
LDX #8 ; COUNTER
|
||||
ASL ]DVSOR ; SHIFT LEFT DIVISOR
|
||||
:L1 ROL ; ROTATE LEFT .A
|
||||
CMP ]DVEND ; COMPARE TO DIVIDEND
|
||||
BCC :L2 ; IF NEXT BIT = 0, BRANCH :L2
|
||||
SBC ]DVEND ; OTHERWISE, SUBTRACT DIVIDEND
|
||||
:L2 ROL ]DVSOR ; ROTATE LEFT DIVISOR
|
||||
DEX ; DECREMENT COUNTER
|
||||
BNE :L1 ; IF > 0, LOOP
|
||||
TAX ; REMAINDER IN .X
|
||||
LDA ]DVSOR ; RESULT IN .A
|
||||
RTS
|
||||
_SPKEXIT
|
||||
@@ -1,99 +1,326 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* MAC.SPEAKER *
|
||||
* *
|
||||
* THIS IS A MACRO LIBRARY FOR *
|
||||
* THE SPEAKER COLLECTION. *
|
||||
* THESE ARE REQUIRED FOR MUCH *
|
||||
* OF THE COLLECTION TO WORK. *
|
||||
* *
|
||||
* AUTHOR: NATHAN RIGGS *
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 03-JUN-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
* *
|
||||
* SUBROUTINES USED *
|
||||
* *
|
||||
* *
|
||||
* LIST OF MACROS *
|
||||
* *
|
||||
* STMPO : SET TEMPO *
|
||||
* PNOTE : PLAY SONG NOTE *
|
||||
* SSONG : SET SONG ADDRESS *
|
||||
* NEXTN : MOVE TO NEXT NOTE *
|
||||
* PREVN : MOVE TO PREV NOTE *
|
||||
* RSTRT : MOVE TO FIRST NOTE *
|
||||
* FFRWD : JUMP AHEAD X NOTES *
|
||||
* REWND : JUMP BACK X NOTES *
|
||||
* PTONE : PLAY A TONE--NO SONG *
|
||||
* PFREQ : PLAY A FREQUENCY *
|
||||
* PSONG : PLAY A WHOLE SONG *
|
||||
* SFX : PLAY SOUND EFFECT *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* STMPO *
|
||||
* *
|
||||
* SET THE PLAYBACK TEMPO. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* ]1 = TEMPO ($0F MAX) *
|
||||
* *
|
||||
* CYCLES: 240 *
|
||||
* SIZE: 6 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
STMPO MAC
|
||||
LDA ]1 ; {4C3B}
|
||||
JSR SETTEMPO ; {236C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PNOTE *
|
||||
* *
|
||||
* PLAY NOTE ON SPEAKER *
|
||||
* PLAY THE NOTE THAT IS BEING *
|
||||
* POINTED TO IN THE SONG. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NONE *
|
||||
* *
|
||||
* CYCLES: 172+ *
|
||||
* SIZE: 3 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PNOTE MAC
|
||||
JSR PLAYNOTE {172C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* SSONG *
|
||||
* *
|
||||
* SET THE SONG TO BE PLAYED. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* ]1 = SONG ADDRESS *
|
||||
* *
|
||||
* CYCLES: 48 *
|
||||
* SIZE: 36 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
SSONG MAC
|
||||
IF #=]1
|
||||
LDA ]1/$100 ; {4C3B}
|
||||
STA SONGLOC+1 ; {4C3B}
|
||||
LDA ]1 ; {4C3B}
|
||||
STA SONGLOC ; {4C3B}
|
||||
ELSE
|
||||
LDA ]1+1 ; {4C3B}
|
||||
STA SONGLOC+1 ; {4C3B}
|
||||
LDA ]1 ; {4C3B}
|
||||
STA SONGLOC ; {4C3B}
|
||||
FIN
|
||||
LDA SONGLOC ; {4C3B}
|
||||
STA NOTEP ; {4C3B}
|
||||
LDA SONGLOC+1 ; {4C3B}
|
||||
STA NOTEP+1 ; {4C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* NEXTN *
|
||||
* *
|
||||
* MOVE TO THE NEXT NOTE IN THE *
|
||||
* CURRENT SONG. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NONE *
|
||||
* *
|
||||
* CYCLES: 24 *
|
||||
* SIZE: 17 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
NEXTN MAC
|
||||
LDA NOTEP ; {4C3B}
|
||||
CLC ; {2C1B}
|
||||
ADC #2 ; {3C2B}
|
||||
STA NOTEP ; {4C3B}
|
||||
LDA NOTEP+1 ; {4C3B}
|
||||
ADC #0 ; {3C2B}
|
||||
STA NOTEP+1 ; {4C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PREVN *
|
||||
* *
|
||||
* MOVE TO THE PREVIOUS NOTE *
|
||||
* IN THE CURRENT SONG. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NONE *
|
||||
* *
|
||||
* CYCLES: 24 *
|
||||
* SIZE: 17 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PREVN MAC
|
||||
LDA NOTEP ; {4C3B}
|
||||
SEC ; {2C1B}
|
||||
SBC #2 ; {3C2B}
|
||||
STA NOTEP ; {4C3B}
|
||||
LDA NOTEP+1 ; {4C3B}
|
||||
SBC #0 ; {3C2B}
|
||||
STA NOTEP+1 ; {4C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* RSTRT *
|
||||
* *
|
||||
* RESET THE SONG POINTER TO *
|
||||
* POINT TO THE FIRST NOTE. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NONE *
|
||||
* *
|
||||
* CYCLES: 16 *
|
||||
* SIZE: 2 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
RSTRT MAC
|
||||
LDA SONGLOC ; {4C3B}
|
||||
STA NOTEP ; {4C3B}
|
||||
LDA SONGLOC+1 ; {4C3B}
|
||||
STA NOTEP+1 ; {4C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* FFWRD *
|
||||
* *
|
||||
* FAST FORWARD THE GIVEN # OF *
|
||||
* SONG NOTES. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* ]1 = NUMBER OF NOTES *
|
||||
* *
|
||||
* CYCLES: 27 *
|
||||
* SIZE: 19 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
FFWRD MAC
|
||||
LDA ]1 ; {4C3B}
|
||||
ASL ; {2C1B}
|
||||
CLC ; {2C1B}
|
||||
ADC NOTEP ; {4C3B}
|
||||
STA NOTEP ; {4C3B}
|
||||
LDA NOTEP+1 ; {4C3B}
|
||||
ADC #0 ; {3C2B}
|
||||
STA NOTEP+1 ; {4C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* REWND *
|
||||
* *
|
||||
* REWIND BY THE GIVEN # OF *
|
||||
* SONG NOTES. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* ]1 = NUMBER OF NOTES *
|
||||
* *
|
||||
* CYCLES: 35 *
|
||||
* SIZE: 25 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
REWND MAC
|
||||
LDA ]1 ; {4C3B}
|
||||
ASL ; {2C1B}
|
||||
STA SCRATCH ; {4C3B}
|
||||
LDA NOTEP ; {4C3B}
|
||||
SEC ; {2C1B}
|
||||
SBC SCRATCH ; {4C3B}
|
||||
STA NOTEP ; {4C3B}
|
||||
LDA NOTEP+1 ; {4C3B}
|
||||
SBC #0 ; {3C2B}
|
||||
STA NOTEP+1 ; {4C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PTONE *
|
||||
* *
|
||||
* PLAY SPECIFIC TONW ON SPKR *
|
||||
* PLAY A TONE SEPARATELY FROM *
|
||||
* BEING INCLUDED IN A SONG. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* ]1 = NOTE CODE *
|
||||
* ]2 = DURATION CODE *
|
||||
* *
|
||||
* CYCLES: 220+ *
|
||||
* SIZE: 18 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PTONE MAC
|
||||
STY SCRATCH
|
||||
LDY ]1
|
||||
LDX ]2
|
||||
LDA ]3
|
||||
JSR PLAYTONE
|
||||
LDY SCRATCH
|
||||
LDX ]1 ; {4C3B}
|
||||
LDA NOTETBL,X ; {5C3B}
|
||||
STA PITCH ; {4C3B}
|
||||
LDX ]2 ; {4C3B}
|
||||
LDA DURTBL,X ; {5C3B}
|
||||
STA DURAT ; {4C3B}
|
||||
JSR REDTONE ; {194C0B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PSINT *
|
||||
* PFREQ *
|
||||
* *
|
||||
* PLAY SONG IN CYCLE INTERVALS *
|
||||
* PLAY A SQUARE WAVE FREQUENCY *
|
||||
* APART FROM ANY SONG. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* ]1 = FREQUENCY BYTE *
|
||||
* ]2 = DURATION BYTE *
|
||||
* *
|
||||
* CYCLES: 214+ *
|
||||
* SIZE: 15 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PSNG *
|
||||
* *
|
||||
* PLAY SONG FROM START TO END *
|
||||
* WITH NO CYCLE INTERVALS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
PFREQ MAC
|
||||
LDA ]1 ; {4C3B}
|
||||
STA PITCH ; {4C3B}
|
||||
LDA ]2 ; {4C3B}
|
||||
STA DURAT ; {4C3B}
|
||||
JSR REDTONE ; {194C3B}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PAUSNG *
|
||||
* PSONG *
|
||||
* *
|
||||
* PAUSE PLAYING OF SONG, EVEN *
|
||||
* IF PLAYING BY CYCLE INTERVAL *
|
||||
* PLAY AN ENTIRE SONG SERIES. *
|
||||
* *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NONE *
|
||||
* *
|
||||
* CYCLES: 226+ *
|
||||
* SIZE: 42 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* RESSNG *
|
||||
* *
|
||||
* RESUME SONG PLAYING *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* SETSNG *
|
||||
* *
|
||||
* SET ADDRESS WHERE SONG *
|
||||
* STRING TO BE READ IS LOCATED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* STPSNG *
|
||||
* *
|
||||
* STOP SONG FROM PLAYING AND *
|
||||
* RESET INDEX TO BEGINNING *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
PSONG MAC
|
||||
]LP1
|
||||
PNOTE ; {172C3B}
|
||||
LDA NOTEP ; {4C3B}
|
||||
STA ADDR4 ; {4C3B}
|
||||
LDA NOTEP+1 ; {4C3B}
|
||||
STA ADDR4+1 ; {4C3B}
|
||||
LDY #0 ; {3C2B}
|
||||
LDA (ADDR4),Y ; {5C3B}
|
||||
BEQ ]EXITSONG ; {3C2B}
|
||||
NEXTN ; {24C17B}
|
||||
JMP ]LP1 ; {3C3B}
|
||||
]EXITSONG
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* SFX *
|
||||
* *
|
||||
* PLAY A PRESET SOUND EFFECT *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* SPDSNG *
|
||||
* PLAY A NUMBER OF PREMADE *
|
||||
* SOUND EFFECTS. MANY OF THESE *
|
||||
* ALLOW FOR SOME TONAL CONTROL *
|
||||
* *
|
||||
* INCREASE OR DECREASE SONG *
|
||||
* PLAYING SPEED. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* OCTSNG *
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* INCREASE OR DECREASE SONG *
|
||||
* OR NOTE OCTAVE. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PCHORD *
|
||||
* ]1 = SOUND EFFECT TO PLAY *
|
||||
* ]2 = FIRST VARIABLE *
|
||||
* ]3 = SECOND VARIABLE *
|
||||
* *
|
||||
* PLAY AN ARPEGGIO CHORD. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* SPKENV *
|
||||
* *
|
||||
* SET THE INSTRUMENT TO PLAY *
|
||||
* THE SONG FROM A LIMITED SET *
|
||||
* OF PREMADE TIMBRES. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* TWANG *
|
||||
* CYCLES: 1962 (NOT ACCURATE) *
|
||||
* SIZE: 18 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
SFX MAC
|
||||
LDA ]1 ; {4C3B}
|
||||
STA BPAR1 ; {3C2B}
|
||||
LDA ]2 ; {4C3B}
|
||||
STA BPAR2 ; {3C2B}
|
||||
LDA ]3 ; {4C3B}
|
||||
STA BPAR3 ; {3C2B}
|
||||
JSR SOUNDFX ; {1941C3B}
|
||||
<<<
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
JUMPTBL JMP MAIN_START
|
||||
|
||||
DS 32
|
||||
VARTAB DS 20
|
||||
RETLEN DS 1
|
||||
RETURN DS 256
|
||||
ADDR1 EQU $06
|
||||
ADDR2 EQU $08
|
||||
ADDR3 EQU $EB
|
||||
ADDR4 EQU $ED
|
||||
SCRATCH EQU $19
|
||||
SCRATCH2 EQU $1E
|
||||
RETADR EQU $FE
|
||||
RESULT EQU $FA
|
||||
RESULT2 EQU $FC
|
||||
WPAR1 EQU $FA
|
||||
WPAR2 EQU $FC
|
||||
WPAR3 EQU $FE
|
||||
BPAR1 EQU $EF
|
||||
BPAR2 EQU $E3
|
||||
BPAR3 EQU $1E
|
||||
BPAR4 EQU $19
|
||||
REENTRY EQU $3D0
|
||||
MAIN_START
|
||||
@@ -1,125 +0,0 @@
|
||||
]RIGHT DS 1
|
||||
]LEFT DS 1
|
||||
]LENGTH DS 1
|
||||
]A DS 1
|
||||
]X DS 1
|
||||
]Y DS 1
|
||||
]C DS 1
|
||||
]Z DS 1
|
||||
]N DS 1
|
||||
]O DS 1
|
||||
]HEXTAB ASC "0123456789ABCDEF"
|
||||
]COUT EQU $FDF0
|
||||
]KYBD EQU $C000
|
||||
]STROBE EQU $C010
|
||||
__GETRET
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDY #255
|
||||
:LP
|
||||
INY
|
||||
LDA RETURN,Y
|
||||
STA (ADDR1),Y ; COUNTER OFFSET
|
||||
CPY RETLEN
|
||||
BNE :LP
|
||||
RTS
|
||||
__CLRHI
|
||||
AND #$F0
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
RTS
|
||||
__DUMP
|
||||
STY ]LENGTH
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDA #$8D
|
||||
JSR ]COUT
|
||||
LDA ADDR1+1
|
||||
JSR __CLRHI
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1+1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1
|
||||
JSR __CLRHI
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA #":" ;
|
||||
JSR ]COUT
|
||||
LDA #" "
|
||||
JSR ]COUT
|
||||
LDY #0
|
||||
:LP
|
||||
LDA (ADDR1),Y
|
||||
JSR __CLRHI ; AT COUNTER OFFSET
|
||||
STA ]LEFT
|
||||
LDA (ADDR1),Y
|
||||
AND #$0F
|
||||
STA ]RIGHT
|
||||
LDX ]LEFT
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDX ]RIGHT
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA #160
|
||||
JSR ]COUT
|
||||
INY
|
||||
CPY ]LENGTH
|
||||
BNE :LP
|
||||
RTS
|
||||
__P
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDY #1
|
||||
:LP LDA (ADDR1),Y
|
||||
BEQ :DONE
|
||||
JSR ]COUT
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE CLC
|
||||
TYA
|
||||
ADC ADDR1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
PHA ; IF NEEDED
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__W
|
||||
:LP LDA ]KYBD
|
||||
BPL :LP
|
||||
AND #$7F
|
||||
STA ]STROBE
|
||||
RTS
|
||||
__ERRH
|
||||
LDA #1
|
||||
STA $AAB6
|
||||
STA $75+1
|
||||
STA $33
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDA #$FF
|
||||
STA $D8
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA $9D5A
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
STA $9D5B
|
||||
RTS
|
||||
@@ -1,97 +0,0 @@
|
||||
_MLIT MAC
|
||||
IF #=]1
|
||||
LDA ]1/$100
|
||||
STA ]2+1
|
||||
LDA ]1
|
||||
STA ]2
|
||||
ELSE
|
||||
LDA ]1+1
|
||||
STA ]2+1
|
||||
LDA ]1
|
||||
STA ]2
|
||||
FIN
|
||||
<<<
|
||||
_ISLIT MAC
|
||||
IF #=]1
|
||||
LDA ]1/$100
|
||||
PHA
|
||||
LDA ]1
|
||||
PHA
|
||||
ELSE
|
||||
LDA ]1+1
|
||||
PHA
|
||||
LDA ]1
|
||||
PHA
|
||||
FIN
|
||||
<<<
|
||||
_AXLIT MAC
|
||||
IF #=]1
|
||||
LDX ]1/$100
|
||||
LDA ]1
|
||||
ELSE
|
||||
LDX ]1+1
|
||||
LDA ]1
|
||||
FIN
|
||||
<<<
|
||||
_MSTR MAC
|
||||
IF "=]1
|
||||
JMP __STRCONT
|
||||
]STRTMP STR ]1
|
||||
__STRCONT
|
||||
LDA #>]STRTMP
|
||||
STA ]2+1
|
||||
LDA #<]STRTMP
|
||||
STA ]2
|
||||
ELSE
|
||||
_ISLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
_ISSTR MAC
|
||||
IF "=]1
|
||||
JMP __STRCONT
|
||||
]STRTMP STR ]1
|
||||
__STRCONT
|
||||
LDA #>]STRTMP
|
||||
PHA
|
||||
LDA #<]STRTMP
|
||||
PHA
|
||||
ELSE
|
||||
_ISLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
_AXSTR MAC
|
||||
IF "=]1
|
||||
JMP __STRCNT2
|
||||
]STRTMP STR ]1
|
||||
__STRCNT2
|
||||
LDX #>]STRTMP
|
||||
LDA #<]STRTMP
|
||||
ELSE
|
||||
_AXLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
GRET MAC
|
||||
_AXLIT ]1
|
||||
JSR __GETRET
|
||||
<<<
|
||||
DUMP MAC
|
||||
_AXLIT ]1
|
||||
LDY ]2
|
||||
JSR __DUMP
|
||||
<<<
|
||||
_PRN MAC
|
||||
JSR __P
|
||||
ASC ]1
|
||||
HEX 00
|
||||
<<<
|
||||
_WAIT MAC
|
||||
JSR __W
|
||||
<<<
|
||||
ERRH MAC
|
||||
_AXLIT
|
||||
JSR __ERRH
|
||||
<<<
|
||||
CLRHI MAC
|
||||
LDA ]1
|
||||
JSR __CLRHI
|
||||
<<<
|
||||
@@ -0,0 +1,43 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PLAYNOTE *
|
||||
* *
|
||||
* PLAYS THE CURRENT NOTE IN A *
|
||||
* SONG SEQUENCE, THE ADDRESS *
|
||||
* BEING PROVIDED BY THE SSONG *
|
||||
* MACRO. *
|
||||
* *
|
||||
* INPUT *
|
||||
* *
|
||||
* NONE *
|
||||
* *
|
||||
* DESTROY: NZCIDV *
|
||||
* ^^^ ^ *
|
||||
* *
|
||||
* CYCLES: 166+ *
|
||||
* SIZE: 46 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PLAYNOTE
|
||||
LDY #$00 ; {3C2B} RESET .Y POINTER
|
||||
LDA TEMPMUL ; {4C3B} SET TEMPO MULTIPLIER
|
||||
STA DURMUL ; {4C3B}
|
||||
LDA NOTEP ; {4C3B} TRANSFER TO ZERO PAGE
|
||||
STA ADDR4 ; {3C2B}
|
||||
LDA NOTEP+1 ; {4C3B}
|
||||
STA ADDR4+1 ; {3C2B}
|
||||
LDA (ADDR4),Y ; {6C3B} LOAD CURRENT NOTE INDEX
|
||||
BEQ :PLAYDONE ; {3C2B} IF 00, EXIT
|
||||
TAX ; {2C1B} MOVE OFFSET TO .X POINTER
|
||||
LDA NOTETBL,X ; {5C2B} GET NOTE FREQUENCY
|
||||
STA PITCH ; {4C3B}
|
||||
INY ; {2C1B} INCREASE SONG POINTER
|
||||
:NOCARRY LDA (ADDR4),Y ; {6C3B} GET DURATION POINTER
|
||||
TAX ; {2C1B} MOVE OFFSET TO .X POINTER
|
||||
LDA DURTBL,X ; {5C2B} GET DURATION VALUE
|
||||
STA DURAT ; {4C3B}
|
||||
JSR REDTONE ; {194C0B} PLAY NOTE
|
||||
LDA NPAUSE ; {0C3B} BRIEFLY PAUSE BETWEEN NOTES
|
||||
JSR NWAIT ; {6C3B} CYCLES VARY TOO MUCH TO COUNT
|
||||
:PLAYDONE
|
||||
RTS ; {6C1B}
|
||||
@@ -1,71 +0,0 @@
|
||||
]DUR EQU VARTAB
|
||||
]PITCH EQU VARTAB+2
|
||||
]OCTAVE EQU VARTAB+4
|
||||
]CNT EQU VARTAB+6
|
||||
*
|
||||
PLAYTONE
|
||||
STA ]OCTAVE
|
||||
STX ]DUR+1
|
||||
STY ]PITCH
|
||||
LDA #0
|
||||
STA ]DUR
|
||||
*
|
||||
** FIRST, DEAL WITH OCTAVE. OCTAVE 1 IS THE BASE
|
||||
** OCTAVE 2 IS THE BASE DIV 2, OCT 3 THE BASE DIV 3,
|
||||
** AND SO ON. NOTE THAT OCTAVES 6 AND 7 ARE RESERVED
|
||||
** FOR ENVELOPE FUNCTIONS, AND SHOULD NOT BE USED.
|
||||
*
|
||||
LDX ]OCTAVE
|
||||
LDA ]PITCH
|
||||
JSR DIVOCT
|
||||
STA ]PITCH
|
||||
TXA
|
||||
CLC
|
||||
ADC ]PITCH
|
||||
STA ]PITCH
|
||||
*
|
||||
*
|
||||
LDA #255
|
||||
SEC
|
||||
SBC ]PITCH
|
||||
CLC
|
||||
ADC ]DUR+1
|
||||
STA ]DUR+1
|
||||
LDA ]DUR
|
||||
ADC #0
|
||||
STA ]DUR
|
||||
*
|
||||
LDY ]OCTAVE
|
||||
:OCTLP
|
||||
LDY ]DUR+1
|
||||
LDA ]DUR
|
||||
LDX ]OCTAVE
|
||||
JSR MULOCT
|
||||
STY ]DUR+1
|
||||
STX ]DUR
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
:LP1
|
||||
LDA #0
|
||||
LDX #0
|
||||
LDY ]PITCH
|
||||
BIT SPKR
|
||||
:DELAY
|
||||
DEY
|
||||
BNE :DELAY
|
||||
:DURATE
|
||||
LDA ]DUR+1
|
||||
SEC
|
||||
SBC #1
|
||||
STA ]DUR+1
|
||||
LDA ]DUR
|
||||
SBC #0
|
||||
STA ]DUR
|
||||
BCS :LP1
|
||||
BCC :EXIT
|
||||
*BNE :LP1
|
||||
*
|
||||
:EXIT
|
||||
RTS
|
||||
@@ -0,0 +1,131 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* SOUNDFX *
|
||||
* *
|
||||
* CONTAINS A NUMBER OF SOUND *
|
||||
* EFFECTS THAT ARE REQUESTED *
|
||||
* BY NUMBER. MANY OF THESE CAN *
|
||||
* ACCEPT VARIABLES TO CHANGE *
|
||||
* THE TONE,DURATION,SWEEP, AND *
|
||||
* SO ON. *
|
||||
* *
|
||||
* SOME OF THESE ARE COPIED *
|
||||
* DIRECTLY FROM OTHER SOURCES. *
|
||||
* WHERE EACH EFFECT COMES FROM *
|
||||
* IS LABELED AT THE STARTING *
|
||||
* POSITION OF THAT EFFECT. *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* BPAR1 = EFFECT NUMBER *
|
||||
* BPAR2 = VARIABLE ONE *
|
||||
* BLAR3 = VARIABLE TWO *
|
||||
* *
|
||||
* DESTROY: NZCIDV *
|
||||
* ^^^ ^ *
|
||||
* *
|
||||
* CYCLES: 1941 (HIGHLY FLAWED) *
|
||||
* SIZE: 287 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
]CNTR EQU BPAR2 ; MACHINE GUN BURSTS
|
||||
]PWDTH EQU BPAR3 ; SWOOP PULSE WIDTH--40,80,128,160
|
||||
]PCNT EQU BPAR2 ; SWOOP PULSE COUNT--1
|
||||
]PSTEP EQU BPAR2 ; WORM STEP--1,77,129,179
|
||||
]WWDTH EQU BPAR3 ; WORM PULSE WIDTH--176,88
|
||||
]PLIMIT EQU BPAR4 ; PULSE LIMIT
|
||||
]F1 EQU BPAR2 ; ALERT FIRST FREQUENCY
|
||||
]F2 EQU BPAR3 ; ALERT 2ND FREQUENCY
|
||||
*
|
||||
]DUR DFB #08 ; {0C1B} ALERT DURATION
|
||||
]WT DFB #10 ; {0C1B} ALERT REST PERIOD
|
||||
*
|
||||
SOUNDFX
|
||||
*
|
||||
LDA BPAR1 ; {3C2B}
|
||||
CMP #0 ; {3C2B}
|
||||
BEQ :MGUN ; {3C2B}
|
||||
CMP #1 ; {3C2B}
|
||||
BEQ :SWOOP ; {3C2B}
|
||||
CMP #2 ; {3C2B}
|
||||
BEQ :WORM ; {3C2B}
|
||||
CMP #3 ; {3C2B}
|
||||
BEQ :ALERT ; {3C2B}
|
||||
*
|
||||
:MGUN JMP ]MGUN ; {3C3B}
|
||||
:SWOOP JMP ]SWOOP ; {3C3B}
|
||||
:WORM JMP ]WORM ; {3C3B}
|
||||
:ALERT JMP ]ALERT ; {3C3B}
|
||||
*
|
||||
** FROM BOB SANDER-CEDARLOFF'S CONTRIBUTION IN
|
||||
** V1, ISS. 5 OF APPLE ASSEMBLY LINE.
|
||||
*
|
||||
]MGUN ; 33C,17B FOR THIS EFFECT ONLY
|
||||
:A2 BIT SPKR ; {4C3B}
|
||||
LDY $BA00,X ; {5C3B} GET "RANDOM" PULSE WIDTH
|
||||
:A1 DEY ; {2C1B} DELAY LOOP FOR PULSE WIDTH
|
||||
BNE :A1 ; {3C2B}
|
||||
DEX ; {2C1B} GET NEXT PULSE
|
||||
BNE :A2 ; {3C2B}
|
||||
DEC ]CNTR ; {5C2B} GET NEXT BURST
|
||||
BNE :A2 ; {3C2B}
|
||||
RTS ; {6C1B}
|
||||
*
|
||||
** FROM BOB SANDER-CEDARLOFF'S CONTRIBUTION IN
|
||||
** V1, ISS. 5 OF APPLE ASSEMBLY LINE.
|
||||
*
|
||||
]SWOOP ; 34C,18B FOR THIS SOUND EFFECT
|
||||
:B1 LDY ]PCNT ; {3C2B}
|
||||
:B2 BIT SPKR ; {4C3B}
|
||||
LDX ]PWDTH ; {3C2B}
|
||||
:B3 DEX ; {2C1B} DELAY LOOP FOR ONE PULSE
|
||||
BNE :B3 ; {3C2B}
|
||||
DEY ; {2C1B} LOOP FOR NUMBER OF PULSES
|
||||
BNE :B2 ; {3C2B} AT EACH PULSE WIDTH
|
||||
DEC ]PWDTH ; {5C2B} SHRINK PULSE WIDTH
|
||||
BNE :B1 ; {3C2B} TO LIMIT OF 0
|
||||
RTS ; {6C1B}
|
||||
*
|
||||
** FROM BOB SANDER-CEDARLOFF'S CONTRIBUTION IN
|
||||
** V1, ISS. 5 OF APPLE ASSEMBLY LINE.
|
||||
*
|
||||
]WORM ; 47C,26B FOR THIS SOUND EFFECT
|
||||
LDA ]WWDTH ; {3C2B}
|
||||
STA ]PLIMIT ; {3C2B}
|
||||
:C1 BIT SPKR ; {4C3B}
|
||||
LDX ]WWDTH ; {3C2B} DELAY LOOP FOR PULSE WIDTH
|
||||
:C2 PHA ; {3C1B} LONGER DELAY LOOP
|
||||
PLA ; {3C1B}
|
||||
DEX ; {2C1B} END OF PULSE?
|
||||
BNE :C2 ; {3C2B} NO
|
||||
CLC ; {2C1B} CHANGE PULSE WIDTH BY STEP
|
||||
LDA ]WWDTH ; {3C2B}
|
||||
ADC ]PSTEP ; {3C2B}
|
||||
STA ]WWDTH ; {3C2B}
|
||||
CMP ]PLIMIT ; {3C2B}
|
||||
BNE :C1 ; {3C2B}
|
||||
RTS ; {6C1B}
|
||||
]ALERT ; 1788C,196B FOR THIS EFFECT
|
||||
PFREQ ]F1;]DUR ; {214C15B}
|
||||
LDA ]WT ; {4C3B}
|
||||
JSR NWAIT ; {6C3B}
|
||||
PFREQ ]F2;]DUR ; {214C15B}
|
||||
LDA ]WT ; {4C3B}
|
||||
JSR NWAIT ; {6C3B}
|
||||
PFREQ ]F1;]DUR ; {214C15B}
|
||||
LDA ]WT ; {4C3B}
|
||||
JSR NWAIT ; {6C3B}
|
||||
PFREQ ]F2;]DUR ; {214C15B}
|
||||
LDA ]WT ; {4C3B}
|
||||
JSR NWAIT ; {6C3B}
|
||||
PFREQ ]F1;]DUR ; {214C15B}
|
||||
LDA ]WT ; {4C3B}
|
||||
JSR NWAIT ; {6C3B}
|
||||
PFREQ ]F2;]DUR ; {214C15B}
|
||||
LDA ]WT ; {4C3B}
|
||||
JSR NWAIT ; {6C3B}
|
||||
PFREQ ]F1;]DUR ; {214C15B}
|
||||
LDA ]WT ; {4C3B}
|
||||
JSR NWAIT ; {6C3B}
|
||||
PFREQ ]F2;]DUR ; {214C15B}
|
||||
RTS ; {6C1B}
|
||||
@@ -1,3 +0,0 @@
|
||||
BLOAD MINIFY
|
||||
CALL -151
|
||||
7000G
|
||||
@@ -1,854 +0,0 @@
|
||||
0901- AA TAX
|
||||
0902- 8D AA E0 STA $E0AA
|
||||
0905- E0 E0 CPX #$E0
|
||||
0907- E0 E0 CPX #$E0
|
||||
0909- E0 E0 CPX #$E0
|
||||
090B- E0 E0 CPX #$E0
|
||||
090D- E0 E0 CPX #$E0
|
||||
090F- E0 E0 CPX #$E0
|
||||
0911- E0 E0 CPX #$E0
|
||||
0913- E0 E0 CPX #$E0
|
||||
0915- E0 E0 CPX #$E0
|
||||
0917- E0 E0 CPX #$E0
|
||||
0919- E0 E0 CPX #$E0
|
||||
091B- E0 E0 CPX #$E0
|
||||
091D- E0 E0 CPX #$E0
|
||||
091F- E0 E0 CPX #$E0
|
||||
0921- E0 AA CPX #$AA
|
||||
0923- 8D AA 20 STA $20AA
|
||||
0926- 20 20 20 JSR $2020
|
||||
0929- 20 20 AD JSR $AD20
|
||||
092C- BC 20 C3 LDY $C320,X
|
||||
092F- CF ???
|
||||
0930- CD CD CF CMP $CFCD
|
||||
0933- CE 20 C4 DEC $C420
|
||||
0936- C5 CD CMP $CD
|
||||
0938- CF ???
|
||||
0939- 20 A9 AD JSR $ADA9
|
||||
093C- 20 20 20 JSR $2020
|
||||
093F- 20 20 20 JSR $2020
|
||||
0942- 20 AA 8D JSR $8DAA
|
||||
0945- AA TAX
|
||||
0946- 20 20 20 JSR $2020
|
||||
0949- 20 20 20 JSR $2020
|
||||
094C- 20 20 20 JSR $2020
|
||||
094F- 20 20 20 JSR $2020
|
||||
0952- 20 20 20 JSR $2020
|
||||
0955- 20 20 20 JSR $2020
|
||||
0958- 20 20 20 JSR $2020
|
||||
095B- 20 20 20 JSR $2020
|
||||
095E- 20 20 20 JSR $2020
|
||||
0961- 20 20 20 JSR $2020
|
||||
0964- AA TAX
|
||||
0965- 8D AA 20 STA $20AA
|
||||
0968- 20 20 20 JSR $2020
|
||||
096B- 20 20 20 JSR $2020
|
||||
096E- 20 D6 C5 JSR $C5D6
|
||||
0971- D2 D3 CMP ($D3)
|
||||
0973- C9 CF CMP #$CF
|
||||
0975- CE 20 B0 DEC $B020
|
||||
0978- AE B4 AE LDX $AEB4
|
||||
097B- B0 20 BCS $099D
|
||||
097D- 20 20 20 JSR $2020
|
||||
0980- 20 20 20 JSR $2020
|
||||
0983- 20 20 AA JSR $AA20
|
||||
0986- 8D AA 20 STA $20AA
|
||||
0989- 20 20 20 JSR $2020
|
||||
098C- 20 20 20 JSR $2020
|
||||
098F- 20 20 20 JSR $2020
|
||||
0992- 20 20 20 JSR $2020
|
||||
0995- 20 20 20 JSR $2020
|
||||
0998- 20 20 20 JSR $2020
|
||||
099B- 20 20 20 JSR $2020
|
||||
099E- 20 20 20 JSR $2020
|
||||
09A1- 20 20 20 JSR $2020
|
||||
09A4- 20 20 AA JSR $AA20
|
||||
09A7- 8D AA 20 STA $20AA
|
||||
09AA- 20 20 20 JSR $2020
|
||||
09AD- 20 20 20 JSR $2020
|
||||
09B0- 20 20 B2 JSR $B220
|
||||
09B3- B8 CLV
|
||||
09B4- AD C1 D0 LDA $D0C1
|
||||
09B7- D2 AD CMP ($AD)
|
||||
09B9- B2 B0 LDA ($B0)
|
||||
09BB- B1 B9 LDA ($B9),Y
|
||||
09BD- 20 20 20 JSR $2020
|
||||
09C0- 20 20 20 JSR $2020
|
||||
09C3- 20 20 20 JSR $2020
|
||||
09C6- 20 AA 8D JSR $8DAA
|
||||
09C9- AA TAX
|
||||
09CA- 20 20 20 JSR $2020
|
||||
09CD- 20 20 20 JSR $2020
|
||||
09D0- 20 20 20 JSR $2020
|
||||
09D3- 20 20 20 JSR $2020
|
||||
09D6- 20 20 20 JSR $2020
|
||||
09D9- 20 20 20 JSR $2020
|
||||
09DC- 20 20 20 JSR $2020
|
||||
09DF- 20 20 20 JSR $2020
|
||||
09E2- 20 20 20 JSR $2020
|
||||
09E5- 20 20 20 JSR $2020
|
||||
09E8- AA TAX
|
||||
09E9- 8D AA 20 STA $20AA
|
||||
09EC- 20 20 20 JSR $2020
|
||||
09EF- 20 20 20 JSR $2020
|
||||
09F2- CE C1 D4 DEC $D4C1
|
||||
09F5- C8 INY
|
||||
09F6- C1 CE CMP ($CE,X)
|
||||
09F8- 20 C4 AE JSR $AEC4
|
||||
09FB- 20 D2 C9 JSR $C9D2
|
||||
09FE- C7 ???
|
||||
09FF- C7 ???
|
||||
0A00- D3 ???
|
||||
0A01- 20 20 20 JSR $2020
|
||||
0A04- 20 20 20 JSR $2020
|
||||
0A07- 20 20 AA JSR $AA20
|
||||
0A0A- 8D AA 20 STA $20AA
|
||||
0A0D- 20 20 CE JSR $CE20
|
||||
0A10- C1 D4 CMP ($D4,X)
|
||||
0A12- C8 INY
|
||||
0A13- C1 CE CMP ($CE,X)
|
||||
0A15- AE D2 C9 LDX $C9D2
|
||||
0A18- C7 ???
|
||||
0A19- C7 ???
|
||||
0A1A- D3 ???
|
||||
0A1B- C0 CF CPY #$CF
|
||||
0A1D- D5 D4 CMP $D4,X
|
||||
0A1F- CC CF CF CPY $CFCF
|
||||
0A22- CB ???
|
||||
0A23- AE C3 CF LDX $CFC3
|
||||
0A26- CD 20 20 CMP $2020
|
||||
0A29- 20 AA 8D JSR $8DAA
|
||||
0A2C- AA TAX
|
||||
0A2D- AC AC AC LDY $ACAC
|
||||
0A30- AC AC AC LDY $ACAC
|
||||
0A33- AC AC AC LDY $ACAC
|
||||
0A36- AC AC AC LDY $ACAC
|
||||
0A39- AC AC AC LDY $ACAC
|
||||
0A3C- AC AC AC LDY $ACAC
|
||||
0A3F- AC AC AC LDY $ACAC
|
||||
0A42- AC AC AC LDY $ACAC
|
||||
0A45- AC AC AC LDY $ACAC
|
||||
0A48- AC AC AC LDY $ACAC
|
||||
0A4B- AA TAX
|
||||
0A4C- 8D AA 8D STA $8DAA
|
||||
0A4F- AA TAX
|
||||
0A50- AA TAX
|
||||
0A51- 20 C1 D3 JSR $D3C1
|
||||
0A54- D3 ???
|
||||
0A55- C5 CD CMP $CD
|
||||
0A57- C2 ???
|
||||
0A58- CC C5 D2 CPY $D2C5
|
||||
0A5B- 20 C4 C9 JSR $C9C4
|
||||
0A5E- D2 C5 CMP ($C5)
|
||||
0A60- C3 ???
|
||||
0A61- D4 ???
|
||||
0A62- C9 D6 CMP #$D6
|
||||
0A64- C5 D3 CMP $D3
|
||||
0A66- 8D AA 8D STA $8DAA
|
||||
0A69- A0 C3 LDY #$C3
|
||||
0A6B- D9 C3 A0 CMP $A0C3,Y
|
||||
0A6E- C1 D6 CMP ($D6,X)
|
||||
0A70- C5 8D CMP $8D
|
||||
0A72- A0 C5 LDY #$C5
|
||||
0A74- D8 CLD
|
||||
0A75- D0 A0 BNE $0A17
|
||||
0A77- CF ???
|
||||
0A78- CE CC D9 DEC $D9CC
|
||||
0A7B- 8D A0 D4 STA $D4A0
|
||||
0A7E- D2 A0 CMP ($A0)
|
||||
0A80- CF ???
|
||||
0A81- CE 8D A0 DEC $A08D
|
||||
0A84- C4 D3 CPY $D3
|
||||
0A86- CB ???
|
||||
0A87- A0 D3 LDY #$D3
|
||||
0A89- D4 ???
|
||||
0A8A- D2 D5 CMP ($D5)
|
||||
0A8C- C3 ???
|
||||
0A8D- D4 ???
|
||||
0A8E- D5 D2 CMP $D2,X
|
||||
0A90- C5 D3 CMP $D3
|
||||
0A92- AE C4 C5 LDX $C5C4
|
||||
0A95- CD CF 8D CMP $8DCF
|
||||
0A98- A0 CF LDY #$CF
|
||||
0A9A- C2 ???
|
||||
0A9B- CA DEX
|
||||
0A9C- A0 A4 LDY #$A4
|
||||
0A9E- C2 ???
|
||||
0A9F- C6 C5 DEC $C5
|
||||
0AA1- B0 8D BCS $0A30
|
||||
0AA3- A0 CF LDY #$CF
|
||||
0AA5- D2 C7 CMP ($C7)
|
||||
0AA7- A0 A4 LDY #$A4
|
||||
0AA9- B6 B0 LDX $B0,Y
|
||||
0AAB- B0 B0 BCS $0A5D
|
||||
0AAD- 8D AA 8D STA $8DAA
|
||||
0AB0- AA TAX
|
||||
0AB1- E0 E0 CPX #$E0
|
||||
0AB3- E0 E0 CPX #$E0
|
||||
0AB5- E0 E0 CPX #$E0
|
||||
0AB7- E0 E0 CPX #$E0
|
||||
0AB9- E0 E0 CPX #$E0
|
||||
0ABB- E0 E0 CPX #$E0
|
||||
0ABD- E0 E0 CPX #$E0
|
||||
0ABF- E0 E0 CPX #$E0
|
||||
0AC1- E0 E0 CPX #$E0
|
||||
0AC3- E0 E0 CPX #$E0
|
||||
0AC5- E0 E0 CPX #$E0
|
||||
0AC7- E0 E0 CPX #$E0
|
||||
0AC9- E0 E0 CPX #$E0
|
||||
0ACB- E0 E0 CPX #$E0
|
||||
0ACD- E0 E0 CPX #$E0
|
||||
0ACF- AA TAX
|
||||
0AD0- 8D AA 20 STA $20AA
|
||||
0AD3- 20 D4 CF JSR $CFD4
|
||||
0AD6- D0 20 BNE $0AF8
|
||||
0AD8- C9 CE CMP #$CE
|
||||
0ADA- C3 ???
|
||||
0ADB- CC D5 C4 CPY $C4D5
|
||||
0ADE- C5 D3 CMP $D3
|
||||
0AE0- 20 A8 C8 JSR $C8A8
|
||||
0AE3- CF ???
|
||||
0AE4- CF ???
|
||||
0AE5- CB ???
|
||||
0AE6- D3 ???
|
||||
0AE7- AC CD C1 LDY $C1CD
|
||||
0AEA- C3 ???
|
||||
0AEB- D2 CF CMP ($CF)
|
||||
0AED- D3 ???
|
||||
0AEE- A9 20 LDA #$20
|
||||
0AF0- AA TAX
|
||||
0AF1- 8D AA AC STA $ACAA
|
||||
0AF4- AC AC AC LDY $ACAC
|
||||
0AF7- AC AC AC LDY $ACAC
|
||||
0AFA- AC AC AC LDY $ACAC
|
||||
0AFD- AC AC AC LDY $ACAC
|
||||
0B00- AC AC AC LDY $ACAC
|
||||
0B03- AC AC AC LDY $ACAC
|
||||
0B06- AC AC AC LDY $ACAC
|
||||
0B09- AC AC AC LDY $ACAC
|
||||
0B0C- AC AC AC LDY $ACAC
|
||||
0B0F- AC AC AA LDY $AAAC
|
||||
0B12- 8D AA 8D STA $8DAA
|
||||
0B15- A0 D0 LDY #$D0
|
||||
0B17- D5 D4 CMP $D4,X
|
||||
0B19- A0 CD LDY #$CD
|
||||
0B1B- C9 CE CMP #$CE
|
||||
0B1D- AE C8 C5 LDX $C5C8
|
||||
0B20- C1 C4 CMP ($C4,X)
|
||||
0B22- AE D2 C5 LDX $C5D2
|
||||
0B25- D1 D5 CMP ($D5),Y
|
||||
0B27- C9 D2 CMP #$D2
|
||||
0B29- C5 C4 CMP $C4
|
||||
0B2B- 8D A0 D5 STA $D5A0
|
||||
0B2E- D3 ???
|
||||
0B2F- C5 A0 CMP $A0
|
||||
0B31- CD C9 CE CMP $CEC9
|
||||
0B34- AE CD C1 LDX $C1CD
|
||||
0B37- C3 ???
|
||||
0B38- AE D2 C5 LDX $C5D2
|
||||
0B3B- D1 D5 CMP ($D5),Y
|
||||
0B3D- C9 D2 CMP #$D2
|
||||
0B3F- C5 C4 CMP $C4
|
||||
0B41- 8D A0 D5 STA $D5A0
|
||||
0B44- D3 ???
|
||||
0B45- C5 A0 CMP $A0
|
||||
0B47- CD C1 C3 CMP $C3C1
|
||||
0B4A- AE C9 C6 LDX $C6C9
|
||||
0B4D- D3 ???
|
||||
0B4E- D4 ???
|
||||
0B4F- D2 D5 CMP ($D5)
|
||||
0B51- C3 ???
|
||||
0B52- D4 ???
|
||||
0B53- 8D A0 D5 STA $D5A0
|
||||
0B56- D3 ???
|
||||
0B57- C5 A0 CMP $A0
|
||||
0B59- CD C1 C3 CMP $C3C1
|
||||
0B5C- AE CC CF LDX $CFCC
|
||||
0B5F- CF ???
|
||||
0B60- D0 D3 BNE $0B35
|
||||
0B62- D4 ???
|
||||
0B63- D2 D5 CMP ($D5)
|
||||
0B65- C3 ???
|
||||
0B66- D4 ???
|
||||
0B67- 8D DD C8 STA $C8DD
|
||||
0B6A- CF ???
|
||||
0B6B- CD C5 A0 CMP $A0C5
|
||||
0B6E- C5 D1 CMP $D1
|
||||
0B70- D5 A0 CMP $A0,X
|
||||
0B72- A4 C6 LDY $C6
|
||||
0B74- C3 ???
|
||||
0B75- B5 B8 LDA $B8,X
|
||||
0B77- 8D AA 8D STA $8DAA
|
||||
0B7A- AA TAX
|
||||
0B7B- E0 E0 CPX #$E0
|
||||
0B7D- E0 E0 CPX #$E0
|
||||
0B7F- E0 E0 CPX #$E0
|
||||
0B81- E0 E0 CPX #$E0
|
||||
0B83- E0 E0 CPX #$E0
|
||||
0B85- E0 E0 CPX #$E0
|
||||
0B87- E0 E0 CPX #$E0
|
||||
0B89- E0 E0 CPX #$E0
|
||||
0B8B- E0 E0 CPX #$E0
|
||||
0B8D- E0 E0 CPX #$E0
|
||||
0B8F- E0 E0 CPX #$E0
|
||||
0B91- E0 E0 CPX #$E0
|
||||
0B93- E0 E0 CPX #$E0
|
||||
0B95- E0 E0 CPX #$E0
|
||||
0B97- E0 E0 CPX #$E0
|
||||
0B99- AA TAX
|
||||
0B9A- 8D AA 20 STA $20AA
|
||||
0B9D- 20 20 20 JSR $2020
|
||||
0BA0- 20 20 D0 JSR $D020
|
||||
0BA3- D2 CF CMP ($CF)
|
||||
0BA5- C7 ???
|
||||
0BA6- D2 C1 CMP ($C1)
|
||||
0BA8- CD 20 CD CMP $CD20
|
||||
0BAB- C1 C9 CMP ($C9,X)
|
||||
0BAD- CE 20 C2 DEC $C220
|
||||
0BB0- CF ???
|
||||
0BB1- C4 D9 CPY $D9
|
||||
0BB3- 20 20 20 JSR $2020
|
||||
0BB6- 20 20 20 JSR $2020
|
||||
0BB9- 20 AA 8D JSR $8DAA
|
||||
0BBC- AA TAX
|
||||
0BBD- AC AC AC LDY $ACAC
|
||||
0BC0- AC AC AC LDY $ACAC
|
||||
0BC3- AC AC AC LDY $ACAC
|
||||
0BC6- AC AC AC LDY $ACAC
|
||||
0BC9- AC AC AC LDY $ACAC
|
||||
0BCC- AC AC AC LDY $ACAC
|
||||
0BCF- AC AC AC LDY $ACAC
|
||||
0BD2- AC AC AC LDY $ACAC
|
||||
0BD5- AC AC AC LDY $ACAC
|
||||
0BD8- AC AC AC LDY $ACAC
|
||||
0BDB- AA TAX
|
||||
0BDC- 8D AA 8D STA $8DAA
|
||||
0BDF- DD D6 C1 CMP $C1D6,X
|
||||
0BE2- D2 B1 CMP ($B1)
|
||||
0BE4- A0 C5 LDY #$C5
|
||||
0BE6- D1 D5 CMP ($D5),Y
|
||||
0BE8- A0 D6 LDY #$D6
|
||||
0BEA- C1 D2 CMP ($D2,X)
|
||||
0BEC- D4 ???
|
||||
0BED- C1 C2 CMP ($C2,X)
|
||||
0BEF- 8D DD D6 STA $D6DD
|
||||
0BF2- C1 D2 CMP ($D2,X)
|
||||
0BF4- B2 A0 LDA ($A0)
|
||||
0BF6- C5 D1 CMP $D1
|
||||
0BF8- D5 A0 CMP $A0,X
|
||||
0BFA- D6 C1 DEC $C1,X
|
||||
0BFC- D2 D4 CMP ($D4)
|
||||
0BFE- C1 C2 CMP ($C2,X)
|
||||
0C00- AB ???
|
||||
0C01- B1 8D LDA ($8D),Y
|
||||
0C03- DD D6 C1 CMP $C1D6,X
|
||||
0C06- D2 B3 CMP ($B3)
|
||||
0C08- A0 C5 LDY #$C5
|
||||
0C0A- D1 D5 CMP ($D5),Y
|
||||
0C0C- A0 D6 LDY #$D6
|
||||
0C0E- C1 D2 CMP ($D2,X)
|
||||
0C10- D4 ???
|
||||
0C11- C1 C2 CMP ($C2,X)
|
||||
0C13- AB ???
|
||||
0C14- B2 8D LDA ($8D)
|
||||
0C16- DD D6 C1 CMP $C1D6,X
|
||||
0C19- D2 B4 CMP ($B4)
|
||||
0C1B- A0 C5 LDY #$C5
|
||||
0C1D- D1 D5 CMP ($D5),Y
|
||||
0C1F- A0 D6 LDY #$D6
|
||||
0C21- C1 D2 CMP ($D2,X)
|
||||
0C23- D4 ???
|
||||
0C24- C1 C2 CMP ($C2,X)
|
||||
0C26- AB ???
|
||||
0C27- B3 ???
|
||||
0C28- 8D DD C3 STA $C3DD
|
||||
0C2B- CF ???
|
||||
0C2C- D5 CE CMP $CE,X
|
||||
0C2E- D4 ???
|
||||
0C2F- C5 D2 CMP $D2
|
||||
0C31- A0 C5 LDY #$C5
|
||||
0C33- D1 D5 CMP ($D5),Y
|
||||
0C35- A0 D6 LDY #$D6
|
||||
0C37- C1 D2 CMP ($D2,X)
|
||||
0C39- D4 ???
|
||||
0C3A- C1 C2 CMP ($C2,X)
|
||||
0C3C- AB ???
|
||||
0C3D- B4 8D LDY $8D,X
|
||||
0C3F- DD C3 CF CMP $CFC3,X
|
||||
0C42- D5 D4 CMP $D4,X
|
||||
0C44- B1 A0 LDA ($A0),Y
|
||||
0C46- C5 D1 CMP $D1
|
||||
0C48- D5 A0 CMP $A0,X
|
||||
0C4A- A4 C6 LDY $C6
|
||||
0C4C- C4 C6 CPY $C6
|
||||
0C4E- B0 8D BCS $0BDD
|
||||
0C50- AA TAX
|
||||
0C51- 8D A0 CA STA $CAA0
|
||||
0C54- D3 ???
|
||||
0C55- D2 A0 CMP ($A0)
|
||||
0C57- DD C8 CF CMP $CFC8,X
|
||||
0C5A- CD C5 8D CMP $8DC5
|
||||
0C5D- AA TAX
|
||||
0C5E- 8D A0 CC STA $CCA0
|
||||
0C61- C4 C1 CPY $C1
|
||||
0C63- A0 A3 LDY #$A3
|
||||
0C65- B1 B0 LDA ($B0),Y
|
||||
0C67- 8D A0 D3 STA $D3A0
|
||||
0C6A- D4 ???
|
||||
0C6B- C1 A0 CMP ($A0,X)
|
||||
0C6D- DD D6 C1 CMP $C1D6,X
|
||||
0C70- D2 B1 CMP ($B1)
|
||||
0C72- 8D A0 D3 STA $D3A0
|
||||
0C75- D4 ???
|
||||
0C76- C1 A0 CMP ($A0,X)
|
||||
0C78- DD D6 C1 CMP $C1D6,X
|
||||
0C7B- D2 B3 CMP ($B3)
|
||||
0C7D- 8D A0 CC STA $CCA0
|
||||
0C80- C4 C1 CPY $C1
|
||||
0C82- A0 A3 LDY #$A3
|
||||
0C84- B2 B0 LDA ($B0)
|
||||
0C86- 8D A0 D3 STA $D3A0
|
||||
0C89- D4 ???
|
||||
0C8A- C1 A0 CMP ($A0,X)
|
||||
0C8C- DD D6 C1 CMP $C1D6,X
|
||||
0C8F- D2 B2 CMP ($B2)
|
||||
0C91- 8D A0 D3 STA $D3A0
|
||||
0C94- D4 ???
|
||||
0C95- C1 A0 CMP ($A0,X)
|
||||
0C97- DD D6 C1 CMP $C1D6,X
|
||||
0C9A- D2 B4 CMP ($B4)
|
||||
0C9C- 8D AA 8D STA $8DAA
|
||||
0C9F- A0 C9 LDY #$C9
|
||||
0CA1- C6 CA DEC $CA
|
||||
0CA3- A0 DD LDY #$DD
|
||||
0CA5- D6 C1 DEC $C1,X
|
||||
0CA7- D2 B1 CMP ($B1)
|
||||
0CA9- BB ???
|
||||
0CAA- C5 BB CMP $BB
|
||||
0CAC- DD D6 C1 CMP $C1D6,X
|
||||
0CAF- D2 B2 CMP ($B2)
|
||||
0CB1- BB ???
|
||||
0CB2- D6 B1 DEC $B1,X
|
||||
0CB4- C5 B2 CMP $B2
|
||||
0CB6- 8D C1 B1 STA $B1C1
|
||||
0CB9- A0 C9 LDY #$C9
|
||||
0CBB- C6 CA DEC $CA
|
||||
0CBD- A0 DD LDY #$DD
|
||||
0CBF- D6 C1 DEC $C1,X
|
||||
0CC1- D2 B1 CMP ($B1)
|
||||
0CC3- BB ???
|
||||
0CC4- C5 BB CMP $BB
|
||||
0CC6- DD D6 C1 CMP $C1D6,X
|
||||
0CC9- D2 B3 CMP ($B3)
|
||||
0CCB- BB ???
|
||||
0CCC- D6 B1 DEC $B1,X
|
||||
0CCE- C5 B3 CMP $B3
|
||||
0CD0- 8D C1 B2 STA $B2C1
|
||||
0CD3- A0 C9 LDY #$C9
|
||||
0CD5- C6 CA DEC $CA
|
||||
0CD7- C5 A0 CMP $A0
|
||||
0CD9- DD D6 C1 CMP $C1D6,X
|
||||
0CDC- D2 B2 CMP ($B2)
|
||||
0CDE- BB ???
|
||||
0CDF- C5 BB CMP $BB
|
||||
0CE1- DD D6 C1 CMP $C1D6,X
|
||||
0CE4- D2 B3 CMP ($B3)
|
||||
0CE6- BB ???
|
||||
0CE7- D6 B2 DEC $B2,X
|
||||
0CE9- C5 B3 CMP $B3
|
||||
0CEB- BB ???
|
||||
0CEC- D6 B2 DEC $B2,X
|
||||
0CEE- C5 B4 CMP $B4
|
||||
0CF0- 8D AA 8D STA $8DAA
|
||||
0CF3- C1 B3 CMP ($B3,X)
|
||||
0CF5- A0 CC LDY #$CC
|
||||
0CF7- C4 C1 CPY $C1
|
||||
0CF9- A0 A3 LDY #$A3
|
||||
0CFB- B0 8D BCS $0C8A
|
||||
0CFD- A0 D3 LDY #$D3
|
||||
0CFF- D4 ???
|
||||
0D00- C1 A0 CMP ($A0,X)
|
||||
0D02- DD C3 CF CMP $CFC3,X
|
||||
0D05- D5 CE CMP $CE,X
|
||||
0D07- D4 ???
|
||||
0D08- C5 D2 CMP $D2
|
||||
0D0A- 8D A0 CC STA $CCA0
|
||||
0D0D- C4 C1 CPY $C1
|
||||
0D0F- A0 A3 LDY #$A3
|
||||
0D11- A2 A5 LDX #$A5
|
||||
0D13- A2 8D LDX #$8D
|
||||
0D15- A0 CC LDY #$CC
|
||||
0D17- CF ???
|
||||
0D18- CF ???
|
||||
0D19- D0 A0 BNE $0CBB
|
||||
0D1B- BB ???
|
||||
0D1C- 20 C2 C5 JSR $C5C2
|
||||
0D1F- C7 ???
|
||||
0D20- C9 CE CMP #$CE
|
||||
0D22- 20 CC CF JSR $CFCC
|
||||
0D25- CF ???
|
||||
0D26- D0 8D BNE $0CB5
|
||||
0D28- A0 CC LDY #$CC
|
||||
0D2A- C4 C1 CPY $C1
|
||||
0D2C- A0 A3 LDY #$A3
|
||||
0D2E- A2 AA LDX #$AA
|
||||
0D30- A2 8D LDX #$8D
|
||||
0D32- A0 CA LDY #$CA
|
||||
0D34- D3 ???
|
||||
0D35- D2 A0 CMP ($A0)
|
||||
0D37- DD C3 CF CMP $CFC3,X
|
||||
0D3A- D5 D4 CMP $D4,X
|
||||
0D3C- B1 8D LDA ($8D),Y
|
||||
0D3E- A0 C9 LDY #$C9
|
||||
0D40- CE C3 A0 DEC $A0C3
|
||||
0D43- DD C3 CF CMP $CFC3,X
|
||||
0D46- D5 CE CMP $CE,X
|
||||
0D48- D4 ???
|
||||
0D49- C5 D2 CMP $D2
|
||||
0D4B- 8D A0 CC STA $CCA0
|
||||
0D4E- C4 C1 CPY $C1
|
||||
0D50- A0 A3 LDY #$A3
|
||||
0D52- A2 A5 LDX #$A5
|
||||
0D54- A2 8D LDX #$8D
|
||||
0D56- A0 D5 LDY #$D5
|
||||
0D58- CE D4 C9 DEC $C9D4
|
||||
0D5B- CC A0 DD CPY $DDA0
|
||||
0D5E- C3 ???
|
||||
0D5F- CF ???
|
||||
0D60- D5 CE CMP $CE,X
|
||||
0D62- D4 ???
|
||||
0D63- C5 D2 CMP $D2
|
||||
0D65- BB ???
|
||||
0D66- C5 BB CMP $BB
|
||||
0D68- A3 ???
|
||||
0D69- B1 B0 LDA ($B0),Y
|
||||
0D6B- 8D A0 CA STA $CAA0
|
||||
0D6E- D3 ???
|
||||
0D6F- D2 A0 CMP ($A0)
|
||||
0D71- DD C3 CF CMP $CFC3,X
|
||||
0D74- D5 D4 CMP $D4,X
|
||||
0D76- B1 8D LDA ($8D),Y
|
||||
0D78- AA TAX
|
||||
0D79- 8D C1 B4 STA $B4C1
|
||||
0D7C- A0 CC LDY #$CC
|
||||
0D7E- C4 C1 CPY $C1
|
||||
0D80- A0 A3 LDY #$A3
|
||||
0D82- B0 8D BCS $0D11
|
||||
0D84- A0 D3 LDY #$D3
|
||||
0D86- D4 ???
|
||||
0D87- C1 A0 CMP ($A0,X)
|
||||
0D89- DD C3 CF CMP $CFC3,X
|
||||
0D8C- D5 CE CMP $CE,X
|
||||
0D8E- D4 ???
|
||||
0D8F- C5 D2 CMP $D2
|
||||
0D91- 8D A0 CC STA $CCA0
|
||||
0D94- C4 C1 CPY $C1
|
||||
0D96- A0 A3 LDY #$A3
|
||||
0D98- A2 A5 LDX #$A5
|
||||
0D9A- A2 8D LDX #$8D
|
||||
0D9C- A0 CC LDY #$CC
|
||||
0D9E- CF ???
|
||||
0D9F- CF ???
|
||||
0DA0- D0 A0 BNE $0D42
|
||||
0DA2- BB ???
|
||||
0DA3- 20 C2 C5 JSR $C5C2
|
||||
0DA6- C7 ???
|
||||
0DA7- C9 CE CMP #$CE
|
||||
0DA9- 20 CC CF JSR $CFCC
|
||||
0DAC- CF ???
|
||||
0DAD- D0 8D BNE $0D3C
|
||||
0DAF- A0 CC LDY #$CC
|
||||
0DB1- C4 C1 CPY $C1
|
||||
0DB3- A0 A3 LDY #$A3
|
||||
0DB5- A2 AA LDX #$AA
|
||||
0DB7- A2 8D LDX #$8D
|
||||
0DB9- A0 CA LDY #$CA
|
||||
0DBB- D3 ???
|
||||
0DBC- D2 A0 CMP ($A0)
|
||||
0DBE- DD C3 CF CMP $CFC3,X
|
||||
0DC1- D5 D4 CMP $D4,X
|
||||
0DC3- B1 8D LDA ($8D),Y
|
||||
0DC5- A0 C9 LDY #$C9
|
||||
0DC7- CE C3 A0 DEC $A0C3
|
||||
0DCA- DD C3 CF CMP $CFC3,X
|
||||
0DCD- D5 CE CMP $CE,X
|
||||
0DCF- D4 ???
|
||||
0DD0- C5 D2 CMP $D2
|
||||
0DD2- 8D A0 CC STA $CCA0
|
||||
0DD5- C4 C1 CPY $C1
|
||||
0DD7- A0 A3 LDY #$A3
|
||||
0DD9- A2 A5 LDX #$A5
|
||||
0DDB- A2 8D LDX #$8D
|
||||
0DDD- A0 D7 LDY #$D7
|
||||
0DDF- C8 INY
|
||||
0DE0- C9 CC CMP #$CC
|
||||
0DE2- C5 A0 CMP $A0
|
||||
0DE4- DD C3 CF CMP $CFC3,X
|
||||
0DE7- D5 CE CMP $CE,X
|
||||
0DE9- D4 ???
|
||||
0DEA- C5 D2 CMP $D2
|
||||
0DEC- BB ???
|
||||
0DED- A8 TAY
|
||||
0DEE- BB ???
|
||||
0DEF- A3 ???
|
||||
0DF0- B1 B0 LDA ($B0),Y
|
||||
0DF2- 8D A0 CA STA $CAA0
|
||||
0DF5- D3 ???
|
||||
0DF6- D2 A0 CMP ($A0)
|
||||
0DF8- DD C3 CF CMP $CFC3,X
|
||||
0DFB- D5 D4 CMP $D4,X
|
||||
0DFD- B1 8D LDA ($8D),Y
|
||||
0DFF- AA TAX
|
||||
0E00- 8D A0 CC STA $CCA0
|
||||
0E03- C4 C1 CPY $C1
|
||||
0E05- A0 A3 LDY #$A3
|
||||
0E07- A4 B8 LDY $B8
|
||||
0E09- C4 8D CPY $8D
|
||||
0E0B- A0 CA LDY #$CA
|
||||
0E0D- D3 ???
|
||||
0E0E- D2 A0 CMP ($A0)
|
||||
0E10- DD C3 CF CMP $CFC3,X
|
||||
0E13- D5 D4 CMP $D4,X
|
||||
0E15- B1 8D LDA ($8D),Y
|
||||
0E17- A0 CA LDY #$CA
|
||||
0E19- D3 ???
|
||||
0E1A- D2 A0 CMP ($A0)
|
||||
0E1C- DD C3 CF CMP $CFC3,X
|
||||
0E1F- D5 D4 CMP $D4,X
|
||||
0E21- B1 8D LDA ($8D),Y
|
||||
0E23- A0 C6 LDY #$C6
|
||||
0E25- CF ???
|
||||
0E26- D2 A0 CMP ($A0)
|
||||
0E28- A3 ???
|
||||
0E29- DD D6 C1 CMP $C1D6,X
|
||||
0E2C- D2 B1 CMP ($B1)
|
||||
0E2E- BB ???
|
||||
0E2F- A3 ???
|
||||
0E30- B0 BB BCS $0DED
|
||||
0E32- A3 ???
|
||||
0E33- B1 B0 LDA ($B0),Y
|
||||
0E35- BB ???
|
||||
0E36- A3 ???
|
||||
0E37- B2 8D LDA ($8D)
|
||||
0E39- A0 C4 LDY #$C4
|
||||
0E3B- D5 CD CMP $CD,X
|
||||
0E3D- D0 A0 BNE $0DDF
|
||||
0E3F- A3 ???
|
||||
0E40- DD D6 C1 CMP $C1D6,X
|
||||
0E43- D2 B1 CMP ($B1)
|
||||
0E45- BB ???
|
||||
0E46- A3 ???
|
||||
0E47- B2 8D LDA ($8D)
|
||||
0E49- A0 CE LDY #$CE
|
||||
0E4B- C5 D8 CMP $D8
|
||||
0E4D- D4 ???
|
||||
0E4E- 8D AA 8D STA $8DAA
|
||||
0E51- A0 C9 LDY #$C9
|
||||
0E53- C6 C2 DEC $C2
|
||||
0E55- B0 A0 BCS $0DF7
|
||||
0E57- DD D6 C1 CMP $C1D6,X
|
||||
0E5A- D2 B4 CMP ($B4)
|
||||
0E5C- BB ???
|
||||
0E5D- C5 BB CMP $BB
|
||||
0E5F- A3 ???
|
||||
0E60- B2 B0 LDA ($B0)
|
||||
0E62- 8D A0 DF STA $DFA0
|
||||
0E65- D0 D2 BNE $0E39
|
||||
0E67- CE A0 A2 DEC $A2A0
|
||||
0E6A- D7 ???
|
||||
0E6B- C5 CC CMP $CC
|
||||
0E6D- D0 A2 BNE $0E11
|
||||
0E6F- AC B8 C4 LDY $C4B8
|
||||
0E72- 8D A0 C9 STA $C9A0
|
||||
0E75- C6 C2 DEC $C2
|
||||
0E77- B1 A0 LDA ($A0),Y
|
||||
0E79- DD D6 C1 CMP $C1D6,X
|
||||
0E7C- D2 B3 CMP ($B3)
|
||||
0E7E- BB ???
|
||||
0E7F- C5 BB CMP $BB
|
||||
0E81- A3 ???
|
||||
0E82- B0 B9 BCS $0E3D
|
||||
0E84- 8D A0 DF STA $DFA0
|
||||
0E87- D0 D2 BNE $0E5B
|
||||
0E89- CE A0 A2 DEC $A2A0
|
||||
0E8C- D4 ???
|
||||
0E8D- C8 INY
|
||||
0E8E- C1 D4 CMP ($D4,X)
|
||||
0E90- 20 D7 C1 JSR $C1D7
|
||||
0E93- D3 ???
|
||||
0E94- 20 C6 D5 JSR $D5C6
|
||||
0E97- CE AE A2 DEC $A2AE
|
||||
0E9A- AC B8 C4 LDY $C4B8
|
||||
0E9D- B8 CLV
|
||||
0E9E- C4 8D CPY $8D
|
||||
0EA0- A0 C5 LDY #$C5
|
||||
0EA2- CE C4 C9 DEC $C9C4
|
||||
0EA5- C6 C2 DEC $C2
|
||||
0EA7- B1 8D LDA ($8D),Y
|
||||
0EA9- A0 DF LDY #$DF
|
||||
0EAB- D0 D2 BNE $0E7F
|
||||
0EAD- CE A0 A2 DEC $A2A0
|
||||
0EB0- C3 ???
|
||||
0EB1- C8 INY
|
||||
0EB2- CF ???
|
||||
0EB3- CF ???
|
||||
0EB4- 20 C3 C8 JSR $C8C3
|
||||
0EB7- CF ???
|
||||
0EB8- CF ???
|
||||
0EB9- A1 A2 LDA ($A2,X)
|
||||
0EBB- AC B8 C4 LDY $C4B8
|
||||
0EBE- B8 CLV
|
||||
0EBF- C4 8D CPY $8D
|
||||
0EC1- A0 C5 LDY #$C5
|
||||
0EC3- CE C4 C9 DEC $C9C4
|
||||
0EC6- C6 C2 DEC $C2
|
||||
0EC8- B0 8D BCS $0E57
|
||||
0ECA- A0 DF LDY #$DF
|
||||
0ECC- D0 D2 BNE $0EA0
|
||||
0ECE- CE A0 A2 DEC $A2A0
|
||||
0ED1- C4 CF CPY $CF
|
||||
0ED3- CE C5 A1 DEC $A1C5
|
||||
0ED6- A2 AC LDX #$AC
|
||||
0ED8- B8 CLV
|
||||
0ED9- C4 B8 CPY $B8
|
||||
0EDB- C4 8D CPY $8D
|
||||
0EDD- AA TAX
|
||||
0EDE- 8D A0 CA STA $CAA0
|
||||
0EE1- CD D0 A0 CMP $A0D0
|
||||
0EE4- D2 C5 CMP ($C5)
|
||||
0EE6- C5 CE CMP $CE
|
||||
0EE8- D4 ???
|
||||
0EE9- D2 D9 CMP ($D9)
|
||||
0EEB- 8D AA 8D STA $8DAA
|
||||
0EEE- D6 B1 DEC $B1,X
|
||||
0EF0- C5 B2 CMP $B2
|
||||
0EF2- 8D A0 DF STA $DFA0
|
||||
0EF5- D0 D2 BNE $0EC9
|
||||
0EF7- CE A0 A2 DEC $A2A0
|
||||
0EFA- D6 C1 DEC $C1,X
|
||||
0EFC- D2 B1 CMP ($B1)
|
||||
0EFE- 20 BD 20 JSR $20BD
|
||||
0F01- D6 C1 DEC $C1,X
|
||||
0F03- D2 B2 CMP ($B2)
|
||||
0F05- AE A2 8D LDX $8DA2
|
||||
0F08- A0 CA LDY #$CA
|
||||
0F0A- CD D0 A0 CMP $A0D0
|
||||
0F0D- C1 B1 CMP ($B1,X)
|
||||
0F0F- 8D D6 B1 STA $B1D6
|
||||
0F12- C5 B3 CMP $B3
|
||||
0F14- A0 DF LDY #$DF
|
||||
0F16- D0 D2 BNE $0EEA
|
||||
0F18- CE A0 A2 DEC $A2A0
|
||||
0F1B- D6 C1 DEC $C1,X
|
||||
0F1D- D2 B1 CMP ($B1)
|
||||
0F1F- 20 BD 20 JSR $20BD
|
||||
0F22- D6 C1 DEC $C1,X
|
||||
0F24- D2 B3 CMP ($B3)
|
||||
0F26- A2 AC LDX #$AC
|
||||
0F28- B8 CLV
|
||||
0F29- C4 B8 CPY $B8
|
||||
0F2B- C4 8D CPY $8D
|
||||
0F2D- A0 CA LDY #$CA
|
||||
0F2F- CD D0 A0 CMP $A0D0
|
||||
0F32- C1 B2 CMP ($B2,X)
|
||||
0F34- 8D D6 B2 STA $B2D6
|
||||
0F37- C5 B3 CMP $B3
|
||||
0F39- 8D A0 DF STA $DFA0
|
||||
0F3C- D0 D2 BNE $0F10
|
||||
0F3E- CE A0 A2 DEC $A2A0
|
||||
0F41- D6 C1 DEC $C1,X
|
||||
0F43- D2 B2 CMP ($B2)
|
||||
0F45- 20 BD 20 JSR $20BD
|
||||
0F48- D6 C1 DEC $C1,X
|
||||
0F4A- D2 B3 CMP ($B3)
|
||||
0F4C- AE A2 AC LDX $ACA2
|
||||
0F4F- B8 CLV
|
||||
0F50- C4 B8 CPY $B8
|
||||
0F52- C4 8D CPY $8D
|
||||
0F54- A0 CA LDY #$CA
|
||||
0F56- CD D0 A0 CMP $A0D0
|
||||
0F59- C1 B2 CMP ($B2,X)
|
||||
0F5B- 8D D6 B2 STA $B2D6
|
||||
0F5E- C5 B4 CMP $B4
|
||||
0F60- 8D A0 DF STA $DFA0
|
||||
0F63- D0 D2 BNE $0F37
|
||||
0F65- CE A0 A2 DEC $A2A0
|
||||
0F68- D6 C1 DEC $C1,X
|
||||
0F6A- D2 B2 CMP ($B2)
|
||||
0F6C- 20 BD 20 JSR $20BD
|
||||
0F6F- D6 C1 DEC $C1,X
|
||||
0F71- D2 B4 CMP ($B4)
|
||||
0F73- A2 AC LDX #$AC
|
||||
0F75- B8 CLV
|
||||
0F76- C4 B8 CPY $B8
|
||||
0F78- C4 8D CPY $8D
|
||||
0F7A- A0 CA LDY #$CA
|
||||
0F7C- CD D0 A0 CMP $A0D0
|
||||
0F7F- C1 B3 CMP ($B3,X)
|
||||
0F81- 8D AA 8D STA $8DAA
|
||||
0F84- AA TAX
|
||||
0F85- 8D AA E0 STA $E0AA
|
||||
0F88- E0 E0 CPX #$E0
|
||||
0F8A- E0 E0 CPX #$E0
|
||||
0F8C- E0 E0 CPX #$E0
|
||||
0F8E- E0 E0 CPX #$E0
|
||||
0F90- E0 E0 CPX #$E0
|
||||
0F92- E0 E0 CPX #$E0
|
||||
0F94- E0 E0 CPX #$E0
|
||||
0F96- E0 E0 CPX #$E0
|
||||
0F98- E0 E0 CPX #$E0
|
||||
0F9A- E0 E0 CPX #$E0
|
||||
0F9C- E0 E0 CPX #$E0
|
||||
0F9E- E0 E0 CPX #$E0
|
||||
0FA0- E0 E0 CPX #$E0
|
||||
0FA2- E0 E0 CPX #$E0
|
||||
0FA4- E0 AA CPX #$AA
|
||||
0FA6- 8D AA 20 STA $20AA
|
||||
0FA9- 20 20 20 JSR $2020
|
||||
0FAC- 20 20 20 JSR $2020
|
||||
0FAF- 20 C2 CF JSR $CFC2
|
||||
0FB2- D4 ???
|
||||
0FB3- D4 ???
|
||||
0FB4- CF ???
|
||||
0FB5- CD 20 C9 CMP $C920
|
||||
0FB8- CE C3 CC DEC $CCC3
|
||||
0FBB- D5 C4 CMP $C4,X
|
||||
0FBD- C5 D3 CMP $D3
|
||||
0FBF- 20 20 20 JSR $2020
|
||||
0FC2- 20 20 20 JSR $2020
|
||||
0FC5- 20 AA 8D JSR $8DAA
|
||||
0FC8- AA TAX
|
||||
0FC9- AC AC AC LDY $ACAC
|
||||
0FCC- AC AC AC LDY $ACAC
|
||||
0FCF- AC AC AC LDY $ACAC
|
||||
0FD2- AC AC AC LDY $ACAC
|
||||
0FD5- AC AC AC LDY $ACAC
|
||||
0FD8- AC AC AC LDY $ACAC
|
||||
0FDB- AC AC AC LDY $ACAC
|
||||
0FDE- AC AC AC LDY $ACAC
|
||||
0FE1- AC AC AC LDY $ACAC
|
||||
0FE4- AC AC AC LDY $ACAC
|
||||
0FE7- AA TAX
|
||||
0FE8- 8D AA 8D STA $8DAA
|
||||
0FEB- AA TAX
|
||||
0FEC- AA TAX
|
||||
0FED- 20 C2 CF JSR $CFC2
|
||||
0FF0- D4 ???
|
||||
0FF1- D4 ???
|
||||
0FF2- CF ???
|
||||
0FF3- CD 20 C9 CMP $C920
|
||||
0FF6- CE C3 CC DEC $CCC3
|
||||
0FF9- D5 C4 CMP $C4,X
|
||||
0FFB- C5 D3 CMP $D3
|
||||
0FFD- 8D AA 8D STA $8DAA
|
||||
1000- A0 D0 LDY #$D0
|
||||
1002- D5 D4 CMP $D4,X
|
||||
1004- A0 CD LDY #$CD
|
||||
1006- C9 CE CMP #$CE
|
||||
1008- AE CC C9 LDX $C9CC
|
||||
100B- C2 ???
|
||||
100C- AE D2 C5 LDX $C5D2
|
||||
100F- D1 D5 CMP ($D5),Y
|
||||
1011- C9 D2 CMP #$D2
|
||||
1013- C5 C4 CMP $C4
|
||||
1015- 8D 00 00 STA $0000
|
||||
@@ -1,115 +0,0 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* -< COMMON DEMO )- *
|
||||
* *
|
||||
* VERSION 0.4.0 *
|
||||
* *
|
||||
* 28-APR-2019 *
|
||||
* *
|
||||
* NATHAN D. RIGGS *
|
||||
* NATHAN.RIGGS@OUTLOOK.COM *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** ASSEMBLER DIRECTIVES
|
||||
*
|
||||
LST OFF
|
||||
CYC AVE
|
||||
EXP OFF
|
||||
TR ON
|
||||
DSK APPLECHOP.DEMO
|
||||
OBJ $BFE0
|
||||
ORG $6000
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* TOP INCLUDES (HOOKS,MACROS) *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PUT MIN.HEAD.REQUIRED
|
||||
PUT MIN.HOOKS.STDIO
|
||||
USE MIN.MAC.REQUIRED
|
||||
USE MIN.MAC.STDIO
|
||||
USE MAC.IFSTRUCT
|
||||
USE MAC.LOOPSTRUCT
|
||||
LST ON
|
||||
USE MAC.APPLECHOP
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PROGRAM MAIN BODY *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
@GOTO ENDVARS
|
||||
*
|
||||
]VAR1 DS 2
|
||||
]VAR2 DS 2
|
||||
]STRING1 DS 255,0
|
||||
*
|
||||
ENDVARS
|
||||
*
|
||||
@HOME
|
||||
@INVERT
|
||||
@PRINT "APPLECHOP MACRO LIBRARY",8D8D
|
||||
@NORMAL
|
||||
@PRINT "THIS IS A DEMO FOR THE",8D
|
||||
@PRINT "APPLECHOP MACRO LIBRARY, WHICH",8D
|
||||
@PRINT "SOMEWHAT EMULATES THE HIGHER-",8D
|
||||
@PRINT "LEVEL STRUCTURE OF APPLESOFT CODING",8D
|
||||
@PRINT "TO EASE A TRANSITION BETWEEN HIGHER-",8D
|
||||
@PRINT "LEVEL LANGUAGES LIKE APPLESOFT BASIC",8D
|
||||
@PRINT "TO 6502 ASSEMBLY.",8D8D
|
||||
@GET
|
||||
@PRINT "OBVIOUSLY, IT IS RATHER IMPOSSIBLE",8D
|
||||
@PRINT "TO SIMULATE APPLESOFT BASIC WITH",8D
|
||||
@PRINT "100% ACCURACY WITHOUT SIMPLY WRITING",8D
|
||||
@PRINT "THE INTERPRETER FROM THE GROUND UP,",8D
|
||||
@PRINT "WHICH WOULD DEFEAT THE PURPOSE IN THE",8D
|
||||
@PRINT "FIRST PLACE. THIS LIBRARY AIMS TO ",8D
|
||||
@PRINT "HARNESS HIGHER-LEVEL FUNCTIONALITY ",8D
|
||||
@PRINT "WHILE STILL REQUIRING THE USER TO LEARN",8D
|
||||
@PRINT "THE BASICS OF ASSEMBLY. THEN, ONCE",8D
|
||||
@PRINT "THE USER IS COMFORTABLE ENOUGH, THEY",8D
|
||||
@PRINT "ARE FREE TO EXPLORE THE INNER WORKINGS",8D
|
||||
@PRINT "OF HOW EACH COMMAND WORKS, SLOWLY",8D
|
||||
@PRINT "REPLACING THE MACROS WITH MORE ",8D
|
||||
@PRINT "EFFICIENT LOW LEVEL CODE OF THEIR OWN.",8D
|
||||
@GET
|
||||
_PRN " ",8D8D
|
||||
@HOME
|
||||
@PRINT "CURRENTLY, THE APPLECHOP LIBRARY",8D
|
||||
@PRINT "OFFERS THE FOLLOWING COMMANDS:",8D8D
|
||||
@PRINT "@CALL @DIM1 @DIM2",8D
|
||||
@PRINT "@END @ENDIF @FLASH",8D
|
||||
@PRINT "@FOR @GET @GOSUB",8D
|
||||
@PRINT "@GOTO @HOME @HTAB",8D
|
||||
@PRINT "@IFGOTO @IFSUB @IFTHEN",8D
|
||||
@PRINT "@INPUT @INVERT @NEXT",8D
|
||||
@PRINT "@NORMAL @PDL @PEEK",8D
|
||||
@PRINT "@POKE @POS @PRINT",8D
|
||||
@PRINT "@POP @RETURN @ONERR",8D
|
||||
@PRINT "@STOP @TEXT @VTAB",8D8D
|
||||
@GET
|
||||
@PRINT "THE FOLLOWING WILL BE ADDED IN",8D
|
||||
@PRINT "THE NEAR FUTURE, ONCE NECESSARY",8D
|
||||
@PRINT "SUBROUTINES ARE COMPLETE:",8D8D
|
||||
@PRINT "@COLOR @GR @HCOLOR",8D
|
||||
@PRINT "@HGR @HGR2 @HLIN",8D
|
||||
@PRINT "@HPLOT @PLOT @VLIN",8D8D
|
||||
*
|
||||
** MATH, ARRAY GET, ARRAY PUT, DOS COMMAND,
|
||||
** HIRES LINE, ELSE, PRINT NUMBER, LEFT$,
|
||||
** RIGHT$, MID$, CHR$, ASC, ...
|
||||
*
|
||||
@GET
|
||||
@END
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* BOTTOM INCLUDES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** BOTTOM INCLUDES
|
||||
*
|
||||
LST OFF
|
||||
PUT MIN.LIB.REQUIRED
|
||||
PUT MIN.SUB.XPRINT
|
||||
PUT MIN.SUB.DPRINT
|
||||
*
|
||||
LST ON
|
||||
@@ -1,26 +0,0 @@
|
||||
JMP __ENDHEAD
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* HIGH-LEVEL STRUCTURE HEADER *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFDEPTH DS 1
|
||||
HABAK DS 1
|
||||
HXBAK DS 1
|
||||
HYBAK DS 1
|
||||
HZBAK DS 1
|
||||
HADDR DS 2
|
||||
HADDR2 DS 2
|
||||
*
|
||||
** ENDIF/ELSE CODES FOR EMBEDDING DEPTHS
|
||||
*
|
||||
IFCODE0 HEX 1B9B18090600
|
||||
IFCODE1 HEX 1B9B18090601
|
||||
IFCODE2 HEX 1B9B18090602
|
||||
IFCODE3 HEX 1B9B18090603
|
||||
IFCODE4 HEX 1B9B18090604
|
||||
IFCODE5 HEX 1B9B18090605
|
||||
IFCODE6 HEX 1B9B18090606
|
||||
IFCODE7 HEX 1B9B18090607
|
||||
*
|
||||
__ENDHEAD
|
||||
@@ -1,169 +0,0 @@
|
||||
@GOTO MAC
|
||||
JMP ]1
|
||||
<<<
|
||||
@GOSUB MAC
|
||||
JSR ]1
|
||||
<<<
|
||||
@RETURN MAC
|
||||
RTS
|
||||
<<<
|
||||
@END MAC
|
||||
JMP REENTRY
|
||||
<<<
|
||||
@ONERR MAC
|
||||
ERRH ]1
|
||||
<<<
|
||||
@PRINT MAC
|
||||
PRN ]1
|
||||
<<<
|
||||
@INPUT MAC
|
||||
INP
|
||||
GRET ]1
|
||||
<<<
|
||||
@GET MAC
|
||||
GKEY
|
||||
STA RETURN
|
||||
LDY #1
|
||||
STA RETLEN
|
||||
<<<
|
||||
@HOME MAC
|
||||
JSR $FC58
|
||||
<<<
|
||||
@HTAB MAC
|
||||
SETCX ]1
|
||||
<<<
|
||||
@VTAB MAC
|
||||
SETCY ]1
|
||||
<<<
|
||||
@TEXT MAC
|
||||
LDA $C051
|
||||
<<<
|
||||
@POKE MAC
|
||||
LDY #0
|
||||
LDA ]1
|
||||
STA ADDR1
|
||||
LDA ]1/$100
|
||||
STA ADDR1+1
|
||||
LDA ]2
|
||||
STA (ADDR1),Y
|
||||
<<<
|
||||
@PEEK MAC
|
||||
LDA ]1
|
||||
STA ADDR1
|
||||
LDA ]1/$100
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA RETURN
|
||||
LDA #1
|
||||
STA RETLEN
|
||||
<<<
|
||||
@CALL MAC
|
||||
JSR ]1
|
||||
<<<
|
||||
@PDL MAC
|
||||
PDL #0
|
||||
<<<
|
||||
@POS MAC
|
||||
LDA $24
|
||||
STA RETURN
|
||||
LDY #1
|
||||
STA RETURN
|
||||
<<<
|
||||
@INVERT MAC
|
||||
LDA #$3F
|
||||
STA $0032
|
||||
<<<
|
||||
@FLASH MAC
|
||||
LDA #$7F
|
||||
STA $0032
|
||||
<<<
|
||||
@NORMAL MAC
|
||||
LDA #$FF
|
||||
STA $0032
|
||||
<<<
|
||||
@STOP MAC
|
||||
JMP REENTRY
|
||||
<<<
|
||||
@FOR MAC
|
||||
FOR ]1;]2;]3;]4
|
||||
<<<
|
||||
@NEXT MAC
|
||||
NEXT
|
||||
<<<
|
||||
@DIM1 MAC
|
||||
DIM161 ]1;]2;]3;#0
|
||||
<<<
|
||||
@DIM2 MAC
|
||||
DIM162 ]1;]2;]3;]4;#0
|
||||
<<<
|
||||
@POP MAC
|
||||
PLA
|
||||
PLA
|
||||
<<<
|
||||
@IFGOTO MAC
|
||||
IFJ ]1;]2;]3
|
||||
<<<
|
||||
@IFGSUB MAC
|
||||
IFS ]1;]2;]3
|
||||
<<<
|
||||
@IFTHEN MAC
|
||||
INC IFDEPTH
|
||||
LDA IFDEPTH
|
||||
CMP #0
|
||||
BEQ __ID0
|
||||
CMP #1
|
||||
BEQ __ID1
|
||||
CMP #2
|
||||
BEQ __ID2
|
||||
__ID0 JMP ID0
|
||||
__ID1 JMP ID1
|
||||
__ID2 JMP ID2
|
||||
ID0
|
||||
IFB0 ]1;]2;]3
|
||||
JMP __EX
|
||||
ID1
|
||||
IFB1 ]1;]2;]3
|
||||
JMP __EX
|
||||
ID2
|
||||
IFB2 ]1;]2;]3
|
||||
__EX
|
||||
<<<
|
||||
@ENDIF MAC
|
||||
LDA IFDEPTH
|
||||
CMP #0
|
||||
BEQ __EI0
|
||||
CMP #1
|
||||
BEQ __EI1
|
||||
CMP #2
|
||||
BEQ __EI2
|
||||
JMP __EIX
|
||||
__EI0
|
||||
ENDIFB0
|
||||
JMP __EIX
|
||||
__EI1
|
||||
ENDIFB1
|
||||
JMP __EIX
|
||||
__EI2
|
||||
ENDIFB2
|
||||
__EIX
|
||||
DEC IFDEPTH
|
||||
<<<
|
||||
@GR MAC
|
||||
<<<
|
||||
@COLOR MAC
|
||||
<<<
|
||||
@PLOT MAC
|
||||
<<<
|
||||
@HLIN MAC
|
||||
<<<
|
||||
@VLIN MAC
|
||||
<<<
|
||||
@HGR MAC
|
||||
<<<
|
||||
@HGR2 MAC
|
||||
<<<
|
||||
@HPLOT MAC
|
||||
<<<
|
||||
@HCOLOR MAC
|
||||
<<<
|
||||
@@ -1,672 +0,0 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* IFJ *
|
||||
* *
|
||||
* STANDARD IF CONTROL STRUCT *
|
||||
* THAT JUMPS IF TRUE *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = FIRST VARIABLE *
|
||||
* ]2 = CONDITIONAL TEST,WHERE *
|
||||
* E = EQUALS *
|
||||
* N = NOT EQUAL *
|
||||
* G = GREATER THAN *
|
||||
* L = LESS THAN *
|
||||
* ) = GREATER THAN OR = *
|
||||
* ( = LESS THAN OR EQUAL *
|
||||
* ]3 = SECOND VARIABLE *
|
||||
* ]4 = JUMP ADDR IF TRUE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFJ MAC
|
||||
STA SCRATCH ; BACKUP .A
|
||||
LDA ]1 ; COMPARE FIRST TEST VAR
|
||||
CMP ]3 ; TO THE SECOND (]1, ]3)
|
||||
*
|
||||
IF ]2,E ; IF ]2 = E THEN TEST FOR =
|
||||
BEQ ]J4 ; IF ]1 = ]3, JUMP TO ]4
|
||||
FIN
|
||||
IF ]2,N ; IF ]2 = N THEN TEST FOR !=
|
||||
BNE ]J4 ; IF ]1 != ]3, JUMP TO ]4
|
||||
FIN
|
||||
IF ]2,G ; IF ]2 = G THEN TEST FOR >
|
||||
BEQ ]SKPGT ; IF ]1 = ]3, SKIP TEST
|
||||
BCS ]J4 ; IF ]1 > ]3, JUMP TO ]4
|
||||
]SKPGT
|
||||
FIN
|
||||
IF ]2,L ; IF ]2 = L THEN TEST FOR <
|
||||
BCC ]J4 ; IF ]1 < ]3, JUMP TO ]4
|
||||
FIN
|
||||
IF ]2,) ; IF ]2 = ) THEN TEST FOR >=
|
||||
BCS ]J4 ; IF ]1 >= ]3, JUMP TO ]4
|
||||
FIN
|
||||
IF ]2,( ; IF ]2 = ( THEN TEST FOR <=
|
||||
BEQ ]J4 ; IF ]1 = ]3, JUMP TO ]4
|
||||
BCC ]J4 ; IF ]1 < ]3, JUMP TO ]4
|
||||
FIN
|
||||
*
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH ; RESTORE .A
|
||||
JMP ]4
|
||||
]EXIT
|
||||
LDA SCRATCH ; RESTORE .A
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* IFJE *
|
||||
* *
|
||||
* STANDARD IF CONTROL STRUCT *
|
||||
* THAT JUMPS IF TRUE, ELSE *
|
||||
* JUMP TO ALTERNATE *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = FIRST VARIABLE *
|
||||
* ]2 = CONDITIONAL TEST,WHERE *
|
||||
* E = EQUALS *
|
||||
* N = NOT EQUAL *
|
||||
* G = GREATER THAN *
|
||||
* L = LESS THAN *
|
||||
* ) = GREATER THAN OR = *
|
||||
* ( = LESS THAN OR EQUAL *
|
||||
* ]3 = SECOND VARIABLE *
|
||||
* ]4 = JUMP ADDR IF TRUE *
|
||||
* ]5 = ELSE JUMP HERE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFJE MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
*
|
||||
IF ]2,E ; TEST FOR EQUALITY
|
||||
BEQ ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,N ; NOT EQUAL
|
||||
BNE ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,G ; GREATER THAN
|
||||
BEQ ]SKPGT ; SKIP IF EQUAL TO
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,L ; LESS THAN
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,) ; GREATER THAN OR EQUAL
|
||||
BCS ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,( ; LESS THAN OR EQUAL
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
*
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
JMP ]4
|
||||
]EXIT
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* IFS *
|
||||
* *
|
||||
* STANDARD IF CONTROL STRUCT *
|
||||
* THAT JSR'S IF TRUE *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = FIRST VARIABLE *
|
||||
* ]2 = CONDITIONAL TEST,WHERE *
|
||||
* E = EQUALS *
|
||||
* N = NOT EQUAL *
|
||||
* G = GREATER THAN *
|
||||
* L = LESS THAN *
|
||||
* ) = GREATER THAN OR = *
|
||||
* ( = LESS THAN OR EQUAL *
|
||||
* ]3 = SECOND VARIABLE *
|
||||
* ]4 = JUMP ADDR IF TRUE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFS MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
*
|
||||
IF ]2,E ; TEST FOR EQUALITY
|
||||
BEQ ]J4
|
||||
FIN
|
||||
IF ]2,N ; NOT EQUAL
|
||||
BNE ]J4
|
||||
FIN
|
||||
IF ]2,G ; GREATER THAN
|
||||
BEQ ]SKPGT ; SKIP IF EQUAL TO
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
FIN
|
||||
IF ]2,L ; LESS THAN
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,) ; GREATER THAN OR EQUAL
|
||||
BCS ]J4
|
||||
FIN
|
||||
IF ]2,( ; LESS THAN OR EQUAL
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
FIN
|
||||
*
|
||||
LDA SCRATCH
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
JSR ]4
|
||||
]EXIT
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* IFSE *
|
||||
* *
|
||||
* STANDARD IF CONTROL STRUCT *
|
||||
* THAT JSR'S IF TRUE, ELSE *
|
||||
* JSR TO ALTERNATE *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = FIRST VARIABLE *
|
||||
* ]2 = CONDITIONAL TEST,WHERE *
|
||||
* E = EQUALS *
|
||||
* N = NOT EQUAL *
|
||||
* G = GREATER THAN *
|
||||
* L = LESS THAN *
|
||||
* ) = GREATER THAN OR = *
|
||||
* ( = LESS THAN OR EQUAL *
|
||||
* ]3 = SECOND VARIABLE *
|
||||
* ]4 = JSR ADDR IF TRUE *
|
||||
* ]5 = ELSE JSR HERE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFSE MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
*
|
||||
IF ]2,E ; TEST FOR EQUALITY
|
||||
BEQ ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,N ; NOT EQUAL
|
||||
BNE ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,G ; GREATER THAN
|
||||
BEQ ]SKPGT ; SKIP IF EQUAL TO
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,L ; LESS THAN
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,) ; GREATER THAN OR EQUAL
|
||||
BCS ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,( ; LESS THAN OR EQUAL
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
*
|
||||
LDA SCRATCH
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
JSR ]4
|
||||
]EXIT
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* IFB0 *
|
||||
* *
|
||||
* EXECUTES BLOCK OF TEXT THAT *
|
||||
* SITES BETWEEN IF STATEMENT *
|
||||
* AND AN ELSE/ENDIF STATEMENT. *
|
||||
* *
|
||||
* ]1 = FIRST CONDITIONAL VAR *
|
||||
* ]2 = CONDITIONAL *
|
||||
* ]3 = SECOND TEST VARIABLE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFB0 MAC
|
||||
*
|
||||
STA SCRATCH
|
||||
]PTR EQU *
|
||||
LDA ]PTR
|
||||
STA ADDR1
|
||||
LDA ]PTR+1
|
||||
STA ADDR1/$100
|
||||
_LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$1B
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$9B
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$18
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$09
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$06
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
*
|
||||
** MAGIC KEY FOUND, NOW JUMP TO END OF IT
|
||||
** IF CONDITIONAL IS FALSE
|
||||
*
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E ; TEST FOR EQUALITY
|
||||
BEQ _IFBOD
|
||||
FIN
|
||||
IF ]2,N ; NOT EQUAL
|
||||
BNE _IFBOD
|
||||
FIN
|
||||
IF ]2,G ; GREATER THAN
|
||||
BEQ SKPGT ; SKIP IF EQUAL TO
|
||||
BCS _IFBOD
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L ; LESS THAN
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
IF ]2,) ; GREATER THAN OR EQUAL
|
||||
BCS _IFBOD
|
||||
FIN
|
||||
IF ]2,( ; LESS THAN OR EQUAL
|
||||
BEQ _IFBOD
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
_WAIT
|
||||
JMP (ADDR1)
|
||||
*
|
||||
_IFBOD
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* ENDIFB0 *
|
||||
* *
|
||||
* END AN IF BLOCK. THE IFB *
|
||||
* COMMAND SEARCH THE PROGRAM *
|
||||
* COUNTER UNTIL IT FINDS THE *
|
||||
* MAGIC WORD BYTE SEQUENCE *
|
||||
* HERE TO INDICATE AN ENDIF. *
|
||||
* THIS CURRENT METHOD MEANS *
|
||||
* NESTING IFB..ENDIFB BLOCKS *
|
||||
* IS NOT POSSIBLE WITHOUT *
|
||||
* EXITING ALL IFB BLOCKS. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
ENDIFB0 MAC
|
||||
*
|
||||
JMP SKIPHEX
|
||||
HEX 1B9B180906 ; MAGIC KEY
|
||||
SKIPHEX
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* IFB1 *
|
||||
* *
|
||||
* EXECUTES BLOCK OF TEXT THAT *
|
||||
* SITES BETWEEN IF STATEMENT *
|
||||
* AND AN ELSE/ENDIF STATEMENT. *
|
||||
* *
|
||||
* ]1 = FIRST CONDITIONAL VAR *
|
||||
* ]2 = CONDITIONAL *
|
||||
* ]3 = SECOND TEST VARIABLE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFB1 MAC
|
||||
*
|
||||
STA SCRATCH
|
||||
]PTR EQU *
|
||||
LDA ]PTR
|
||||
STA ADDR1
|
||||
LDA ]PTR+1
|
||||
STA ADDR1/$100
|
||||
_LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$1C
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$9B
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$18
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$09
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$06
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
*
|
||||
** MAGIC KEY FOUND, NOW JUMP TO END OF IT
|
||||
** IF CONDITIONAL IS FALSE
|
||||
*
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E ; TEST FOR EQUALITY
|
||||
BEQ _IFBOD
|
||||
FIN
|
||||
IF ]2,N ; NOT EQUAL
|
||||
BNE _IFBOD
|
||||
FIN
|
||||
IF ]2,G ; GREATER THAN
|
||||
BEQ SKPGT ; SKIP IF EQUAL TO
|
||||
BCS _IFBOD
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L ; LESS THAN
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
IF ]2,) ; GREATER THAN OR EQUAL
|
||||
BCS _IFBOD
|
||||
FIN
|
||||
IF ]2,( ; LESS THAN OR EQUAL
|
||||
BEQ _IFBOD
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
JMP (ADDR1)
|
||||
*
|
||||
_IFBOD
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* ENDIFB1 *
|
||||
* *
|
||||
* END AN IF BLOCK. THE IFB *
|
||||
* COMMAND SEARCH THE PROGRAM *
|
||||
* COUNTER UNTIL IT FINDS THE *
|
||||
* MAGIC WORD BYTE SEQUENCE *
|
||||
* HERE TO INDICATE AN ENDIF. *
|
||||
* THIS CURRENT METHOD MEANS *
|
||||
* NESTING IFB..ENDIFB BLOCKS *
|
||||
* IS NOT POSSIBLE WITHOUT *
|
||||
* EXITING ALL IFB BLOCKS. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
ENDIFB1 MAC
|
||||
*
|
||||
JMP SKIPHEX
|
||||
HEX 1C9B180906 ; MAGIC KEY
|
||||
SKIPHEX
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* IFB2 *
|
||||
* *
|
||||
* EXECUTES BLOCK OF TEXT THAT *
|
||||
* SITES BETWEEN IF STATEMENT *
|
||||
* AND AN ELSE/ENDIF STATEMENT. *
|
||||
* *
|
||||
* ]1 = FIRST CONDITIONAL VAR *
|
||||
* ]2 = CONDITIONAL *
|
||||
* ]3 = SECOND TEST VARIABLE *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
IFB2 MAC
|
||||
*
|
||||
STA SCRATCH
|
||||
]PTR EQU *
|
||||
LDA ]PTR
|
||||
STA ADDR1
|
||||
LDA ]PTR+1
|
||||
STA ADDR1/$100
|
||||
_LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$1D
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$9B
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$18
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$09
|
||||
BNE _LOOP1
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$06
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
*
|
||||
** MAGIC KEY FOUND, NOW JUMP TO END OF IT
|
||||
** IF CONDITIONAL IS FALSE
|
||||
*
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E ; TEST FOR EQUALITY
|
||||
BEQ _IFBOD
|
||||
FIN
|
||||
IF ]2,N ; NOT EQUAL
|
||||
BNE _IFBOD
|
||||
FIN
|
||||
IF ]2,G ; GREATER THAN
|
||||
BEQ SKPGT ; SKIP IF EQUAL TO
|
||||
BCS _IFBOD
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L ; LESS THAN
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
IF ]2,) ; GREATER THAN OR EQUAL
|
||||
BCS _IFBOD
|
||||
FIN
|
||||
IF ]2,( ; LESS THAN OR EQUAL
|
||||
BEQ _IFBOD
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
*
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
JMP (ADDR1)
|
||||
*
|
||||
_IFBOD
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* ENDIFB2 *
|
||||
* *
|
||||
* END AN IF BLOCK. THE IFB *
|
||||
* COMMAND SEARCH THE PROGRAM *
|
||||
* COUNTER UNTIL IT FINDS THE *
|
||||
* MAGIC WORD BYTE SEQUENCE *
|
||||
* HERE TO INDICATE AN ENDIF. *
|
||||
* THIS CURRENT METHOD MEANS *
|
||||
* NESTING IFB..ENDIFB BLOCKS *
|
||||
* IS NOT POSSIBLE WITHOUT *
|
||||
* EXITING ALL IFB BLOCKS. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
ENDIFB2 MAC
|
||||
*
|
||||
JMP SKIPHEX
|
||||
HEX 1D9B180906 ; MAGIC KEY
|
||||
SKIPHEX
|
||||
<<<
|
||||
@@ -1,229 +0,0 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* LOOP *
|
||||
* *
|
||||
* STARTS A DO/WHILE / DO/UNTIL *
|
||||
* LOOP. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
LOOP MAC
|
||||
]PTR EQU *
|
||||
STA SCRATCH ; BACKUP .A
|
||||
LDA #>]PTR ; GET HIBYTE OF PROGRAM COUNTER
|
||||
PHA ; PUSH TO STACK
|
||||
LDA #<]PTR ; GET LOBYTE OF PC
|
||||
PHA ; PUSH TO STACK
|
||||
LDA SCRATCH ; RESTORE ORIGINAL .A
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* UNTIL *
|
||||
* *
|
||||
* CONDITIONAL AT END OF LOOP *
|
||||
* THAT DETERMINES IF THE LOOP *
|
||||
* WILL CONTINUE OR END. *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = FIRST COMPARISON VAR *
|
||||
* ]2 = COMPARISON OPERATOR *
|
||||
* ]3 = SECOND COMPARISON VAR *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
UNTIL MAC
|
||||
STA SCRATCH ; BACKUP .A
|
||||
LDA ]1 ; LOAD FIRST CONDITIONAL VAR
|
||||
CMP ]3 ; COMPARE TO SECOND CONDITIONAL
|
||||
*
|
||||
IF ]2,E ; IF ]2 = E, TEST FOR EQUALITY
|
||||
BEQ _LEXIT ; IF ]1 = ]3, EXIT LOOP
|
||||
FIN
|
||||
IF ]2,N ; IF ]2 = N, TEST FOR NOT EQUAL
|
||||
BNE _LEXIT ; IF ]1 != ]3, EXIT LOOP
|
||||
FIN
|
||||
IF ]2,G ; IF ]2 = G, TEST FOR GREATER THAN
|
||||
BEQ SKPGT ; IF ]1 = ]3, SKIP TEST
|
||||
BCS _LEXIT ; IF ]2 > ]3, EXIT LOOP
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L ; IF ]2 = L, TEST FOR LESS THAN
|
||||
BCC _LEXIT ; IF ]1 < ]3, EXIT
|
||||
FIN
|
||||
IF ]2,) ; IF ]2 = ), TEST FOR >=
|
||||
BCS _LEXIT ; IF ]1 >= ]3, EXIT LOOP
|
||||
FIN
|
||||
IF ]2,( ; IF ]2 = (, TEST FOR <=
|
||||
BEQ _LEXIT ; IF ]1 = ]3, EXIT LOOP
|
||||
BCC _LEXIT ; IF ]1 < ]3, EXIT LOOP
|
||||
FIN
|
||||
*
|
||||
** CONDITIONAL IS FALSE; CONTINUE LOOPING
|
||||
*
|
||||
PLA ; PULL OLD PROGRAM COUNTER
|
||||
STA ADDR1 ; FROM STACK (LOBYTE)
|
||||
PLA ; GET PC HIBYTE
|
||||
STA ADDR1+1
|
||||
LDA SCRATCH ; RESTORE BACKED UP .A
|
||||
JMP (ADDR1) ; JUMP BACK TO LOOP COMMAND
|
||||
*
|
||||
_LEXIT
|
||||
PLA ; CLEAR PC LOBYTE
|
||||
PLA ; CLEAR PC HIBYTE FROM STACK
|
||||
LDA SCRATCH ; RESTORE BACKED UP .A
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* WHILE *
|
||||
* *
|
||||
* CONDITIONAL AT END OF LOOP *
|
||||
* THAT DETERMINES IF THE LOOP *
|
||||
* WILL CONTINUE OR END. *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = FIRST COMPARISON VAR *
|
||||
* ]2 = COMPARISON OPERATOR *
|
||||
* ]3 = SECOND COMPARISON VAR *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
WHILE MAC
|
||||
STA SCRATCH ; BACKUP .A
|
||||
LDA ]1 ; COMPARE ]1
|
||||
CMP ]3 ; TO ]3
|
||||
*
|
||||
IF ]2,E ; IF ]2 = E, THEN TEST FOR =
|
||||
BEQ _LJUMP ; IF ]1 = ]3, CONTINUE LOOP
|
||||
FIN
|
||||
IF ]2,N ; IF ]2 = N, TEST FOR !=
|
||||
BNE _LJUMP ; IF ]1 != ]3, CONTINUE LOOP
|
||||
FIN
|
||||
IF ]2,G ; IF ]2 = G, THEN TEST FOR >
|
||||
BEQ SKPGT ; SKIP TEST IF ]1 = ]3
|
||||
BCS _LJUMP ; IF ]1 > ]3, CONTINUE LOOP
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L ; IF ]2 = L, TEST FOR <
|
||||
BCC _LJUMP ; IF ]1 < ]3, CONTINUE LOOP
|
||||
FIN
|
||||
IF ]2,) ; IF ]2 = ), TEST FOR >=
|
||||
BCS _LJUMP ; IF ]1 >= ]3, CONTINUE LOOP
|
||||
FIN
|
||||
IF ]2,( ; IF ]2 = (, TEST FOR <=
|
||||
BEQ _LJUMP ; IF ]1 = ]3
|
||||
BCC _LJUMP ; OR ]1 < ]3, CONTINUE LOOP
|
||||
FIN
|
||||
JMP _LEXIT ; OTHERWISE, EXIT LOOP
|
||||
*
|
||||
** STILL TRUE; CONTINUE LOOP
|
||||
*
|
||||
_LJUMP
|
||||
PLA ; GET LOOP COMMAND ADDRESS
|
||||
STA ADDR1 ; LOBYTE
|
||||
PLA ; GET ADDRESS HIBYTE
|
||||
STA ADDR1+1
|
||||
LDA SCRATCH ; RESTORE .A
|
||||
JMP (ADDR1) ; JUMP BACK TO LOOP COMMAND
|
||||
*
|
||||
_LEXIT
|
||||
PLA ; POP LOOP ADDRESS LOBYTE
|
||||
PLA ; POP LOOP ADDRESS HIBYTE
|
||||
LDA SCRATCH ; RESTORE .A
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* FOR *
|
||||
* *
|
||||
* START A FOR..NEXT LOOP *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = COUNTER MEM LOCATION *
|
||||
* ]2 = COUNTER LOW *
|
||||
* ]3 = COUNTER HIGH *
|
||||
* ]4 = COUNTER STEP *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
FOR MAC
|
||||
STA SCRATCH ; BACKUP .A
|
||||
LDA ]1 ; GET LOBYTE OF COUNTER VAR
|
||||
STA ADDR4
|
||||
LDA ]1/$100 ; GET HIBYTE
|
||||
STA ADDR4+1
|
||||
LDY #0 ; STORE MINVAL IN COUNTER
|
||||
LDA ]2
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA ]2/$100 ; STORE HIBYTE OF MINVAL
|
||||
STA (ADDR4),Y
|
||||
LDA SCRATCH ; RESTORE .A
|
||||
*
|
||||
]PTR EQU *
|
||||
LDA #>]PTR ; GET PROGRAM COUNTER
|
||||
PHA ; HIBYTE AND PUSH
|
||||
LDA #<]PTR ; GET PROGRAM COUNTER
|
||||
PHA ; LOBYTE AND PUSH
|
||||
LDA ]1/$100 ; GET COUNTER ADDRESS
|
||||
PHA ; HIBYTE AND PUSH
|
||||
LDA ]1 ; GET COUNTER ADDRESS
|
||||
PHA ; LOBYTE AND PUSH
|
||||
LDA ]3/$100 ; GET COUNTER MAX
|
||||
PHA ; HIBYTE AND PUSH
|
||||
LDA ]3 ; GET COUNTER MAX
|
||||
PHA ; LOBYTE AND PUSH
|
||||
LDA ]4/$100 ; GET STEP HIBYTE
|
||||
PHA ; AND PUSH
|
||||
LDA ]4 ; GET STEP LOBYTE
|
||||
PHA ; AND PUSH
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* NEXT *
|
||||
* *
|
||||
* END A FOR..NEXT LOOP *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
NEXT MAC
|
||||
JMP _VAR ; SKIP VARIABLE BYTES
|
||||
]STEP DS 2 ; STEP WORD
|
||||
]HIGH DS 2 ; COUNTER MAX WORD
|
||||
]SCRATCH DS 2 ; LOCAL SCRATCH
|
||||
_VAR
|
||||
PLA ; GET STEP
|
||||
STA ]STEP ; LOBYTE
|
||||
PLA ; AND HIBYTE
|
||||
STA ]STEP+1
|
||||
PLA ; GET COUNTER MAX
|
||||
STA ]HIGH ; LOBYTE
|
||||
PLA ; AND HIBYTE
|
||||
STA ]HIGH+1
|
||||
PLA ; GET COUNTER ADDRESS
|
||||
STA ADDR4 ; LOBYTE
|
||||
PLA ; AND HIBYTE
|
||||
STA ADDR4+1
|
||||
PLA ; GET FOR COMMAND ADDRESS
|
||||
STA ADDR2 ; LOBYTE
|
||||
PLA ; AND HIBYTE
|
||||
STA ADDR2+1
|
||||
*
|
||||
LDY #0 ; GET THE COUNTER
|
||||
LDA (ADDR4),Y
|
||||
CMP ]HIGH ; IF LOBYTE != MAX LOBYTE
|
||||
BCC LOOPER ; CONTINUE THE LOOPING
|
||||
INY
|
||||
LDA (ADDR4),Y ; NOW TEST THE LOBYTES
|
||||
CMP ]HIGH+1
|
||||
BCC LOOPER ; CONTINUE THE LOOPER
|
||||
JMP _EXIT ; OTHERWISE, FINISHED LOOPING
|
||||
LOOPER
|
||||
LDY #0 ; INCREASE THE COUNTER
|
||||
LDA (ADDR4),Y
|
||||
CLC
|
||||
ADC ]STEP ; BY THE STEP AMOUNT
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA (ADDR4),Y
|
||||
ADC ]STEP+1
|
||||
STA (ADDR4),Y
|
||||
JMP (ADDR2) ; JUMP BACK TO FOR COMMAND
|
||||
_EXIT
|
||||
<<<
|
||||
@@ -1,20 +0,0 @@
|
||||
JUMPTBL JMP MAIN_START
|
||||
|
||||
DS 48
|
||||
VARTAB DS 20
|
||||
RETLEN DS 1
|
||||
RETURN DS 256
|
||||
PARLEN DS 1
|
||||
PARAM DS 256
|
||||
ADDR1 EQU $06
|
||||
ADDR2 EQU $08
|
||||
ADDR3 EQU $EB
|
||||
ADDR4 EQU $ED
|
||||
SCRATCH EQU $19
|
||||
SCRATCH2 EQU $1E
|
||||
RETADR EQU $FE
|
||||
RESULT EQU $FA
|
||||
RESULT2 EQU $FC
|
||||
REENTRY EQU $3D0
|
||||
IFDEPTH DS 1,$FF
|
||||
MAIN_START
|
||||
@@ -1,2 +0,0 @@
|
||||
ARRMAX EQU 8192
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
COUT1 EQU $FDF0
|
||||
COUT EQU $FDED
|
||||
HOME EQU $FC58
|
||||
VTAB EQU $FC22
|
||||
CURSH EQU $24
|
||||
CURSV EQU $25
|
||||
KEYBUFF EQU $0200
|
||||
GSTROBE EQU $C040
|
||||
GBCALC EQU $F847
|
||||
GBPSH EQU $26
|
||||
KYBD EQU $C000
|
||||
STROBE EQU $C010
|
||||
GETLN EQU $FD6F
|
||||
GETKEY EQU $FD0C
|
||||
PREAD EQU $FB1E
|
||||
PB0 EQU $C061
|
||||
PB1 EQU $C062
|
||||
PB2 EQU $C063
|
||||
PB3 EQU $C060
|
||||
@@ -1,175 +0,0 @@
|
||||
]RIGHT DS 1
|
||||
]LEFT DS 1
|
||||
]LENGTH DS 1
|
||||
]A DS 1
|
||||
]X DS 1
|
||||
]Y DS 1
|
||||
]C DS 1
|
||||
]Z DS 1
|
||||
]N DS 1
|
||||
]O DS 1
|
||||
]HEXTAB ASC "0123456789ABCDEF"
|
||||
]COUT EQU $FDF0
|
||||
]KYBD EQU $C000
|
||||
]STROBE EQU $C010
|
||||
__GETRET
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDY #255
|
||||
:LP
|
||||
INY
|
||||
LDA RETURN,Y
|
||||
STA (ADDR1),Y ; COUNTER OFFSET
|
||||
CPY RETLEN
|
||||
BNE :LP
|
||||
RTS
|
||||
__SETPARM
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
STY PARLEN
|
||||
LDY #255
|
||||
:LP
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
STA PARAM,Y ; OFFSET BY COUNTER
|
||||
CPY PARLEN
|
||||
BNE :LP
|
||||
RTS
|
||||
__CLRHI
|
||||
AND #$F0
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
RTS
|
||||
__DUMP
|
||||
STY ]LENGTH
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDA #$8D
|
||||
JSR ]COUT
|
||||
LDA ADDR1+1
|
||||
JSR __CLRHI
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1+1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1
|
||||
JSR __CLRHI
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA #":" ;
|
||||
JSR ]COUT
|
||||
LDA #" "
|
||||
JSR ]COUT
|
||||
LDY #0
|
||||
:LP
|
||||
LDA (ADDR1),Y
|
||||
JSR __CLRHI ; AT COUNTER OFFSET
|
||||
STA ]LEFT
|
||||
LDA (ADDR1),Y
|
||||
AND #$0F
|
||||
STA ]RIGHT
|
||||
LDX ]LEFT
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDX ]RIGHT
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA #160
|
||||
JSR ]COUT
|
||||
INY
|
||||
CPY ]LENGTH
|
||||
BNE :LP
|
||||
RTS
|
||||
__P
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDY #1
|
||||
:LP LDA (ADDR1),Y
|
||||
BEQ :DONE
|
||||
JSR ]COUT
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE CLC
|
||||
TYA
|
||||
ADC ADDR1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
PHA ; IF NEEDED
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
__W
|
||||
:LP LDA ]KYBD
|
||||
BPL :LP
|
||||
AND #$7F
|
||||
STA ]STROBE
|
||||
RTS
|
||||
__RSAV
|
||||
STA ]A
|
||||
STX ]X
|
||||
STY ]Y
|
||||
:C BCC :C0
|
||||
BCS :C1
|
||||
:Z BEQ :Z1
|
||||
BNE :Z0
|
||||
:N BMI :N1
|
||||
BPL :N0
|
||||
:O BVC :O0
|
||||
BVS :O1
|
||||
JMP :EXIT
|
||||
:C0 LDA #0
|
||||
STA ]C
|
||||
JMP :Z
|
||||
:C1 LDA #1
|
||||
STA ]C
|
||||
JMP :Z
|
||||
:Z1 LDA #1
|
||||
STA ]Z
|
||||
JMP :N
|
||||
:Z0 LDA #0
|
||||
STA ]Z
|
||||
JMP :N
|
||||
:N1 LDA #1
|
||||
STA ]N
|
||||
JMP :O
|
||||
:N0 LDA #0
|
||||
STA ]N
|
||||
JMP :O
|
||||
:O0 LDA #0
|
||||
STA ]O
|
||||
JMP :EXIT
|
||||
:O1 LDA #1
|
||||
STA ]O
|
||||
:EXIT
|
||||
RTS
|
||||
__ERRH
|
||||
LDA #1
|
||||
STA $AAB6
|
||||
STA $75+1
|
||||
STA $33
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDA #$FF
|
||||
STA $D8
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA $9D5A
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
STA $9D5B
|
||||
RTS
|
||||
@@ -1,142 +0,0 @@
|
||||
@GOTO MAC
|
||||
JMP ]1
|
||||
<<<
|
||||
@GOSUB MAC
|
||||
JSR ]1
|
||||
<<<
|
||||
@RETURN MAC
|
||||
RTS
|
||||
<<<
|
||||
@END MAC
|
||||
JMP REENTRY
|
||||
<<<
|
||||
@ONERR MAC
|
||||
ERRH ]1
|
||||
<<<
|
||||
@PRINT MAC
|
||||
PRN ]1
|
||||
<<<
|
||||
@INPUT MAC
|
||||
INP
|
||||
GRET ]1
|
||||
<<<
|
||||
@GET MAC
|
||||
GKEY
|
||||
STA RETURN
|
||||
LDY #1
|
||||
STA RETLEN
|
||||
<<<
|
||||
@HOME MAC
|
||||
JSR $FC58
|
||||
<<<
|
||||
@HTAB MAC
|
||||
SETCX ]1
|
||||
<<<
|
||||
@VTAB MAC
|
||||
SETCY ]1
|
||||
<<<
|
||||
@TEXT MAC
|
||||
LDA $C051
|
||||
<<<
|
||||
@LABEL MAC
|
||||
]1
|
||||
<<<
|
||||
@DATA MAC
|
||||
JSR REENTRY
|
||||
HEX ]1
|
||||
<<<
|
||||
@POKE MAC
|
||||
LDY #0
|
||||
LDA ]1
|
||||
STA ADDR1
|
||||
LDA ]1/$100
|
||||
STA ADDR1+1
|
||||
LDA ]2
|
||||
STA (ADDR1),Y
|
||||
<<<
|
||||
@PEEK MAC
|
||||
LDA ]1
|
||||
STA ADDR1
|
||||
LDA ]1/$100
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA RETURN
|
||||
LDA #1
|
||||
STA RETLEN
|
||||
<<<
|
||||
@CALL MAC
|
||||
JSR ]1
|
||||
<<<
|
||||
@PDL MAC
|
||||
PDL #0
|
||||
<<<
|
||||
@POS MAC
|
||||
LDA $24
|
||||
STA RETURN
|
||||
LDY #1
|
||||
STA RETURN
|
||||
<<<
|
||||
@INVERT MAC
|
||||
LDA #$3F
|
||||
STA $0032
|
||||
<<<
|
||||
@FLASH MAC
|
||||
LDA #$7F
|
||||
STA $0032
|
||||
<<<
|
||||
@NORMAL MAC
|
||||
LDA #$FF
|
||||
STA $0032
|
||||
<<<
|
||||
@STOP MAC
|
||||
JMP REENTRY
|
||||
<<<
|
||||
@FOR MAC
|
||||
FOR ]1;]2;]3;]4
|
||||
<<<
|
||||
@NEXT MAC
|
||||
NEXT
|
||||
<<<
|
||||
@DIM1 MAC
|
||||
DIM161 ]1;]2;]3;#0
|
||||
<<<
|
||||
@DIM2 MAC
|
||||
DIM162 ]1;]2;]3;]4;#0
|
||||
<<<
|
||||
@LET MAC
|
||||
<<<
|
||||
@POP MAC
|
||||
PLA
|
||||
PLA
|
||||
<<<
|
||||
@IFGOTO MAC
|
||||
IFJ ]1;]2;]3
|
||||
<<<
|
||||
@IFGSUB MAC
|
||||
IFS ]1;]2;]3
|
||||
<<<
|
||||
@IFTHEN MAC
|
||||
IFB ]1;]2;]3
|
||||
<<<
|
||||
@ENDIF MAC
|
||||
ENDIFB
|
||||
<<<
|
||||
@GR MAC
|
||||
<<<
|
||||
@COLOR MAC
|
||||
<<<
|
||||
@PLOT MAC
|
||||
<<<
|
||||
@HLIN MAC
|
||||
<<<
|
||||
@VLIN MAC
|
||||
<<<
|
||||
@HGR MAC
|
||||
<<<
|
||||
@HGR2 MAC
|
||||
<<<
|
||||
@HPLOT MAC
|
||||
<<<
|
||||
@HCOLOR MAC
|
||||
<<<
|
||||
@@ -1,95 +0,0 @@
|
||||
DIM81 MAC
|
||||
_ISLIT ]1
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR ADIM81
|
||||
<<<
|
||||
GET81 MAC
|
||||
_ISLIT ]1
|
||||
LDA ]2
|
||||
PHA
|
||||
JSR AGET81
|
||||
<<<
|
||||
PUT81 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
LDA ]3
|
||||
PHA
|
||||
JSR APUT81
|
||||
<<<
|
||||
DIM82 MAC
|
||||
_ISLIT ]1
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
LDA ]5
|
||||
PHA
|
||||
JSR ADIM82
|
||||
<<<
|
||||
GET82 MAC
|
||||
_ISLIT ]1
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
JSR AGET82
|
||||
<<<
|
||||
PUT82 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR APUT82
|
||||
<<<
|
||||
DIM161 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR ADIM161
|
||||
<<<
|
||||
PUT161 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
JSR APUT161
|
||||
<<<
|
||||
GET161 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
JSR AGET161
|
||||
<<<
|
||||
DIM162 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
LDA ]4
|
||||
PHA
|
||||
LDA ]5
|
||||
PHA
|
||||
JSR ADIM162
|
||||
<<<
|
||||
PUT162 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
_ISLIT ]4
|
||||
JSR APUT162
|
||||
<<<
|
||||
GET162 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
JSR AGET162
|
||||
<<<
|
||||
@@ -1,94 +0,0 @@
|
||||
DIM81 MAC
|
||||
_ISLIT ]1
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR ADIM81
|
||||
<<<
|
||||
GET81 MAC
|
||||
_AXLIT ]1
|
||||
LDY ]2
|
||||
JSR AGET81
|
||||
<<<
|
||||
PUT81 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
LDA ]3
|
||||
PHA
|
||||
JSR APUT81
|
||||
<<<
|
||||
DIM82 MAC
|
||||
_ISLIT ]1
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
LDA ]5
|
||||
PHA
|
||||
JSR ADIM82
|
||||
<<<
|
||||
GET82 MAC
|
||||
_ISLIT ]1
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
JSR AGET82
|
||||
<<<
|
||||
PUT82 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR APUT82
|
||||
<<<
|
||||
DIM161 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR ADIM161
|
||||
<<<
|
||||
PUT161 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
JSR APUT161
|
||||
<<<
|
||||
GET161 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
JSR AGET161
|
||||
<<<
|
||||
DIM162 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
LDA ]4
|
||||
PHA
|
||||
LDA ]5
|
||||
PHA
|
||||
JSR ADIM162
|
||||
<<<
|
||||
PUT162 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
_ISLIT ]4
|
||||
JSR APUT162
|
||||
<<<
|
||||
GET162 MAC
|
||||
_ISLIT ]1
|
||||
_ISLIT ]2
|
||||
_ISLIT ]3
|
||||
JSR AGET162
|
||||
<<<
|
||||
@@ -1,450 +0,0 @@
|
||||
IFJ MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
FIN
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
JMP ]4
|
||||
]EXIT
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
IFJE MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
JMP ]4
|
||||
]EXIT
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
IFRJ MAC
|
||||
STA SCRATCH
|
||||
STX RESULT
|
||||
STY RESULT+1
|
||||
IF ]1,A
|
||||
LDA SCRATCH
|
||||
FIN
|
||||
IF ]1,X
|
||||
LDA RESULT
|
||||
FIN
|
||||
IF ]1,Y
|
||||
LDA RESULT+1
|
||||
FIN
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
FIN
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
JMP ]4
|
||||
]EXIT
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
<<<
|
||||
IFRJE MAC
|
||||
STA SCRATCH
|
||||
STX RESULT
|
||||
STY RESULT+1
|
||||
IF ]1,A
|
||||
LDA SCRATCH
|
||||
FIN
|
||||
IF ]1,X
|
||||
LDA RESULT
|
||||
FIN
|
||||
IF ]1,Y
|
||||
LDA RESULT+1
|
||||
FIN
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
JMP ]5
|
||||
FIN
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
JMP ]4
|
||||
]EXIT
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
<<<
|
||||
IFS MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
FIN
|
||||
LDA SCRATCH
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
JSR ]4
|
||||
]EXIT
|
||||
<<<
|
||||
IFSE MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
LDA SCRATCH
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
JSR ]4
|
||||
]EXIT
|
||||
<<<
|
||||
IFRS MAC
|
||||
STA SCRATCH
|
||||
STX RESULT
|
||||
STY RESULT+1
|
||||
IF ]1,A
|
||||
LDA SCRATCH
|
||||
FIN
|
||||
IF ]1,X
|
||||
LDA RESULT
|
||||
FIN
|
||||
IF ]1,Y
|
||||
LDA RESULT+1
|
||||
FIN
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
FIN
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
JSR ]4
|
||||
]EXIT
|
||||
<<<
|
||||
IFRSE MAC
|
||||
STA SCRATCH
|
||||
STX RESULT
|
||||
STY RESULT+1
|
||||
IF ]1,A
|
||||
LDA SCRATCH
|
||||
FIN
|
||||
IF ]1,X
|
||||
LDA RESULT
|
||||
FIN
|
||||
IF ]1,Y
|
||||
LDA RESULT+1
|
||||
FIN
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ ]SKPGT
|
||||
BCS ]J4
|
||||
]SKPGT
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ ]J4
|
||||
BCC ]J4
|
||||
LDA SCRATCH
|
||||
JSR ]5
|
||||
FIN
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
JMP ]EXIT
|
||||
]J4
|
||||
LDA SCRATCH
|
||||
LDX RESULT
|
||||
LDY RESULT+1
|
||||
JSR ]4
|
||||
]EXIT
|
||||
<<<
|
||||
IFB MAC
|
||||
STA SCRATCH
|
||||
]PTR EQU *
|
||||
LDA ]PTR
|
||||
STA ADDR1
|
||||
LDA ]PTR+1
|
||||
STA ADDR1/$100
|
||||
_LOOP1
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$1B
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$9B
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$18
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$09
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
CMP #$06
|
||||
BNE _LOOP1
|
||||
LDA ADDR1
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ _IFBOD
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE _IFBOD
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ SKPGT
|
||||
BCS _IFBOD
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS _IFBOD
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ _IFBOD
|
||||
BCC _IFBOD
|
||||
FIN
|
||||
_PRN "NOPE",8D8D
|
||||
LDA ADDR1
|
||||
CLC
|
||||
ADC #1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
STA ADDR1+1
|
||||
JMP (ADDR1)
|
||||
_IFBOD
|
||||
_PRN "YEP",8D8D
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
ENDIFB MAC
|
||||
JMP SKIPHEX
|
||||
HEX 1B9B180906
|
||||
SKIPHEX
|
||||
<<<
|
||||
@@ -1,158 +0,0 @@
|
||||
LOOP MAC
|
||||
]PTR EQU *
|
||||
STA SCRATCH
|
||||
LDA #>]PTR
|
||||
PHA
|
||||
LDA #<]PTR
|
||||
PHA
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
UNTIL MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ _LEXIT
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE _LEXIT
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ SKPGT
|
||||
BCS _LEXIT
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC _LEXIT
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS _LEXIT
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ _LEXIT
|
||||
BCC _LEXIT
|
||||
FIN
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDA SCRATCH
|
||||
JMP (ADDR1)
|
||||
_LEXIT
|
||||
PLA
|
||||
PLA
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
WHILE MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
CMP ]3
|
||||
IF ]2,E
|
||||
BEQ _LJUMP
|
||||
FIN
|
||||
IF ]2,N
|
||||
BNE _LJUMP
|
||||
FIN
|
||||
IF ]2,G
|
||||
BEQ SKPGT
|
||||
BCS _LJUMP
|
||||
SKPGT
|
||||
FIN
|
||||
IF ]2,L
|
||||
BCC _LJUMP
|
||||
FIN
|
||||
IF ]2,)
|
||||
BCS _LJUMP
|
||||
FIN
|
||||
IF ]2,(
|
||||
BEQ _LJUMP
|
||||
BCC _LJUMP
|
||||
FIN
|
||||
JMP _LEXIT
|
||||
_LJUMP
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDA SCRATCH
|
||||
JMP (ADDR1)
|
||||
_LEXIT
|
||||
PLA
|
||||
PLA
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
FOR MAC
|
||||
STA SCRATCH
|
||||
LDA ]1
|
||||
STA ADDR4
|
||||
LDA ]1/$100
|
||||
STA ADDR4+1
|
||||
LDY #0
|
||||
LDA ]2
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA ]2/$100
|
||||
STA (ADDR4),Y
|
||||
LDA SCRATCH
|
||||
]PTR EQU *
|
||||
LDA #>]PTR
|
||||
PHA
|
||||
LDA #<]PTR
|
||||
PHA
|
||||
LDA ]1/$100
|
||||
PHA
|
||||
LDA ]1
|
||||
PHA
|
||||
LDA ]3/$100
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4/$100
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
<<<
|
||||
NEXT MAC
|
||||
JMP _VAR
|
||||
]STEP DS 2
|
||||
]HIGH DS 2
|
||||
]SCRATCH DS 2
|
||||
_VAR
|
||||
PLA
|
||||
STA ]STEP
|
||||
PLA
|
||||
STA ]STEP+1
|
||||
PLA
|
||||
STA ]HIGH
|
||||
PLA
|
||||
STA ]HIGH+1
|
||||
PLA
|
||||
STA ADDR4
|
||||
PLA
|
||||
STA ADDR4+1
|
||||
PLA
|
||||
STA ADDR2
|
||||
PLA
|
||||
STA ADDR2+1
|
||||
LDY #0
|
||||
LDA (ADDR4),Y
|
||||
CMP ]HIGH
|
||||
BCC LOOPER
|
||||
INY
|
||||
LDA (ADDR4),Y
|
||||
CMP ]HIGH+1
|
||||
BCC LOOPER
|
||||
JMP _EXIT
|
||||
LOOPER
|
||||
LDY #0
|
||||
LDA (ADDR4),Y
|
||||
CLC
|
||||
ADC ]STEP
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA (ADDR4),Y
|
||||
ADC ]STEP+1
|
||||
STA (ADDR4),Y
|
||||
JMP (ADDR2)
|
||||
_EXIT
|
||||
<<<
|
||||
@@ -1,79 +0,0 @@
|
||||
_ISLIT MAC
|
||||
IF #=]1
|
||||
LDA ]1/$100
|
||||
PHA
|
||||
LDA ]1
|
||||
PHA
|
||||
ELSE
|
||||
LDA ]1+1
|
||||
PHA
|
||||
LDA ]1
|
||||
PHA
|
||||
FIN
|
||||
<<<
|
||||
_AXLIT MAC
|
||||
IF #=]1
|
||||
LDX ]1/$100
|
||||
LDA ]1
|
||||
ELSE
|
||||
LDX ]1+1
|
||||
LDA ]1
|
||||
FIN
|
||||
<<<
|
||||
_ISSTR MAC
|
||||
IF "=]1
|
||||
JMP __STRCONT
|
||||
]STRTMP STR ]1
|
||||
__STRCONT
|
||||
LDA #>]STRTMP
|
||||
PHA
|
||||
LDA #<]STRTMP
|
||||
PHA
|
||||
ELSE
|
||||
_ISLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
_AXSTR MAC
|
||||
IF "=]1
|
||||
JMP __STRCNT2
|
||||
]STRTMP STR ]1
|
||||
__STRCNT2
|
||||
LDX #>]STRTMP
|
||||
LDA #<]STRTMP
|
||||
ELSE
|
||||
_AXLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
GRET MAC
|
||||
_AXLIT ]1
|
||||
JSR __GETRET
|
||||
<<<
|
||||
SPAR MAC
|
||||
LDY ]2
|
||||
_AXLIT ]1
|
||||
JSR __SETPARM
|
||||
<<<
|
||||
DUMP MAC
|
||||
_AXLIT ]1
|
||||
LDY ]2
|
||||
JSR __DUMP
|
||||
<<<
|
||||
_PRN MAC
|
||||
JSR __P
|
||||
ASC ]1
|
||||
HEX 00
|
||||
<<<
|
||||
_WAIT MAC
|
||||
JSR __W
|
||||
<<<
|
||||
ERRH MAC
|
||||
_AXLIT
|
||||
JSR __ERRH
|
||||
<<<
|
||||
RSAV MAC
|
||||
JSR __RSAV
|
||||
<<<
|
||||
CLRHI MAC
|
||||
LDA ]1
|
||||
JSR __CLRHI
|
||||
<<<
|
||||
@@ -1,173 +0,0 @@
|
||||
PRN MAC
|
||||
IF ",]1
|
||||
JSR XPRINT ; SPECIAL PRINT
|
||||
ASC ]1 ; PUT STRING HERE
|
||||
HEX 00 ; STRING TERMINATE
|
||||
ELSE ; ELSE, PARAM IS
|
||||
; MEMORY LOCATION
|
||||
_ISLIT ]1
|
||||
JSR DPRINT
|
||||
FIN
|
||||
<<<
|
||||
SPRN MAC
|
||||
_AXLIT ]1
|
||||
JSR PRNSTR
|
||||
<<<
|
||||
INP MAC
|
||||
JSR SINPUT
|
||||
<<<
|
||||
GKEY MAC
|
||||
JSR GETKEY
|
||||
LDY #0
|
||||
STY STROBE
|
||||
<<<
|
||||
SCPOS MAC
|
||||
LDX ]1
|
||||
STX CURSH
|
||||
LDX ]2
|
||||
STX CURSV
|
||||
JSR VTAB
|
||||
<<<
|
||||
SETCX MAC
|
||||
LDX ]1
|
||||
STX CURSH
|
||||
JSR VTAB
|
||||
<<<
|
||||
SETCY MAC
|
||||
LDY ]1
|
||||
STY CURSV
|
||||
JSR VTAB
|
||||
<<<
|
||||
CURF MAC
|
||||
LDA ]1
|
||||
CLC ; POS
|
||||
ADC CURSH
|
||||
STA CURSH
|
||||
JSR VTAB
|
||||
<<<
|
||||
CURB MAC
|
||||
LDA CURSH
|
||||
SEC
|
||||
SBC ]1
|
||||
STA CURSH
|
||||
JSR VTAB
|
||||
<<<
|
||||
CURU MAC
|
||||
LDA CURSV
|
||||
SEC
|
||||
SBC ]1
|
||||
STA CURSV
|
||||
JSR VTAB
|
||||
<<<
|
||||
CURD MAC
|
||||
LDA CURSV
|
||||
CLC
|
||||
ADC ]1
|
||||
STA CURSV
|
||||
JSR VTAB
|
||||
<<<
|
||||
RCPOS MAC
|
||||
LDY ]1
|
||||
LDA ]2
|
||||
JSR GBCALC
|
||||
LDA (GBPSH),Y
|
||||
<<<
|
||||
PDL MAC
|
||||
LDX ]1
|
||||
JSR PREAD
|
||||
<<<
|
||||
PBX MAC
|
||||
_ISLIT ]1
|
||||
JSR GPBX
|
||||
<<<
|
||||
TVLIN MAC
|
||||
LDA ]1
|
||||
PHA
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR TVLINE
|
||||
<<<
|
||||
THLIN MAC
|
||||
LDA ]1
|
||||
PHA
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR THLINE
|
||||
<<<
|
||||
TRECF MAC
|
||||
LDA ]1
|
||||
PHA
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
LDA ]5
|
||||
PHA
|
||||
JSR TRECTF
|
||||
<<<
|
||||
TPUT MAC
|
||||
LDX ]1
|
||||
LDY ]2
|
||||
LDA ]3
|
||||
JSR TXTPUT
|
||||
<<<
|
||||
DIE80 MAC
|
||||
LDA #21
|
||||
JSR COUT
|
||||
<<<
|
||||
COL80 MAC
|
||||
LDA #18
|
||||
JSR COUT
|
||||
<<<
|
||||
COL40 MAC
|
||||
LDA #17
|
||||
JSR COUT
|
||||
<<<
|
||||
MTXT0 MAC
|
||||
LDA #24
|
||||
JSR COUT
|
||||
<<<
|
||||
MTXT1 MAC
|
||||
LDA #27
|
||||
JSR COUT
|
||||
<<<
|
||||
WAIT MAC
|
||||
]WTLP LDA KYBD
|
||||
BPL ]WTLP
|
||||
AND #$7F
|
||||
STA STROBE
|
||||
<<<
|
||||
TLINE MAC
|
||||
LDA ]1
|
||||
PHA
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
LDA ]5
|
||||
PHA
|
||||
JSR TBLINE
|
||||
<<<
|
||||
TCIRC MAC
|
||||
LDA ]1
|
||||
PHA
|
||||
LDA ]2
|
||||
PHA
|
||||
LDA ]3
|
||||
PHA
|
||||
LDA ]4
|
||||
PHA
|
||||
JSR TCIRCLE
|
||||
<<<
|
||||
@@ -1,98 +0,0 @@
|
||||
]MSIZE EQU VARTAB
|
||||
]ASIZE EQU VARTAB+2
|
||||
]ASZBAK EQU VARTAB+4
|
||||
]ESIZE EQU VARTAB+6
|
||||
]ESZBAK EQU VARTAB+7
|
||||
]FILL EQU VARTAB+8
|
||||
ADIM161
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ]FILL
|
||||
PLA
|
||||
STA ]ESIZE
|
||||
STA ]ESZBAK
|
||||
PLA
|
||||
STA ]ASIZE
|
||||
STA ]ASZBAK
|
||||
PLA
|
||||
STA ]ASIZE+1
|
||||
STA ]ASZBAK+1
|
||||
STA SCRATCH
|
||||
PLA
|
||||
STA ADDR1
|
||||
STA ADDR2
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
STA ADDR2+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDY #0
|
||||
LDA #0
|
||||
BEQ :ENTLP
|
||||
:DOADD
|
||||
CLC
|
||||
ADC ]ASIZE
|
||||
TAX
|
||||
TYA
|
||||
ADC SCRATCH
|
||||
TAY
|
||||
TXA
|
||||
:LP
|
||||
ASL ]ASIZE
|
||||
ROL SCRATCH
|
||||
:ENTLP
|
||||
LSR ]ESIZE
|
||||
BCS :DOADD
|
||||
BNE :LP
|
||||
CLC
|
||||
TXA
|
||||
ADC #3
|
||||
STA ]MSIZE
|
||||
TYA
|
||||
ADC #0
|
||||
STA ]MSIZE+1
|
||||
LDA ]FILL
|
||||
LDX ]MSIZE+1
|
||||
BEQ :PART
|
||||
LDY #0
|
||||
:FULL
|
||||
STA (ADDR1),Y
|
||||
INY
|
||||
BNE :FULL
|
||||
INC ADDR1+1
|
||||
DEX
|
||||
BNE :FULL
|
||||
:PART
|
||||
LDX ]MSIZE
|
||||
BEQ :MFEXIT
|
||||
LDY #0
|
||||
:PARTLP
|
||||
STA (ADDR1),Y
|
||||
INY
|
||||
DEX
|
||||
BNE :PARTLP
|
||||
:MFEXIT
|
||||
LDY #0
|
||||
LDA ]ASZBAK
|
||||
STA (ADDR2),Y
|
||||
INY
|
||||
LDA ]ASZBAK+1
|
||||
STA (ADDR2),Y
|
||||
INY
|
||||
LDA ]ESZBAK
|
||||
STA (ADDR2),Y
|
||||
LDX ADDR1
|
||||
LDY ADDR1+1
|
||||
LDA ]MSIZE
|
||||
STA RETURN
|
||||
LDA ]MSIZE+1
|
||||
STA RETURN+1
|
||||
LDA #2
|
||||
STA RETLEN
|
||||
LDA ]ASZBAK
|
||||
RTS
|
||||
@@ -1,153 +0,0 @@
|
||||
]PROD EQU VARTAB
|
||||
]AXSIZE EQU VARTAB+4
|
||||
]AYSIZE EQU VARTAB+6
|
||||
]AXBAK EQU VARTAB+8
|
||||
]AYBAK EQU VARTAB+10
|
||||
]MLIER EQU VARTAB+12
|
||||
]MCAND EQU VARTAB+14
|
||||
]FILL EQU VARTAB+16
|
||||
]ELEN EQU VARTAB+17
|
||||
ADIM162
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ]FILL
|
||||
PLA
|
||||
STA ]ELEN
|
||||
PLA
|
||||
STA ]AYSIZE
|
||||
STA ]AYBAK
|
||||
STA ]MCAND
|
||||
PLA
|
||||
STA ]AYSIZE+1
|
||||
STA ]AYBAK+1
|
||||
STA ]MCAND+1
|
||||
PLA
|
||||
STA ]AXSIZE
|
||||
STA ]AXBAK
|
||||
STA ]MLIER
|
||||
PLA
|
||||
STA ]AXSIZE+1
|
||||
STA ]AXBAK+1
|
||||
STA ]MLIER+1
|
||||
PLA
|
||||
STA ADDR1
|
||||
STA ADDR4 ; LOBYTE
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
STA ADDR4+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDA #0
|
||||
STA ]PROD+2
|
||||
STA ]PROD+3
|
||||
LDX #$10
|
||||
:SHIFT_R
|
||||
LSR ]MLIER+1
|
||||
ROR ]MLIER
|
||||
BCC :ROT_R
|
||||
LDA ]PROD+2
|
||||
CLC
|
||||
ADC ]MCAND
|
||||
STA ]PROD+2
|
||||
LDA ]PROD+3
|
||||
ADC ]MCAND+1
|
||||
:ROT_R
|
||||
ROR
|
||||
STA ]PROD+3
|
||||
ROR ]PROD+2
|
||||
ROR ]PROD+1
|
||||
ROR ]PROD
|
||||
DEX
|
||||
BNE :SHIFT_R
|
||||
LDA ]ELEN
|
||||
STA ]MCAND
|
||||
LDA #0
|
||||
STA ]MCAND+1 ;
|
||||
LDA ]PROD
|
||||
STA ]MLIER
|
||||
LDA ]PROD+1
|
||||
STA ]MLIER+1
|
||||
LDA #0
|
||||
STA ]PROD
|
||||
STA ]PROD+1
|
||||
STA ]PROD+2
|
||||
STA ]PROD+3
|
||||
LDX #$10
|
||||
:SHIFTR LSR ]MLIER+1
|
||||
ROR ]MLIER
|
||||
BCC :ROTR
|
||||
LDA ]PROD+2
|
||||
CLC
|
||||
ADC ]MCAND
|
||||
STA ]PROD+2
|
||||
LDA ]PROD+3
|
||||
ADC ]MCAND+1
|
||||
:ROTR
|
||||
ROR
|
||||
STA ]PROD+3
|
||||
ROR ]PROD+2
|
||||
ROR ]PROD+1
|
||||
ROR ]PROD
|
||||
DEX
|
||||
BNE :SHIFTR
|
||||
CLC
|
||||
LDA ]PROD
|
||||
ADC #5
|
||||
STA ]PROD
|
||||
LDA ]PROD+1
|
||||
ADC #0
|
||||
STA ]PROD+1
|
||||
LDA ]FILL
|
||||
LDX ]PROD+1
|
||||
BEQ :PART
|
||||
LDY #0
|
||||
:FULL
|
||||
STA (ADDR1),Y
|
||||
INY
|
||||
BNE :FULL
|
||||
INC ADDR1+1
|
||||
DEX
|
||||
BNE :FULL
|
||||
:PART
|
||||
LDX ]PROD
|
||||
BEQ :MFEXIT
|
||||
LDY #0
|
||||
:PARTLP
|
||||
STA (ADDR1),Y
|
||||
INY
|
||||
DEX
|
||||
BNE :PARTLP
|
||||
:MFEXIT
|
||||
LDY #0
|
||||
LDA ]AXBAK
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA ]AXBAK+1
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA ]AYBAK
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA ]AYBAK+1
|
||||
STA (ADDR4),Y
|
||||
INY
|
||||
LDA ]ELEN
|
||||
STA (ADDR4),Y
|
||||
LDX ADDR4
|
||||
LDX ADDR4+1
|
||||
LDA ]PROD
|
||||
STA RETURN
|
||||
LDA ]PROD+1
|
||||
STA RETURN+1
|
||||
LDA ]PROD+2
|
||||
STA RETURN+2
|
||||
LDA ]PROD+3
|
||||
STA RETURN+3
|
||||
LDA #4
|
||||
STA RETLEN
|
||||
RTS
|
||||
@@ -1,80 +0,0 @@
|
||||
]ESIZE EQU VARTAB
|
||||
]ESIZEB EQU VARTAB+1
|
||||
]ASIZE EQU VARTAB+2
|
||||
]AIDX EQU VARTAB+4
|
||||
]IDX EQU VARTAB+6
|
||||
AGET161
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ]AIDX
|
||||
STA ]IDX
|
||||
PLA
|
||||
STA ]AIDX+1
|
||||
STA SCRATCH
|
||||
PLA
|
||||
STA ADDR4
|
||||
PLA
|
||||
STA ADDR4+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDY #0
|
||||
LDA (ADDR4),Y
|
||||
STA ]ASIZE
|
||||
LDY #1
|
||||
LDA (ADDR4),Y
|
||||
STA ]ASIZE+1
|
||||
INY
|
||||
LDA (ADDR4),Y
|
||||
STA ]ESIZE
|
||||
STA ]ESIZEB
|
||||
LDY #0
|
||||
LDA #0
|
||||
BEQ :ENTLPA
|
||||
:DOADD
|
||||
CLC
|
||||
ADC ]AIDX
|
||||
TAX
|
||||
TYA
|
||||
ADC SCRATCH
|
||||
TAY
|
||||
TXA
|
||||
:LPA
|
||||
ASL ]AIDX
|
||||
ROL SCRATCH
|
||||
:ENTLPA
|
||||
LSR ]ESIZE
|
||||
BCS :DOADD
|
||||
BNE :LPA
|
||||
STX ]IDX
|
||||
STY ]IDX+1
|
||||
LDA #3
|
||||
CLC
|
||||
ADC ]IDX
|
||||
STA ADDR2
|
||||
LDA ]IDX+1
|
||||
ADC #0
|
||||
STA ADDR2+1
|
||||
LDA ADDR2
|
||||
CLC
|
||||
ADC ADDR4
|
||||
STA ADDR2
|
||||
LDA ADDR2+1
|
||||
ADC ADDR4+1
|
||||
STA ADDR2+1
|
||||
LDY #0
|
||||
:LP
|
||||
LDA (ADDR2),Y
|
||||
STA RETURN,Y
|
||||
INY
|
||||
CPY ]ESIZEB
|
||||
BNE :LP
|
||||
LDA ]ESIZEB
|
||||
STA RETLEN
|
||||
LDY ADDR2+1
|
||||
LDX ADDR2
|
||||
RTS
|
||||
@@ -1,145 +0,0 @@
|
||||
]ESIZE EQU VARTAB
|
||||
]XIDX EQU VARTAB+2
|
||||
]YIDX EQU VARTAB+4
|
||||
]MCAND EQU VARTAB+6
|
||||
]MLIER EQU VARTAB+8
|
||||
]PROD EQU VARTAB+10
|
||||
]PBAK EQU VARTAB+14
|
||||
]XLEN EQU VARTAB+16
|
||||
]YLEN EQU VARTAB+18
|
||||
AGET162
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ]YIDX
|
||||
PLA
|
||||
STA ]YIDX+1
|
||||
PLA
|
||||
STA ]XIDX
|
||||
PLA
|
||||
STA ]XIDX+1
|
||||
PLA
|
||||
STA ADDR4
|
||||
PLA
|
||||
STA ADDR4+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDY #4
|
||||
LDA (ADDR4),Y
|
||||
STA ]ESIZE
|
||||
LDY #0
|
||||
LDA (ADDR4),Y
|
||||
STA ]XLEN
|
||||
LDY #1
|
||||
LDA (ADDR4),Y
|
||||
STA ]XLEN+1
|
||||
LDY #2
|
||||
LDA (ADDR4),Y
|
||||
STA ]YLEN
|
||||
LDY #3
|
||||
LDA (ADDR4),Y
|
||||
STA ]YLEN+1
|
||||
LDY #0
|
||||
LDA ]YIDX
|
||||
STA ]MLIER
|
||||
LDA ]YIDX+1
|
||||
STA ]MLIER+1
|
||||
LDA ]YLEN
|
||||
STA ]MCAND
|
||||
LDA ]YLEN+1
|
||||
STA ]MCAND+1
|
||||
LDA #00
|
||||
STA ]PROD
|
||||
STA ]PROD+1
|
||||
STA ]PROD+2
|
||||
STA ]PROD+3
|
||||
LDX #$10
|
||||
:SHIFT_R
|
||||
LSR ]MLIER+1
|
||||
ROR ]MLIER
|
||||
BCC :ROT_R
|
||||
LDA ]PROD+2
|
||||
CLC
|
||||
ADC ]MCAND
|
||||
STA ]PROD+2
|
||||
LDA ]PROD+3
|
||||
ADC ]MCAND+1
|
||||
:ROT_R
|
||||
ROR
|
||||
STA ]PROD+3
|
||||
ROR ]PROD+2
|
||||
ROR ]PROD+1
|
||||
ROR ]PROD
|
||||
DEX
|
||||
BNE :SHIFT_R
|
||||
LDA ]PROD
|
||||
STA ]PBAK ; 1ST AND 2ND BYTES
|
||||
LDA ]PROD+1
|
||||
STA ]PBAK+1
|
||||
LDA ]XIDX
|
||||
STA ]MLIER
|
||||
LDA ]XIDX+1
|
||||
STA ]MLIER+1
|
||||
LDA ]ESIZE
|
||||
STA ]MCAND
|
||||
LDA #0
|
||||
STA ]MCAND+1
|
||||
STA ]PROD
|
||||
STA ]PROD+1
|
||||
STA ]PROD+2
|
||||
STA ]PROD+3
|
||||
LDX #$10
|
||||
:SHIFTR LSR ]MLIER+1
|
||||
ROR ]MLIER
|
||||
BCC :ROTR
|
||||
LDA ]PROD+2
|
||||
CLC
|
||||
ADC ]MCAND
|
||||
STA ]PROD+2
|
||||
LDA ]PROD+3
|
||||
ADC ]MCAND+1
|
||||
:ROTR
|
||||
ROR
|
||||
STA ]PROD+3
|
||||
ROR ]PROD+2
|
||||
ROR ]PROD+1
|
||||
ROR ]PROD
|
||||
DEX
|
||||
BNE :SHIFTR
|
||||
CLC
|
||||
LDA ]PROD
|
||||
ADC ]PBAK
|
||||
STA ]PROD
|
||||
LDA ]PROD+1
|
||||
ADC ]PBAK+1
|
||||
STA ]PROD+1
|
||||
CLC
|
||||
LDA ]PROD
|
||||
ADC #5
|
||||
STA ]PROD
|
||||
LDA ]PROD+1
|
||||
ADC #0
|
||||
STA ]PROD+1
|
||||
CLC
|
||||
LDA ]PROD
|
||||
ADC ADDR4
|
||||
STA ADDR2
|
||||
LDA ]PROD+1
|
||||
ADC ADDR4+1
|
||||
STA ADDR2+1
|
||||
LDY #0
|
||||
:CLP
|
||||
LDA (ADDR2),Y
|
||||
STA RETURN,Y
|
||||
INY
|
||||
CPY ]ESIZE
|
||||
BNE :CLP
|
||||
LDA ]ESIZE
|
||||
STA RETLEN
|
||||
LDY ADDR2+1
|
||||
LDX ADDR2
|
||||
RTS
|
||||
@@ -1,84 +0,0 @@
|
||||
]ESIZE EQU VARTAB
|
||||
]ESIZEB EQU VARTAB+1
|
||||
]ASIZE EQU VARTAB+2
|
||||
]AIDX EQU VARTAB+4
|
||||
]IDX EQU VARTAB+6
|
||||
APUT161
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ]AIDX
|
||||
STA ]IDX
|
||||
PLA
|
||||
STA ]AIDX+1
|
||||
STA ]IDX+1
|
||||
STA SCRATCH
|
||||
PLA
|
||||
STA ADDR4
|
||||
PLA
|
||||
STA ADDR4+1
|
||||
PLA
|
||||
STA ADDR3
|
||||
PLA
|
||||
STA ADDR3+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDY #0
|
||||
LDA (ADDR4),Y
|
||||
STA ]ASIZE
|
||||
LDY #1
|
||||
LDA (ADDR4),Y
|
||||
STA ]ASIZE+1
|
||||
INY
|
||||
LDA (ADDR4),Y
|
||||
STA ]ESIZE
|
||||
STA ]ESIZEB
|
||||
LDY #0
|
||||
LDA #0
|
||||
BEQ :ENTLPA
|
||||
:DOADD
|
||||
CLC
|
||||
ADC ]AIDX
|
||||
TAX
|
||||
TYA
|
||||
ADC SCRATCH
|
||||
TAY
|
||||
TXA
|
||||
:LPA
|
||||
ASL ]AIDX
|
||||
ROL SCRATCH
|
||||
:ENTLPA
|
||||
LSR ]ESIZE
|
||||
BCS :DOADD
|
||||
BNE :LPA
|
||||
STX ]IDX
|
||||
STY ]IDX+1
|
||||
CLC
|
||||
LDA #3
|
||||
ADC ]IDX
|
||||
STA ADDR2
|
||||
LDA ]IDX+1
|
||||
ADC #0
|
||||
STA ADDR2+1
|
||||
CLC
|
||||
LDA ADDR2
|
||||
ADC ADDR4
|
||||
STA ADDR2
|
||||
LDA ADDR2+1
|
||||
ADC ADDR4+1
|
||||
STA ADDR2+1
|
||||
LDY #0
|
||||
:LP
|
||||
LDA (ADDR3),Y
|
||||
STA (ADDR2),Y
|
||||
INY
|
||||
CPY ]ESIZEB
|
||||
BNE :LP
|
||||
LDY ADDR2+1
|
||||
LDX ADDR2
|
||||
LDA ]ESIZEB
|
||||
RTS
|
||||
@@ -1,148 +0,0 @@
|
||||
]ESIZE EQU VARTAB
|
||||
]XIDX EQU VARTAB+2
|
||||
]YIDX EQU VARTAB+4
|
||||
]MCAND EQU VARTAB+6
|
||||
]MLIER EQU VARTAB+8
|
||||
]PBAK EQU VARTAB+10
|
||||
]XLEN EQU VARTAB+12
|
||||
]YLEN EQU VARTAB+14
|
||||
]PROD EQU VARTAB+16
|
||||
APUT162
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ]YIDX
|
||||
PLA
|
||||
STA ]YIDX+1
|
||||
PLA
|
||||
STA ]XIDX
|
||||
PLA
|
||||
STA ]XIDX+1
|
||||
PLA
|
||||
STA ADDR4
|
||||
PLA
|
||||
STA ADDR4+1
|
||||
PLA
|
||||
STA ADDR3
|
||||
PLA
|
||||
STA ADDR3+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDY #4
|
||||
LDA (ADDR4),Y
|
||||
STA ]ESIZE
|
||||
LDY #0
|
||||
LDA (ADDR4),Y
|
||||
STA ]XLEN
|
||||
LDY #1
|
||||
LDA (ADDR4),Y
|
||||
STA ]XLEN+1
|
||||
LDY #2
|
||||
LDA (ADDR4),Y
|
||||
STA ]YLEN
|
||||
LDY #3
|
||||
LDA (ADDR4),Y
|
||||
STA ]YLEN+1
|
||||
LDY #0
|
||||
LDA ]YIDX
|
||||
STA ]MLIER
|
||||
LDA ]YIDX+1
|
||||
STA ]MLIER+1
|
||||
LDA ]YLEN
|
||||
STA ]MCAND
|
||||
LDA ]YLEN+1
|
||||
STA ]MCAND+1
|
||||
LDA #00
|
||||
STA ]PROD
|
||||
STA ]PROD+1
|
||||
STA ]PROD+2
|
||||
STA ]PROD+3
|
||||
LDX #$10
|
||||
:SHIFT_R
|
||||
LSR ]MLIER+1
|
||||
ROR ]MLIER
|
||||
BCC :ROT_R
|
||||
LDA ]PROD+2
|
||||
CLC
|
||||
ADC ]MCAND
|
||||
STA ]PROD+2
|
||||
LDA ]PROD+3
|
||||
ADC ]MCAND+1
|
||||
:ROT_R
|
||||
ROR
|
||||
STA ]PROD+3
|
||||
ROR ]PROD+2
|
||||
ROR ]PROD+1
|
||||
ROR ]PROD
|
||||
DEX
|
||||
BNE :SHIFT_R
|
||||
LDA ]PROD
|
||||
STA ]PBAK
|
||||
LDA ]PROD+1
|
||||
STA ]PBAK+1
|
||||
LDA ]XIDX
|
||||
STA ]MLIER
|
||||
LDA ]XIDX+1
|
||||
STA ]MLIER+1
|
||||
LDA ]ESIZE
|
||||
STA ]MCAND
|
||||
LDA #0
|
||||
STA ]MCAND+1
|
||||
STA ]PROD
|
||||
STA ]PROD+1
|
||||
STA ]PROD+2
|
||||
STA ]PROD+3
|
||||
LDX #$10
|
||||
:SHIFTR LSR ]MLIER+1
|
||||
ROR ]MLIER
|
||||
BCC :ROTR
|
||||
LDA ]PROD+2
|
||||
CLC
|
||||
ADC ]MCAND
|
||||
STA ]PROD+2
|
||||
LDA ]PROD+3
|
||||
ADC ]MCAND+1
|
||||
:ROTR
|
||||
ROR
|
||||
STA ]PROD+3
|
||||
ROR ]PROD+2
|
||||
ROR ]PROD+1
|
||||
ROR ]PROD
|
||||
DEX
|
||||
BNE :SHIFTR
|
||||
CLC
|
||||
LDA ]PROD
|
||||
ADC ]PBAK
|
||||
STA ]PROD
|
||||
LDA ]PROD+1
|
||||
ADC ]PBAK+1
|
||||
STA ]PROD+1
|
||||
CLC
|
||||
LDA ]PROD
|
||||
ADC #5
|
||||
STA ]PROD
|
||||
LDA ]PROD+1
|
||||
ADC #0
|
||||
STA ]PROD+1
|
||||
CLC
|
||||
LDA ]PROD
|
||||
ADC ADDR4
|
||||
STA ADDR2 ; ELEMENT ADDRESS
|
||||
LDA ]PROD+1
|
||||
ADC ADDR4+1
|
||||
STA ADDR2+1
|
||||
LDY #0
|
||||
:CLP
|
||||
LDA (ADDR3),Y
|
||||
STA (ADDR2),Y
|
||||
INY
|
||||
CPY ]ESIZE
|
||||
BNE :CLP
|
||||
LDY ADDR2+1
|
||||
LDX ADDR2
|
||||
LDA ]ESIZE
|
||||
RTS
|
||||
@@ -1,22 +0,0 @@
|
||||
DPRINT
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDY #$00
|
||||
:LOOP
|
||||
LDA (ADDR1),Y
|
||||
BEQ :EXIT
|
||||
JSR COUT1
|
||||
INY
|
||||
BNE :LOOP
|
||||
:EXIT
|
||||
RTS
|
||||
@@ -1,25 +0,0 @@
|
||||
GPBX
|
||||
PLA
|
||||
TAX
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
TYA
|
||||
PHA
|
||||
TXA
|
||||
PHA
|
||||
LDY #$00
|
||||
LDA (ADDR1),Y
|
||||
BMI :1
|
||||
JMP :0
|
||||
:1
|
||||
LDY #$01 ; BTN PUSHED;A=1
|
||||
JMP :EXIT
|
||||
:0
|
||||
LDY #$00 ; BTN NOT PUSHED;A=0
|
||||
:EXIT
|
||||
TYA
|
||||
RTS
|
||||
@@ -1,17 +0,0 @@
|
||||
]STRLEN EQU VARTAB
|
||||
PRNSTR
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA ]STRLEN
|
||||
:LP
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
JSR COUT1
|
||||
CPY ]STRLEN
|
||||
BNE :LP
|
||||
; LOOP
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
RTS
|
||||
@@ -1,26 +0,0 @@
|
||||
]STRLEN EQU VARTAB
|
||||
SINPUT
|
||||
LDX #$00
|
||||
JSR GETLN
|
||||
STX ]STRLEN
|
||||
CPX #0
|
||||
BNE :INP_CLR
|
||||
STX RETLEN
|
||||
STX RETURN
|
||||
JMP :EXIT
|
||||
:INP_CLR
|
||||
LDA ]STRLEN
|
||||
STA RETURN
|
||||
STA RETLEN
|
||||
INC RETLEN
|
||||
LDX #255
|
||||
LDY #0
|
||||
:LOOP
|
||||
INX
|
||||
INY
|
||||
LDA KEYBUFF,X
|
||||
STA RETURN,Y
|
||||
CPX ]STRLEN
|
||||
BNE :LOOP ; LOOP
|
||||
:EXIT
|
||||
RTS
|
||||
@@ -1,24 +0,0 @@
|
||||
XPRINT
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDY #$01
|
||||
|
||||
:LOOP
|
||||
LDA (ADDR1),Y
|
||||
BEQ :EXIT
|
||||
JSR COUT1
|
||||
INY
|
||||
BNE :LOOP
|
||||
:EXIT
|
||||
CLC
|
||||
TYA
|
||||
ADC ADDR1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #$00
|
||||
PHA
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
@@ -1,75 +0,0 @@
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* -< COMMON DEMO )- *
|
||||
* *
|
||||
* VERSION 0.4.0 *
|
||||
* *
|
||||
* 28-APR-2019 *
|
||||
* *
|
||||
* NATHAN D. RIGGS *
|
||||
* NATHAN.RIGGS@OUTLOOK.COM *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** ASSEMBLER DIRECTIVES
|
||||
*
|
||||
CYC AVE
|
||||
EXP ONLY
|
||||
TR ON
|
||||
DSK STRUCTURES.DEMO
|
||||
OBJ $BFE0
|
||||
ORG $6000
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* TOP INCLUDES (HOOKS,MACROS) *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PUT MIN.HEAD.REQUIRED
|
||||
USE MIN.MAC.REQUIRED
|
||||
USE MIN.HOOKS.COMMON
|
||||
USE MIN.MAC.COMMON
|
||||
]HOME EQU $FC58
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PROGRAM MAIN BODY *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
]VAR1 EQU VARTAB
|
||||
]VAR2 EQU VARTAB+1
|
||||
]VAR3 EQU VARTAB+2
|
||||
]VAR4 EQU VARTAB+3
|
||||
*
|
||||
JSR ]HOME
|
||||
*
|
||||
LDA #10
|
||||
STA ]VAR1
|
||||
STA ]VAR3
|
||||
LDA #20
|
||||
STA ]VAR2
|
||||
STA ]VAR4
|
||||
*
|
||||
IFJ ]VAR1;=;]VAR2;V1E2
|
||||
A1 IFJ ]VAR1;=;]VAR3;V1E3
|
||||
A2 IFJE ]VAR2;=;]VAR3;V2E3;V2E4
|
||||
*
|
||||
JMP REENTRY
|
||||
*
|
||||
V1E2
|
||||
_PRN "VAR1 = VAR2."
|
||||
JMP A1
|
||||
V1E3 _PRN "VAR1 = VAR3",8D8D
|
||||
JMP A2
|
||||
V2E3
|
||||
_PRN "VAR2 = VAR3.",8D8D
|
||||
JMP A2
|
||||
V2E4
|
||||
_PRN "VAR2 = VAR4",8D8D
|
||||
JMP REENTRY
|
||||
*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* BOTTOM INCLUDES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** BOTTOM INCLUDES
|
||||
*
|
||||
PUT MIN.LIB.REQUIRED
|
||||
@@ -1,534 +0,0 @@
|
||||
6000- 4C 37 61 JMP $6137
|
||||
6003- 00 BRK
|
||||
6004- 00 BRK
|
||||
6005- 00 BRK
|
||||
6006- 00 BRK
|
||||
6007- 00 BRK
|
||||
6008- 00 BRK
|
||||
6009- 00 BRK
|
||||
600A- 00 BRK
|
||||
600B- 00 BRK
|
||||
600C- 00 BRK
|
||||
600D- 00 BRK
|
||||
600E- 00 BRK
|
||||
600F- 00 BRK
|
||||
6010- 00 BRK
|
||||
6011- 00 BRK
|
||||
6012- 00 BRK
|
||||
6013- 00 BRK
|
||||
6014- 00 BRK
|
||||
6015- 00 BRK
|
||||
6016- 00 BRK
|
||||
6017- 00 BRK
|
||||
6018- 00 BRK
|
||||
6019- 00 BRK
|
||||
601A- 00 BRK
|
||||
601B- 00 BRK
|
||||
601C- 00 BRK
|
||||
601D- 00 BRK
|
||||
601E- 00 BRK
|
||||
601F- 00 BRK
|
||||
6020- 00 BRK
|
||||
6021- 00 BRK
|
||||
6022- 00 BRK
|
||||
6023- 00 BRK
|
||||
6024- 00 BRK
|
||||
6025- 00 BRK
|
||||
6026- 00 BRK
|
||||
6027- 00 BRK
|
||||
6028- 00 BRK
|
||||
6029- 00 BRK
|
||||
602A- 00 BRK
|
||||
602B- 00 BRK
|
||||
602C- 00 BRK
|
||||
602D- 00 BRK
|
||||
602E- 00 BRK
|
||||
602F- 00 BRK
|
||||
6030- 00 BRK
|
||||
6031- 00 BRK
|
||||
6032- 00 BRK
|
||||
6033- 00 BRK
|
||||
6034- 00 BRK
|
||||
6035- 00 BRK
|
||||
6036- 00 BRK
|
||||
6037- 00 BRK
|
||||
6038- 00 BRK
|
||||
6039- 00 BRK
|
||||
603A- 00 BRK
|
||||
603B- 00 BRK
|
||||
603C- 00 BRK
|
||||
603D- 00 BRK
|
||||
603E- 00 BRK
|
||||
603F- 00 BRK
|
||||
6040- 00 BRK
|
||||
6041- 00 BRK
|
||||
6042- 00 BRK
|
||||
6043- 00 BRK
|
||||
6044- 00 BRK
|
||||
6045- 00 BRK
|
||||
6046- 00 BRK
|
||||
6047- 00 BRK
|
||||
6048- 00 BRK
|
||||
6049- 00 BRK
|
||||
604A- 00 BRK
|
||||
604B- 00 BRK
|
||||
604C- 00 BRK
|
||||
604D- 00 BRK
|
||||
604E- 00 BRK
|
||||
604F- 00 BRK
|
||||
6050- 00 BRK
|
||||
6051- 00 BRK
|
||||
6052- 00 BRK
|
||||
6053- 00 BRK
|
||||
6054- 00 BRK
|
||||
6055- 00 BRK
|
||||
6056- 00 BRK
|
||||
6057- 00 BRK
|
||||
6058- 00 BRK
|
||||
6059- 00 BRK
|
||||
605A- 00 BRK
|
||||
605B- 00 BRK
|
||||
605C- 00 BRK
|
||||
605D- 00 BRK
|
||||
605E- 00 BRK
|
||||
605F- 00 BRK
|
||||
6060- 00 BRK
|
||||
6061- 00 BRK
|
||||
6062- 00 BRK
|
||||
6063- 00 BRK
|
||||
6064- 00 BRK
|
||||
6065- 00 BRK
|
||||
6066- 00 BRK
|
||||
6067- 00 BRK
|
||||
6068- 00 BRK
|
||||
6069- 00 BRK
|
||||
606A- 00 BRK
|
||||
606B- 00 BRK
|
||||
606C- 00 BRK
|
||||
606D- 00 BRK
|
||||
606E- 00 BRK
|
||||
606F- 00 BRK
|
||||
6070- 00 BRK
|
||||
6071- 00 BRK
|
||||
6072- 00 BRK
|
||||
6073- 00 BRK
|
||||
6074- 00 BRK
|
||||
6075- 00 BRK
|
||||
6076- 00 BRK
|
||||
6077- 00 BRK
|
||||
6078- 00 BRK
|
||||
6079- 00 BRK
|
||||
607A- 00 BRK
|
||||
607B- 00 BRK
|
||||
607C- 00 BRK
|
||||
607D- 00 BRK
|
||||
607E- 00 BRK
|
||||
607F- 00 BRK
|
||||
6080- 00 BRK
|
||||
6081- 00 BRK
|
||||
6082- 00 BRK
|
||||
6083- 00 BRK
|
||||
6084- 00 BRK
|
||||
6085- 00 BRK
|
||||
6086- 00 BRK
|
||||
6087- 00 BRK
|
||||
6088- 00 BRK
|
||||
6089- 00 BRK
|
||||
608A- 00 BRK
|
||||
608B- 00 BRK
|
||||
608C- 00 BRK
|
||||
608D- 00 BRK
|
||||
608E- 00 BRK
|
||||
608F- 00 BRK
|
||||
6090- 00 BRK
|
||||
6091- 00 BRK
|
||||
6092- 00 BRK
|
||||
6093- 00 BRK
|
||||
6094- 00 BRK
|
||||
6095- 00 BRK
|
||||
6096- 00 BRK
|
||||
6097- 00 BRK
|
||||
6098- 00 BRK
|
||||
6099- 00 BRK
|
||||
609A- 00 BRK
|
||||
609B- 00 BRK
|
||||
609C- 00 BRK
|
||||
609D- 00 BRK
|
||||
609E- 00 BRK
|
||||
609F- 00 BRK
|
||||
60A0- 00 BRK
|
||||
60A1- 00 BRK
|
||||
60A2- 00 BRK
|
||||
60A3- 00 BRK
|
||||
60A4- 00 BRK
|
||||
60A5- 00 BRK
|
||||
60A6- 00 BRK
|
||||
60A7- 00 BRK
|
||||
60A8- 00 BRK
|
||||
60A9- 00 BRK
|
||||
60AA- 00 BRK
|
||||
60AB- 00 BRK
|
||||
60AC- 00 BRK
|
||||
60AD- 00 BRK
|
||||
60AE- 00 BRK
|
||||
60AF- 00 BRK
|
||||
60B0- 00 BRK
|
||||
60B1- 00 BRK
|
||||
60B2- 00 BRK
|
||||
60B3- 00 BRK
|
||||
60B4- 00 BRK
|
||||
60B5- 00 BRK
|
||||
60B6- 00 BRK
|
||||
60B7- 00 BRK
|
||||
60B8- 00 BRK
|
||||
60B9- 00 BRK
|
||||
60BA- 00 BRK
|
||||
60BB- 00 BRK
|
||||
60BC- 00 BRK
|
||||
60BD- 00 BRK
|
||||
60BE- 00 BRK
|
||||
60BF- 00 BRK
|
||||
60C0- 00 BRK
|
||||
60C1- 00 BRK
|
||||
60C2- 00 BRK
|
||||
60C3- 00 BRK
|
||||
60C4- 00 BRK
|
||||
60C5- 00 BRK
|
||||
60C6- 00 BRK
|
||||
60C7- 00 BRK
|
||||
60C8- 00 BRK
|
||||
60C9- 00 BRK
|
||||
60CA- 00 BRK
|
||||
60CB- 00 BRK
|
||||
60CC- 00 BRK
|
||||
60CD- 00 BRK
|
||||
60CE- 00 BRK
|
||||
60CF- 00 BRK
|
||||
60D0- 00 BRK
|
||||
60D1- 00 BRK
|
||||
60D2- 00 BRK
|
||||
60D3- 00 BRK
|
||||
60D4- 00 BRK
|
||||
60D5- 00 BRK
|
||||
60D6- 00 BRK
|
||||
60D7- 00 BRK
|
||||
60D8- 00 BRK
|
||||
60D9- 00 BRK
|
||||
60DA- 00 BRK
|
||||
60DB- 00 BRK
|
||||
60DC- 00 BRK
|
||||
60DD- 00 BRK
|
||||
60DE- 00 BRK
|
||||
60DF- 00 BRK
|
||||
60E0- 00 BRK
|
||||
60E1- 00 BRK
|
||||
60E2- 00 BRK
|
||||
60E3- 00 BRK
|
||||
60E4- 00 BRK
|
||||
60E5- 00 BRK
|
||||
60E6- 00 BRK
|
||||
60E7- 00 BRK
|
||||
60E8- 00 BRK
|
||||
60E9- 00 BRK
|
||||
60EA- 00 BRK
|
||||
60EB- 00 BRK
|
||||
60EC- 00 BRK
|
||||
60ED- 00 BRK
|
||||
60EE- 00 BRK
|
||||
60EF- 00 BRK
|
||||
60F0- 00 BRK
|
||||
60F1- 00 BRK
|
||||
60F2- 00 BRK
|
||||
60F3- 00 BRK
|
||||
60F4- 00 BRK
|
||||
60F5- 00 BRK
|
||||
60F6- 00 BRK
|
||||
60F7- 00 BRK
|
||||
60F8- 00 BRK
|
||||
60F9- 00 BRK
|
||||
60FA- 00 BRK
|
||||
60FB- 00 BRK
|
||||
60FC- 00 BRK
|
||||
60FD- 00 BRK
|
||||
60FE- 00 BRK
|
||||
60FF- 00 BRK
|
||||
6100- 00 BRK
|
||||
6101- 00 BRK
|
||||
6102- 00 BRK
|
||||
6103- 00 BRK
|
||||
6104- 00 BRK
|
||||
6105- 00 BRK
|
||||
6106- 00 BRK
|
||||
6107- 00 BRK
|
||||
6108- 00 BRK
|
||||
6109- 00 BRK
|
||||
610A- 00 BRK
|
||||
610B- 00 BRK
|
||||
610C- 00 BRK
|
||||
610D- 00 BRK
|
||||
610E- 00 BRK
|
||||
610F- 00 BRK
|
||||
6110- 00 BRK
|
||||
6111- 00 BRK
|
||||
6112- 00 BRK
|
||||
6113- 00 BRK
|
||||
6114- 00 BRK
|
||||
6115- 00 BRK
|
||||
6116- 00 BRK
|
||||
6117- 00 BRK
|
||||
6118- 00 BRK
|
||||
6119- 00 BRK
|
||||
611A- 00 BRK
|
||||
611B- 00 BRK
|
||||
611C- 00 BRK
|
||||
611D- 00 BRK
|
||||
611E- 00 BRK
|
||||
611F- 00 BRK
|
||||
6120- 00 BRK
|
||||
6121- 00 BRK
|
||||
6122- 00 BRK
|
||||
6123- 00 BRK
|
||||
6124- 00 BRK
|
||||
6125- 00 BRK
|
||||
6126- 00 BRK
|
||||
6127- 00 BRK
|
||||
6128- 00 BRK
|
||||
6129- 00 BRK
|
||||
612A- 00 BRK
|
||||
612B- 00 BRK
|
||||
612C- 00 BRK
|
||||
612D- 00 BRK
|
||||
612E- 00 BRK
|
||||
612F- 00 BRK
|
||||
6130- 00 BRK
|
||||
6131- 00 BRK
|
||||
6132- 00 BRK
|
||||
6133- 00 BRK
|
||||
6134- 00 BRK
|
||||
6135- 00 BRK
|
||||
6136- 00 BRK
|
||||
6137- 4C D0 03 JMP $03D0
|
||||
613A- 00 BRK
|
||||
613B- 00 BRK
|
||||
613C- 00 BRK
|
||||
613D- 00 BRK
|
||||
613E- 00 BRK
|
||||
613F- 00 BRK
|
||||
6140- 00 BRK
|
||||
6141- 00 BRK
|
||||
6142- 00 BRK
|
||||
6143- 00 BRK
|
||||
6144- B0 B1 BCS $60F7
|
||||
6146- B2 B3 LDA ($B3)
|
||||
6148- B4 B5 LDY $B5,X
|
||||
614A- B6 B7 LDX $B7,Y
|
||||
614C- B8 CLV
|
||||
614D- B9 C1 C2 LDA $C2C1,Y
|
||||
6150- C3 ???
|
||||
6151- C4 C5 CPY $C5
|
||||
6153- C6 8C DEC $8C
|
||||
6155- 3C 61 85 BIT $8561,X
|
||||
6158- 06 86 ASL $86
|
||||
615A- 07 ???
|
||||
615B- A9 8D LDA #$8D
|
||||
615D- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
6160- A5 07 LDA $07
|
||||
6162- 29 F0 AND #$F0
|
||||
6164- 4A LSR
|
||||
6165- 4A LSR
|
||||
6166- 4A LSR
|
||||
6167- 4A LSR
|
||||
6168- AA TAX
|
||||
6169- BD 44 61 LDA $6144,X
|
||||
616C- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
616F- A5 07 LDA $07
|
||||
6171- 29 0F AND #$0F
|
||||
6173- AA TAX
|
||||
6174- BD 44 61 LDA $6144,X
|
||||
6177- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
617A- A5 06 LDA $06
|
||||
617C- 29 F0 AND #$F0
|
||||
617E- 4A LSR
|
||||
617F- 4A LSR
|
||||
6180- 4A LSR
|
||||
6181- 4A LSR
|
||||
6182- AA TAX
|
||||
6183- BD 44 61 LDA $6144,X
|
||||
6186- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
6189- A5 06 LDA $06
|
||||
618B- 29 0F AND #$0F
|
||||
618D- AA TAX
|
||||
618E- BD 44 61 LDA $6144,X
|
||||
6191- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
6194- A9 BA LDA #$BA
|
||||
6196- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
6199- A5 A3 LDA $A3
|
||||
619B- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
619E- A0 00 LDY #$00
|
||||
61A0- B1 06 LDA ($06),Y
|
||||
61A2- 29 F0 AND #$F0
|
||||
61A4- 4A LSR
|
||||
61A5- 4A LSR
|
||||
61A6- 4A LSR
|
||||
61A7- 4A LSR
|
||||
61A8- 8D 3B 61 STA $613B
|
||||
61AB- B1 06 LDA ($06),Y
|
||||
61AD- 29 0F AND #$0F
|
||||
61AF- 8D 3A 61 STA $613A
|
||||
61B2- AE 3B 61 LDX $613B
|
||||
61B5- BD 44 61 LDA $6144,X
|
||||
61B8- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
61BB- AE 3A 61 LDX $613A
|
||||
61BE- BD 44 61 LDA $6144,X
|
||||
61C1- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
61C4- A9 A0 LDA #$A0
|
||||
61C6- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
61C9- C8 INY
|
||||
61CA- CC 3C 61 CPY $613C
|
||||
61CD- D0 D1 BNE $61A0
|
||||
61CF- 60 RTS
|
||||
61D0- A9 01 LDA #$01
|
||||
61D2- 8D B6 AA STA $AAB6
|
||||
61D5- 85 76 STA $76
|
||||
61D7- 85 33 STA $33
|
||||
61D9- 85 06 STA $06
|
||||
61DB- 86 07 STX $07
|
||||
61DD- A9 FF LDA #$FF
|
||||
61DF- 85 D8 STA $D8
|
||||
61E1- A0 00 LDY #$00
|
||||
61E3- B1 06 LDA ($06),Y
|
||||
61E5- 8D 5A 9D STA $9D5A
|
||||
61E8- C8 INY
|
||||
61E9- B1 06 LDA ($06),Y
|
||||
61EB- 8D 5B 9D STA $9D5B
|
||||
61EE- 60 RTS
|
||||
61EF- 68 PLA
|
||||
61F0- 85 06 STA $06
|
||||
61F2- 68 PLA
|
||||
61F3- 85 07 STA $07
|
||||
61F5- A0 01 LDY #$01
|
||||
61F7- B1 06 LDA ($06),Y
|
||||
61F9- F0 06 BEQ $6201
|
||||
61FB- 20 F0 FD JSR $FDF0 F8ROM:COUT1
|
||||
61FE- C8 INY
|
||||
61FF- D0 F6 BNE $61F7
|
||||
6201- 18 CLC
|
||||
6202- 98 TYA
|
||||
6203- 65 06 ADC $06
|
||||
6205- 85 06 STA $06
|
||||
6207- A5 07 LDA $07
|
||||
6209- 69 00 ADC #$00
|
||||
620B- 48 PHA
|
||||
620C- A5 06 LDA $06
|
||||
620E- 48 PHA
|
||||
620F- 60 RTS
|
||||
6210- C0 00 CPY #$00
|
||||
6212- F0 18 BEQ $622C
|
||||
6214- EA NOP
|
||||
6215- C0 01 CPY #$01
|
||||
6217- D0 03 BNE $621C
|
||||
6219- 4C 27 62 JMP $6227
|
||||
621C- 88 DEY
|
||||
621D- A2 CA LDX #$CA
|
||||
621F- CA DEX
|
||||
6220- D0 FD BNE $621F
|
||||
6222- EA NOP
|
||||
6223- EA NOP
|
||||
6224- 88 DEY
|
||||
6225- D0 F6 BNE $621D
|
||||
6227- A2 C7 LDX #$C7
|
||||
6229- CA DEX
|
||||
622A- D0 FD BNE $6229
|
||||
622C- 60 RTS
|
||||
622D- A5 EF LDA $EF
|
||||
622F- A6 FD LDX $FD
|
||||
6231- F0 0C BEQ $623F
|
||||
6233- A0 00 LDY #$00
|
||||
6235- 91 FA STA ($FA),Y
|
||||
6237- C8 INY
|
||||
6238- D0 FB BNE $6235
|
||||
623A- E6 FB INC $FB
|
||||
623C- CA DEX
|
||||
623D- D0 F6 BNE $6235
|
||||
623F- A6 FC LDX $FC
|
||||
6241- F0 08 BEQ $624B
|
||||
6243- A0 00 LDY #$00
|
||||
6245- 91 FA STA ($FA),Y
|
||||
6247- C8 INY
|
||||
6248- CA DEX
|
||||
6249- D0 FA BNE $6245
|
||||
624B- 60 RTS
|
||||
624C- A5 FC LDA $FC
|
||||
624E- 38 SEC
|
||||
624F- E5 FA SBC $FA
|
||||
6251- AA TAX
|
||||
6252- A5 FD LDA $FD
|
||||
6254- E5 FB SBC $FB
|
||||
6256- A8 TAY
|
||||
6257- 8A TXA
|
||||
6258- C5 FE CMP $FE
|
||||
625A- 98 TYA
|
||||
625B- E5 FF SBC $FF
|
||||
625D- B0 06 BCS $6265
|
||||
625F- 20 8E 62 JSR $628E
|
||||
6262- 4C BD 62 JMP $62BD
|
||||
6265- 20 6B 62 JSR $626B
|
||||
6268- 4C BD 62 JMP $62BD
|
||||
626B- A0 00 LDY #$00
|
||||
626D- A6 FF LDX $FF
|
||||
626F- F0 0E BEQ $627F
|
||||
6271- B1 FA LDA ($FA),Y
|
||||
6273- 91 FC STA ($FC),Y
|
||||
6275- C8 INY
|
||||
6276- D0 F9 BNE $6271
|
||||
6278- E6 FB INC $FB
|
||||
627A- E6 FD INC $FD
|
||||
627C- CA DEX
|
||||
627D- D0 F2 BNE $6271
|
||||
627F- A6 FE LDX $FE
|
||||
6281- F0 08 BEQ $628B
|
||||
6283- B1 FA LDA ($FA),Y
|
||||
6285- 91 FC STA ($FC),Y
|
||||
6287- C8 INY
|
||||
6288- CA DEX
|
||||
6289- D0 F8 BNE $6283
|
||||
628B- 4C BD 62 JMP $62BD
|
||||
628E- A5 FF LDA $FF
|
||||
6290- 18 CLC
|
||||
6291- 65 FB ADC $FB
|
||||
6293- 85 FB STA $FB
|
||||
6295- A5 FF LDA $FF
|
||||
6297- 18 CLC
|
||||
6298- 65 FD ADC $FD
|
||||
629A- 85 FD STA $FD
|
||||
629C- A4 FE LDY $FE
|
||||
629E- F0 09 BEQ $62A9
|
||||
62A0- 88 DEY
|
||||
62A1- B1 FA LDA ($FA),Y
|
||||
62A3- 91 FC STA ($FC),Y
|
||||
62A5- C0 00 CPY #$00
|
||||
62A7- D0 F7 BNE $62A0
|
||||
62A9- A6 FF LDX $FF
|
||||
62AB- F0 10 BEQ $62BD
|
||||
62AD- C6 FB DEC $FB
|
||||
62AF- C6 FD DEC $FD
|
||||
62B1- 88 DEY
|
||||
62B2- B1 FA LDA ($FA),Y
|
||||
62B4- 91 FC STA ($FC),Y
|
||||
62B6- C0 00 CPY #$00
|
||||
62B8- D0 F7 BNE $62B1
|
||||
62BA- CA DEX
|
||||
62BB- D0 F0 BNE $62AD
|
||||
62BD- 60 RTS
|
||||
62BE- A0 FF LDY #$FF
|
||||
62C0- C8 INY
|
||||
62C1- B1 FA LDA ($FA),Y
|
||||
62C3- AA TAX
|
||||
62C4- B1 FC LDA ($FC),Y
|
||||
62C6- 91 FA STA ($FA),Y
|
||||
62C8- 8A TXA
|
||||
62C9- 91 FC STA ($FC),Y
|
||||
62CB- C4 EF CPY $EF
|
||||
62CD- D0 F1 BNE $62C0
|
||||
62CF- 60 RTS
|
||||
62D0- 60 RTS
|
||||
@@ -2,12 +2,19 @@
|
||||
*``````````````````````````````*
|
||||
* DEMO.REQUIRED *
|
||||
* *
|
||||
* THIS IS A DEMO OF THE CORE *
|
||||
* SUBROUTINES THAT THE WHOLE *
|
||||
* LIBRARY USES TO FUNCTION. *
|
||||
* MOST OF THESE ARE NOT USED *
|
||||
* BY THE PROGRAMMER, BUT ARE *
|
||||
* INTERNAL TO THE WORKINGS OF *
|
||||
* OTHER SUBROUTINES. *
|
||||
* *
|
||||
* AUTHOR: NATHAN RIGGS *
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 11-DEC-2019 *
|
||||
* DATE: 11-MAR-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
@@ -25,13 +32,676 @@
|
||||
* TOP INCLUDES (HOOKS,MACROS) *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PUT MIN.HEAD.REQUIRED
|
||||
USE MIN.MAC.REQUIRED
|
||||
PUT MIN.HEAD.REQUIRED.ASM
|
||||
USE MIN.MAC.REQUIRED.ASM
|
||||
*
|
||||
]COUT EQU $FDF0
|
||||
]HOME EQU $FC58
|
||||
*
|
||||
JSR ]HOME
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PROGRAM MAIN BODY *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** SINCE THIS GROUP OF MACROS ARE PRIMARILY USED
|
||||
*** INTERNALLY FOR THE LIBRARIES, DEMONSTRATIONS OF
|
||||
*** THEIR USAGE WILL NOT BE GIVEN HERE. HOWEVER, A
|
||||
*** QUICK LOOK AT ALMOST ANY LIBRARY'S MACRO FILE
|
||||
*** WILL SHOW QUITE EASILY HOW THESE MACROS ARE USED.
|
||||
*
|
||||
* THE _AXLIT MACRO - .AX LITERAL
|
||||
* THE _AXSTR MACRO - .AX STRING
|
||||
* THE _ISLIT MACRO - IS LITERAL
|
||||
* THE _ISSTR MACRO - IS STRING
|
||||
* THE _MLIT MACRO - MEMORY LITERAL
|
||||
* THE _MSTR MACRO - MEMORY STRING
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _PRN, _WAIT AND BEEP *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** THE _PRN, _WAIT AND BEEP MACROS ARE MOSTLY
|
||||
*** AVAILABLE FOR DEBUGGING PURPOSES, AND ARE NOT
|
||||
*** MEANT TO BE USED IN ACTUAL USER PROGRAMS
|
||||
*** BEYOND THAT CAPACITY.
|
||||
*
|
||||
* THE _PRN MACRO - PRINT
|
||||
*
|
||||
** THE _PRN MACRO SIMPLY PRINTS A LITERAL STRING
|
||||
** TO THE SCREEN, AND HAS VERY LIMITED USE. WHEN
|
||||
** OUTPUT IS MORE IMPORTANT THAN AN ERROR MESSAGE
|
||||
** OR THE LIKE, USE THE MACROS PROVIDED BY THE
|
||||
** STDIO LIBRARY.
|
||||
*
|
||||
** USAGE:
|
||||
JSR ]HOME
|
||||
_PRN "THE _PRN MACRO",8D
|
||||
_PRN "===============",8D8D
|
||||
** _PRN "THIS IS A TEST.",8D8D
|
||||
*
|
||||
_PRN "THIS IS A TEST.",8D8D
|
||||
*
|
||||
* THE _WAIT MACRO - WAIT
|
||||
*
|
||||
** LIKEWISE, THE _WAIT MACRO IS FOR USES OF
|
||||
** CONVENIENCE ONLY, AND THE STDIO LIBRARY
|
||||
** SHOULD BE USED INSTEAD WHENEVER POSSIBLE.
|
||||
** NONETHELESS, THE _WAIT MACRO SIMPLY WAITS
|
||||
** FOR A KEYPRESS BEFORE EXECUTION CONTINUES.
|
||||
*
|
||||
** USAGE:
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE WAIT MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE BEEP MACRO - BEEP
|
||||
*
|
||||
** UNSURPRISINGLY, THE BEEP MACRO SENDS A STANDARD
|
||||
** NUMBER OF TICKS TO THE SPEAKER TO PRODUCE A BEEP
|
||||
** THAT CAN BE A LENGTH BETWEEN 1 AND 255.
|
||||
*
|
||||
** USAGE:
|
||||
** BEEP #255
|
||||
*
|
||||
_PRN "BEEEEEEEEEEEEEEP",8D8D
|
||||
BEEP #255
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* LONG BRANCHING MACROS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** LONG BRANCHING ROUTINES ARE PRETTY SELF-
|
||||
*** EXPLANATORY TO ANYONE WHO HAS RUN INTO THE
|
||||
*** PAGE LENGTH PROBLEM WITH BRANCHING INSTRUCTIONS.
|
||||
*** ESSENTIALLY, THESE MACROS TO THE APPROPRIATE TESTS,
|
||||
*** THEN JMP TO THE PARAMETER ADDRESS PASSED. NOTE THAT
|
||||
*** THIS CAN EASILY BREAK CODE THAT IS SUPPOSED TO BE
|
||||
*** RELOCATABLE.
|
||||
*
|
||||
** SINCE ALL OF THE LONG BRANCHING MACROS WORK
|
||||
** EXACTLY THE SAME, IT IS ONLY NECESSARY TO SHOW
|
||||
** HOW ONE OF THEM IS USED. WE WILL USE BCCL HERE,
|
||||
** OR BRANCH CARRY CLEAR LONG.
|
||||
*
|
||||
** USAGE:
|
||||
** CLC
|
||||
** BCCL ]CONTINUE
|
||||
** BRK
|
||||
** ]CONTINUE
|
||||
** _PRN "THE CARRY IS CLEAR.",8D8D
|
||||
_WAIT
|
||||
*
|
||||
_PRN "THE BCCL MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
CLC
|
||||
BCCL ]CONTINUE
|
||||
BRK
|
||||
]CONTINUE
|
||||
_PRN "THE CARRY IS CLEAR.",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE BCCL MACRO - BRANCH CARRY CLEAR LONG
|
||||
* THE BCSL MACRO - BRANCH CARRY SET LONG
|
||||
* THE BEQL MACRO - BRANCH IF EQUAL LONG
|
||||
* THE BMIL MACRO - BRANCH IF MINUS LONG
|
||||
* THE BNEL MACRO - BRANCH NOT EQUAL LONG
|
||||
* THE BPLL MACRO - BRANCH IF PLUS LONG
|
||||
* THE BVCL MACRO - BRANCH OVERFLOW CLEAR LONG
|
||||
* THE BVSL MACRO - BRANCH OVERFLOW SET LONG
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* FAKE 65CO2 MACROS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** THE FAKE 65C02 MACROS ARE APROXIMATIONS
|
||||
*** OF THE RELEVANT INSTRUCTIONS IN THE 65C02
|
||||
*** INSTRUCTION SET WHEN YOU ONLY HAVE A 6502
|
||||
*** TO WORK WITH. OBVIOUSLY, IF A 65C02 PROCESSOR
|
||||
*** IS READILY AVAILABLE, YOU SHOULD USE THE
|
||||
*** REAL INSTRUCTION SET.
|
||||
*
|
||||
* THE CBRA MACRO - 65C02 BRANCH ALWAYS
|
||||
*
|
||||
** THE CBRA MACRO SIMPLY REPLACES THE MACRO WITH
|
||||
** A JMP INSTRUCTION TO EMULATE THE BRANCH ALWAYS (BRA)
|
||||
** 65CO2 INSTRUCTION. IT WORKS LIKE YOU'D EXPECT:
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** CBRA ]CONT
|
||||
** BRK
|
||||
**]CONT _PRN "CBRA WORKED AS EXPECTED.",8D8D
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE CBRA MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
CBRA ]CONT
|
||||
BRK
|
||||
]CONT _PRN "CBRA WORKED AS EXPECTED.",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE CPHX MACRO - 65C02 PUSH .X
|
||||
*
|
||||
** THE CPHX MACRO EMULATES THE 65C02 INSTRUCTION
|
||||
** THAT PUSHES .X TO THE STACK.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** LDX #$FF
|
||||
** CPHX
|
||||
** _PRN "CONTENT PULLED FROM STACK: "
|
||||
** PLA ; .X IS NOW IN .A
|
||||
** STA $300
|
||||
** DUMP #$300;#1
|
||||
** _PRN " ",8D8D
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE CPHX MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
LDX #$FF
|
||||
CPHX
|
||||
_PRN "CONTENT PULLED FROM THE STACK: "
|
||||
PLA
|
||||
STA $300
|
||||
DUMP #$300;#1
|
||||
_PRN " ",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE CPHY MACRO - 65C02 PUSH .Y
|
||||
*
|
||||
** THE CPHY MACRO WORKS THE SAME WAY AS THE CPHX
|
||||
** MACRO, EXCEPT PUSHES .Y INSTEAD OF .X. THUS,
|
||||
** IT WOULD BE REDUNDANT TO SHOW THE EXACT SAME PROCESS--
|
||||
** TREAT THE MACRO THE SAME WAY.
|
||||
*
|
||||
* THE CPLX MACRO - 65C02 PULL .X
|
||||
*
|
||||
** THE CPLX MACRO EMULATES THE PLX INSTRUCTION
|
||||
** FOR THE 65C02. THE VALUE AT THE TOP OF THE STACK
|
||||
** IS PULLED AND THEN STORED IN .X.
|
||||
*
|
||||
** USAGE:
|
||||
** LDA #$EE
|
||||
** PHA
|
||||
** CPLX
|
||||
** STX $300
|
||||
** _PRN "VALUE PULLED FROM STACK:"
|
||||
** DUMP #$300;#1
|
||||
** _WAIT
|
||||
** _PRN " ",8D8D
|
||||
*
|
||||
_PRN "THE CPLX MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
LDA #$EE
|
||||
PHA
|
||||
CPLX
|
||||
STX $300
|
||||
_PRN "VALUE PULLED FROM STACK:"
|
||||
DUMP #$300;#1
|
||||
_WAIT
|
||||
_PRN " ",8D8D
|
||||
*
|
||||
* THE CPLY MACRO - 65C02 PULL .Y
|
||||
*
|
||||
** THE CPLY MACRO, OR 65CO2 PULL .Y MACRO,
|
||||
** EMULATES THE 65C02 INSTRUCTION PLY. AGAIN,
|
||||
** THIS WORKS EXACTLY THE SAME AS CPLX, EXCEPT
|
||||
** THE PULL IS STORED IN .Y INSTEAD OF .X.
|
||||
** THEREFORE, WE NEED NOT BE REDUNDANT.
|
||||
*
|
||||
* THE CTXY MACRO - 65C02 TRANSFER .X TO .Y
|
||||
*
|
||||
** THE CTXY MACRO EMULATES THE 65C02 TRANSFER .X TO .Y
|
||||
** INSTRUCTION, TXY. .A IS USED AS AN INTERMEDIARY, AND
|
||||
** THEN ITS ORIGINAL VALUE IS RESTORED.
|
||||
*
|
||||
** USAGE:
|
||||
** LDY #0
|
||||
** LDX #$DD
|
||||
** CTXY
|
||||
** STY $300
|
||||
** _PRN "CONTENT IN .Y:"
|
||||
** DUMP #$300;#1
|
||||
** _WAIT
|
||||
** _PRN " ",8D8D
|
||||
*
|
||||
_PRN "THE CTXY MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
LDY #0
|
||||
LDX #$DD
|
||||
CTXY
|
||||
STY $300
|
||||
_PRN "CONTENT IN .Y:"
|
||||
DUMP #$300;#1
|
||||
_WAIT
|
||||
_PRN " ",8D8D
|
||||
*
|
||||
* THE CTYX MACRO - 65C02 TRANSFER .Y TO .X
|
||||
*
|
||||
** LIKE MANY SUBROUTINES BEFORE, THE CTYX MACRO OR
|
||||
** THE TRANSFER .Y TO .X MACRO, WORKS EXACTLY LIKE
|
||||
** ITS RELATED SUBROUTINE, THE CTXY MACRO, AND THUS
|
||||
** ITS USAGE SHOULD BE REFERRED TO IN THAT EXAMLPLE.
|
||||
** THIS MACRO EMULATES THE CYX INSTRUCTION IN 65CO2.
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* MEMORY MANIPULATION MACROS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** THE MACROS DEDICATED TO MANIPULATING MEMORY
|
||||
*** ARE USED FOR A VARIETY OF REASONS, BUT IF
|
||||
*** YOU ARE A SEASONED PROGRAMMER, YOU ALREADY KNOW
|
||||
*** THAT 99.9% OF THE JOB IS MEMORY MANIPULATION.
|
||||
*** THESE HERE ENCOMPASS THOSE DEDICATED TO MOVING,
|
||||
*** COPYING, AND FILLING MEMORY BLOCKS, AS WELL AS
|
||||
*** VIEWING MEMORY CONTENTS FOR DEBUGGING PURPOSES.
|
||||
*** FOR FUN, A POKE AND PEEK MACRO ARE INCLUDED FOR
|
||||
*** THE APPLESOFT KIDS, AND LOADS OR PULLS THE VALUE INTO .A.
|
||||
*
|
||||
* THE DUMP MACRO - MEMORY DUMP
|
||||
*
|
||||
** THE DUMP MACRO HAS ACTUALLY ALREADY BEEN
|
||||
** USED TO SHOW THE CONTENTS RETURNED BY SOME
|
||||
** OF THE 65C02 EMULATION MACROS. THE MACRO
|
||||
** SIMPLY DUMPS A BLOCK OF MEMORY SPECIFIED BY
|
||||
** THE PARAMETERS PASSED. THEREFORE:
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** LDA #$BB
|
||||
** STA $300
|
||||
** LDA #$AA
|
||||
** STA $301
|
||||
** _PRN "VALUES IN $301-$302:"
|
||||
** DUMP #$300;#2
|
||||
** _WAIT
|
||||
** _PRN " ",8D8D
|
||||
*
|
||||
_PRN "THE DUMP MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
LDA #$BB
|
||||
STA $300
|
||||
LDA #$AA
|
||||
STA $301
|
||||
_PRN "VALUES IN $301-$302:"
|
||||
DUMP #$300;#2
|
||||
_WAIT
|
||||
_PRN " ",8D8D
|
||||
*
|
||||
* THE ERRH MACRO - ERROR HANDLER
|
||||
*
|
||||
** THE ERRH MACRO SETS THE ERROR HANDLING
|
||||
** HOOK FOR SOUBROUTINES THAT RELY ON
|
||||
** APPLESOFT IN SOME WAY. THIS IS PARTICULARLY
|
||||
** USED TO DETECT AN END-OF-FILE WHEN
|
||||
** READING A TEXT FILE, AS THERE IS NO "STANDARD"
|
||||
** WAY TO DETECT THE EOF EXCEPT BY THE ERROR RETURN.
|
||||
*
|
||||
** USAGE:
|
||||
** ERRH #$6000
|
||||
*
|
||||
** SINCE THIS ROUTINE REQUIRES TOO MUCH INTEGRATION
|
||||
** WITH OTHER LIBRARIES, YOU WON'T BE SEEING A
|
||||
** DEMO HERE. HOWEVER, THE CURRENT ITERATION OF THE
|
||||
** FILEIO LIBRARY MAKES EXTENSIVE USE OF THE MACRO,
|
||||
** AND CAN BE REFERRED TO FOR PLENTLY OF EXAMPLES.
|
||||
*
|
||||
* THE GRET MACRO - GET RETURN
|
||||
*
|
||||
** THE GRET MACRO STANDS FOR "GET RETURN," AND
|
||||
** SIMPLY COPIES THE CONTENTS OF THE RETURN
|
||||
** MEMORY BLOCK TO ANOTHER MEMORY BLOCK. THE
|
||||
** LENGTH OF THIS BLOCK IS DETERMINED BY THE
|
||||
** RETLEN VARIABLE, WHICH LOGICALLY PRECEDES THE
|
||||
** RETURN BLOCK AS A BYTE. AS SUCH, NOTE THAT
|
||||
** RETURN CAN ONLY HOLD UP TO 255 BYTES, AND
|
||||
** THUS THIS IS THE MAXIMUM TO BE TRANSFERRED.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** LDA #$11
|
||||
** STA RETURN
|
||||
** LDA #$12
|
||||
** STA RETURN+1
|
||||
** LDA #$13
|
||||
** STA RETURN+2
|
||||
** LDA #3
|
||||
** STA RETLEN
|
||||
** GRET #$300
|
||||
** _PRN "THE 3 BYTES PUT IN RETURN ARE NOW AT $300:"
|
||||
** DUMP #$300;#3
|
||||
** _WAIT
|
||||
** _"PRN " ",8D8D
|
||||
_PRN "THE GRET MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
LDA #$11
|
||||
STA RETURN
|
||||
LDA #$12
|
||||
STA RETURN+1
|
||||
LDA #$13
|
||||
STA RETURN+2
|
||||
LDA #3
|
||||
STA RETLEN
|
||||
GRET #$300
|
||||
_PRN "THE 4 BYTES PUT IN RETURN ARE NOW AT $300"
|
||||
DUMP #$300;#3
|
||||
_WAIT
|
||||
_PRN " ",8D8D
|
||||
*
|
||||
* THE MFILL MACRO - MEMORY FILL
|
||||
*
|
||||
** THE MFILL MACRO FILLS A BLOCK OF MEMORY
|
||||
** FROM A GIVEN STARTING ADDRESS AND A LENGTH
|
||||
** IN BYTES WITH THE SPECIFIED FILL VALUE.
|
||||
** NOTE THAT OVERFLOW ISSUES ARE TAKEN INTO
|
||||
** CONSIDERATION, AND THAT DETERMINES HOW THE
|
||||
** MEMORY LOCATIONS ARE READ AND FILLED (BACKWARDS
|
||||
** OR FORWARDS).
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** MFILL #$300;#$08;#$FF
|
||||
** _PRN "$300-$308 = "
|
||||
** DUMP #$300;#$08
|
||||
** _WAIT
|
||||
** _PRN " ",8D8D
|
||||
*
|
||||
_PRN "THE MFILL MACRO",8D
|
||||
_PRN "===============",8D8D
|
||||
MFILL #$300;#$08;#$FF
|
||||
_PRN "$300-$308 =",8D8D
|
||||
DUMP #$300;#$08
|
||||
_WAIT
|
||||
_PRN " ",8D8D
|
||||
*
|
||||
* THE MOVB MACRO - MOVE MEMORY BLOCKS
|
||||
*
|
||||
** THE MOVB MACRO, WHICH STANDS FOR MOVE
|
||||
** BLOCK, DOES EXACTLY WHAT IT SAYS: IT MOVES
|
||||
** A BLOCK OF MEMORY TO ANOTHER BLOCK OF
|
||||
** MEMORY, THOUGH THIS SHUOLD BE SEEN MORE AS
|
||||
** A COPY, SINCE THE ORIGINAL DATA IS STILL
|
||||
** IN PLACE AFTER CALLING THE MACRO. NOTE THAT
|
||||
** NO CHECKS FOR OVERLAP ARE MADE, SO ERROR
|
||||
** CONTROL IS IN THAT RESPECT IS LEFT UP TO
|
||||
** THE END PROGRAMMER.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** LDA #$AA
|
||||
** STA $300
|
||||
** LDA #$BB
|
||||
** STA $301
|
||||
** LDA #$CC
|
||||
** STA $302
|
||||
** MOVB #$300;#$310;#3
|
||||
** _PRN "$310-$312 NOW = $300-$302"
|
||||
** DUMP #$310;#3
|
||||
** _WAIT
|
||||
** _PRN " ",8D8D
|
||||
*
|
||||
_PRN "THE MOVB MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
LDA #$AA
|
||||
STA $300
|
||||
LDA #$BB
|
||||
STA $301
|
||||
LDA #$CC
|
||||
STA $302
|
||||
MOVB #$300;#$310;#3
|
||||
_PRN "$310-$312 NOW = $300-$302"
|
||||
DUMP #$310;#3
|
||||
_WAIT
|
||||
_PRN " ",8D8D
|
||||
*
|
||||
* THE MSWAP MACRO - SWAP MEMORY BLOCKS
|
||||
*
|
||||
** THE MSWAP MACRO SWAPS THE VALUES HELD IN TWO
|
||||
** BLOCKS OF MEMORY. NOTE THAT NO OVERFLOW CHECKING
|
||||
** IS DONE, SO THE END PROGRAMMER HAS TO BE CAREFUL
|
||||
** WHEN USING THE MACRO.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** LDA #$66
|
||||
** STA $300
|
||||
** LDA #$77
|
||||
** STA $301
|
||||
** LDA #$88
|
||||
** STA $302
|
||||
** MSWAP #$300;#$310;#4
|
||||
** DUMP #$300;#3
|
||||
** DUMP #$310;#3
|
||||
** _PRN " ",8D8D
|
||||
** _PRN "$300-$302 HAS BEEN SWAPPED WITH $310-$312",8D8D
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE MSWAP MACRO",8D
|
||||
_PRN "===============",8D8D
|
||||
LDA #$66
|
||||
STA $300
|
||||
LDA #$77
|
||||
STA $301
|
||||
LDA #$88
|
||||
STA $302
|
||||
MSWAP #$300;#$310;#4
|
||||
DUMP #$300;#3
|
||||
DUMP #$310;#3
|
||||
_PRN " ",8D8D
|
||||
_PRN "$300-$302 WAS SWAPPED WITH $310-312.",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE PEEK MACRO - PEEK MEMORY
|
||||
*
|
||||
** THE PEEK MACRO EMULATES THE PEEK INSTRUCTION
|
||||
** IN APPLESOFT, KINDA. MOSTLY, IT JUST LOADS
|
||||
** A VELUE FROM MEMORY INTO .A. HOWEVER, MORE
|
||||
** FUNCTIONALITY MAY BE ADDED TO THIS MACRO IN
|
||||
** THE FUTURE IN ORDER TO DIFFERENTIATE IT FROM
|
||||
** SIMPLY LDA ##.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** LDA #$EE
|
||||
** STA $300
|
||||
** PEEK #$300
|
||||
** STA RETURN
|
||||
** _PRN ".A NOW HOLDS:",8D8D
|
||||
** DUMP #RETURN;#1
|
||||
** _PRN " ",8D8D
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE PEEK MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
LDA #$EE
|
||||
STA $300
|
||||
PEEK #$300
|
||||
STA RETURN
|
||||
_PRN ".A NOW HOLDS:",8D8D
|
||||
DUMP #RETURN;#1
|
||||
_PRN " ",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE POKE MACRO - POKE MEMORY
|
||||
*
|
||||
** LIKE THE PEEK MACRO, THE POKE MACRO SIMPLY
|
||||
** BEHAVES LIKE THE APPLESOFT EQUIVALENT, PUTTING
|
||||
** THE FIRST PARAMETER VALUE INTO THE SECOND PARAMETER'S
|
||||
** ADDRESSS. LIKE WITH PEEK, MORE MAY BE ADDED TO THE
|
||||
** MACRO'S FUNCTIONALITY IN THE FUTURE.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** POKE #$99;#$300
|
||||
** _PRN "$300 CONTAINS:"
|
||||
** DUMP #$300;#1
|
||||
** _PRN " ",8D8D
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE POKE MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
POKE #$99;#$300
|
||||
_PRN "$300 CONTAINS:"
|
||||
DUMP #$300;#1
|
||||
_PRN " ",8D8D
|
||||
_WAIT
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* THE WEIRDOS: CLRHI,DELAY AND *
|
||||
* GBIT MACROS. *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** THESE MACROS CAN BE HIGHLY USEFUL,
|
||||
*** BUT SO FAR DO NOT FIT WELL WITH ANY
|
||||
*** OTHER GROUPING OF MACROS.
|
||||
*
|
||||
* THE CLRHI MACRO - CLEAR HIGH NIBBLE
|
||||
*
|
||||
** THE CLRHI MACRO CLEARS THE HIGH NIBBLE IN .A
|
||||
** BYTE TO %0000. THIS HAS VARIOUS USES THAT NEED
|
||||
** NOT BE GONE OVER HERE.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** LDA #$FF
|
||||
** CLRHI
|
||||
** STA $300
|
||||
** DUMP #$300;#1
|
||||
** _PRN "^^ THE HIGH NIBBLE WAS CLEARED"
|
||||
** _PRN " ",8D8D
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE CLRHI MACRO",8D
|
||||
_PRN "===============",8D8D
|
||||
LDA #$FF
|
||||
CLRHI
|
||||
STA $300
|
||||
DUMP #$300;#1
|
||||
_PRN "^^ THE HIGH NIBBLE WAS CLEARED"
|
||||
_PRN " ",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE DELAY MACRO - DELAY
|
||||
*
|
||||
** THE DELAY MACRO SIMPLY DELAYS RXECUTION
|
||||
** FOR A NUMBER OF MILLISECONDS. THIS ACCEPTS
|
||||
** A BYTE VALUE, SO IF YOU WANT A SINGLE SECOND
|
||||
** OF DELAY, YOU NEED TO RUN THE MACRO FOR TIMES
|
||||
** AS SUCH:
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** DELAY #250
|
||||
** DELAY #250
|
||||
** DELAY #250
|
||||
** DELAY #250
|
||||
** _PRN "DONE!",8D8D
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE DELAY MACRO",8D
|
||||
_PRN "===============",8D8D
|
||||
DELAY #250
|
||||
DELAY #250
|
||||
DELAY #250
|
||||
DELAY #250
|
||||
_PRN "DONE!",8D8D
|
||||
_WAIT
|
||||
*
|
||||
* THE GBIT MACRO - GET BIT VALUE
|
||||
*
|
||||
** THE GBIT MACRO RETURNS THE BIT VALUE
|
||||
** OF THE GIVEN POSITION IN THE PARAMETER.
|
||||
*
|
||||
** USAGE:
|
||||
*
|
||||
** GBIT #0;#%00100101
|
||||
** STA $300
|
||||
** DUMP #$300;#1
|
||||
** _WAIT
|
||||
*
|
||||
_PRN "THE GBIT MACRO",8D
|
||||
_PRN "==============",8D8D
|
||||
GBIT #0;%00100101
|
||||
STA $300
|
||||
DUMP #$300;#1
|
||||
_WAIT
|
||||
*
|
||||
JSR ]HOME
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* 8080 ALIAS MACROS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** THE 8080 ALIAS MACROS ARE APPROXIMATIONS
|
||||
*** OF SOME OF THE INSTRUCTIONS IN THE 8080
|
||||
*** INSTRUCTION SET, FOR USE BY THOSE WHO ARE
|
||||
*** USED TO PROGRAMMING IN 8080 ASSEMBLY. NOTE
|
||||
*** AGAIN THE WORD **APPROXIMATION**, AS I AM
|
||||
*** NOT AN 8080 PROGRAMMER.
|
||||
*
|
||||
*** ALSO NOTE THAT YOU CAN ONLY USE ONE SET OF
|
||||
*** ALIAS FILES AT A TIME; OTHERWISE, MACROS
|
||||
*** WITH THE SAME NAME IN EACH ALIAS FILE WILL
|
||||
*** CAUSE AN ASSEMBLY ERROR. THIS IS MOST NOTABLE
|
||||
*** WITH INSTRUCTIONS LIKE 'RET' OR 'CALL."
|
||||
*
|
||||
*** SINCE ALL OF THESE MACROS ARE FAIRLY SIMPLE,
|
||||
*** EXAMPLES ARE NOT GIVEN HERE. A FEW MACROS MAY
|
||||
*** NEED EXAMPLES IN THE FUTURE, BUT THESE MOSTLY
|
||||
*** WORK THE WAY YOU MIGHT EXPECT.
|
||||
*
|
||||
*
|
||||
* CALL - MIMICS JSR INSTRUCTION
|
||||
* RET - MIMICS RTS INSTRUCTION
|
||||
* JA - JMP IF .A > CMP RESULT
|
||||
* JAE - JMP IF .A => CMP RESULT
|
||||
* JB - JMP IF .A < CMP RESULT
|
||||
* JBE - JMP IF .A =< CMP RESULT
|
||||
* JC - JMP IF C = 1
|
||||
* JE - JMP IF BEQ
|
||||
* JG - JMP IF .A > CMP RESULT
|
||||
* JGE - JMP IF .A >= CMP RESULT
|
||||
* JL - JMP IF .A < CMP RESULT
|
||||
* JLE - JMP IF .A <= CMP RESULT
|
||||
* JNC - JMP IF C = 0
|
||||
* JZ - JMP IF Z = 0
|
||||
* JNZ - JMP IF Z = 1
|
||||
* JS - JMP IF SIGNED
|
||||
* JNS - JMP IF NOT SIGNED
|
||||
* JO - JMP IF V = 1
|
||||
* JNO - JMP IF V = 0
|
||||
* ANC - ADD NO CARRY
|
||||
* SNC - SUBTRACT NO CARRY
|
||||
* PUSHA - PUSH ALL REGISTERS
|
||||
* PULLA - PULL ALL REGISTERS
|
||||
* POPA - PULL ALL REGISTERS
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* Z80 ALIAS MACROS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*** THESE MACROS ARE APPROXIMATIONS OF
|
||||
*** SOME INSTRUCTIONS IN THE Z80 SET, AND
|
||||
*** ARE MEANT TO AID THE PROGRAMMER WHO IS
|
||||
*** USED TO A Z80 CPU. CURRENTLY, ALL OF THESE
|
||||
*** EXAMPLES ARE COMMENTED OUT DUE TO THE FACT
|
||||
*** THAT SOME OF THE MACRO NAMES CONFLICT WITH
|
||||
*** THE 8080 ALIAS SET. TO SEE THESE IN ACTION,
|
||||
*** YOU MUST FIRST COMMENT OUT THE 8080 EXAMPLES
|
||||
*** AND THEN COMMENT OUT THE 8080 ALIAS FILE
|
||||
*** INCLUDE AT THE END, WHILE ALSO UNCOMMENTING
|
||||
*** THE Z80 ALIAS FILE INCLUSION.
|
||||
*
|
||||
* CALL - JSR EQUIVALENT
|
||||
* CPL - INVERTS BITS IN .A
|
||||
* JP - JMP EQUIVALENT
|
||||
* LD - MOV VALUE FROM SRC TO DEST
|
||||
* POP - PULL FROM STACK
|
||||
* RET - RTS EQUIVALENT
|
||||
* SCF - C = 1
|
||||
*
|
||||
JMP REENTRY
|
||||
*
|
||||
@@ -41,9 +711,7 @@
|
||||
*
|
||||
** BOTTOM INCLUDES
|
||||
*
|
||||
PUT MIN.LIB.REQUIRED
|
||||
*
|
||||
** INDIVIDUAL SUBROUTINE INCLUDES
|
||||
*
|
||||
* MEMORY LIBRARY SUBROUTINES
|
||||
PUT MIN.LIB.REQUIRED.ASM
|
||||
USE MIN.MAC.ALIAS.8080.ASM
|
||||
*USE MIN.MAC.ALIAS.Z80.ASM
|
||||
*
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 29-NOV-2019 *
|
||||
* DATE: 11-MAR-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
* *
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 28-NOV-2019 *
|
||||
* DATE: 11-MAR-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* LICENSE: APACHE 2.0 *
|
||||
* OS: DOS 3.3 *
|
||||
@@ -19,9 +19,11 @@
|
||||
* *
|
||||
* __DUMP : DUMP MEMORY *
|
||||
* __ERRH : HANDLE ERRORS *
|
||||
* __GETRET : GET RETURN VAL *
|
||||
* __P : PRINT *
|
||||
* DELAYMS : DELAY MLSECS *
|
||||
* MEMFILL : FILL MEM BLOCK *
|
||||
* MEMMOVE : MOVE MEM BLOCK *
|
||||
* MEMSWAP : SWAP MEM BLOCKS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** LIBRARY-SPECIFIC VARIABLES
|
||||
@@ -44,7 +46,6 @@
|
||||
]KYBD EQU $C000 ; KEYBOARD INPUT
|
||||
]STROBE EQU $C010 ; KEYBOARD STROBE
|
||||
*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* __DUMP: (NATHAN RIGGS) *
|
||||
* *
|
||||
@@ -62,62 +63,62 @@
|
||||
* OF BYTES. *
|
||||
* *
|
||||
* DESTROYS: NZCIDV *
|
||||
* ^^^ *
|
||||
* ^^^ ^ *
|
||||
* *
|
||||
* CYCLES: 787+ *
|
||||
* SIZE: 111 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
__DUMP
|
||||
STY ]LENGTH ; ++<4C3B> LENGTH PASSED IN .Y
|
||||
STA ADDR1 ; ++<3C2B> ADDRESS LOBYTE IN .A
|
||||
STX ADDR1+1 ; ++<3C2B> ADDRESS HIBYTE IN .X
|
||||
LDA #$8D ; ++<2C2B> LOAD CARRIAGE RETURN
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND TO COUT
|
||||
LDA ADDR1+1 ; ++<2C2B> GET ADDRESS HIBYTE
|
||||
CLRHI ; ++<6C3B[16C]> CLEAR HIBITS
|
||||
TAX ; ++<2C1B> TRANSFER TO .X
|
||||
LDA ]HEXTAB,X ; ++<5C3B> LOAD HEX CHAR FROM TABLE AT .X
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND TO COUT
|
||||
LDA ADDR1+1 ; ++<2C2B> LOAD ADDRESS HIBYTE AGAIN
|
||||
AND #$0F ; ++<2C2B> CLEAR LOBITS
|
||||
TAX ; ++<2C1B> TRANSER TO .X
|
||||
LDA ]HEXTAB,X ; ++<5C3B> LOAD HEX CHAR FROM TABLE AT .X
|
||||
JSR ]COUT ; ++<6C3B[83C]> SENT TO COUT
|
||||
LDA ADDR1 ; ++<4C3B> LOAD LOBYTE
|
||||
CLRHI ; ++<[16C10B]> CLEAR HIBITS
|
||||
TAX ; ++<2C1B> TRANSFER TO .X
|
||||
LDA ]HEXTAB,X ; ++<5C3B> LOAD HEXCHAR AT .X
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND TO COUT
|
||||
LDA ADDR1 ; ++<3C2B> LOAD LOBYTE AGAIN
|
||||
AND #$0F ; ++<2C2B> CLEAR LOBITS
|
||||
TAX ; ++<2C1B> TRANSFER T .X
|
||||
LDA ]HEXTAB,X ; ++<[16C]> LOAD HEXCHAR AT .X
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND TO COUT
|
||||
LDA #":" ; ++<2C2B>
|
||||
JSR ]COUT ; ++<6C3B[83C]>SEND COLON TO COUT
|
||||
LDA "#" ; ++<2C2B>
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND SPACE TO COUT
|
||||
LDY #0 ; ++<2C2B> RESET COUNTER
|
||||
STY ]LENGTH ; {4C3B} LENGTH PASSED IN .Y
|
||||
STA ADDR1 ; {3C2B} ADDRESS LOBYTE IN .A
|
||||
STX ADDR1+1 ; {3C2B} ADDRESS HIBYTE IN .X
|
||||
LDA #$8D ; {2C2B} LOAD CARRIAGE RETURN {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND TO COUT {NZCV}
|
||||
LDA ADDR1+1 ; {2C2B} GET ADDRESS HIBYTE {NZ}
|
||||
CLRHI ; {22C13B} CLEAR HIBITS {ZCV,N=0}
|
||||
TAX ; {2C1B} TRANSFER TO .X {NZ}
|
||||
LDA ]HEXTAB,X ; {5C3B} LOAD HEX CHAR FROM TABLE AT .X {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND TO COUT {NZCV}
|
||||
LDA ADDR1+1 ; {2C2B} LOAD ADDRESS HIBYTE AGAIN {NZ}
|
||||
AND #$0F ; {2C2B} CLEAR LOBITS {NZ}
|
||||
TAX ; {2C1B} TRANSER TO .X {NZ}
|
||||
LDA ]HEXTAB,X ; {5C3B} LOAD CHAR FROM TABLE AT .X {NZ}
|
||||
JSR ]COUT ; {89C3B} SENT TO COUT {NZCV}
|
||||
LDA ADDR1 ; {4C3B} LOAD LOBYTE {NZ}
|
||||
CLRHI ; {22C13B} CLEAR HIBITS {ZCV,N=0}
|
||||
TAX ; {2C1B} TRANSFER TO .X {NZ}
|
||||
LDA ]HEXTAB,X ; {5C3B} LOAD HEXCHAR AT .X {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND TO COUT {NZCV}
|
||||
LDA ADDR1 ; {3C2B} LOAD LOBYTE AGAIN {NZ}
|
||||
AND #$0F ; {2C2B} CLEAR LOBITS {NZ}
|
||||
TAX ; {2C1B} TRANSFER T .X {NZ}
|
||||
LDA ]HEXTAB,X ; {5C3B} LOAD HEXCHAR AT .X {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND TO COUT {NZCV}
|
||||
LDA #":" ; {2C2B} {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND COLON TO COUT {NZCV}
|
||||
LDA "#" ; {2C2B} {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND SPACE TO COUT {NZCV}
|
||||
LDY #0 ; {2C2B} RESET COUNTER {NZ}
|
||||
:LP
|
||||
LDA (ADDR1),Y ; ++<6C2B> LOAD BYTE FROM ADDRESS
|
||||
CLRHI ; ++<[16C10B] AT COUNTER OFFSET; CLEAR HIBITS
|
||||
STA ]LEFT ; ++<4C3B> SAVE LEFT INDEX
|
||||
LDA (ADDR1),Y ; ++<6C2B> RELOAD
|
||||
AND #$0F ; ++<2C2B> CLEAR LOBITS
|
||||
STA ]RIGHT ; ++<4C3B> SAVE RIGHT INDEX
|
||||
LDX ]LEFT ; ++<4C3B> LOAD LEFT INDEX
|
||||
LDA ]HEXTAB,X ; ++<5C3B> GET NIBBLE CHAR
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND TO COUT
|
||||
LDX ]RIGHT ; ++<4C3B> LOAD RIGHT INDEX
|
||||
LDA ]HEXTAB,X ; ++<5C3B> GET NIBBLE CHAR
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND TO COUT
|
||||
LDA #160 ; ++<4C3B> LOAD SPACE
|
||||
JSR ]COUT ; ++<6C3B[83C]> SEND TO COUT
|
||||
INY ; ++<2C1B> INCREASE COUNTER
|
||||
CPY ]LENGTH ; ++<4C3B> IF COUNTER < LENGTH
|
||||
BNE :LP ; ++<4C2B> CONTINUE LOOP
|
||||
RTS ; ++<6C1B> ELSE, EXIT
|
||||
LDA (ADDR1),Y ; {6C2B} LOAD BYTE FROM ADDRESS {NZ}
|
||||
CLRHI ; {22C13B} AT COUNTER OFFSET; CLEAR HIBITS
|
||||
STA ]LEFT ; {4C3B} SAVE LEFT INDEX
|
||||
LDA (ADDR1),Y ; {6C2B} RELOAD {NZ}
|
||||
AND #$0F ; {2C2B} CLEAR LOBITS {NZ}
|
||||
STA ]RIGHT ; {4C3B} SAVE RIGHT INDEX
|
||||
LDX ]LEFT ; {4C3B} LOAD LEFT INDEX {NZ}
|
||||
LDA ]HEXTAB,X ; {5C3B} GET NIBBLE CHAR {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND TO COUT {NCZV}
|
||||
LDX ]RIGHT ; {4C3B} LOAD RIGHT INDEX {NZ}
|
||||
LDA ]HEXTAB,X ; {5C3B} GET NIBBLE CHAR {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND TO COUT {NZCV}
|
||||
LDA #160 ; {4C3B} LOAD SPACE {NZ}
|
||||
JSR ]COUT ; {89C3B} SEND TO COUT {NZCV}
|
||||
INY ; {2C1B} INCREASE COUNTER {NZ}
|
||||
CPY ]LENGTH ; {4C3B} IF COUNTER < LENGTH {NZC}
|
||||
BNE :LP ; {4C2B} CONTINUE LOOP
|
||||
RTS ; {6C1B} ELSE, EXIT
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* __ERRH (NATHAN RIGGS) *
|
||||
@@ -134,28 +135,28 @@ __DUMP
|
||||
* ROUTINE. *
|
||||
* *
|
||||
* DESTROYS: NZCIDV *
|
||||
* ^^^ *
|
||||
* ^^ *
|
||||
* *
|
||||
* CYCLES: 53 *
|
||||
* SIZE: 32 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
__ERRH
|
||||
LDA #1 ; ++<2C2B> TRICK DOS INTO THINKING
|
||||
STA $AAB6 ; ++<4C3B> IT'S IN APPLESOFT MODE
|
||||
STA $75+1 ; ++<3C2B> APPLESOFT LINE NUMBER POINTER
|
||||
STA $33 ; ++<3C2B> APPLESOFT PROMPT CHARACTER
|
||||
STA ADDR1 ; ++<3C2B> ADDRESS LOBYTE IN .A
|
||||
STX ADDR1+1 ; ++<3C2B> ADDRESS HIBYTE IN .X
|
||||
LDA #$FF ; ++<2C2B> TURN ON ERROR HANDLING
|
||||
STA $D8 ; ++<3C3B> BYTE HERE
|
||||
LDY #0 ; ++<2C2B> CLEAR OFFSET
|
||||
LDA (ADDR1),Y ; ++<6C2B> LOAD ADDRESS LOBYTE
|
||||
STA $9D5A ; ++<4C3B> SET AS ERROR HANDLING LO
|
||||
INY ; ++<2C1B> INCREASE OFFSET
|
||||
LDA (ADDR1),Y ; ++<6C2B> LOAD ADDRESS HIBYTE
|
||||
STA $9D5B ; ++<4C3B> SET AS ERROR HANDLING HI
|
||||
RTS ; ++<6C1B> EXIT SUBROUTINE
|
||||
LDA #1 ; {2C2B} TRICK DOS INTO THINKING {NZ}
|
||||
STA $AAB6 ; {4C3B} IT'S IN APPLESOFT MODE
|
||||
STA $75+1 ; {3C2B} APPLESOFT LINE NUMBER POINTER
|
||||
STA $33 ; {3C2B} APPLESOFT PROMPT CHARACTER
|
||||
STA ADDR1 ; {3C2B} ADDRESS LOBYTE IN .A
|
||||
STX ADDR1+1 ; {3C2B} ADDRESS HIBYTE IN .X
|
||||
LDA #$FF ; {2C2B} TURN ON ERROR HANDLING {NZ}
|
||||
STA $D8 ; {3C3B} BYTE HERE
|
||||
LDY #0 ; {2C2B} CLEAR OFFSET {NZ}
|
||||
LDA (ADDR1),Y ; {6C2B} LOAD ADDRESS LOBYTE {NZ}
|
||||
STA $9D5A ; {4C3B} SET AS ERROR HANDLING LO
|
||||
INY ; {2C1B} INCREASE OFFSET {NZ}
|
||||
LDA (ADDR1),Y ; {6C2B} LOAD ADDRESS HIBYTE {NZ}
|
||||
STA $9D5B ; {4C3B} SET AS ERROR HANDLING HI
|
||||
RTS ; {6C1B} EXIT SUBROUTINE
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* __P: (NATHAN RIGGS) *
|
||||
@@ -177,26 +178,26 @@ __ERRH
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
__P
|
||||
PLA ; ++<4C1B> PULL RETURN LOBYTE
|
||||
STA ADDR1 ; ++<3C2B> STORE TO ZERO PAGE
|
||||
PLA ; ++<4C1B> PULL RETURN HIBYTE
|
||||
STA ADDR1+1 ; ++<3C2B> STORE TO ZERO PAGE --3C,2B
|
||||
LDY #1 ; ++<2C2B> SET OFFSET TO PLUS ONE
|
||||
:LP LDA (ADDR1),Y ; ++<6C2B> LOAD BYTE AT OFFSET .Y
|
||||
BEQ :DONE ; ++<4C2B> IF BYTE = 0, QUIT
|
||||
JSR ]COUT ; ++<6C3B[83C]> OTHERWISE, PRINT BYTE
|
||||
INY ; ++<2C1B> INCREASE OFFSET
|
||||
BNE :LP ; ++<4C2B> IF .Y <> 0, CONTINUE LOOP
|
||||
:DONE CLC ; ++<2C1B> CLEAR CARRY FLAG
|
||||
TYA ; ++<2C1B> TRANSFER OFFSET TO .A
|
||||
ADC ADDR1 ; ++<3C2B> ADD OFFSET TO RETURN ADDRESS
|
||||
STA ADDR1 ; ++<4C2B> STORE TO RETURN ADDRESS LOBYTE
|
||||
LDA ADDR1+1 ; ++<4C2B> DO THE SAME WITH THE HIBYTE
|
||||
ADC #0 ; ++<3C2B> CARRY NOT RESET, SO INC HIBYTE
|
||||
PHA ; ++<3C1B> IF NEEDED; THEN, PUSH HIBYTE
|
||||
LDA ADDR1 ; ++<4C2B> LOAD LOBYTE
|
||||
PHA ; ++<3C1B> PUSH LOBYTE
|
||||
RTS ; ++<6C1B> EXIT
|
||||
PLA ; {4C1B} PULL RETURN LOBYTE {NZ}
|
||||
STA ADDR1 ; {3C2B} STORE TO ZERO PAGE
|
||||
PLA ; {4C1B} PULL RETURN HIBYTE {NZ}
|
||||
STA ADDR1+1 ; {3C2B} STORE TO ZERO PAGE
|
||||
LDY #1 ; {2C2B} SET OFFSET TO PLUS ONE
|
||||
:LP LDA (ADDR1),Y ; {6C2B} LOAD BYTE AT OFFSET .Y
|
||||
BEQ :DONE ; {4C2B} IF BYTE = 0, QUIT
|
||||
JSR ]COUT ; {89C3B} OTHERWISE, PRINT BYTE {NZCV}
|
||||
INY ; {2C1B} INCREASE OFFSET {NZ}
|
||||
BNE :LP ; {4C2B} IF .Y <> 0, CONTINUE LOOP
|
||||
:DONE CLC ; {2C1B} CLEAR CARRY FLAG {C=0}
|
||||
TYA ; {2C1B} TRANSFER OFFSET TO .A {NZ}
|
||||
ADC ADDR1 ; {3C2B} ADD OFFSET TO RETURN ADDR {NZCV}
|
||||
STA ADDR1 ; {4C2B} STORE TO RETURN ADDRESS LOBYTE
|
||||
LDA ADDR1+1 ; {4C2B} DO THE SAME WITH THE HIBYTE {NZ}
|
||||
ADC #0 ; {3C2B} CARRY NOT RESET, SO INC HIBYTE {NZCV}
|
||||
PHA ; {3C1B} IF NEEDED; THEN, PUSH HIBYTE
|
||||
LDA ADDR1 ; {4C2B} LOAD LOBYTE {NZ}
|
||||
PHA ; {3C1B} PUSH LOBYTE
|
||||
RTS ; {6C1B} EXIT
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* DELAYMS (LEVENTHAL/SEVILLE) *
|
||||
@@ -207,17 +208,17 @@ __P
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
* .Y = NUMBER OF MILLISECS *
|
||||
* .Y = NUMBER OF MILLISECS *
|
||||
* *
|
||||
* OUTPUT: *
|
||||
* *
|
||||
* DELAYS FOR X NUMBER OF *
|
||||
* MILLISECONDS BY LOOPING *
|
||||
* THROUGH A PRECISE NUMBER *
|
||||
* OF CYCLES. *
|
||||
* DELAYS FOR X NUMBER OF *
|
||||
* MILLISECONDS BY LOOPING *
|
||||
* THROUGH A PRECISE NUMBER *
|
||||
* OF CYCLES. *
|
||||
* *
|
||||
* DESTROYS: AXYNVBDIZCMS *
|
||||
* ^^^^ ^^^ *
|
||||
* DESTROYS: NZCDIV *
|
||||
* ^^^ ^ *
|
||||
* *
|
||||
* CYCLES: 39+ *
|
||||
* SIZE: 29 BYTES *
|
||||
@@ -229,31 +230,31 @@ DELAYMS
|
||||
; SPECIFIC TO 1.23 MHZ
|
||||
; SPEED OF APPLE II
|
||||
:DELAY
|
||||
CPY #0 ; ++<2C2B> IF Y = 0, THEN EXIT
|
||||
BEQ :EXIT ; ++<2C|3C2B>
|
||||
NOP ; ++<2C1B> (MAKE OVERHEAD=25C)
|
||||
CPY #0 ; {2C2B} IF Y = 0, THEN EXIT {NZC}
|
||||
BEQ :EXIT ; {2C|3C2B}
|
||||
NOP ; {2C1B} (MAKE OVERHEAD=25C)
|
||||
*
|
||||
** IF DELAY IS 1MS THEN GOTO LAST1
|
||||
** THIS LOGIC IS DESIGNED TO BE
|
||||
** 5 CYCLES THROUGH EITHER ATH
|
||||
*
|
||||
CPY #1 ; ++<2C2B> USE 2 CYCLES
|
||||
BNE :DELAYA ; ++<2C|3C2B> 3C IF TAKEN, ELSE 2C
|
||||
JMP :LAST1 ; ++<3C3B>
|
||||
CPY #1 ; {2C2B} USE 2 CYCLES {NZC}
|
||||
BNE :DELAYA ; {2C|3C2B} 3C IF TAKEN, ELSE 2C
|
||||
JMP :LAST1 ; {3C3B}
|
||||
*
|
||||
** DELAY 1 MILLISENCOND TIMES (Y-1)
|
||||
*
|
||||
:DELAYA
|
||||
DEY ; ++<2C1B> (PREDEC Y)
|
||||
DEY ; {2C1B} (PREDEC Y) {NZ}
|
||||
:DELAY0
|
||||
LDX #]MSCNT ; ++<2C2B>
|
||||
LDX #]MSCNT ; {2C2B} {NZ}
|
||||
:DELAY1
|
||||
DEX ; ++<2C1B>
|
||||
BNE :DELAY1 ; ++<3C2B>
|
||||
NOP ; ++<2C1B>
|
||||
NOP ; ++<2C1B>
|
||||
DEY ; ++<2C1B>
|
||||
BNE :DELAY0 ; ++<3C2B>
|
||||
DEX ; {2C1B} {NZ}
|
||||
BNE :DELAY1 ; {3C2B}
|
||||
NOP ; {2C1B}
|
||||
NOP ; {2C1B}
|
||||
DEY ; {2C1B} {NZ}
|
||||
BNE :DELAY0 ; {3C2B}
|
||||
:LAST1
|
||||
*
|
||||
** DELAY THE LAST TIME 25 CYCLES
|
||||
@@ -261,21 +262,21 @@ DELAYMS
|
||||
** AND ROUTINE OVERHEAD INTO
|
||||
** ACCOUNT.
|
||||
*
|
||||
LDX #]MSCNT-3 ; ++<2C2B>
|
||||
LDX #]MSCNT-3 ; {2C2B} {NZ}
|
||||
:DELAY2
|
||||
DEX ; ++<2C1B>
|
||||
BNE :DELAY2 ; ++<3C2B>
|
||||
DEX ; {2C1B} {NZ}
|
||||
BNE :DELAY2 ; {3C2B}
|
||||
:EXIT
|
||||
RTS ; ++<6C1B>
|
||||
RTS ; {6C1B}
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* MEMFILL (LEVENTHAL/SAVILLE) *
|
||||
* *
|
||||
* ADAPTED FROM LEVANTHAL AND *
|
||||
* SAVILLE'S /6502 ASSEMBLY *
|
||||
* LANGUAGE ROUTINES/. FILLS A *
|
||||
* SPECIFIED RANGE OF MEMORY *
|
||||
* WITH A FILL VALUE. *
|
||||
* ADAPTED FROM LEVANTHAL AND *
|
||||
* SAVILLE'S /6502 ASSEMBLY *
|
||||
* LANGUAGE ROUTINES/. FILLS A *
|
||||
* SPECIFIED RANGE OF MEMORY *
|
||||
* WITH A FILL VALUE. *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
@@ -298,40 +299,41 @@ MEMFILL
|
||||
*
|
||||
** FILL WHOLE PAGES FIRST
|
||||
*
|
||||
LDA ]FILL ; ++<3C2B> GET VAL FOR FILL
|
||||
LDX ]SIZE+1 ; ++<3C2B> X=# OF PAGES TO DO
|
||||
BEQ :PARTPG ; ++<3C2B> BRANCH IF HIGHBYTE OF SZ = 0
|
||||
LDY #0 ; ++<2C2B> RESET INDEX
|
||||
LDA ]FILL ; {3C2B} GET VAL FOR FILL {NZ}
|
||||
LDX ]SIZE+1 ; {3C2B} X=# OF PAGES TO DO {NZ}
|
||||
BEQ :PARTPG ; {3C2B} BRANCH IF HIGHBYTE OF SZ = 0
|
||||
LDY #0 ; {2C2B} RESET INDEX {NZ}
|
||||
:FULLPG
|
||||
STA (]ADDR),Y ; ++<6C2B> FILL CURRENT BYTE
|
||||
INY ; ++<2C1B> INCREMENT INDEX
|
||||
BNE :FULLPG ; ++<3C2B> BRANCH IF NOT DONE W/ PAGE
|
||||
INC ]ADDR+1 ; ++<5C2B> ADVANCE TO NEXT PAGE
|
||||
DEX ; ++<2C1B> DECREMENT COUNTER
|
||||
BNE :FULLPG ; ++<3C2B> BRANCH IF NOT DONE W/ PAGES
|
||||
STA (]ADDR),Y ; {6C2B} FILL CURRENT BYTE
|
||||
INY ; {2C1B} INCREMENT INDEX {NZ}
|
||||
BNE :FULLPG ; {3C2B} BRANCH IF NOT DONE W/ PAGE
|
||||
INC ]ADDR+1 ; {5C2B} ADVANCE TO NEXT PAGE {NZ}
|
||||
DEX ; {2C1B} DECREMENT COUNTER {NZ}
|
||||
BNE :FULLPG ; {3C2B} BRANCH IF NOT DONE W/ PAGES
|
||||
*
|
||||
** DO THE REMAINING PARTIAL PAGE
|
||||
** REGISTER A STILL CONTAINS VALUE
|
||||
*
|
||||
:PARTPG
|
||||
LDX ]SIZE ; ++<3C2B> GET # OF BYTES IN LAST PAGE
|
||||
BEQ :EXIT ; ++<3C2B> BRANCH IF LOW BYTE = 0
|
||||
LDY #0 ; ++<2C2B> RESET INDEX
|
||||
LDX ]SIZE ; {3C2B} GET # OF BYTES IN LAST PAGE {NZ}
|
||||
BEQ :EXIT ; {3C2B} BRANCH IF LOW BYTE = 0
|
||||
LDY #0 ; {2C2B} RESET INDEX {NZ}
|
||||
:PARTLP
|
||||
STA (]ADDR),Y ; ++<6C2B> STORE VAL
|
||||
INY ; ++<2C1B> INCREMENT INDEX
|
||||
DEX ; ++<2C1B> DECREMENT COUNTER
|
||||
BNE :PARTLP ; ++<3C2B> BRANCH IF NOT DONE
|
||||
STA (]ADDR),Y ; {6C2B} STORE VAL
|
||||
INY ; {2C1B} INCREMENT INDEX {NZ}
|
||||
DEX ; {2C1B} DECREMENT COUNTER {NZ}
|
||||
BNE :PARTLP ; {3C2B} BRANCH IF NOT DONE
|
||||
:EXIT
|
||||
RTS ; ++<6C1B>
|
||||
RTS ; {6C1B}
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* MEMMOVE (LEVENTHAL/SEVILLE) *
|
||||
* *
|
||||
* ADAPTED FROM LEVANTHAL AND *
|
||||
* SEVILLE'S /6502 ASSEMBLY *
|
||||
* LANGUAGE ROUTINES/. COPIES *
|
||||
* SERIES OF BYTES FROM SRCLOC *
|
||||
* TO DESTLOC. *
|
||||
* ADAPTED FROM LEVANTHAL AND *
|
||||
* SEVILLE'S /6502 ASSEMBLY *
|
||||
* LANGUAGE ROUTINES/. COPIES *
|
||||
* SERIES OF BYTES FROM SRCLOC *
|
||||
* TO DESTLOC. *
|
||||
* *
|
||||
* INPUT: *
|
||||
* *
|
||||
@@ -340,7 +342,7 @@ MEMFILL
|
||||
* WPAR2 = DESTINATION ADDRESS *
|
||||
* *
|
||||
* DESTROY: NZCIDV *
|
||||
* *
|
||||
* ^^^ ^ *
|
||||
* *
|
||||
* CYCLES: 207+ *
|
||||
* BYTES: 117 *
|
||||
@@ -361,62 +363,62 @@ MEMMOVE
|
||||
** 64K) IS LESS THAN NUMBER
|
||||
** OF BYTES TO MOVE.
|
||||
*
|
||||
LDA ]ADDR2 ; ++<3C2B> CALC DEST-SRC
|
||||
SEC ; ++<2C1B> SET CARRY
|
||||
SBC ]ADDR1 ; ++<3C2B> SUBTRACT SOURCE ADDRESS
|
||||
TAX ; ++<2C1B> HOLD VAL IN .X
|
||||
LDA ]ADDR2+1 ; ++<3C2B>
|
||||
SBC ]ADDR1+1 ; ++<3C2B> MOD 64K AUTOMATIC
|
||||
LDA ]ADDR2 ; {3C2B} CALC DEST-SRC {NZ}
|
||||
SEC ; {2C1B} SET CARRY {C=1}
|
||||
SBC ]ADDR1 ; {3C2B} SUBTRACT SOURCE ADDRESS {NZCV}
|
||||
TAX ; {2C1B} HOLD VAL IN .X {NZ}
|
||||
LDA ]ADDR2+1 ; {3C2B} {NZ}
|
||||
SBC ]ADDR1+1 ; {3C2B} MOD 64K AUTOMATIC {NZCV}
|
||||
; -- DISCARD CARRY
|
||||
TAY ; ++<2C1B> HOLD HIBYTE IN .Y
|
||||
TXA ; ++<2C1B> CMP LOBYTE WITH # TO MOVE
|
||||
CMP ]SIZE ; ++<3C2B>
|
||||
TYA ; ++<2C1B>
|
||||
SBC ]SIZE+1 ; ++<3C2B> SUBTRACT SIZE+1 FROM HIBYTE
|
||||
BCS :DOLEFT ; ++<3C2B> BRANCH IF NO OVERLAP
|
||||
TAY ; {2C1B} HOLD HIBYTE IN .Y {NZ}
|
||||
TXA ; {2C1B} CMP LOBYTE WITH # TO MOVE {NZ}
|
||||
CMP ]SIZE ; {3C2B} {NZC}
|
||||
TYA ; {2C1B} {NZ}
|
||||
SBC ]SIZE+1 ; {3C2B} SUBTRACT SIZE+1 FROM HIBYTE {NZCV}
|
||||
BCS :DOLEFT ; {3C2B} BRANCH IF NO OVERLAP
|
||||
*
|
||||
** DEST AREA IS ABOVE SRC AREA
|
||||
** BUT OVERLAPS IT.
|
||||
** MOVE FROM HIGHEST ADDR TO
|
||||
** AVOID DESTROYING DATA
|
||||
*
|
||||
JSR :MVERHT ; ++<3C6B>
|
||||
JMP :MREXIT ; ++<3C3B>
|
||||
JSR :MVERHT ; {3C6B}
|
||||
JMP :MREXIT ; {3C3B}
|
||||
*
|
||||
** NO PROB DOING ORDINARY MOVE
|
||||
** STARTING AT LOWEST ADDR
|
||||
*
|
||||
:DOLEFT
|
||||
JSR :MVELEFT ; ++<6C3B>
|
||||
JSR :MVELEFT ; {6C3B}
|
||||
:EXIT
|
||||
JMP :MREXIT ; ++<3C3B>
|
||||
JMP :MREXIT ; {3C3B}
|
||||
:MVELEFT
|
||||
LDY #0 ; ++<2C2B> ZERO INDEX
|
||||
LDX ]SIZE+1 ; ++<3C2B> X=# OF FULL PP TO MOVE
|
||||
BEQ :MLPART ; ++<3C2B> IF X=0, DO PARTIAL PAGE
|
||||
LDY #0 ; {2C2B} ZERO INDEX {NZ}
|
||||
LDX ]SIZE+1 ; {3C2B} X=# OF FULL PP TO MOVE {NZ}
|
||||
BEQ :MLPART ; {3C2B} IF X=0, DO PARTIAL PAGE
|
||||
:MLPAGE
|
||||
LDA (]ADDR1),Y ; ++<6C2B> LOAD BYTE FROM SOURCE
|
||||
STA (]ADDR2),Y ; ++<6C2B> MOVE BYTE TO DESTINATION
|
||||
INY ; ++<2C1B> NEXT BYTE
|
||||
BNE :MLPAGE ; ++<3C2B> CONT UNTIL 256B MOVED
|
||||
INC ]ADDR1+1 ; ++<5C2B> ADV TO NEXT SRC PAGE
|
||||
INC ]ADDR2+1 ; ++<5C2B> ADV NEXT DEST PAGE
|
||||
DEX ; ++<2C1B> DEC PAGE COUNT
|
||||
BNE :MLPAGE ; ++<3C2B> CONT UNTIL ALL FULL
|
||||
LDA (]ADDR1),Y ; {6C2B} LOAD BYTE FROM SOURCE {NZ}
|
||||
STA (]ADDR2),Y ; {6C2B} MOVE BYTE TO DESTINATION
|
||||
INY ; {2C1B} NEXT BYTE {NZ}
|
||||
BNE :MLPAGE ; {3C2B} CONT UNTIL 256B MOVED
|
||||
INC ]ADDR1+1 ; {5C2B} ADV TO NEXT SRC PAGE {NZ}
|
||||
INC ]ADDR2+1 ; {5C2B} ADV NEXT DEST PAGE {NZ}
|
||||
DEX ; {2C1B} DEC PAGE COUNT {NZ}
|
||||
BNE :MLPAGE ; {3C2B} CONT UNTIL ALL FULL
|
||||
; PAGES ARE MOVED
|
||||
:MLPART
|
||||
LDX ]SIZE ; ++<3C2B> GET LENGTH OF LAST PAGE
|
||||
BEQ :MLEXIT ; ++<3C2B> BR IF LENGTH OF LAST
|
||||
LDX ]SIZE ; {3C2B} GET LENGTH OF LAST PAGE {NZ}
|
||||
BEQ :MLEXIT ; {3C2B} BR IF LENGTH OF LAST
|
||||
; PAGE = 0
|
||||
; REG Y IS 0
|
||||
:MLLAST
|
||||
LDA (]ADDR1),Y ; ++<6C2B> LOAD BYTE FROM SOURCE
|
||||
STA (]ADDR2),Y ; ++<6C2B> MOVE BYTE TO DESTINATION
|
||||
INY ; ++<2C1B> NEXT BYTE
|
||||
DEX ; ++<2C1B> DEC COUNTER
|
||||
BNE :MLLAST ; ++<3C2B> CONT UNTIL LAST P DONE
|
||||
LDA (]ADDR1),Y ; {6C2B} LOAD BYTE FROM SOURCE {NZ}
|
||||
STA (]ADDR2),Y ; {6C2B} MOVE BYTE TO DESTINATION
|
||||
INY ; {2C1B} NEXT BYTE {NZ}
|
||||
DEX ; {2C1B} DEC COUNTER {NZ}
|
||||
BNE :MLLAST ; {3C2B} CONT UNTIL LAST P DONE
|
||||
:MLEXIT
|
||||
JMP :MREXIT ; ++<3C3B>
|
||||
JMP :MREXIT ; {3C3B}
|
||||
*
|
||||
********************************
|
||||
*
|
||||
@@ -424,41 +426,41 @@ MEMMOVE
|
||||
*
|
||||
** -- MOVE THE PARTIAL PAGE FIRST
|
||||
*
|
||||
LDA ]SIZE+1 ; ++<3C2B> GET SIZE HIBYTE
|
||||
CLC ; ++<2C1B> CLEAR CARRY
|
||||
ADC ]ADDR1+1 ; ++<3C2B> ADD SOURCE ADDRESS HIBYTE
|
||||
STA ]ADDR1+1 ; ++<3C2B> POINT TO LAST PAGE OF SRC
|
||||
LDA ]SIZE+1 ; ++<3C2B> GET SIZE HIBYTE
|
||||
CLC ; ++<2C1B> CLEAR CARRY
|
||||
ADC ]ADDR2+1 ; ++<3C2B> ADD DESTINATION HIBYTE
|
||||
STA ]ADDR2+1 ; ++<3C2B> POINT TO LAST P OF DEST
|
||||
LDA ]SIZE+1 ; {3C2B} GET SIZE HIBYTE {NZ}
|
||||
CLC ; {2C1B} CLEAR CARRY {C=0}
|
||||
ADC ]ADDR1+1 ; {3C2B} ADD SOURCE ADDRESS HIBYTE {NZCV}
|
||||
STA ]ADDR1+1 ; {3C2B} POINT TO LAST PAGE OF SRC
|
||||
LDA ]SIZE+1 ; {3C2B} GET SIZE HIBYTE {NZ}
|
||||
CLC ; {2C1B} CLEAR CARRY {C=0}
|
||||
ADC ]ADDR2+1 ; {3C2B} ADD DESTINATION HIBYTE {NZCV}
|
||||
STA ]ADDR2+1 ; {3C2B} POINT TO LAST P OF DEST
|
||||
*
|
||||
** MOVE THE LAST PARTIAL PAGE FIRST
|
||||
*
|
||||
LDY ]SIZE ; ++<3C2B> GET LENGTH OF LAST PAGE
|
||||
BEQ :MRPAGE ; ++<3C2B> IF Y=0 DO THE FULL PAGES
|
||||
LDY ]SIZE ; {3C2B} GET LENGTH OF LAST PAGE {NZ}
|
||||
BEQ :MRPAGE ; {3C2B} IF Y=0 DO THE FULL PAGES
|
||||
:MR0
|
||||
DEY ; ++<2C1B> BACK UP Y TO NEXT BYTE
|
||||
LDA (]ADDR1),Y ; ++<6C2B> LOAD CURRENT SOURCE BYTE
|
||||
STA (]ADDR2),Y ; ++<6C2B> STORE IN CURRENT DESTINATION
|
||||
CPY #0 ; ++<2C2B> BRANCH IF NOT DONE
|
||||
BNE :MR0 ; ++<3C2B> WITH THE LAST PAGE
|
||||
DEY ; {2C1B} BACK UP Y TO NEXT BYTE {NZ}
|
||||
LDA (]ADDR1),Y ; {6C2B} LOAD CURRENT SOURCE BYTE {NZ}
|
||||
STA (]ADDR2),Y ; {6C2B} STORE IN CURRENT DESTINATION
|
||||
CPY #0 ; {2C2B} BRANCH IF NOT DONE {NZC}
|
||||
BNE :MR0 ; {3C2B} WITH THE LAST PAGE
|
||||
:MRPAGE
|
||||
LDX ]SIZE+1 ; ++<3C2B> GET SIZE HIBYTE
|
||||
BEQ :MREXIT ; ++<3C2B> BR IF HYBYTE = 0 (NO FULL P)
|
||||
LDX ]SIZE+1 ; {3C2B} GET SIZE HIBYTE {NZ}
|
||||
BEQ :MREXIT ; {3C2B} BR IF HYBYTE = 0 (NO FULL P)
|
||||
:MR1
|
||||
DEC ]ADDR1+1 ; ++<5C2B> BACK UP TO PREV SRC PAGE
|
||||
DEC ]ADDR2+1 ; ++<5C2B> TO DEST
|
||||
DEC ]ADDR1+1 ; {5C2B} BACK UP TO PREV SRC PAGE {NZ}
|
||||
DEC ]ADDR2+1 ; {5C2B} TO DEST {NZ}
|
||||
:MR2
|
||||
DEY ; ++<2C1B> BACK UP Y TO NEXT BYTE
|
||||
LDA (]ADDR1),Y ; ++<6C2B> LOAD SOURCE CURRENT BYTE
|
||||
STA (]ADDR2),Y ; ++<6C2B> STORE BYTE IN DESTINATION
|
||||
CPY #0 ; ++<2C2B> IF NOT DONE WITH PAGE
|
||||
BNE :MR2 ; ++<3C2B> THEN BRANCH OUT
|
||||
DEX ; ++<2C1B> DECREASE BYTE COUNTER
|
||||
BNE :MR1 ; ++<3C2B> BR IF NOT ALL PAGES MOVED
|
||||
DEY ; {2C1B} BACK UP Y TO NEXT BYTE {NZ}
|
||||
LDA (]ADDR1),Y ; {6C2B} LOAD SOURCE CURRENT BYTE {NZ}
|
||||
STA (]ADDR2),Y ; {6C2B} STORE BYTE IN DESTINATION
|
||||
CPY #0 ; {2C2B} IF NOT DONE WITH PAGE {NZC}
|
||||
BNE :MR2 ; {3C2B} THEN BRANCH OUT
|
||||
DEX ; {2C1B} DECREASE BYTE COUNTER {NZ}
|
||||
BNE :MR1 ; {3C2B} BR IF NOT ALL PAGES MOVED
|
||||
:MREXIT
|
||||
RTS ; ++<6C1B>
|
||||
RTS ; {6C1B}
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* MEMSWAP (NATHAN RIGGS) *
|
||||
@@ -487,17 +489,17 @@ MEMMOVE
|
||||
]ADDR2 EQU WPAR2 ; SOURCE ADDRESS 2
|
||||
*
|
||||
MEMSWAP
|
||||
LDY #255 ; ++<2C2B> RESET BYTE INDEX
|
||||
LDY #255 ; {2C2B} RESET BYTE INDEX {NZ}
|
||||
:LP
|
||||
INY ; ++<2C1B> INCREASE BYTE INDEX
|
||||
LDA (]ADDR1),Y ; ++<6C2B> LOAD BYTE FROM FIRST ADDRESS
|
||||
TAX ; ++<2C1B> TRANSFER TO .X
|
||||
LDA (]ADDR2),Y ; ++<6C2B> LOAD BYTE FROM SECOND ADDRESS
|
||||
STA (]ADDR1),Y ; ++<6C2B> STORE IN FIRST ADDRESS
|
||||
TXA ; ++<2C1B> TRANSFER FIRST BYTE VAL TO .A
|
||||
STA (]ADDR2),Y ; ++<6C2B> NOW STORE THAT IN SECOND ADDRESS
|
||||
CPY ]SIZE ; ++<3C2B> IF BYTE INDEX < LENGTH,
|
||||
BNE :LP ; ++<3C2B> CONTINUE LOOPING
|
||||
RTS ; ++<6C1B> OTHERWISE, EXIT
|
||||
INY ; {2C1B} INCREASE BYTE INDEX {NZ}
|
||||
LDA (]ADDR1),Y ; {6C2B} LOAD BYTE FROM FIRST ADDRESS {NZ}
|
||||
TAX ; {2C1B} TRANSFER TO .X {NZ}
|
||||
LDA (]ADDR2),Y ; {6C2B} LOAD BYTE FROM SECOND ADDRESS {NZ}
|
||||
STA (]ADDR1),Y ; {6C2B} STORE IN FIRST ADDRESS
|
||||
TXA ; {2C1B} TRANSFER FIRST BYTE VAL TO .A {NZ}
|
||||
STA (]ADDR2),Y ; {6C2B} NOW STORE THAT IN SECOND ADDRESS
|
||||
CPY ]SIZE ; {3C2B} IF BYTE INDEX < LENGTH, {NZC}
|
||||
BNE :LP ; {3C2B} CONTINUE LOOPING
|
||||
RTS ; {6C1B} OTHERWISE, EXIT
|
||||
*
|
||||
RTS ; ++<6C1B>
|
||||
RTS ; {6C1B}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 29-NOV-2019 *
|
||||
* DATE: 11-MAR-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
* *
|
||||
@@ -69,7 +69,7 @@
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CALL MAC ; JMP ALIAS
|
||||
JSR ]1 ; ++<3B6C>
|
||||
JSR ]1 ; {3B6C}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -77,7 +77,7 @@ CALL MAC ; JMP ALIAS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
RET MAC ; RTS ALIAS
|
||||
RTS ; ++<1BC6>
|
||||
RTS ; {1BC6>
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -85,10 +85,10 @@ RET MAC ; RTS ALIAS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JA MAC ; JMP IF ABOVE
|
||||
BCS ]ABOVE ; ++<2B3C>
|
||||
BEQ ]EXIT ; ++<2B3C>
|
||||
BCC ]EXIT ; ++<2B3C>
|
||||
]ABOVE JMP ]1 ; ++<3B5C>
|
||||
BCS ]ABOVE ; {2B3C}
|
||||
BEQ ]EXIT ; {2B3C}
|
||||
BCC ]EXIT ; {2B3C}
|
||||
]ABOVE JMP ]1 ; {3B5C}
|
||||
]EXIT
|
||||
<<<
|
||||
*
|
||||
@@ -97,9 +97,9 @@ JA MAC ; JMP IF ABOVE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JAE MAC ; JMP IF ABOVE OR EQUAL
|
||||
BCS ]ABEQ ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]ABEQ JMP ]1 ; ++<1B5C>
|
||||
BCS ]ABEQ ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]ABEQ JMP ]1 ; {1B5C}
|
||||
]EXIT
|
||||
<<<
|
||||
*
|
||||
@@ -108,9 +108,9 @@ JAE MAC ; JMP IF ABOVE OR EQUAL
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JB MAC ; JMP IF BELOW
|
||||
BCC ]BELOW ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]BELOW JMP ]1 ; ++<1B5C>
|
||||
BCC ]BELOW ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]BELOW JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -118,10 +118,10 @@ JB MAC ; JMP IF BELOW
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JBE MAC ; JMP IF BELOW OR EQUAL
|
||||
BEQ ]BELEQ ; ++<2B3C>
|
||||
BCC ]BELEQ ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]BELEQ JMP ]1 ; ++<1B5C>
|
||||
BEQ ]BELEQ ; {2B3C}
|
||||
BCC ]BELEQ ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]BELEQ JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -129,7 +129,7 @@ JBE MAC ; JMP IF BELOW OR EQUAL
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JC MAC ; JUMP ON CARRY
|
||||
JB ]1 ++<[4B8C]>
|
||||
JB ]1 {4B8C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -137,9 +137,9 @@ JC MAC ; JUMP ON CARRY
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JE MAC ; JUMP IF EQUAL
|
||||
BEQ ]EQ ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]EQ JMP ]1 ; ++<1B5C>
|
||||
BEQ ]EQ ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]EQ JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -147,7 +147,7 @@ JE MAC ; JUMP IF EQUAL
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JG MAC ; JUMP IF GREATER THAN
|
||||
JA ]1 ; ++<[9B11C]>
|
||||
JA ]1 ; {9B11C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -155,7 +155,7 @@ JG MAC ; JUMP IF GREATER THAN
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JGE MAC ; JUMP IF EQUAL OR GREATER
|
||||
JAE ]1 ; ++<[4B8C]>
|
||||
JAE ]1 ; {4B8C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -163,7 +163,7 @@ JGE MAC ; JUMP IF EQUAL OR GREATER
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JL MAC ; JUMP IF LESS THAN
|
||||
JB ]1 ; +<[4B8C]>
|
||||
JB ]1 ; {4B8C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -171,7 +171,7 @@ JL MAC ; JUMP IF LESS THAN
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JLE MAC ; JUMP IF LESS OR EQUAL
|
||||
JBE ]1 ; ++<[6B11C]>
|
||||
JBE ]1 ; {6B11C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -179,9 +179,9 @@ JLE MAC ; JUMP IF LESS OR EQUAL
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JNC MAC ; JUMP IF NO CARRY
|
||||
BCC ]CLR ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]CLR JMP ]1 ; ++<1B5C>
|
||||
BCC ]CLR ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]CLR JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -189,9 +189,9 @@ JNC MAC ; JUMP IF NO CARRY
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JNE MAC ; JUMP IF NOT EQUAL
|
||||
BNE ]NE ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]NE JMP ]1 ; ++<1B5C>
|
||||
BNE ]NE ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]NE JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -199,9 +199,9 @@ JNE MAC ; JUMP IF NOT EQUAL
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JZ MAC ; JUMP IF ZERO
|
||||
BEQ ]ZERO ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]ZERO JMP ]1 ; ++<1B5C>
|
||||
BEQ ]ZERO ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]ZERO JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -209,9 +209,9 @@ JZ MAC ; JUMP IF ZERO
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JNZ MAC ; JUMP IF NOT ZERO
|
||||
BNE ]NOTZ ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]NOTZ JMP ]1 ; ++<1B5C>
|
||||
BNE ]NOTZ ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]NOTZ JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -219,9 +219,9 @@ JNZ MAC ; JUMP IF NOT ZERO
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JS MAC ; JUMP IF SIGNED
|
||||
BPL ]PLUS ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]PLUS JMP ]1 ; ++<1B5C>
|
||||
BPL ]PLUS ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]PLUS JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -229,9 +229,9 @@ JS MAC ; JUMP IF SIGNED
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JNS MAC ; JUMP IF NOT SIGNED
|
||||
BMI ]MIN ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]MIN JMP ]1 ; ++<1B5C>
|
||||
BMI ]MIN ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]MIN JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -239,9 +239,9 @@ JNS MAC ; JUMP IF NOT SIGNED
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JO MAC ; JUMP IF OVERFLOW
|
||||
BVS ]OV ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]OV JMP ]1 ; ++<1B5C>
|
||||
BVS ]OV ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]OV JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -249,9 +249,9 @@ JO MAC ; JUMP IF OVERFLOW
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JNO MAC ; JUMP IF NO OVERFLOW
|
||||
BVC ]NOV ; ++<2B3C>
|
||||
JMP ]EXIT ; ++<1B5C>
|
||||
]NOV JMP ]1 ; ++<1B5C>
|
||||
BVC ]NOV ; {2B3C}
|
||||
JMP ]EXIT ; {1B5C}
|
||||
]NOV JMP ]1 ; {1B5C}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -264,10 +264,10 @@ JNO MAC ; JUMP IF NO OVERFLOW
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
ANC MAC ; ADD NO CARRY
|
||||
CLC ; ++<1B2C>
|
||||
LDA ]1 ; ++<3B4C>
|
||||
ADC ]2 ; ++<3B4C>
|
||||
CLC ; ++<1B2C>
|
||||
CLC ; {1B2C}
|
||||
LDA ]1 ; {3B4C} {NZ}
|
||||
ADC ]2 ; {3B4C} {NZCV}
|
||||
CLC ; {1B2C} {C=0}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -280,10 +280,10 @@ ANC MAC ; ADD NO CARRY
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
SNC MAC ; SUBTRACT NO CARRY
|
||||
SEC ; ++<1B2C>
|
||||
LDA ]1 ; ++<3B4C>
|
||||
SBC ]2 ; ++<3B4C>
|
||||
SEC ; ++<1B2C>
|
||||
SEC ; {1B2C} {C=1}
|
||||
LDA ]1 ; {3B4C} {NZ}
|
||||
SBC ]2 ; {3B4C} {NZCV}
|
||||
SEC ; {1B2C} {C=1}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -292,10 +292,10 @@ SNC MAC ; SUBTRACT NO CARRY
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PUSHA MAC ; PUSH ALL REGISTERS
|
||||
PHP ; ++<1B3C>
|
||||
PHA ; ++<1B3C>
|
||||
CPHY ; ++<6B12C>
|
||||
CPHX ; ++<6B12C>
|
||||
PHP ; {1B3C}
|
||||
PHA ; {1B3C}
|
||||
CPHY ; {6B12C}
|
||||
CPHX ; {6B12C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -304,10 +304,10 @@ PUSHA MAC ; PUSH ALL REGISTERS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PULLA MAC ; PULL ALL REGISTERS
|
||||
CPLX ; ++<11B6C>
|
||||
CPLY ; ++<11B7C>
|
||||
PLA ; ++<1B3C>
|
||||
PLP ; ++<1B3C>
|
||||
CPLX ; {11B6C}
|
||||
CPLY ; {11B7C}
|
||||
PLA ; {1B3C} {NZ}
|
||||
PLP ; {1B3C} {NZCIDV}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -316,5 +316,5 @@ PULLA MAC ; PULL ALL REGISTERS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
POPA MAC ; PULL ALL REGISTERS
|
||||
PULLA ; ++<[24B19C]>
|
||||
PULLA ; {24B19C}
|
||||
<<<
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CALL MAC
|
||||
JSR ]1 ; ++<3B6C>
|
||||
JSR ]1 ; {3B6C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -23,7 +23,7 @@ CALL MAC
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CPL MAC
|
||||
EOR $FF ; ++<2B2C>
|
||||
EOR $FF ; {2B2C} {NZ}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -31,7 +31,7 @@ CPL MAC
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
JP MAC
|
||||
JMP ]1 ; <1B5C>
|
||||
JMP ]1 ; <1B5C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -48,7 +48,7 @@ LD MAC ; NOT YET
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
POP MAC
|
||||
PLA ; ++<1B4C>
|
||||
PLA ; {1B4C} {NZ}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -56,7 +56,7 @@ POP MAC
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
RET MAC
|
||||
RTS ; ++<1B6C>
|
||||
RTS ; {1B6C}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -64,6 +64,6 @@ RET MAC
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
SCF MAC
|
||||
SEC ; ++<1B2C>
|
||||
SEC ; {1B2C} {C=1}
|
||||
<<<
|
||||
*
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* DATE: 29-NOV-2019 *
|
||||
* DATE: 11-MAR-2021 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* OS: DOS 3.3 *
|
||||
* *
|
||||
@@ -55,7 +55,6 @@
|
||||
* GBIT : GET BIT FROM BYTE *
|
||||
* GRET : GET RETURN *
|
||||
* MFILL : FILL MEMORY BLOCK *
|
||||
* MOV : MOVE SRC TO DEST *
|
||||
* MOVB : MOVE MEMORY BLOCK *
|
||||
* MSWAP : SWAP MEMORY BLOCKS *
|
||||
* PEEK : LOAD .A FROM ADDR *
|
||||
@@ -79,11 +78,11 @@
|
||||
*
|
||||
_AXLIT MAC ; CHECK IF LITERAL
|
||||
IF #=]1 ; IF ]1 IS A LITERAL
|
||||
LDX ]1/$100 ; ++<4C3B> GET HIGH
|
||||
LDA ]1 ; ++<4C3B> GET LOW
|
||||
LDX ]1/$100 ; {4C3B} GET HIGH {NZ}
|
||||
LDA ]1 ; {4C3B} GET LOW {NZ}
|
||||
ELSE ; OTHERWISE, ]1 IS AN ADDR
|
||||
LDX ]1+1 ; ++<4C3B> SO GET HIGH VALUE
|
||||
LDA ]1 ; ++<4C3B> THEN LOW VALUE
|
||||
LDX ]1+1 ; {4C3B} SO GET HIGH VALUE {NZ}
|
||||
LDA ]1 ; {4C3B} THEN LOW VALUE {NZ}
|
||||
FIN ; END IF
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -108,13 +107,13 @@ _AXLIT MAC ; CHECK IF LITERAL
|
||||
*
|
||||
_AXSTR MAC ; CHECK IF STRING
|
||||
IF "=]1 ;...... IF ]1 IS A STRING
|
||||
JMP __STRCNT2 ; ++<3C3B> SKIP STRING DEC
|
||||
]STRTMP STR ]1 ; ++<0C1B+> STR DECLARATION
|
||||
JMP __STRCNT2 ; {3C3B} SKIP STRING DEC
|
||||
]STRTMP STR ]1 ; {0C1B+} STR DECLARATION
|
||||
__STRCNT2 ; SKIP TO HERE
|
||||
LDX #>]STRTMP ; ++<4C3B> GET HIBYTE OF STRING
|
||||
LDA #<]STRTMP ; ++<4C3B> GET LO BYTE
|
||||
LDX #>]STRTMP ; {4C3B} GET HIBYTE OF STRING {NZ}
|
||||
LDA #<]STRTMP ; {4C3B} GET LO BYTE {NZ}
|
||||
ELSE ; OTHERWISE, ]1 IS ADDRESS
|
||||
_AXLIT ]1 ; ++<(8C6B)> TEST OF LITERAL OR NOT
|
||||
_AXLIT ]1 ; {8C6B} TEST OF LITERAL OR NOT
|
||||
FIN ; END IF
|
||||
<<<
|
||||
*
|
||||
@@ -136,15 +135,15 @@ __STRCNT2 ; SKIP TO HERE
|
||||
*
|
||||
_ISLIT MAC ; CHECK IF LITERAL
|
||||
IF #=]1 ; IF ]1 IS A LITERAL
|
||||
LDA ]1/$100 ; ++<4C3B> GET HIGH BYTE
|
||||
PHA ; ++<3C1B> PUSH .A TO STACK
|
||||
LDA ]1 ; ++<4C3B> GET LOW BYTE
|
||||
PHA ; ++<3C1B> PUSH .A TO STACK
|
||||
LDA ]1/$100 ; {4C3B} GET HIGH BYTE {NZ}
|
||||
PHA ; {3C1B} PUSH .A TO STACK
|
||||
LDA ]1 ; {4C3B} GET LOW BYTE {NZ}
|
||||
PHA ; {3C1B} PUSH .A TO STACK
|
||||
ELSE ; OTHERWISE, ]1 IS ADDRESS
|
||||
LDA ]1+1 ; ++<4C3B> SO GET HIGH NIBBLE
|
||||
PHA ; ++<3C1B> PUSH .A TO STACK
|
||||
LDA ]1 ; ++<4C3B> THEN GET LOW NIBBLE
|
||||
PHA ; ++<3C1B> AND PUSH TO STACK
|
||||
LDA ]1+1 ; {4C3B} SO GET HIGH NIBBLE {NZ}
|
||||
PHA ; {3C1B} PUSH .A TO STACK
|
||||
LDA ]1 ; {4C3B} THEN GET LOW NIBBLE {NZ}
|
||||
PHA ; {3C1B} AND PUSH TO STACK
|
||||
FIN ; END IF
|
||||
<<<
|
||||
*
|
||||
@@ -168,15 +167,15 @@ _ISLIT MAC ; CHECK IF LITERAL
|
||||
*
|
||||
_ISSTR MAC ; CHECK IF STRING
|
||||
IF "=]1 ;...... IF ]1 IS A STRING
|
||||
JMP __STRCONT ; ++<3C3B> KIP STRING DEC
|
||||
]STRTMP STR ]1 ; ++<0C1+B> DECLARE STRING
|
||||
JMP __STRCONT ; {3C3B} KIP STRING DEC
|
||||
]STRTMP STR ]1 ; {0C1+B} DECLARE STRING
|
||||
__STRCONT
|
||||
LDA #>]STRTMP ; ++<2C2B> GET HI VAL
|
||||
PHA ; ++<3C1B> PUSH .A TO STACK
|
||||
LDA #<]STRTMP ; ++<2C2B> GET LO 2C,2B
|
||||
PHA ; ++<3C1B> PUSH .A TO STACK
|
||||
LDA #>]STRTMP ; {2C2B} GET HI VAL {NZ}
|
||||
PHA ; {3C1B} PUSH .A TO STACK
|
||||
LDA #<]STRTMP ; {2C2B} GET LO 2C,2B {NZ}
|
||||
PHA ; {3C1B} PUSH .A TO STACK
|
||||
ELSE ; OTHERIWSE ]1 IS AN ADDRESS
|
||||
_ISLIT ]1 ; ++<[8C6B]> CHECK IF LITERAL
|
||||
_ISLIT ]1 ; {8C6B} CHECK IF LITERAL
|
||||
FIN ; END IF
|
||||
<<<
|
||||
*
|
||||
@@ -199,15 +198,15 @@ __STRCONT
|
||||
*
|
||||
_MLIT MAC ; CHECK IF LITERAL
|
||||
IF #=]1 ; IF ]1 IS A LITERAL
|
||||
LDA ]1/$100 ; ++<4C3B> GET HI NIBBLE
|
||||
STA ]2+1 ; ++<4C3B> STORE IN ZP
|
||||
LDA ]1 ; ++<4C3B> THEN GET LO
|
||||
STA ]2 ; ++<4C3B> STORE IN ZP
|
||||
LDA ]1/$100 ; {4C3B} GET HI NIBBLE {NZ}
|
||||
STA ]2+1 ; {4C3B} STORE IN ZP
|
||||
LDA ]1 ; {4C3B} THEN GET LO {NZ}
|
||||
STA ]2 ; {4C3B} STORE IN ZP
|
||||
ELSE ; OTHERIWSE ]1 IS ADDRESS
|
||||
LDA ]1+1 ; ++<4C3B> SO GET HIGH NIB
|
||||
STA ]2+1 ; ++<4C3B> AND STORE IN ZP
|
||||
LDA ]1 ; ++<4C3B> THEN GET LOW NIB
|
||||
STA ]2 ; ++<4C4B> AND STORE IN ZP
|
||||
LDA ]1+1 ; {4C3B} SO GET HIGH NIB {NZ}
|
||||
STA ]2+1 ; {4C3B} AND STORE IN ZP
|
||||
LDA ]1 ; {4C3B} THEN GET LOW NIB {NZ}
|
||||
STA ]2 ; {4C4B} AND STORE IN ZP
|
||||
FIN ; END IF
|
||||
<<<
|
||||
*
|
||||
@@ -232,15 +231,15 @@ _MLIT MAC ; CHECK IF LITERAL
|
||||
*
|
||||
_MSTR MAC ; CHECK IF STRING
|
||||
IF "=]1 ;...... IF ]1 IS A STRING
|
||||
JMP __STRCONT ; ++<3C3B> SKIP STRING DEC
|
||||
]STRTMP STR ]1 ; ++<OC1+B> DECLARE STRING
|
||||
JMP __STRCONT ; {3C3B} SKIP STRING DEC
|
||||
]STRTMP STR ]1 ; {OC1+B} DECLARE STRING
|
||||
__STRCONT ; CONTINUE
|
||||
LDA #>]STRTMP ; ++<2C2B> GET HI NIB OF ADDR
|
||||
STA ]2+1 ; ++<4C3B> STORE IN ZP
|
||||
LDA #<]STRTMP ; ++<2C2B> GET LOW NIB
|
||||
STA ]2 ; ++<4C3B> SPRE ON ZP
|
||||
LDA #>]STRTMP ; {2C2B} GET HI NIB OF ADDR {NZ}
|
||||
STA ]2+1 ; {4C3B} STORE IN ZP
|
||||
LDA #<]STRTMP ; {2C2B} GET LOW NIB {NZ}
|
||||
STA ]2 ; {4C3B} SPRE ON ZP
|
||||
ELSE ; OTHERWISE ]1 IS ADDRESS
|
||||
_ISLIT ]1 ; ++<[8C6B]> CHECK IF LITERAL
|
||||
_MLIT ]1;]2 ; {8C6B} CHECK IF LITERAL
|
||||
FIN ; END IF
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -259,11 +258,11 @@ __STRCONT ; CONTINUE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_PRN MAC ; PRINT STRING
|
||||
STY SCRATCH ; ++<3C2B> PRESERVE .Y
|
||||
JSR __P ; ++<6C3B[155C+]> PRINT THE STRING
|
||||
ASC ]1 ; ++<0C1B+> HOLD STRING HERE
|
||||
HEX 00 ; ++<0C1B> KILL STRING PRINT
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
STY SCRATCH ; {3C2B} PRESERVE .Y
|
||||
JSR __P ; {161C3B} PRINT THE STRING {NZCV}
|
||||
ASC ]1 ; {0C1B+} HOLD STRING HERE
|
||||
HEX 00 ; {0C1B} KILL STRING PRINT
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -278,10 +277,10 @@ _PRN MAC ; PRINT STRING
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_WAIT MAC ; WAIT FOR KEYPRESS
|
||||
]LP LDA ]KYBD ; ++<4C3B> CHECK FOR KEYPRESS
|
||||
BPL ]LP ; ++<4C2B> IF NOT, KEEP LOOPING
|
||||
AND #$7F ; ++<2C2B> SET HIGH BIT
|
||||
STA ]STROBE ; ++<4C3B> RESET KYBD STROBE
|
||||
]LP LDA ]KYBD ; {4C3B} CHECK FOR KEYPRESS {NZ}
|
||||
BPL ]LP ; {4C2B} IF NOT, KEEP LOOPING
|
||||
AND #$7F ; {2C2B} SET HIGH BIT {NZ}
|
||||
STA ]STROBE ; {4C3B} RESET KYBD STROBE
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -298,9 +297,9 @@ _WAIT MAC ; WAIT FOR KEYPRESS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BCCL MAC ; LONG BCC
|
||||
BCC ]TOBCC ; ++<4C2B> IF CARRY CLEAR, BRANCH
|
||||
]NOBCC JMP ]EXIT ; ++<3C3B> OTHER, RETURN
|
||||
]TOBCC JMP ]1 ; ++<3C3B> JMP TO BCC BRANCH LOC
|
||||
BCC ]TOBCC ; {4C2B} IF CARRY CLEAR, BRANCH
|
||||
]NOBCC JMP ]EXIT ; {3C3B} OTHER, RETURN
|
||||
]TOBCC JMP ]1 ; {3C3B} JMP TO BCC BRANCH LOC
|
||||
]EXIT ; CARRY WASN'T CLEAR
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -314,9 +313,9 @@ BCCL MAC ; LONG BCC
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BCSL MAC ; LONG LCS
|
||||
BCS ]TOBCS ; ++<4C2B> IF CARRY SET, THEN BRANCH
|
||||
]NOBCS JMP ]EXIT ; ++<3C3B> OTHERWISE, DON'T BRANCH
|
||||
]TOBCS JMP ]1 ; ++<3C3B> JMP TO BRANCH
|
||||
BCS ]TOBCS ; {4C2B} IF CARRY SET, THEN BRANCH
|
||||
]NOBCS JMP ]EXIT ; {3C3B} OTHERWISE, DON'T BRANCH
|
||||
]TOBCS JMP ]1 ; {3C3B} JMP TO BRANCH
|
||||
]EXIT ; EXIT LABEL
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -334,14 +333,14 @@ BCSL MAC ; LONG LCS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BEEP MAC ; ROUTINE BEEP
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .Y REGISTER
|
||||
LDX ]1 ; ++<4C3B> LOAD BEEP LENGTH
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y REGISTER
|
||||
LDX ]1 ; {4C3B} LOAD BEEP LENGTH {NZ}
|
||||
]LP1
|
||||
JSR BELL ; ++<6C3B[84C]> JSR TO BELL ROUTINE
|
||||
DEX ; ++<2C1B> DECREASE .X COUNTER
|
||||
CPX #0 ; ++<2C2B> CMP .X TO ZERO
|
||||
BNE ]LP1 ; ++<4C2B> IF !=, LOP
|
||||
LDY SCRATCH ; ++<3C2B> OTHERWISE, RESTORE .Y
|
||||
JSR BELL ; {90C3B} JSR TO BELL ROUTINE
|
||||
DEX ; {2C1B} DECREASE .X COUNTER {NZ}
|
||||
CPX #0 ; {2C2B} CMP .X TO ZERO {NZC}
|
||||
BNE ]LP1 ; {4C2B} IF !=, LOOP
|
||||
LDY SCRATCH ; {3C2B} OTHERWISE, RESTORE .Y {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -354,9 +353,9 @@ BEEP MAC ; ROUTINE BEEP
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BEQL MAC ; LONG BEQ
|
||||
BEQ ]TOBEQ ; ++<4C2B> IF CMP EQUAL OR 0, BRANCH
|
||||
]NOBEQ JMP ]EXIT ; ++<3C3B> OTHERWISE, SKIP BRANCH
|
||||
]TOBEQ JMP ]1 ; ++<3C3B> JUMP TO BRANCH
|
||||
BEQ ]TOBEQ ; {4C2B} IF CMP EQUAL OR 0, BRANCH
|
||||
]NOBEQ JMP ]EXIT ; {3C3B} OTHERWISE, SKIP BRANCH
|
||||
]TOBEQ JMP ]1 ; {3C3B} JUMP TO BRANCH
|
||||
]EXIT ; EXIT LABEL
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -370,9 +369,9 @@ BEQL MAC ; LONG BEQ
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BNEL MAC ; LONG BNE
|
||||
BNE ]TOBNE ; ++<4C2B> IF CMP != OR !=0, BRANCH
|
||||
]NOBNE JMP ]EXIT ; ++<3C3B> OTHERWISE, SKIP BRANCH
|
||||
]TOBNE JMP ]1 ; ++<3C3B> JUMP TO BRANCH ADDR
|
||||
BNE ]TOBNE ; {4C2B} IF CMP != OR !=0, BRANCH
|
||||
]NOBNE JMP ]EXIT ; {3C3B} OTHERWISE, SKIP BRANCH
|
||||
]TOBNE JMP ]1 ; {3C3B} JUMP TO BRANCH ADDR
|
||||
]EXIT ; QUITTING LABEL
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -386,9 +385,9 @@ BNEL MAC ; LONG BNE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BMIL MAC ; LONG BMI
|
||||
BMI ]TOBMI ; ++<4C2B> IF NEGATIVE SET, BRANCH
|
||||
]NOBMI JMP ]EXIT ; ++<3C3B> OTHERWISE, SKIP BRANCH
|
||||
]TOBMI JMP ]1 ; ++<3C3B> JUMP TO BRANCH ADDRESS
|
||||
BMI ]TOBMI ; {4C2B} IF NEGATIVE SET, BRANCH
|
||||
]NOBMI JMP ]EXIT ; {3C3B} OTHERWISE, SKIP BRANCH
|
||||
]TOBMI JMP ]1 ; {3C3B} JUMP TO BRANCH ADDRESS
|
||||
]EXIT ; QUIT LABEL
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -402,9 +401,9 @@ BMIL MAC ; LONG BMI
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BPLL MAC ; LONG BPL
|
||||
BPL ]TOBPL ; ++<4C2B> IF NOT NEGATIVE, BRANCH
|
||||
]NOBPL JMP ]EXIT ; ++<3C3B> OTHERWISE, SKIP BRANCH
|
||||
]TOBPL JMP ]1 ; ++<3C3B> JUMP TO BRANCH ADDRESS
|
||||
BPL ]TOBPL ; {4C2B} IF NOT NEGATIVE, BRANCH
|
||||
]NOBPL JMP ]EXIT ; {3C3B} OTHERWISE, SKIP BRANCH
|
||||
]TOBPL JMP ]1 ; {3C3B} JUMP TO BRANCH ADDRESS
|
||||
]EXIT ; QUIT
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -419,9 +418,9 @@ BPLL MAC ; LONG BPL
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BVCL MAC ; LONG BVC
|
||||
BVC ]TOBVC ; ++<4C2B> IF OVERFLOW CLEAR, BRANCH
|
||||
]NOBVC JMP ]EXIT ; ++<3C3B> OTHERWISE, SKIP BRANCH
|
||||
]TOBVC JMP ]1 ; ++<3C3B> JUMP TO BRANCH ADDRESS
|
||||
BVC ]TOBVC ; {4C2B} IF OVERFLOW CLEAR, BRANCH
|
||||
]NOBVC JMP ]EXIT ; {3C3B} OTHERWISE, SKIP BRANCH
|
||||
]TOBVC JMP ]1 ; {3C3B} JUMP TO BRANCH ADDRESS
|
||||
]EXIT ; QUIT
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -435,9 +434,9 @@ BVCL MAC ; LONG BVC
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BVSL MAC ; LONG BVS
|
||||
BVS ]TOBVS ; ++<4C2B> OF OVERFLOW SET, BRANCH
|
||||
]NOBVS JMP ]EXIT ; ++<3C3B> OTHERWISE, SKIP BRANCH
|
||||
]TOBVS JMP ]1 ; ++<3C3B> JUMP TO BRANCH ADDRESS
|
||||
BVS ]TOBVS ; {4C2B} OF OVERFLOW SET, BRANCH
|
||||
]NOBVS JMP ]EXIT ; {3C3B} OTHERWISE, SKIP BRANCH
|
||||
]TOBVS JMP ]1 ; {3C3B} JUMP TO BRANCH ADDRESS
|
||||
]EXIT ; QUIT
|
||||
<<< ; END MACRO
|
||||
*
|
||||
@@ -464,10 +463,10 @@ CBRA MAC ; BRANCH ALWAYS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CPHX MAC ; PUSH .X TO STACK
|
||||
STA SCRATCH ; ++<3C2B> BACKUP .A CONTENTS
|
||||
TXA ; ++<2C1B> TRANSFER .X TO .A
|
||||
PHA ; ++<3C1B> PUSH .A
|
||||
LDA SCRATCH ; ++<3C2B> RESTORE .A CONTENTS
|
||||
STA SCRATCH ; {3C2B} BACKUP .A CONTENTS
|
||||
TXA ; {2C1B} TRANSFER .X TO .A {NZ}
|
||||
PHA ; {3C1B} PUSH .A
|
||||
LDA SCRATCH ; {3C2B} RESTORE .A CONTENTS {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -480,10 +479,10 @@ CPHX MAC ; PUSH .X TO STACK
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CPHY MAC ; PUSH .Y TO STACK
|
||||
STA SCRATCH ; ++<3C2B> BACKUP .A
|
||||
TYA ; ++<2C1B> TRANSFER .Y TO .A
|
||||
PHA ; ++<3C1B> PUSH .A TO STACK
|
||||
LDA SCRATCH ; ++<3C2B> RESTORE .A CONTENTS
|
||||
STA SCRATCH ; {3C2B} BACKUP .A
|
||||
TYA ; {2C1B} TRANSFER .Y TO .A {NZ}
|
||||
PHA ; {3C1B} PUSH .A TO STACK
|
||||
LDA SCRATCH ; {3C2B} RESTORE .A CONTENTS {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -496,10 +495,10 @@ CPHY MAC ; PUSH .Y TO STACK
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CPLX MAC ; PULL FROM STACT TO .X
|
||||
STA SCRATCH ; ++<3C2B> BACKUP .A
|
||||
PLA ; ++<3C1B> PULL FROM STACK INTO .A
|
||||
TAX ; ++<2C1B> TRANSFER .A TO .X
|
||||
LDA SCRATCH ; ++<3C2B> RESTORE .A CONTENTS
|
||||
STA SCRATCH ; {3C2B} BACKUP .A
|
||||
PLA ; {3C1B} PULL FROM STACK INTO .A {NZ}
|
||||
TAX ; {2C1B} TRANSFER .A TO .X {NZ}
|
||||
LDA SCRATCH ; {3C2B} RESTORE .A CONTENTS {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -512,10 +511,10 @@ CPLX MAC ; PULL FROM STACT TO .X
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CPLY MAC ; PULL FROM STACK INTO .Y
|
||||
STA SCRATCH ; ++<3C2B> BACKUP .A
|
||||
PLA ; ++<3C1B> PULL FROM STACK TO .A
|
||||
TAY ; ++<2C2B> TRANSFER A TO .Y
|
||||
LDA SCRATCH ; ++<3C2B> RESTORE .A
|
||||
STA SCRATCH ; {3C2B} BACKUP .A
|
||||
PLA ; {3C1B} PULL FROM STACK TO .A {NZ}
|
||||
TAY ; {2C2B} TRANSFER A TO .Y {NZ}
|
||||
LDA SCRATCH ; {3C2B} RESTORE .A {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -528,10 +527,10 @@ CPLY MAC ; PULL FROM STACK INTO .Y
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CTXY MAC ; TRANSFER X TO Y
|
||||
STA SCRATCH ; ++<3C2B> BACKUP .A
|
||||
TXA ; ++<2C1B> TRANSFER .X TO .A
|
||||
TAY ; ++<2C1B> TRNSFER .A TO .Y
|
||||
LDA SCRATCH ; ++<3C2B> RESTORE .A
|
||||
STA SCRATCH ; {3C2B} BACKUP .A
|
||||
TXA ; {2C1B} TRANSFER .X TO .A {NZ}
|
||||
TAY ; {2C1B} TRNSFER .A TO .Y {N}
|
||||
LDA SCRATCH ; {3C2B} RESTORE .A {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -544,10 +543,10 @@ CTXY MAC ; TRANSFER X TO Y
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CTYX MAC ; TRANSFER .Y TO .X
|
||||
STA SCRATCH ; ++<3C2B> BACKUP .A
|
||||
TYA ; ++<2C1B> TRANSFER .Y TO .A
|
||||
TAX ; ++<2C1B> TRANSFER .A TO .X
|
||||
LDA SCRATCH ; ++<3C2B> RESTORE .A
|
||||
STA SCRATCH ; {3C2B} BACKUP .A
|
||||
TYA ; {2C1B} TRANSFER .Y TO .A {NZ}
|
||||
TAX ; {2C1B} TRANSFER .A TO .X {NZ}
|
||||
LDA SCRATCH ; {3C2B} RESTORE .A {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -556,17 +555,17 @@ CTYX MAC ; TRANSFER .Y TO .X
|
||||
* CLEAR THE HIGH NIBBLE OF A *
|
||||
* BYTE IN **.A**. *
|
||||
* *
|
||||
* CYCLES: 16 *
|
||||
* CYCLES: 10 *
|
||||
* SIZE: 6 BYTES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CLRHI MAC
|
||||
*
|
||||
AND #$F0 ; CLEAR 4 RIGHT BITS
|
||||
LSR ; MOVE BITS RIGHT
|
||||
LSR ; MOVE BITS RIGHT
|
||||
LSR ; MOVE BITS RIGHT
|
||||
LSR ; MOVE BITS RIGHT
|
||||
AND #$F0 ; {2C2B} CLEAR 4 RIGHT BITS {NZ}
|
||||
LSR ; {2C1B} MOVE BITS RIGHT {ZC,N=0}
|
||||
LSR ; {2C1B} MOVE BITS RIGHT {ZC,N=0}
|
||||
LSR ; {2C1B} MOVE BITS RIGHT {ZC,N=0}
|
||||
LSR ; {2C1B} MOVE BITS RIGHT {ZC,N=0}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -583,10 +582,10 @@ CLRHI MAC
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
DELAY MAC ; DELAY FOR MILLISECONDS
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .Y
|
||||
LDY ]1 ; ++<4C3B> # OF MILLISECONDS
|
||||
JSR DELAYMS ; ++<6C3B[39C]> DELAY SUBROUTINE
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y
|
||||
LDY ]1 ; {4C3B} # OF MILLISECONDS {NZ}
|
||||
JSR DELAYMS ; {45C3B} DELAY SUBROUTINE {NZC}
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -605,11 +604,11 @@ DELAY MAC ; DELAY FOR MILLISECONDS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
DUMP MAC ; DUMP MEMORY CONTENTS
|
||||
_AXLIT ]1 ; ++<[8C,6B]> CHECK LITERAL
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .Y
|
||||
LDY ]2 ; ++<4C3B> LOAD .Y WITH LENGTH
|
||||
JSR __DUMP ; ++<6C3B[787C]) DUMP CONTENTS
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
_AXLIT ]1 ; {8C6B} CHECK LITERAL
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y {NZ}
|
||||
LDY ]2 ; {4C3B} LOAD .Y WITH LENGTH {NZ}
|
||||
JSR __DUMP ; {794C3B} DUMP CONTENTS
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -626,12 +625,12 @@ DUMP MAC ; DUMP MEMORY CONTENTS
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
GBIT MAC ; GET A SINGLE BIT FROM BYTE
|
||||
LDA ]1 ; ++<3B4C> BYTE TO CHECK
|
||||
AND ]2 ; ++<3B4C> MASK BIT # REQUESTED VIA HOOK
|
||||
BEQ ]ZERO ; ++<2B2C> IF IT'S A MATCH, THEN 0
|
||||
LDA #1 ; ++<2B2C> OTHERWISE, BIT IS 1
|
||||
JMP ]EXIT ; ++<3B3C> GOTO EXIT
|
||||
]ZERO LDA #0 ; ++<2B2C> BIT IS 0
|
||||
LDA ]1 ; {3B4C} BYTE TO CHECK {NZ}
|
||||
AND ]2 ; {3B4C} MASK BIT # REQUESTED VIA HOOK {NZ}
|
||||
BEQ ]ZERO ; {2B2C} IF IT'S A MATCH, THEN 0
|
||||
LDA #1 ; {2B2C} OTHERWISE, BIT IS 1 {NZ}
|
||||
JMP ]EXIT ; {3B3C} GOTO EXIT
|
||||
]ZERO LDA #0 ; {2B2C} BIT IS 0 {NZ}
|
||||
]EXIT <<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -648,10 +647,10 @@ GBIT MAC ; GET A SINGLE BIT FROM BYTE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
ERRH MAC ; SET ERROR HANDLE
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .Y
|
||||
_AXLIT ; ++<[8C6B]> CHECK IF LITERAL
|
||||
JSR __ERRH ; ++<6C3B[53C]> RUN ERROR HANDLE SET
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y
|
||||
_AXLIT ; {8C6B} CHECK IF LITERAL
|
||||
JSR __ERRH ; {59C3B} RUN ERROR HANDLE SET {NZ}
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {ZC}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -669,18 +668,18 @@ ERRH MAC ; SET ERROR HANDLE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
GRET MAC ; GET RETURN VALUE
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .y
|
||||
_AXLIT ]1 ; ++<8C6B> CHECK LITERAL
|
||||
STA ADDR1 ; ++<3C2B> LOBYTE PASSED IN .A
|
||||
STX ADDR1+1 ; ++<3C2B> HIBYTE PASSED IN .X
|
||||
LDY #255 ; ++<2C2B> RESET COUNTER
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y
|
||||
_AXLIT ]1 ; {8C6B} CHECK LITERAL
|
||||
STA ADDR1 ; {3C2B} LOBYTE PASSED IN .A
|
||||
STX ADDR1+1 ; {3C2B} HIBYTE PASSED IN .X
|
||||
LDY #255 ; {2C2B} RESET COUNTER {ZC}
|
||||
]LP
|
||||
INY ; ++<2C1B> INCREASE COUNTER
|
||||
LDA RETURN,Y ; ++<5C3B> LOAD BYTE IN RETURN AT
|
||||
STA (ADDR1),Y ; ++<6C2B> COUNTER OFFSET; STORE AT
|
||||
CPY RETLEN ; ++<4C3B> NEW LOCATION
|
||||
BNE ]LP ; ++<4C2B> IF COUNTER < RETLEN, LOOP
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
INY ; {2C1B} INCREASE COUNTER {ZC}
|
||||
LDA RETURN,Y ; {5C3B} LOAD BYTE IN RETURN AT {ZC}
|
||||
STA (ADDR1),Y ; {6C2B} COUNTER OFFSET; STORE AT
|
||||
CPY RETLEN ; {4C3B} NEW LOCATION {NZC}
|
||||
BNE ]LP ; {4C2B} IF COUNTER < RETLEN, LOOP
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -700,60 +699,14 @@ GRET MAC ; GET RETURN VALUE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
MFILL MAC ; MEMORY FILL
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .Y REGISTER
|
||||
_MLIT ]1;WPAR1 ; ++<[16C12B]> CHECK LITERAL OF ]1
|
||||
_MLIT ]2;WPAR2 ; ++<[16C12B]> CHECK LITERAL OF ]2
|
||||
LDA ]3 ; ++<4C3B> FILL VALUE
|
||||
STA BPAR1 ; ++<3C2B> STORED IN BPAR1
|
||||
JSR MEMFILL ; ++<6C3B[59+]> GOSUB ROUTINE
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* MOV *
|
||||
* *
|
||||
* COPY SOURCE TO DESTINATION *
|
||||
* ADDRESS OR REGISTER. *
|
||||
* *
|
||||
* PARAMETERS *
|
||||
* *
|
||||
* ]1 = SOURCE ADD OR REGISTER *
|
||||
* ]2 = DESTINATION ADDR / REG *
|
||||
* *
|
||||
* CYCLES: 267+ *
|
||||
* BYTES: 48 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
MOV MAC ; MEMORY MOVE
|
||||
IF A=]1 ; .A REGISTER SOURCE
|
||||
IF X=]2
|
||||
TAX
|
||||
ELSE
|
||||
IF Y=]2
|
||||
TAY
|
||||
ELSE
|
||||
STA ]2
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
IF $=]1
|
||||
IF A=]2
|
||||
LDA ]1
|
||||
ELSE
|
||||
IF X=]2
|
||||
LDX ]1
|
||||
ELSE
|
||||
IF Y=]2
|
||||
LDY ]1
|
||||
ELSE
|
||||
STY SCRATCH
|
||||
LDY ]1
|
||||
STY ]2
|
||||
LDY SCRATCH
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
]EXIT <<< ; END MACRO
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y REGISTER
|
||||
_MLIT ]1;WPAR1 ; {16C12B} CHECK LITERAL OF ]1
|
||||
_MLIT ]2;WPAR2 ; {16C12B} CHECK LITERAL OF ]2
|
||||
LDA ]3 ; {4C3B} FILL VALUE {NZ}
|
||||
STA BPAR1 ; {3C2B} STORED IN BPAR1
|
||||
JSR MEMFILL ; {6C3B59+} GOSUB ROUTINE
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {NZ}
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* MOVB *
|
||||
@@ -772,12 +725,12 @@ MOV MAC ; MEMORY MOVE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
MOVB MAC ; MEMORY MOVE
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .Y
|
||||
_MLIT ]1;WPAR1 ; ++<[16C12B]> CHECK 1ST ADDR AS LITERAL
|
||||
_MLIT ]2;WPAR2 ; ++<[16C12B]> CHECK 2ND ADDR AS LITERAL
|
||||
_MLIT ]3;WPAR3 ; ++<[16C12B]> CHECK 3RD AS LITERAL
|
||||
JSR MEMMOVE ; ++<6C3B[207C+]> GOSUB ROUTINE
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y
|
||||
_MLIT ]1;WPAR1 ; {16C12B} CHECK 1ST ADDR AS LITERAL
|
||||
_MLIT ]2;WPAR2 ; {16C12B} CHECK 2ND ADDR AS LITERAL
|
||||
_MLIT ]3;WPAR3 ; {16C12B} CHECK 3RD AS LITERAL
|
||||
JSR MEMMOVE ; {213C3B} GOSUB ROUTINE {NZCV}
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -797,13 +750,13 @@ MOVB MAC ; MEMORY MOVE
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
MSWAP MAC ; MEMORY SWAP
|
||||
STY SCRATCH ; ++<3C2B> BACKUP .Y
|
||||
_MLIT ]2;WPAR2 ; ++<[16C12B]> TEST AS LITERAL
|
||||
_MLIT ]1;WPAR1 ; ++<[16C12B]> TEST AS LITERAL
|
||||
LDA ]3 ; ++<4C3B>
|
||||
STA BPAR1 ; ++<3C2B> STORE LENGTH IN BYTES
|
||||
JSR MEMSWAP ; ++<6C3B[46+]> GOSUB ROUTINE
|
||||
LDY SCRATCH ; ++<3C2B> RESTORE .Y
|
||||
STY SCRATCH ; {3C2B} BACKUP .Y
|
||||
_MLIT ]2;WPAR2 ; {16C12B} TEST AS LITERAL
|
||||
_MLIT ]1;WPAR1 ; {16C12B} TEST AS LITERAL
|
||||
LDA ]3 ; {4C3B} {NZ}
|
||||
STA BPAR1 ; {3C2B} STORE LENGTH IN BYTES
|
||||
JSR MEMSWAP ; {6C3B46+} GOSUB ROUTINE {NZC}
|
||||
LDY SCRATCH ; {3C2B} RESTORE .Y {NZ}
|
||||
<<< ; END MAC
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -811,12 +764,18 @@ MSWAP MAC ; MEMORY SWAP
|
||||
* *
|
||||
* LOAD .A WITH VALUE AT ADDR *
|
||||
* *
|
||||
* CYCLES: 4 *
|
||||
* BYTES: 3 *
|
||||
* CYCLES: 28 *
|
||||
* BYTES: 18 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PEEK MAC ; PUT VALUE INTO .A
|
||||
LDA ]1 ; ++<4C3B> LOAD ADDR AL IN .A
|
||||
STY SCRATCH ; {3C2B}
|
||||
_AXLIT ]1 ; {8C6B}
|
||||
STA ADDR1 ; {3C2B}
|
||||
STX ADDR1+1 ; {3C2B}
|
||||
LDY #0 ; {2C2B} {ZC}
|
||||
LDA (ADDR1),Y ; {6C2B} {ZC}
|
||||
LDY SCRATCH ; {3C2B} {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
@@ -824,11 +783,30 @@ PEEK MAC ; PUT VALUE INTO .A
|
||||
* *
|
||||
* STORE VALUE AT ADDRESS *
|
||||
* *
|
||||
* CYCLES: 4 *
|
||||
* BYTES: 3 *
|
||||
* CYCLES: 32 *
|
||||
* BYTES: 20 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
POKE MAC ; STORE .A INTO MEM LOC
|
||||
STA ]1 ; ++<4C3B> STORE MEM VAL IN .A
|
||||
STY SCRATCH ; {3C2B}
|
||||
_AXLIT ]2 ; {8C6B}
|
||||
STA ADDR1 ; {3C2B}
|
||||
STX ADDR1+1 ; {3C2B}
|
||||
LDA ]1 ; {3C2B} {ZC}
|
||||
LDY #0 ; {3C2B} {ZC}
|
||||
STA (ADDR1),Y ; {6C2B} {ZC}
|
||||
LDY SCRATCH ; {3C2B} {NZ}
|
||||
<<< ; END MACRO
|
||||
*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* NEGA *
|
||||
* *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
NEGA MAC ; STORE .A INTO MEM LOC
|
||||
EOR #$FF
|
||||
CLC
|
||||
ADC #1
|
||||
<<< ; END MACRO
|
||||
*
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
JUMPTBL JMP MAIN_START
|
||||
|
||||
DS 32
|
||||
VARTAB DS 20
|
||||
RETLEN DS 1
|
||||
RETURN DS 255
|
||||
ADDR1 EQU $06
|
||||
ADDR2 EQU $08
|
||||
ADDR3 EQU $EB
|
||||
ADDR4 EQU $ED
|
||||
SCRATCH EQU $19
|
||||
SCRATCH2 EQU $1E
|
||||
RETADR EQU $FE
|
||||
RESULT EQU $FA
|
||||
RESULT2 EQU $FC
|
||||
WPAR1 EQU $FA
|
||||
WPAR2 EQU $FC
|
||||
WPAR3 EQU $FE
|
||||
BPAR1 EQU $EF
|
||||
BPAR2 EQU $E3
|
||||
BPAR3 EQU $1E
|
||||
BPAR4 EQU $19
|
||||
REENTRY EQU $3D0
|
||||
PROMPT EQU $33
|
||||
COLDENT EQU $03D3
|
||||
SRESET EQU $03F2
|
||||
PRNTAX EQU $F941
|
||||
BELL EQU $FBE4
|
||||
IOSAVE EQU $FF4A
|
||||
IOREST EQU $FF3F
|
||||
BITON0 EQU $01
|
||||
BITON1 EQU $02
|
||||
BITON2 EQU $04
|
||||
BITON3 EQU $08
|
||||
BITON4 EQU $10
|
||||
BITON5 EQU $20
|
||||
BITON6 EQU $40
|
||||
BITON7 EQU $80
|
||||
MAIN_START
|
||||
@@ -1,256 +0,0 @@
|
||||
]RIGHT DS 1
|
||||
]LEFT DS 1
|
||||
]LENGTH DS 1
|
||||
]A DS 1
|
||||
]X DS 1
|
||||
]Y DS 1
|
||||
]C DS 1
|
||||
]Z DS 1
|
||||
]N DS 1
|
||||
]O DS 1
|
||||
]HEXTAB ASC "0123456789ABCDEF"
|
||||
]COUT EQU $FDF0
|
||||
]KYBD EQU $C000
|
||||
]STROBE EQU $C010
|
||||
__DUMP
|
||||
STY ]LENGTH
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDA #$8D
|
||||
JSR ]COUT
|
||||
LDA ADDR1+1
|
||||
CLRHI
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1+1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1
|
||||
CLRHI
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA ADDR1
|
||||
AND #$0F
|
||||
TAX
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA #":"
|
||||
JSR ]COUT
|
||||
LDA "#"
|
||||
JSR ]COUT
|
||||
LDY #0
|
||||
:LP
|
||||
LDA (ADDR1),Y
|
||||
CLRHI ; ++<[16C10B] AT COUNTER OFFSET
|
||||
STA ]LEFT
|
||||
LDA (ADDR1),Y
|
||||
AND #$0F
|
||||
STA ]RIGHT
|
||||
LDX ]LEFT
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDX ]RIGHT
|
||||
LDA ]HEXTAB,X
|
||||
JSR ]COUT
|
||||
LDA #160
|
||||
JSR ]COUT
|
||||
INY
|
||||
CPY ]LENGTH
|
||||
BNE :LP
|
||||
RTS
|
||||
__ERRH
|
||||
LDA #1
|
||||
STA $AAB6
|
||||
STA $75+1
|
||||
STA $33
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDA #$FF
|
||||
STA $D8
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA $9D5A
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
STA $9D5B
|
||||
RTS
|
||||
__P
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
LDY #1
|
||||
:LP LDA (ADDR1),Y
|
||||
BEQ :DONE
|
||||
JSR ]COUT
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE CLC
|
||||
TYA
|
||||
ADC ADDR1
|
||||
STA ADDR1
|
||||
LDA ADDR1+1
|
||||
ADC #0
|
||||
PHA ; ++<3C1B> IF NEEDED
|
||||
LDA ADDR1
|
||||
PHA
|
||||
RTS
|
||||
DELAYMS
|
||||
]MSCNT EQU $0CA
|
||||
|
||||
|
||||
:DELAY
|
||||
CPY #0
|
||||
BEQ :EXIT
|
||||
NOP
|
||||
CPY #1
|
||||
BNE :DELAYA
|
||||
JMP :LAST1
|
||||
:DELAYA
|
||||
DEY
|
||||
:DELAY0
|
||||
LDX #]MSCNT
|
||||
:DELAY1
|
||||
DEX
|
||||
BNE :DELAY1
|
||||
NOP
|
||||
NOP
|
||||
DEY
|
||||
BNE :DELAY0
|
||||
:LAST1
|
||||
LDX #]MSCNT-3
|
||||
:DELAY2
|
||||
DEX
|
||||
BNE :DELAY2
|
||||
:EXIT
|
||||
RTS
|
||||
]FILL EQU BPAR1
|
||||
]SIZE EQU WPAR2
|
||||
]ADDR EQU WPAR1
|
||||
MEMFILL
|
||||
LDA ]FILL
|
||||
LDX ]SIZE+1
|
||||
BEQ :PARTPG
|
||||
LDY #0
|
||||
:FULLPG
|
||||
STA (]ADDR),Y
|
||||
INY
|
||||
BNE :FULLPG
|
||||
INC ]ADDR+1
|
||||
DEX
|
||||
BNE :FULLPG
|
||||
:PARTPG
|
||||
LDX ]SIZE
|
||||
BEQ :EXIT
|
||||
LDY #0
|
||||
:PARTLP
|
||||
STA (]ADDR),Y
|
||||
INY
|
||||
DEX
|
||||
BNE :PARTLP
|
||||
:EXIT
|
||||
RTS
|
||||
]SIZE EQU WPAR3
|
||||
]ADDR1 EQU WPAR1
|
||||
]ADDR2 EQU WPAR2
|
||||
MEMMOVE
|
||||
LDA ]ADDR2
|
||||
SEC
|
||||
SBC ]ADDR1
|
||||
TAX
|
||||
LDA ]ADDR2+1
|
||||
SBC ]ADDR1+1
|
||||
|
||||
TAY
|
||||
TXA
|
||||
CMP ]SIZE
|
||||
TYA
|
||||
SBC ]SIZE+1
|
||||
BCS :DOLEFT
|
||||
JSR :MVERHT
|
||||
JMP :MREXIT
|
||||
:DOLEFT
|
||||
JSR :MVELEFT
|
||||
:EXIT
|
||||
JMP :MREXIT
|
||||
:MVELEFT
|
||||
LDY #0
|
||||
LDX ]SIZE+1
|
||||
BEQ :MLPART
|
||||
:MLPAGE
|
||||
LDA (]ADDR1),Y
|
||||
STA (]ADDR2),Y
|
||||
INY
|
||||
BNE :MLPAGE
|
||||
INC ]ADDR1+1
|
||||
INC ]ADDR2+1
|
||||
DEX
|
||||
BNE :MLPAGE
|
||||
|
||||
:MLPART
|
||||
LDX ]SIZE
|
||||
BEQ :MLEXIT
|
||||
|
||||
|
||||
:MLLAST
|
||||
LDA (]ADDR1),Y
|
||||
STA (]ADDR2),Y
|
||||
INY
|
||||
DEX
|
||||
BNE :MLLAST
|
||||
:MLEXIT
|
||||
JMP :MREXIT
|
||||
:MVERHT
|
||||
LDA ]SIZE+1
|
||||
CLC
|
||||
ADC ]ADDR1+1
|
||||
STA ]ADDR1+1
|
||||
LDA ]SIZE+1
|
||||
CLC
|
||||
ADC ]ADDR2+1
|
||||
STA ]ADDR2+1
|
||||
LDY ]SIZE
|
||||
BEQ :MRPAGE
|
||||
:MR0
|
||||
DEY
|
||||
LDA (]ADDR1),Y
|
||||
STA (]ADDR2),Y
|
||||
CPY #0
|
||||
BNE :MR0
|
||||
:MRPAGE
|
||||
LDX ]SIZE+1
|
||||
BEQ :MREXIT
|
||||
:MR1
|
||||
DEC ]ADDR1+1
|
||||
DEC ]ADDR2+1
|
||||
:MR2
|
||||
DEY
|
||||
LDA (]ADDR1),Y
|
||||
STA (]ADDR2),Y
|
||||
CPY #0
|
||||
BNE :MR2
|
||||
DEX
|
||||
BNE :MR1
|
||||
:MREXIT
|
||||
RTS
|
||||
]SIZE EQU BPAR1
|
||||
]ADDR1 EQU WPAR1
|
||||
]ADDR2 EQU WPAR2
|
||||
MEMSWAP
|
||||
LDY #255
|
||||
:LP
|
||||
INY
|
||||
LDA (]ADDR1),Y
|
||||
TAX
|
||||
LDA (]ADDR2),Y
|
||||
STA (]ADDR1),Y
|
||||
TXA
|
||||
STA (]ADDR2),Y
|
||||
CPY ]SIZE
|
||||
BNE :LP
|
||||
RTS
|
||||
RTS
|
||||
@@ -1,117 +0,0 @@
|
||||
CALL MAC
|
||||
JSR ]1
|
||||
<<<
|
||||
RET MAC
|
||||
RTS
|
||||
<<<
|
||||
JA MAC
|
||||
BCS ]ABOVE
|
||||
BEQ ]EXIT
|
||||
BCC ]EXIT
|
||||
]ABOVE JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
JAE MAC
|
||||
BCS ]ABEQ
|
||||
JMP ]EXIT
|
||||
]ABEQ JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
JB MAC
|
||||
BCC ]BELOW
|
||||
JMP ]EXIT
|
||||
]BELOW JMP ]1
|
||||
]EXIT <<<
|
||||
JBE MAC
|
||||
BEQ ]BELEQ
|
||||
BCC ]BELEQ
|
||||
JMP ]EXIT
|
||||
]BELEQ JMP ]1
|
||||
]EXIT <<<
|
||||
JC MAC
|
||||
JB ]1 ++<[4B8C]>
|
||||
<<<
|
||||
JE MAC
|
||||
BEQ ]EQ
|
||||
JMP ]EXIT
|
||||
]EQ JMP ]1
|
||||
]EXIT <<<
|
||||
JG MAC
|
||||
JA ]1
|
||||
<<<
|
||||
JGE MAC
|
||||
JAE ]1
|
||||
<<<
|
||||
JL MAC
|
||||
JB ]1
|
||||
]EXIT <<<
|
||||
JLE MAC
|
||||
JBE ]1
|
||||
<<<
|
||||
JNC MAC
|
||||
BCC ]CLR
|
||||
JMP ]EXIT
|
||||
]CLR JMP ]1
|
||||
]EXIT <<<
|
||||
JNE MAC
|
||||
BNE ]NE
|
||||
JMP ]EXIT
|
||||
]NE JMP ]1
|
||||
]EXIT <<<
|
||||
JZ MAC
|
||||
BEQ ]ZERO
|
||||
JMP ]EXIT
|
||||
]ZERO JMP ]1
|
||||
]EXIT <<<
|
||||
JNZ MAC
|
||||
BNE ]NOTZ
|
||||
JMP ]EXIT
|
||||
]NOTZ JMP ]1
|
||||
]EXIT <<<
|
||||
JS MAC
|
||||
BPL ]PLUS
|
||||
JMP ]EXIT
|
||||
]PLUS JMP ]1
|
||||
]EXIT <<<
|
||||
JNS MAC
|
||||
BMI ]MIN
|
||||
JMP ]EXIT
|
||||
]MIN JMP ]1
|
||||
]EXIT <<<
|
||||
JO MAC
|
||||
BVS ]OV
|
||||
JMP ]EXIT
|
||||
]OV JMP ]1
|
||||
]EXIT <<<
|
||||
JNO MAC
|
||||
BVC ]NOV
|
||||
JMP ]EXIT
|
||||
]NOV JMP ]1
|
||||
]EXIT <<<
|
||||
ANC MAC
|
||||
CLC
|
||||
LDA ]1
|
||||
ADC ]2
|
||||
CLC
|
||||
<<<
|
||||
SNC MAC
|
||||
SEC
|
||||
LDA ]1
|
||||
SBC ]2
|
||||
SEC
|
||||
<<<
|
||||
PUSHA MAC
|
||||
PHP
|
||||
PHA
|
||||
CPHY
|
||||
CPHX
|
||||
<<<
|
||||
PULLA MAC
|
||||
CPLX
|
||||
CPLY
|
||||
PLA
|
||||
PLP
|
||||
<<<
|
||||
POPA MAC
|
||||
PULLA
|
||||
<<<
|
||||
@@ -1,22 +0,0 @@
|
||||
CALL MAC
|
||||
JSR ]1
|
||||
<<<
|
||||
CPL MAC
|
||||
EOR $FF
|
||||
<<<
|
||||
JP MAC
|
||||
JMP ]1
|
||||
<<<
|
||||
LD MAC
|
||||
|
||||
|
||||
<<<
|
||||
POP MAC
|
||||
PLA
|
||||
<<<
|
||||
RET MAC
|
||||
RTS
|
||||
<<<
|
||||
SCF MAC
|
||||
SEC
|
||||
<<<
|
||||
@@ -1,292 +0,0 @@
|
||||
_AXLIT MAC
|
||||
IF #=]1
|
||||
LDX ]1/$100
|
||||
LDA ]1
|
||||
ELSE
|
||||
LDX ]1+1
|
||||
LDA ]1
|
||||
FIN
|
||||
<<<
|
||||
_AXSTR MAC
|
||||
IF "=]1 ;...... IF ]1 IS A STRING
|
||||
JMP __STRCNT2
|
||||
]STRTMP STR ]1
|
||||
__STRCNT2
|
||||
LDX #>]STRTMP
|
||||
LDA #<]STRTMP
|
||||
ELSE
|
||||
_AXLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
_ISLIT MAC
|
||||
IF #=]1
|
||||
LDA ]1/$100
|
||||
PHA
|
||||
LDA ]1
|
||||
PHA
|
||||
ELSE
|
||||
LDA ]1+1
|
||||
PHA
|
||||
LDA ]1
|
||||
PHA
|
||||
FIN
|
||||
<<<
|
||||
_ISSTR MAC
|
||||
IF "=]1 ;...... IF ]1 IS A STRING
|
||||
JMP __STRCONT
|
||||
]STRTMP STR ]1
|
||||
__STRCONT
|
||||
LDA #>]STRTMP
|
||||
PHA
|
||||
LDA #<]STRTMP
|
||||
PHA
|
||||
ELSE
|
||||
_ISLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
_MLIT MAC
|
||||
IF #=]1
|
||||
LDA ]1/$100
|
||||
STA ]2+1
|
||||
LDA ]1
|
||||
STA ]2
|
||||
ELSE
|
||||
LDA ]1+1
|
||||
STA ]2+1
|
||||
LDA ]1
|
||||
STA ]2
|
||||
FIN
|
||||
<<<
|
||||
_MSTR MAC
|
||||
IF "=]1 ;...... IF ]1 IS A STRING
|
||||
JMP __STRCONT
|
||||
]STRTMP STR ]1
|
||||
__STRCONT
|
||||
LDA #>]STRTMP
|
||||
STA ]2+1
|
||||
LDA #<]STRTMP
|
||||
STA ]2
|
||||
ELSE
|
||||
_ISLIT ]1
|
||||
FIN
|
||||
<<<
|
||||
_PRN MAC
|
||||
STY SCRATCH
|
||||
JSR __P
|
||||
ASC ]1
|
||||
HEX 00
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
_WAIT MAC
|
||||
]LP LDA ]KYBD
|
||||
BPL ]LP
|
||||
AND #$7F
|
||||
STA ]STROBE
|
||||
<<<
|
||||
BCCL MAC
|
||||
BCC ]TOBCC
|
||||
]NOBCC JMP ]EXIT
|
||||
]TOBCC JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
BCSL MAC
|
||||
BCS ]TOBCS
|
||||
]NOBCS JMP ]EXIT
|
||||
]TOBCS JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
BEEP MAC
|
||||
STY SCRATCH
|
||||
LDX ]1
|
||||
]LP1
|
||||
JSR BELL
|
||||
DEX
|
||||
CPX #0
|
||||
BNE ]LP1
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
BEQL MAC
|
||||
BEQ ]TOBEQ
|
||||
]NOBEQ JMP ]EXIT
|
||||
]TOBEQ JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
BNEL MAC
|
||||
BNE ]TOBNE
|
||||
]NOBNE JMP ]EXIT
|
||||
]TOBNE JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
BMIL MAC
|
||||
BMI ]TOBMI
|
||||
]NOBMI JMP ]EXIT
|
||||
]TOBMI JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
BPLL MAC
|
||||
BPL ]TOBPL
|
||||
]NOBPL JMP ]EXIT
|
||||
]TOBPL JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
BVCL MAC
|
||||
BVC ]TOBVC
|
||||
]NOBVC JMP ]EXIT
|
||||
]TOBVC JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
BVSL MAC
|
||||
BVS ]TOBVS
|
||||
]NOBVS JMP ]EXIT
|
||||
]TOBVS JMP ]1
|
||||
]EXIT
|
||||
<<<
|
||||
CBRA MAC
|
||||
JMP ]1
|
||||
<<<
|
||||
CPHX MAC
|
||||
STA SCRATCH
|
||||
TXA
|
||||
PHA
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
CPHY MAC
|
||||
STA SCRATCH
|
||||
TYA
|
||||
PHA
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
CPLX MAC
|
||||
STA SCRATCH
|
||||
PLA
|
||||
TAX
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
CPLY MAC
|
||||
STA SCRATCH
|
||||
PLA
|
||||
TAY
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
CTXY MAC
|
||||
STA SCRATCH
|
||||
TXA
|
||||
TAY
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
CTYX MAC
|
||||
STA SCRATCH
|
||||
TYA
|
||||
TAX
|
||||
LDA SCRATCH
|
||||
<<<
|
||||
CLRHI MAC
|
||||
AND #$F0
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
LSR
|
||||
<<<
|
||||
DELAY MAC
|
||||
STY SCRATCH
|
||||
LDY ]1
|
||||
JSR DELAYMS
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
DUMP MAC
|
||||
_AXLIT ]1
|
||||
STY SCRATCH
|
||||
LDY ]2
|
||||
JSR __DUMP
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
GBIT MAC
|
||||
LDA ]1
|
||||
AND ]2
|
||||
BEQ ]ZERO
|
||||
LDA #1
|
||||
JMP ]EXIT
|
||||
]ZERO LDA #0
|
||||
]EXIT <<<
|
||||
ERRH MAC
|
||||
STY SCRATCH
|
||||
_AXLIT
|
||||
JSR __ERRH
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
GRET MAC
|
||||
STY SCRATCH
|
||||
_AXLIT ]1
|
||||
STA ADDR1
|
||||
STX ADDR1+1
|
||||
LDY #255
|
||||
]LP
|
||||
INY
|
||||
LDA RETURN,Y
|
||||
STA (ADDR1),Y ; ++<6C2B> COUNTER OFFSET
|
||||
CPY RETLEN
|
||||
BNE ]LP
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
MFILL MAC
|
||||
STY SCRATCH
|
||||
_MLIT ]1;WPAR1
|
||||
_MLIT ]2;WPAR2
|
||||
LDA ]3
|
||||
STA BPAR1
|
||||
JSR MEMFILL
|
||||
LDY SCRATCH
|
||||
MOV MAC
|
||||
IF A=]1
|
||||
IF X=]2
|
||||
TAX
|
||||
ELSE
|
||||
IF Y=]2
|
||||
TAY
|
||||
ELSE
|
||||
STA ]2
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
IF $=]1
|
||||
IF A=]2
|
||||
LDA ]1
|
||||
ELSE
|
||||
IF X=]2
|
||||
LDX ]1
|
||||
ELSE
|
||||
IF Y=]2
|
||||
LDY ]1
|
||||
ELSE
|
||||
STY SCRATCH
|
||||
LDY ]1
|
||||
STY ]2
|
||||
LDY SCRATCH
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
FIN
|
||||
]EXIT <<<
|
||||
MOVB MAC
|
||||
STY SCRATCH
|
||||
_MLIT ]1;WPAR1
|
||||
_MLIT ]2;WPAR2
|
||||
_MLIT ]3;WPAR3
|
||||
JSR MEMMOVE
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
MSWAP MAC
|
||||
STY SCRATCH
|
||||
_MLIT ]2;WPAR2
|
||||
_MLIT ]1;WPAR1
|
||||
LDA ]3
|
||||
STA BPAR1
|
||||
JSR MEMSWAP
|
||||
LDY SCRATCH
|
||||
<<<
|
||||
PEEK MAC
|
||||
LDA ]1
|
||||
<<<
|
||||
POKE MAC
|
||||
STA ]1
|
||||
<<<
|
||||
@@ -1,3 +0,0 @@
|
||||
BLOAD NO.MINIFY
|
||||
CALL -151
|
||||
7000G
|
||||
@@ -1,3 +0,0 @@
|
||||
BLOAD MINIFY
|
||||
CALL -151
|
||||
7000G
|
||||