; Sensei boot0 (disk block $0000) ; ; 0800: 01 - DB $01 ; it's always 1 0801: 08 - PHP 0802: 48 - PHA 0803: 5A - PHY 0804: DA - PHX 0805: 8A - TXA 0806: 29 70 - AND #$70 0808: 4A - LSR 0809: 4A - LSR 080A: 4A - LSR 080B: 4A - LSR 080C: 09 C0 - ORA #$C0 080E: 8D 8C 09 - STA $098C ; $098C = $Cx where x is boot slot number 0811: 20 8A 09 - JSR $098A ; $098A is now a JMP to C5FF (for example) 0814: 18 - CLC 0815: 69 03 - ADC #$0C 0817: 8D 8B 09 - STA $098B ; $098A is now a JMP to C50D (for example) 081A: 20 59 08 - JSR $0859 ; initialize text mode 081D: 20 8B 08 - JSR $088B ; check if ctrl+shift pressed, show 'F.U.C.K. SmartBoot v1.2' if so 0820: 20 D2 08 - JSR $08D2 ; set up params and load disk blocks 0823: 20 3A 09 - JSR $093A ; load block $0001 at $00/0A00 0826: 8B - PHB 0827: 0B - PHD 0828: 20 F9 09 - JSR $09F9 ; JSL $00/1000 082B: 2B - PLD 082C: AB - PLB 082D: E2 31 - SEP $31 082F: FB - XCE 0830: 20 9D 09 - JSR $099D ; restore text/border colors 0833: A0 18 - LDY #$18 0835: B9 41 08 - LDA $0841,Y 0838: 99 00 03 - STA $0300,Y 083B: 88 - DEY 083C: 10 F7 - BPL $0835 083E: 4C 00 03 - JMP $0300 ; this gets relocated to $0300 and jmp'd to 0841: A2 00 - LDX #$00 0843: BD 00 0A - LDA $0A00,X 0846: 9D 00 08 - STA $0800,X 0849: BD 00 0B - LDA $0B00,X 084C: 9D 00 09 - STA $0900,X 084F: CA - DEX 0850: D0 F1 - BNE $1043 0852: FA - PLX 0853: 7A - PLY 0854: 68 - PLA 0855: 28 - PLP 0856: 4C 01 08 - JMP $0801 ; subroutine to initialize text mode 0859: EE F4 03 - INC $03F4 ; corrupt $03F4; reset will reboot 085C: A9 40 - LDA #$40 085E: 0C 29 C0 - TSB $C029 ; VGC mode: text 0861: A9 80 - LDA #$80 0863: 0C 36 C0 - TSB $C036 ; CYAREG: fast system speed? 0866: 8D 0C C0 - STA $C00C ; 40 columns 0869: 8D 00 C0 - STA $C000 ; clear keyboard strobe 086C: 8D 0E C0 - STA $C00E ; primary character set 086F: 38 - SEC 0870: FB - XCE 0871: 20 89 FE - JSR $FE89 ; in #0 0874: 20 84 FE - JSR $FE84 ; output 'normal' text 0877: 20 2F FB - JSR $FB2F ; text mode 087A: 20 58 FC - JSR $FC58 ; clear screen 087D: 20 93 FE - JSR $FE93 ; pr #0 0880: 9C 34 C0 - STZ $C034 ; black border color 0883: A9 F0 - LDA #$F0 0885: 8D 22 C0 - STA $C022 ; white text on black background 0888: 18 - CLC 0889: FB - XCE 088A: 60 - RTS ; subroutine to check for modifier keys and print 'F.U.C.K. Smartboot v1.2' 088B: AD 25 C0 - LDA $C025 088E: 89 01 - BIT #$01 ; check for shift pressed? 0890: EA - NOP 0891: EA - NOP 0892: 89 02 - BIT #$02 ; check for ctrl pressed? 0894: D0 0A - BNE $08A0 0896: 60 - RTS 0897: A9 2C - LDA #$2C 0899: 8D 28 08 - STA $0828 ; change JSR $09F9 to BIT $09F9? 089C: 8D 20 08 - STA $0820 ; change JSR $08D2 to BIT $08D2? 089F: 60 - RTS 08A0: A9 28 - LDA #$28 ; print 'F.U.C.K. SmartBoot v1.2' at top of screen and return 08A2: 38 - SEC 08A3: ED BA 08 - SBC $08BA ; math appears to be for centering text. cute. 08A6: 4A - LSR 08A7: 18 - CLC 08A8: 69 D0 - ADC #$D0 08AA: 8D B4 08 - STA $08B4 08AD: AE BA 08 - LDX $08BA 08B0: BD BA 08 - LDA $08BA,X 08B3: 9D D0 07 - STA $07D0,X 08B6: CA - DEX 08B7: D0 F7 - BNE $08B0 08B9: 60 - RTS 08BA: 17 - DB $17 08BB: - STR 'F.U.C.K. SmartBoot v1.2' ; copy params and load disk blocks 08D2: A2 00 - LDX #$00 08D4: C2 20 - REP $20 08D6: BD D0 09 - LDA $09D0,X 08D9: F0 16 - BEQ $08F1 08DB: 8D 38 09 - STA $0938 ; $0938 -> $9A $04 (disk block number $049A) 08DE: E8 - INX 08DF: E8 - INX 08E0: BD D0 09 - LDA $09D0,X 08E3: 8D F4 08 - STA $08F4 ; $08F4 -> $10 $00 (memory location $00/1000) 08E6: E8 - INX 08E7: E8 - INX 08E8: E2 20 - SEP $20 08EA: DA - PHX 08EB: 20 F6 08 - JSR $08F6 ; load disk blocks 08EE: FA - PLX 08EF: 80 E3 - BRA $08D4 08F1: E2 20 - SEP $20 08F3: 60 - RTS 08F4: 00 00 - DB $00,$00 ; gets set to a memory address ; disk loading here 08F6: C2 20 - REP $20 ; long A 08F8: A9 0A 00 - LDA #$000A 08FB: 8D 96 09 - STA $0996 ; smartport memory buffer: $00/0A00 08FE: E2 20 - SEP $20 ; short A 0900: AD 38 09 - LDA $0938 ; A = $9A 0903: AE 39 09 - LDX $0939 ; X = $04 0906: 20 4A 09 - JSR $094A ; load block $049A @ $00/0A00 0909: C2 20 - REP $20 ; long A 090B: AD F4 08 - LDA $08F4 090E: 8D 96 09 - STA $0996 ; smartport memory buffer: $00/1000 0911: E2 20 - SEP $20 0913: A0 00 - LDY #$00 ; loop to load disk blocks into RAM 0915: B9 00 0A - LDA $0A00,Y ; $0A00 / $0B00 has table of blocks to load 0918: BE 00 0B - LDX $0B00,Y 091B: D0 04 - BNE $0921 091D: C9 00 - CMP #$00 091F: F0 12 - BEQ $0933 ; branch out if done 0921: 5A - PHY 0922: 20 4A 09 - JSR $094A ; load block number A(lo)+X(hi) into buffer address 0925: 7A - PLY 0926: C8 - INY 0927: C2 20 - REP $20 0929: EE 96 09 - INC $0996 092C: EE 96 09 - INC $0996 ; inc buffer address in smartport params 092F: E2 20 - SEP $20 0931: 80 E2 - BRA $0915 0933: C0 00 - CPY #$00 0935: F0 2E - BEQ $0965 ; Y=0? something went wrong, crash out 0937: 60 - RTS 0938: 00 00 - DB $00,$00 ; gets set to a disk block number ; load block $0001 at $00/0A00 093A: C2 20 - REP $20 093C: A9 0A 00 - LDA #$000A 093F: 8D 96 09 - STA $0996 0942: E2 20 - SEP $20 0944: AD FE 09 - LDA $09FE 0947: AE FF 09 - LDX $09FF ; load block number A(lo)+X(hi) into buffer address 094A: 8D 99 09 - STA $0999 ; save blk number (lo) 094D: 8E 9A 09 - STX $099A ; save blk number (hi) 0950: 38 - SEC 0951: FB - XCE 0952: 20 8A 09 - JSR $098A ; perform smartport entry 0955: 41 - DB $41 ; cmd $41 (extended read) 0956: 93 09 00 00 - ADRL $000993 ; long ptr to parameters 095A: B0 02 - BCS $095E 095C: FB - XCE ; cute, no clc because we know carry is clear 095D: 60 - RTS 095E: C9 2E - CMP #$2E 0960: F0 F0 - BEQ $0952 ; carry set, A=$23 == try again ; _SysDeathMgr error handler 0962: 8D 7A 09 - STA $097A 0965: 18 - CLC 0966: FB - XCE 0967: C2 30 - REP $30 0969: AD 7A 09 - LDA $097A 096C: 48 - PHA 096D: F4 00 00 - PEA $0000 0970: F4 7C 09 - PEA $097C 0973: A2 03 15 - LDA #$1503 0976: 22 00 00 E1 - JSL $E10000 ; call _SysDeathMgr (hey at least they don't call themselves "FTA") 097A: 00 00 - DB $00,$00 ; error number gets saved here 097C: 0D - DB $0D ; length of error message 097D: - STR 'BOOT ERROR : ' ; 098A ends up being something we can JSR to as a smartport entry point 098A: AD FF C5 - LDA $C5FF 098D: A2 4C - LDX #$4C 098F: 8E 8A 09 - STX $098A ; self-modification: $098A now JMPs to $C5FF (for example) 0992: 60 - RTS ; 0993: smartport parameters 0993: 03 01 - DB $03,$01 ; smartport entry params: 3 parameters, unit 1 0995: 00 00 00 00 - DB $00,00,00,00 ; buffer ptr (extended) 0999: 00 00 00 00 - DB $00,00,00,00 ; block number (extended) ; subroutine to restore text/border colors 099D: AF DC 02 E1 - LDAL $E102DC 09A1: 8D 34 C0 - STA $C034 ; restore control-panel border color 09A4: AF DB 02 E1 - LDAL $E102DB 09A8: 48 - PHA 09A9: AF DA 02 E1 - LDAL $E102DA 09AD: 0A - ASL 09AE: 0A - ASL 09AF: 0A - ASL 09B0: 0A - ASL 09B1: 03 01 - ORA $01,S 09B3: 8D 22 C0 - STA $C022 ; restore control-panel text/bg colors 09B6: 68 - PLA 09B7: 60 - RTS 09D0: 9A 04 10 - DB $9A,$04,$10 ; block loading info 09D3: 00 00 00 - DB $00,$00,$00 ; lots of zeroes until ... 09F9: 22 00 10 00 - JSL $001000 09FD: 60 - RTS 09FE: 01 00 - DB $01,$00 ; disk block $049A (1178), contains tables of blocks to load etc ; block numbers (lo) 0A00: 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA 0A10: AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA 0A20: BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA 0A30: CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA 0A40: DB DC DD DE 16 00 00 00 00 00 00 00 00 00 00 00 ; .. all zeroes until .. ; block numbers (hi) 0B00: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0B10: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0B20: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0B30: 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0B40: 04 04 04 04 05 00 00 00 00 00 00 00 00 00 00 00 ; ends up loading these blocks: ; $049B - $04DE at $1000 - $9800 ; $0516 at $9800? ; disk block $0001, contains more tables (TODO unknown what they are) ; 0A00: C8 C8 C8 C8 A0 C5 C5 C8 C8 C8 C8 D4 00 00 00 00 0A10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A20: C5 C5 C5 C5 A0 B2 B2 C5 C5 C5 C5 C9 00 00 00 00 0A30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A40: CC CC CC CC A0 A0 A0 CC CC CC CC C7 00 00 00 00 0A50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A60: C9 C9 C9 C9 A0 A0 A0 C9 C9 C9 C9 C5 00 00 00 00 0A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A80: D8 D8 D8 D8 A0 A0 A0 D8 D8 D8 D8 D2 00 00 00 00 0A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0AA0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 00 00 00 00 0AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0AC0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 00 00 00 00 0AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0AE0: A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 00 00 00 00 0AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ? 0B00: 03 02 02 02 01 01 01 01 01 01 01 01 00 00 00 00 0B10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B20: 48 68 29 14 91 83 78 76 66 57 32 21 00 00 00 00 0B30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B40: 05 04 03 03 03 04 05 02 02 02 04 04 00 00 00 00 0B50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B80: DA DA 00 00 00 00 30 97 EE 5C A6 00 00 00 00 00 0B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0BA0: 00 CC 86 39 40 A6 F3 0A 00 00 00 00 00 00 00 00 0BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0BC0: 00 00 00 00 00 80 8C 09 D0 A6 61 9B 02 F3 6B D2 0BD0: 77 28 97 00 00 00 00 00 00 00 00 00 00 00 00 00 0BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; Sensei boot1 (disk block $049B / 1179 @ $00/1000) ; 1000: 80 2A - BRA $102C 1002: 13 - DB $13 1003: - STR 'Sensei Loader v1.0023-MAR-91 5:00:39 PM' 102C: 20 3E 13 - JSR $133E ; basic setup operations, start tools, check RAM size 102F: 20 72 14 - JSR $1472 ; more setup, dependent on ROM version 1032: C2 30 - REP $30 1034: A9 07 00 - LDA #$0007 ; load blocks from table at blk number $0007 (soundsmith song) 1037: 20 95 12 - JSR $1295 ; load at $0F/0000 103A: 20 C8 12 - JSR $12C8 103D: C2 30 - REP $30 103F: A9 03 00 - LDA #$0003 1042: 85 FA - STA $FA 1044: A9 00 00 - LDA #$0000 1047: 85 F8 - STA $F8 ; F8/FA = 00 00 03 00 for dest address $03/0000 1049: A9 0D 00 - LDA #$000D 104C: 20 E5 14 - JSR $14E5 ; load blocks from table at blk number $000D 104F: C2 30 - REP $30 1051: A9 90 00 - LDA #$0090 ; load blocks from table at blk number $0090 1054: 20 95 12 - JSR $1295 ; load at $0F/0000 1057: 20 A4 12 - JSR $12A4 105A: 20 E6 12 - JSR $12E6 105D: C2 30 - REP $30 105F: A9 93 00 - LDA #$0093 ; load blocks from table at blk number $0093 1062: 20 95 12 - JSR $1295 ; load at $0F/0000 1065: 20 13 21 - JSR $2113 1068: C2 30 - REP $30 106A: A9 A7 00 - LDA #$00A7 ; load blocks from table at blk number $00A7 106D: 20 95 12 - JSR $1295 ; load at $0F/0000 1070: C2 30 - REP $30 1072: A2 03 00 - LDX #$0003 1075: 20 7A 12 - JSR $127A 1078: 20 68 26 - JSR $2668 107B: 20 A4 12 - JSR $12A4 1073: 20 12 13 - JSR $1312 1081: C2 30 - REP $30 1083: A9 AA 00 - LDA #$00AA ; load blocks from table at blk number $00AA 1086: 20 95 12 - JSR $1295 ; load at $0F/0000 1089: C2 30 - REP $30 108B: A2 01 00 - LDX #$0001 108E: 20 7A 12 - JSR $127A 1091: 20 68 26 - JSR $2668 1094: 20 A4 12 - JSR $12A4 1097: 20 12 13 - JSR $1312 109A: C2 30 - REP $30 109C: A9 B2 00 - LDA #$00B2 ; load blocks from table at blk number $00B2 109F: 20 95 12 - JSR $1295 ; load at $0F/0000 10A2: C2 30 - REP $30 10A4: 20 88 1F - JSR $1F88 10A7: C2 30 - REP $30 10A9: A9 BA 00 - LDA #$00BA ; load blocks from table at blk number $00BA 10AC: 20 95 12 - JSR $1295 ; load at $0F/0000 10AF: C2 30 - REP $30 10B1: A2 05 00 - LDX #$0005 10B4: 20 7A 12 - JSR $127A 10B7: 20 68 26 - JSR $2668 10BA: 20 A4 12 - JSR $12A4 10BD: 20 12 13 - JSR $1312 10C0: C2 30 - REP $30 10C2: A0 0A 00 - LDA #$000A 10C5: 85 FA - STA $FA 10C7: A9 00 00 - LDA #$0000 10CA: 85 F8 - STA $F8 10CC: A9 BD 00 - LDA #$00BD 10CF: 20 E5 14 - JSR $14E5 ; load all blocks in the table at blk number $00BD 10D2: C2 30 - REP $30 10D4: A9 E3 00 - LDA #$00E3 ; load blocks from table at blk number $00E3 10D7: 20 95 12 - JSR $1295 ; load at $0F/0000 10DA: C2 30 - REP $30 10DC: A2 01 00 - LDX #$0001 10DF: 20 7A 12 - JSR $127A 10E2: 20 86 1E - JSR $1E86 10E5: 20 00 91 - JSR $9100 10E8: 20 03 91 - JSR $9103 10EB: 18 - CLC 10EC: FB - XCE 10ED: C2 30 - REP $30 10EF: 20 A4 12 - JSR $12A4 10F2: 20 E6 12 - JSR $12E6 10F5: 18 - CLC 10F6: FB - XCE 10F7: C2 30 - REP $30 10F9: 20 C0 2C - JSR $2CC0 10FC: 18 - CLC 10FD: FB - XCE 10FE: C2 30 - REP $30 1100: 20 06 91 - JSR $9106 1103: 18 - CLC 1104: FB - XCE 1105: C2 30 - REP $30 1107: C2 30 - REP $30 1109: A9 F7 00 - LDA #$00F7 ; load blocks from table at blk number $00F7 110C: 20 95 12 - JSR $1295 ; load at $0F/0000 110F: C2 30 - REP $30 1111: A9 07 00 - LDA #$0007 1114: 85 0A - STA $0A 1116: A9 00 00 - LDA #$0000 1119: 85 08 - STA $08 111B: A9 0F 00 - LDA #$000F 111E: 8D 4F 1D - STA $1D4F 1121: A9 00 00 - LDA #$0000 1124: 8D 4D 1D - STA $1D4D 1127: A9 82 00 - LDA #$0082 112A: 20 AE 1C - STA $1CAE 112D: C2 30 - REP $30 112F: A9 06 01 - LDA #$0106 ; load blocks from table at blk number $0106 1132: 20 95 12 - JSR $1295 ; load at $0F/0000 1135: C2 30 - REP $30 1137: A9 07 00 - LDA #$0007 113A: 85 0A - STA $0A 113C: A9 00 80 - LDA #$8000 113F: 85 08 - STA $08 1141: A9 0F 00 - LDA #$000F 1144: 8D 4F 1D - STA $1D4F 1147: A9 00 00 - LDA #$0000 114A: 8D 4D 1D - STA $1D4D 114D: A9 82 00 - LDA #$0082 1150: 20 AE 1C - JSR $1CAE 1153: C2 30 - REP $30 1155: A9 1F 01 - LDA #$011F ; load blocks from table at blk number $011F 1158: 20 95 12 - JSR $1295 ; load at $0F/0000 115B: C2 30 - REP $30 11BD: A9 06 00 - LDA #$0006 1160: 85 0A - STA $0A 1162: A9 00 00 - LDA #$0000 1165: 85 08 - STA $08 1167: A9 0F 00 - LDA #$000F 116A: 8D 4F 1D - STA $1D4F 116D: A9 00 00 - LDA #$0000 1170: 8D 4D 1D - STA $1D4D 1173: A9 82 00 - LDA #$0082 1176: 20 AE 1C - JSR $1CAE 1179: C2 30 - REP $30 117B: A9 28 01 - LDA #$0128 ; load blocks from table at blk number $0128 117E: 20 95 12 - JSR $1295 ; load at $0F/0000 1181: C2 30 - REP $30 1183: A9 06 00 - LDA #$0006 1186: 85 0A - STA $0A 1188: A9 00 80 - LDA #$8000 118B: 85 08 - STA $08 118D: A9 0F 00 - LDA #$000F 1190: 8D 4F 1D - STA $1D4F 1193: A9 00 00 - LDA #$0000 1196: 8D 4D 1D - STA $1D4D 1199: A9 82 00 - LDA #$0082 119C: 20 AE 1C - JSR $1CAE 119F: C2 30 - REP $30 11A1: A9 10 05 - LDA #$0510 ; load blocks from table at blk number $0510 11A4: 20 95 12 - JSR $1295 ; load at $0F/0000 11A7: C2 30 - REP $30 11A9: A9 04 00 - LDA #$0004 11AC: 85 0A - STA $0A 11AE: A9 00 80 - LDA #$8000 11B1: 85 08 - STA $08 11B3: A9 0F 00 - LDA #$000F 11B6: 8D 4F 1D - STA $1D4F 11B9: A9 00 00 - LDA #$0000 11BC: 8D 4D 1D - STA $1D4D 11BF: A9 82 00 - LDA #$0082 11C2: 20 AE 1C - JSR $1CAE 11C5: C2 30 - REP $30 11C7: A9 08 00 - LDA #$0008 11CA: 85 FA - STA $FA 11CC: A9 00 00 - LDA #$0000 11CF: 85 F8 - STA $F8 11D1: A9 33 01 - LDA #$0133 11D4: 20 E5 14 - JSR $14E5 ; load all blocks in the table at blk number $0133 11D7: C2 30 - REP $30 11D9: A9 09 00 - LDA #$0009 11DC: 85 FA - STA $FA 11DE: A9 00 00 - LDA #$0000 11E1: 85 F8 - STA $F8 11E3: A9 8B 01 - LDA #$018B 11E6: 20 E5 14 - JSR $14E5 ; load all blocks in the table at blk number $018B 11E9: C2 E0 - REP $30 11EB: A9 0B 00 - LDA #$000B 11EE: 85 FA - STA $FA 11F0: A9 00 00 - LDA #$0000 11F3: 85 F8 - STA $F8 11F5: A9 E3 01 - LDA #$01E3 11F8: 20 E5 14 - JSR $14E5 ; load all blocks in the table at blk number $01E3 11FB: C2 30 - REP $30 11FD: A9 0C 00 - LDA #$000C ; ; (disk block $049C / 1180 @ $00/1200) ; 1200: 85 FA - STA $FA 1202: A9 00 00 - LDA #$0000 1205: 85 F8 - STA $F8 1207: A9 53 02 - LDA #$0253 120A: 20 E5 14 - JSR $14E5 ; load all blocks in the table at blk number $0253 120D: C2 30 - REP $30 120F: A9 0D 00 - LDA #$000D 1212: 85 FA - STA $FA 1214: A9 00 00 - LDA #$0000 1217: 85 F8 - STA $F8 1219: A9 D4 02 - LDA #$02D4 121C: 20 E5 14 - JSR $14E5 ; load all blocks in the table at blk number $02D4 121F: C2 30 - REP $30 1221: A9 01 00 - LDA #$0001 1224: 8D 78 12 - STA $1278 1227: F4 0C 00 - PEA $000C 122A: 20 9F 14 - JSR $149F 122D: C2 30 - REP $30 122F: A9 07 03 - LDA #$0307 ; load blocks from table at blk number $0307 1232: 20 95 12 - JSR $1295 ; load at $0F/0000 1235: 20 C8 12 - JSR $12C8 1238: C2 30 - REP $30 123A: A9 03 00 - LDA #$0003 123D: 85 FA - STA $FA 123F: A9 00 00 - LDA #$0000 1242: 85 F8 - STA $F8 1244: A9 0F 03 - LDA #$030F 1247: 20 E5 14 - JSR $14E5 ; load all blocks in the table at blk number $030F 124A: C2 30 - REP $30 124C: AD 78 12 - LDA $1278 124F: F0 08 - BEQ $1259 1251: 20 86 1E - JSR $1E86 1254: C2 30 - REP $30 1256: 9C 78 12 - STZ $1278 1259: 20 00 91 - JSR $9100 125C: 20 03 91 - JSR $9103 125F: 18 - CLC 1260: FB - XCE 1261: C2 30 - REP $30 1263: 68 - PLA 1264: 20 D2 3F - JSR $3FD2 1267: 48 - PHA 1268: 20 06 91 - JSR $9106 126B: C2 30 - REP $30 126D: 68 - PLA 126E: 20 17 4C - JSR $4C17 1271: 18 - CLC 1272: FB - XCE 1273: C2 30 - REP $30 1275: 48 - PHA 1276: 80 B2 - BRA $122A 1278: 00 00 - DB $00,$00 ; wait X seconds 127A: E2 30 - SEP $30 127C: A0 37 - LDY #$37 ; 55 iterations 127E: A9 F0 - LDA #$F0 1280: CD 2E C0 - CMP $C02E 1283: D0 FB - BNE $1280 ; wait for VBL 1285: A9 EF - LDA #$EF 1287: CD 2E C0 - CMP $C02E 128A: D0 FB - BNE $1287 128C: 88 - DEY 128D: D0 EF - BNE $127E 128F: CA - DEX 1290: DA EA - BNE $127C 1292: C2 30 - REP $30 1294: 60 - RTS ; called with A= a 16 bit number ; load a block at fixed address $0F/0000 1295: 48 - PHA 1296: A9 0F 00 - LDA #$000F 1299: 85 FA - STA $FA 129B: A9 00 00 - LDA #$0000 129E: 85 F8 - STA $F8 ; F8/FA = 00 00 0F 00 for dest address $0F/0000 12A0: 68 - PLA 12A1: 4C E5 14 - JMP $14E5 ; load all blocks in the table whose block number is in A 12A4: C2 30 - REP $30 12A6: A9 1F 00 - LDA #$001F 12A9: 0C 35 C0 - TSB $C035 ; shadow register 12AC: A9 0F 00 - LDA #$000F 12AF: 85 0A - STA $0A 12B1: A9 00 80 - LDA #$8000 12B4: 85 08 - STA $0B 12B6: A9 0F 00 - LDA #$000F 12B9: 8D 4F 1D - STA $1D4F 12BC: A9 00 00 - LDA #$0000 12BF: 8D 4D 1D - STA $1D4D 12C2: A9 82 00 - LDA #$0082 12C5: 4C AE 1C - JMP $1CAE 12C8: C2 30 - REP $30 12CA: A9 05 00 - LDA #$0005 12CD: 85 0A - STA $0A 12CF: A9 00 00 - LDA #$0000 12D2: 85 08 - STA $08 12D4: A9 0F 00 - LDA #$000F 12D7: 8D 4F 1D - STA $1D4F 12DA: A9 00 00 - LDA #$0000 12DD: 8D 4D 1D - STA $1D4D 12E0: A9 82 00 - LDA #$0082 12E3: 4C AE 1C - JMP $1CAE 12E6: C2 30 - REP $30 12E8: A2 00 80 - LDX #$8000 12EB: A0 00 20 - LDY #$2000 12EE: A9 FF 7F - LDA #$7FFF 12F1: 8B - PHB 12F2: 54 01 0F - MVN $01,$0F 12F5: AB - PLB 12F6: A9 19 00 - LDA #$0019 12F9: 1C 35 C0 - TRB $C035 12FC: 20 CA 2A - JSR $2ACA 12FF: E2 20 - SEP $20 1301: A9 F0 - LDA #$F0 1303: CD 2E C0 - CMP $C02E 1306: D0 FB - BNE $1303 ; wait for VBL 1308: A9 C1 - LDA #$C1 130A: 8D 29 C0 - STA $C029 ; VGC mode: SHR graphics 130D: C2 20 - REP $20 130F: 4C E5 1D - JMP $1DE5 1312: C2 30 - REP $30 1314: A2 00 80 - LDX #$8000 1317: A0 00 20 - LDY #$2000 131A: A9 FF 7F - LDA #$7FFF 131D: 8B - PHB 131E: 54 01 0F - MVN $01,$0F 1321: AB - PLB 1322: A9 19 00 - LDA #$0019 1325: 1C 35 C0 - TRB $C035 1328: 20 CA 2A - JSR $2ACA 132B: E2 20 - SEP $20 132D: A9 F0 - LDA #$F0 132F: CD 2E C0 - CMP $C02E 1332: D0 FB - BNE $132F ; wait for VBL 1334: A9 C1 - LDA #$C1 1336: 8D 29 C0 - STA $C029 1339: C2 20 - REP $20 133B: 4C F9 1E - JMP $1EF9 133E: 38 - SEC 133F: FB - XCE 1340: 4B - PHK 1341: AB - PLB 1342: F4 00 00 - PEA $0000 1345: 2B - PLD 1346: 2C 10 C0 - BIT $C010 1349: AD 00 C0 - LDA $C000 134C: 30 F8 - BMI $1346 ; wait for keypress? 134E: A9 1F - LDA #$1F 1350: 0C 35 C0 - TSB $C035 ; shadow register 1353: A9 19 - LDA #$19 1355: 1C 35 C0 - TRB $C035 1358: 18 - CLC 1359: FB - XCE 135A: E2 30 - SEP $30 135C: A9 F0 - LDA #$F0 135E: CD 2E C0 - CMP $C02E 1361: D0 FB - BNE $135E ; wait for VBL 1363: A9 41 - LDA #$41 1365: 8D 29 C0 - STA $C029 ; VGC text mode 1368: 9C 34 C0 - STZ $C034 ; black border 136B: A9 F0 - LDA #$F0 136D: 8D 22 C0 - STA $C022 ; white text on black background 1370: C2 30 - REP $30 1372: F4 E1 00 - PEA $00E1 1375: AB - PLB 1376: A9 00 00 - LDA #$0000 ; loop to clear both $E1 SHR screen and $01 shadow screen 1379: A2 FE 7F - LDX #$7FFE 137C: 9E 00 20 - STZ $2000,X 137F: 9F 00 20 01 - STAL $012000,X 1383: CA - DEX 1384: CA - DEX 1385: 10 F5 - BPL $137C 1387: AB - PLB 1388: A2 01 02 - LDX #$0201 138B: 22 00 00 E1 - JSL $E10000 ; _TLStartUp (Tool Locator) 138F: A2 03 02 - LDX #$0203 1392: 22 00 00 E1 - JSL $E10000 ; _MTStartUp (Misc Tools) 1396: 48 - PHA 1397: 48 - PHA 1398: 48 - PHA 1399: 48 - PHA 139A: A2 03 0D - LDX #$0D03 139D: 22 00 00 E1 - JSL $E10000 ; _ReadTimeHex (Misc Tools) 13A1: FA - PLX ; X = minute / second 13A2: 68 - PLA ; A = year / hour 13A3: FA - PLX ; X = month / date 13A4: FA - PLX ; X = dayOfWeek / filler word 13A5: 29 FF 00 - AND #$00FF ; A = hour 13A8: C9 16 00 - CMP #$0016 ; is it 22? (10:00pm) 13AB: B0 05 - BCS $13B2 ; yes, 10:00pm or later -> $13B2 13AD: C9 07 00 - CMP #$0007 ; is it 7:00am? 13B0: B0 12 - BCS $13C4 ; yes, 7:00am or later -> $13C4 13B2: E2 30 - SEP $30 ; it's earlier than 7am here? 13B4: AD 25 C0 - LDA $C025 13B7: 89 01 - BIT #$01 ; is shift key pressed? 13B9: D0 09 - BNE $13C4 ; yes, $13C4 13BB: AF CA 00 E1 - LDAL $E100CA 13BF: 4A - LSR 13C0: 8F CA 00 E1 - STAL $E100CA ; night mode: divide system volume by half 13C4: C2 30 - REP $30 13C6: A9 00 00 - LDA #$0000 13C9: 8F FE 15 E1 - STA $E115FE ; TODO no idea 13CD: 20 D4 13 - JSR $13D4 ; initialize Desk Tools 13D0: 20 E8 13 - JSR $13E8 ; check RAM size 13D3: 60 - RTS ; subroutine to initialize desk tools 13D4: 18 - CLC 13D5: FB - XCE 13D6: C2 30 - REP $30 13D8: 22 00 00 FE - JSL $FE0000 ; INITDISP - Initialize DISPATCH handler 13DC: 18 - CLC 13DD: FB - XCE 13DE: C2 30 - REP $30 13E0: A2 05 01 - LDX #$0105 13E3: 22 00 00 E1 - JSL $E10000 ; _DeskBootInit (Desk Tools) 13E7: 60 - RTS 13E8: C2 30 - REP $30 13EA: AF 24 16 E1 - LDAL $E11624 ; well this is a new way to check RAM size... 13EE: 29 FF 00 - AND #$00FF 13F1: C9 10 00 - CMP #$0010 13F4: 90 03 - BCC $13F9 13F6: 4B - PHK 13F7: AB - PLB 13F8: 60 - RTS ; _SysFailMgr error handler for not-enough-memory @ $00/13F9 13F9: F4 01 02 - PEA $0201 13FC: F4 00 00 - PEA $0000 13FF: F4 09 14 - PEA $1409 ; ; (disk block $049D / 1181 @ $00/1400) ; 1403: A2 03 15 - LDX #$1503 1405: 22 00 00 E1 - JSL $E10000 1409: 1B - DB $1B ; string length 140A: - STR 'I want 1 Meg of free Mem : ' 1425: 18 - CLC 1426: FB - XCE 1427: C2 30 - REP $30 1429: F4 E1 00 - PEA $00E1 142C: AB - PLB 142D: A9 00 00 - LDA #$0000 1430: A2 FE 7F - LDX #$7FFE 1433: 9E 00 20 - STZ $2000,X 1436: 9F 00 20 01 - STAL $012000,X 143A: CA - DEX 143B: CA - DEX 143C: 10 F5 - BPL $1433 143E: AB - PLB 143F: C2 30 - REP $30 1441: 78 - SEI 1442: F4 02 00 - PEA $0002 1445: F4 00 00 - PEA $0000 1448: 2B - PLD 1449: 0B - PHD 144A: AB - PLB 144B: 8B - PHB 144C: A9 41 00 - LDA #$0051 144F: 85 00 - STA $00 1451: F4 00 00 - PEA $0000 1454: F4 08 00 - PEA $0008 1457: A2 09 09 - LDX #$0909 145A: 22 00 00 E1 - JSL $E10000 ; _SendInfo (ADB Tools) 145E: B0 E2 - BCS $1442 ; keep trying till it works? 1460: A9 FC FF - LDA #$FFFC 1463: 85 01 - STA $01 ; reset vector 1465: 38 - SEC 1466: FB - XCE 1467: EE F4 03 - INC $03F4 ; corrupt $03F4: reset will reboot 146A: A9 6C - LDA #$6C 146C: 85 00 - STA $00 ; JMP () opcode 146E: 5C 00 00 00 - JML $000000 ; JMP ($FFFC) ; subroutine to patch things differently per machine id / rom revision? 1472: 18 - CLC 1473: FB - XCE 1474: C2 30 - REP $30 1476: A2 00 00 - LDX #$0000 1479: AF 20 0F E1 - LDAL $E10F20 147D: 89 00 FF - BIT #$FF00 1480: F0 11 - BEQ $1493 1482: 9C 69 18 - STZ $1869 1485: A9 01 00 - LDA #$0001 1488: 8D 6B 18 - STA $186B 148B: A9 02 00 - LDA #$0002 148E: 8D 6D 18 - STA $186D 1491: 80 0C - BRA $149F 1493: 9C 69 18 - STZ $1869 1496: 9C 6B 18 - STZ $186B 1499: A9 01 00 - LDA #$0001 149C: 8D 6D 18 - STA $186D 149F: 38 - SEC 14A0: FB - XCE 14A1: 20 1F FE - JSR $FE1F ; check machine id 14A4: 18 - CLC 14A5: FB - XCE 14A6: C2 30 - REP $30 14A8: 98 - TYA 14A9: 29 FF 00 - AND #$00FF 14AC: C9 01 00 - CMP #$0001 14AF: B0 10 - BCS $14C1 ; skip to 14C1 if ROM 03 (>01) 14B1: AF 22 0F E1 - LDAL $E10F22 ; ROM01 behavior 14B5: 09 80 - ORA #$8080 14B8: 8F 22 0F E1 - STAL $E10F22 14BC: A9 22 0F - LDA #$0F22 14BF: 80 0E - BRA $14CF 14C1: AF 3A 0F E1 - LDAL $E10F3A ; ROM03 behavior 14C5: 09 80 80 - ORA #$8080 14C8: 8F 3A 0F E1 - STAL $E10F3A 14CC: A9 EA 0F - LDA #$0F3A 14CF: 8D E0 19 - STA $19E0 14D2: 8D F2 19 - STA $19F2 14D5: 8D 13 1A - STA $1A13 14D8: 8D 3D 1A - STA $1A3D 14DB: A9 EA EA - LDA #$EAEA 14DE: 8D 35 16 - STA $1635 14E1: 8D 37 16 - STA $1637 14E4: 60 - RTS ; load all blocks in the table whose block number is in A 14E5: 8D 4D 15 - STA $154D ; $154D = blk number 14E8: A5 FA - LDA $FA 14EA: 48 - PHA 14EB: A5 F8 - LDA $F8 14ED: 48 - PHA 14EE: 20 2D 15 - JSR $152D ; load table block at $00/BE00 14F1: C2 30 - REP $30 14F3: 68 - PLA 14F4: 85 F8 - STA $F8 14F6: 68 - PLA 14F7: 85 FA - STA $FA ; save updated memory address 14F9: 20 FD 14 - JSR $14FD ; load blocks from table at $00/BE00 14FC: 60 - RTS ; load blocks from table at $00/BE00 14FD: E2 30 - SEP $30 14FF: A2 00 - LDX #$00 1501: BD 00 BE - LDA $BE00,X 1504: 8D 2F 16 - STA $162F ; block number (lo) 1507: BD 00 BF - LDA $BF00,X 150A: 8D 30 16 - STA $1630 ; block number (hi) 150D: 0D 2F 16 - ORA $162F 1510: F0 1A - BEQ $152C ; branch out if blk number $0000 1512: DA - PHX 1513: AD 69 18 - LDA $1869 ; block count? 1516: 20 77 15 - JSR $1577 ; perform disk read 1519: 90 03 - BCC $151E 151B: 82 31 00 - BRL $154F ; branch out if disk read error 151E: E2 30 - SEP $30 1520: FA - PLX 1521: E8 - INX ; increment block number 1522: C2 20 - REP $20 1524: E6 F9 - INC $F9 1526: E6 F9 - INC $F9 ; update memory address 2 pages 1528: E2 20 - SEP $20 152A: 80 D5 - BRA $1501 152C: 60 - RTS ; load block at $BE00 152D: C2 30 - REP $30 152F: A9 00 00 - LDA #$0000 1532: 85 FA - STA $FA 1534: A9 00 BE - LDA #$BE00 1537: 85 F8 - STA $F8 ; force address to 00 BE 00 00 for address $00/BE00 1539: AD 4D 15 - LDA $154D 153C: 8D 2F 16 - STA $162F ; block number 153F: AD 69 18 - LDA $1869 1542: 20 77 15 - JSR $1577 ; perform disk read 1545: 90 02 - BCC $154A 1547: 82 05 00 - BRL $154F ; jump to disk error handler if carry set 154A: E2 30 - SEP $30 154C: 60 - RTS 154D: 00 00 - DB $00,$00 ; _SysFailMgr error handler for disk errors @ $00/154F 154F: 18 - CLC 1550: FB - XCE 1551: C2 30 - REP $30 1553: F4 AD DE - PEA $DEAD 1556: F4 00 00 - PEA $0000 1559: F4 63 15 - PEA $1563 155C: A2 03 15 - LDX #$1503 155F: 22 00 00 E1 - JSL $E10000 1563: 13 - DB $13 ; string length 1564: - STR 'Fatal Disk Error : ' ; perform disk read, with retries and error checking etc 1577: C2 30 - REP $30 1579: 8D 7A 1A - STA $1A7A 157C: AD 2F 16 - LDA $162F ; block number 157F: C9 40 06 - CMP #$0640 ; $640 = 1600 (#blocks in 3.5" disk) 1582: 90 03 - BCC $1587 ; nah it's less than 1600 1584: 82 9A 00 - BRL $1621 ; return error $2D 1587: 8D 31 16 - STA $1631 ; block number (2) 158A: A2 00 00 - LDX #$0000 158D: DD 3B 16 - CMP $163B,X 1590: 90 04 - BCC $1596 1592: E8 - INX 1593: E8 - INX 1594: 80 F7 - BRA $158D 1596: BD 39 16 - LDA $1639,X ; at this point x = offset into $163B table 1599: 8D 33 16 - STA $1633 ; store the table value in $1633 159C: 8A - TXA 159D: 4A - LSR 159E: 4A - LSR 159F: 9C 65 18 - STZ $1865 15A2: 2E 65 18 - ROL $1865 15A5: 8D 63 18 - STA $1863 ; $1865/$1863 is memory location 15A8: CD 37 16 - CMP $1637 ; $1637 is initialized to EAEA 15AB: D0 08 - BNE $15B5 15AD: AD 65 18 - LDA $1865 15B0: CD 35 16 - CMP $1635 ; $1635 is done 15B3: F0 44 - BEQ $15F9 ; done loading? 15B5: E2 20 - SEP $20 15B7: AD 65 18 - LDA $1865 15BA: 4A - LSR 15BB: 6A - ROR 15BC: 8D 67 18 - STA $1867 15BF: C2 20 - REP $20 15C1: A9 02 00 - LDA #$0002 15C4: 85 F2 - STA $F2 15C6: A9 00 D0 - LDA #$D000 15C9: 85 F0 - STA $F0 ; F0/F2 = 00 0D 02 00 for buffer address of $02/D000 15CB: A9 19 00 - LDA #$0019 15CE: 8D DB 1B - STA $1BD6 15D1: AD 1F 16 - LDA $161F ; $0003 15D4: 8D 1D 16 - STA $161D ; set # retries 15D7: AD 7A 1A - LDA $1A7A 15DA: 20 7B 17 - JSR $177B ; read a block from disk with IWM registers 15DD: 90 0C - BCC $15EB ; branch if no error? 15DF: AD C8 19 - LDA $19C8 15E2: F0 07 - BEQ $15EB ; error code $00? ignore 15E4: CE 1D 16 - DEC $161D 15E7: D0 EE - BNE $15D7 ; $161D = num retries 15E9: 80 3D - BRA $1628 ; give up with error $27 15EB: C2 30 - REP $30 15ED: AD 63 18 - LDA $1863 15F0: 8D 37 16 - STA $1637 ; update memory location 15F3: AD 65 18 - LDA $1865 15F6: 8D 35 16 - STA $1635 ; update memory location 15F9: AD 31 16 - LDA $1631 ; block number (2) 15FC: 38 - SEC 15FD: ED 3E 16 - SBC $1633 ; ; (disk block $049E / 1182 @ $00/1600) ; 1600: 0A - ASL 1601: EB - XBA 1602: 29 00 FF - AND #$FF00 1605: A0 00 00 - LDY #$0000 ; relocate data from $02/D000 buffer to $F8/$FA pointer 1609: BF 00 D0 02 - LDAL $02D000,X 160D: 97 F8 - STA [$F8],Y 160F: E8 - INX 1610: E8 - INX 1611: C8 - INY 1612: C8 - INY 1613: C0 00 02 - CPY #$0200 ; 256 bytes done? 1616: 90 F1 - BCC $1609 1618: A9 00 00 - LDA #$0000 161B: 18 - CLC 161C: 60 - RTS 161D: 00 00 - DB $00,$00 161F: 03 00 - DB $03,$00 ; # retries 1621: C2 30 - REP $30 1623: A9 2D 00 - LDA #$002D 1626: 38 - SEC 1627: 60 - RTS ; give up with error $27 1628: C2 30 - REP $30 162A: A9 27 00 - LDA #$0027 162D: 38 - SEC 162E: 60 - RTS 162F: 00 00 00 00 - DB $00,$00,$00,$00 1633: 00 00 00 00 - DB $00,$00,$00,$00 1637: 00 00 00 00 - DB $00,$00,$00,$00 163B: 0C 00 18 00 - DB $0C,$00,$18,$00 163F: 24 00 30 00 - DB $24,$00,$30,$00 1643: 3C 00 48 00 - DB $3C,$00,$48,$00 1647: 54 00 60 00 - DB $54,$00,$60,$00 164B: 6C 00 78 00 - DB $6C,$00,$78,$00 164F: 84 00 90 00 - DB $84,$00,$90,$00 1653: 9C 00 A8 00 - DB $9C,$00,$A8,$00 1657: B4 00 C0 00 - DB $B4,$00,$C0,$00 165B: CC 00 D8 00 - DB $CC,$00,$D8,$00 165F: E4 00 F0 00 - DB $E4,$00,$F0,$00 1663: FC 00 08 01 - DB $FC,$00,$08,$01 1667: 14 01 20 01 - DB $14,$01,$20,$01 166B: 2C 01 38 01 - DB $2C,$01,$38,$01 ; ... ; read a block from disk with IWM registers 177B: 8D 7A 1A - STA $1A7A 177E: 9C 4D 18 - STZ $184D 1781: E2 30 - SEP $30 1783: 08 - PHP 1784: 78 - SEI 1785: 20 D3 1A - JSR $1AD3 ; this is in the iwm code 1788: 20 2E 1B - JSR $1B2E ; this is also in the iwm code 178B: C9 2F - CMP #$2F 178D: D0 03 - BNE $1792 178F: 82 A6 00 - BRL $1838 1792: 20 DC 19 - JSR $19DC 1795: 20 CB 1B - JSR $1BCB 1798: 20 D8 1B - JSR $1BD8 179B: AD 63 18 - LDA $1863 179E: 4A - LSR 179F: 4A - LSR 17A0: 4A - LSR 17A1: 4A - LSR 17A2: AA - TAX 17A3: BD 5E 18 - LDA $185E,X 17A6: 8D 51 18 - STA $1851 17A9: 9C C8 19 - STZ $19C8 17AC: 9C CC 19 - STZ $19CC 17AF: 9C CE 19 - STZ $19CE 17B2: 9C CA 19 - STZ $19CA 17B5: 9C D0 19 - STZ $19D0 17B8: 9C D2 19 - STZ $19D2 17BB: AD 63 18 - LDA $1863 17BE: 0D 67 18 - ORA $1867 17C1: C9 02 - CMP #$02 17C3: D0 1F - BNE $17E4 17C5: A9 07 - LDA #$07 17C7: 85 68 - STA $68 17C9: A0 9E - LDY #$9E 17CB: A2 02 - LDX #$02 17CD: 88 - DEY 17CE: D0 04 - BNE $17D4 17D0: C6 68 - DEC $68 17D2: 30 10 - BMI $17E4 17D4: AD EC C0 - LDA $C0EC 17D7: 10 FB - BPL $17D4 ; wait until iwm ready 17D9: DD D8 19 - CMP $19D8,X 17DC: D0 ED - BNE $17CB 17DE: CA - DEX 17DF: 10 EC - BPL $17CD 17E1: EE CA 19 - INC $19CA 17E4: A9 07 85 - LDA #$8507 17E7: 68 - PLA 17E8: A0 9E - LDY #$9E 17EA: A2 02 - LDX #$02 17EC: 88 - DEY 17ED: D0 04 - BNE $17F3 17EF: C6 68 - DEC $68 17F1: 30 45 - BMI $1838 17F3: AD EC C0 - LDA $C0EC 11F6: 10 FB - BPL $17F3 ; wait until iwm ready 17F8: DD 55 18 - CMP $1855,X 17FB: D0 ED - BNE $17EA 17FD: CA - DEX 17FE: 10 EC - BPL $17EC ; ; (disk block $049F / 1183 @ $00/1800) ; 1800: A2 04 - LDX #$04 1802: AC EC C0 - LDY $C0EC 1805: 10 FB - BPL $1802 ; wait until iwm ready 1807: B9 00 2B - LDA $2B00,Y 180A: 9F 30 0F E1 - STAL $E10F30,X ; overwrite $E1 smartport vectors 180E: CA - DEX 180F: 10 F1 - BPL $1802 1811: 20 7F 18 - JSR $187F ; load/de-nibblize with IWM 1814: 90 05 - BCC $181B 1816: A9 01 8D - LDA #$8D01 1819: C8 - INY ;181A: 19 CE 51 - ORA $51CE,Y ; ALT 181B: CE 51 18 - DEC $1851 181E: D0 F1 - BNE $1811 1820: 20 1B 1B - JSR $1B1B 1823: 28 - PLP 1824: AD C8 19 - LDA $19C8 1827: 0D CA 19 - ORA $19CA 182A: F0 06 - BEQ $1832 182C: 18 - CLC ; an error occurred: set carry and return 182D: FB - XCE 182E: C2 30 - REP $30 1830: 38 - SEC 1831: 60 - RTS 1832: 18 - CLC ; no error; successful return 1833: FB - XCE 1834: C2 30 - REP $30 1836: 18 - CLC 1837: 60 - RTS 1838: A9 01 8D - LDA #$8D01 183B: C8 - INY 183C: 19 AD 51 - ORA $51AD,Y 183F: 18 - CLC 1840: 8D CC 19 - STA $19CC 1843: 20 1B 1B - JSR $1B1B 1846: 28 - PLP ; error? return with carry set 1847: 18 - CLC 1848: FB - XCE 1849: C2 30 - REP $30 184B: 38 - SEC 184C: 60 - RTS 184D: 00 00 00 00 - DB $00,$00,$00,$00 1851: 00 00 00 00 - DB $00,$00,$00,$00 1855: 96 AA D5 - DB $96,$AA,$D5 ; beginning of track address area mark 1858: AD AA D5 - DB $AD,$AA,$D5 ; beginning of track data area mark 185B: FF AA DE - DB $FF,$AA,$DE ; end of track data area mark 185E: 0C 0B 0A 09 - DB $0C,$0B,$0A,$09 1862: 08 - DB $08 1863: 00 00 00 00 - DB $00,$00,$00,$00 1867: 00 00 00 00 - DB $00,$00,$00,$00 186B: 00 00 00 00 - DB $00,$00,$00,$00 186F: 00 00 00 00 - DB $00,$00,$00,$00 1873: E2 10 - SEP $10 1875: A9 01 - LDA #$01 1877: 8D C8 19 - STA $19C8 187A: EE CE 19 - INC $19CE 187D: 38 - SEC 187E: 60 - RTS ; load/de-nibblize a track? 187F: 64 5E - STZ $5E 1881: 64 5D - STZ $5D 1883: 64 5C - STZ $5C 1885: 64 F4 - STZ $F4 1887: A9 01 - LDA #$01 1889: 8D D4 19 - STA $19D4 188C: C2 10 - REP $10 188E: A0 FF 01 - LDY #$01FF 1891: A2 02 00 - LDX #$0002 1894: 88 - DEY 1895: F0 DC - BEQ 1873 1897: AD EC C0 - LDA $C0EC 189A: 10 FB - BPL $1891 189C: DD 58 18 - CMP $1858,X 189F: D0 F0 - BNE $1891 18A1: CA - DEX 18A2: 10 F0 - BPL $1894 18A4: E2 10 - SEP $10 18A6: AE EC C0 - LDX $C0EC 18A9: 10 FB - BPL $18A6 ; wait for IWM 18AB: BD 00 2B - LDA $2B00,X 18AE: C2 20 - REP $20 18B0: 29 0F 00 - AND #$000F 18B3: 0A - ASL 18B4: 65 F1 - ADC $F1 18B6: 85 F5 - STA $F5 18B8: E2 20 - SEP $20 18BA: A0 10 - LDY #$10 18BC: 80 17 - BRA $18D5 18BE: AE EC C0 - LDX $C0EC ; wait for IWM 18C1: 10 FB - BPL $18BE 18C3: BD 00 2B - LDA $2B00,X 18C6: AE D6 19 - LDX $19D6 18C9: 1D 80 2C - ORA $2C80,X 18CC: 45 5D - EOR $5D 18CE: 65 5C - ADC $5C 18D0: 85 5C - STA $5C 18D2: 88 - DEY 18D3: F0 3D - BEQ $1913 18D5: AE EC C0 - LDX $C0EC 18D8: 10 FB - BPL $18D5 ; wait for IWM 18DA: BD 00 2B - LDA $2B00,X 18DD: 8D D6 19 - STA $19D6 18E0: 06 5C - ASL $5C 18E2: 90 02 - BCC $18E6 18E4: E6 5C - INC $5C 18E6: 88 - DEY 18E7: AE EC C0 - LDX $C0EC 18EA: 10 FB - BPL $18E7 ; wait for IWM 18EC: BD 00 2B - LDA $2B00,X 18EF: AE D6 19 - LDX $19D6 18F2: 1D 00 2C - ORA $2C00,X 18F5: 45 5C - EOR $5C 18F7: 65 5E - ADC $5E 18F9: 88 - DEY 18FA: AE EC C0 - LDX $C0EC 18FD: 10 FB - BPL $18FA ; wait for IWM 18FF: 85 5E - STA $5E 1901: BD 00 2B - LDA $2B00,X 1904: AE D6 19 - LDX $19D6 1907: 1D 40 2C - ORA $2C40,X 190A: 45 5E - EOR $5E 190C: 65 5D - ADC $5D 190E: 85 5D - STA $5D 1910: 88 - DEY 1911: 80 AB - BRA $18BE 1913: A0 00 - LDY #$00 1915: 80 17 - BRA $192E 1917: AE EC C0 - LDX $C0EC 191A: 10 FB - BPL $1917 ; wait for IWM 191C: BD 00 2B - LDA $2B00,X 191F: AE D6 19 - LDX $19D6 1922: 1D 80 2C - ORA $2C80,X 1925: 45 5D - EOR $5D 1927: 97 F4 - STA [$F4],Y 1929: 65 5C - ADC $5C 192B: 85 5C - STA $5C 192D: C8 - INY 192E: AE EC C0 - LDX $C0ED 1931: 10 FB - BPL $192E ; wait for IWM 1933: BD 00 2B - LDA $2B00,X 1936: 8D D6 19 - STA $19D6 1939: 06 5C - ASL $5C 193B: 90 02 - BCC $193F 193D: E6 5C - INC $5C 193F: AE EC C0 - LDX $C0EC 1942: 10 FB - BPL $193F ; wait for IWM 1944: BD 00 2B - LDA $2B00,X 1947: AE D6 19 - LDX $19D6 194A: 1D 00 2C - ORA $2C00,X 194D: 45 5C - EOR $5C 194F: 97 F4 - STA [$F4],Y 1951: 65 5E - ADC $5E 1953: C8 - INY 1954: D0 07 - BNE $195D 1956: CE D4 19 - DEC $19D4 1959: 30 1D - BMI $1978 195B: E6 F5 - INC $F5 195D: AE EC C0 - LDX $C0EC 1960: 10 FB - BPL $195D ; wait for IWM 1962: 85 5E - STA $5E 1964: BD 00 2B - LDA $2B00,X 1967: AE D6 19 - LDX $19D6 196A: 1D 40 2C - ORA $2C40,X 196D: 45 5E - EOR $5E 196F: 97 F4 - STA [$F4],Y 1971: 65 5D - ADC $5D 1973: 85 5D - STA $5D 1975: C8 - INY 1976: D0 9F - BNE $1917 1978: AC EC C0 - LDY $C0EC 197B: 10 FB - BPL $1978 ; wait for IWM 197D: BE 00 2B - LDX $2B00,Y 1980: BD 80 2C - LDA $2C80,X 1983: 85 66 - STA $66 1985: BD 40 2C - LDA $2C40,X 1988: 85 67 - STA $67 198A: BD 00 2C - LDA $2C00,X 198D: A0 02 - LDY #$02 198F: AE EC C9 - LDX $C0EC 1992: 10 FB - BPL $198F ; wait for IWM 1994: 29 C0 - AND #$C0 1996: 1D 00 2B - ORA $2B00,X 1999: BB - TYX 199A: D5 5C - CMP $5C,X 199C: D0 16 - BNE $19B4 199E: B5 65 - LDA $65,X 19A0: 88 - DEY 19A1: 10 EC - BPL $198F 19A3: A0 02 - LDY #$02 19A5: AD EC C0 - LDA $C0EC 19A8: 10 FB - BPL $19A5 ; wait for IWM 19AA: D9 5B 18 - CMP $185B,Y 19AD: D0 0F - BNE $11BE 19AF: 88 - DEY 19B0: D0 F3 - BNE $19A5 19B2: 18 - CLC 19B3: 60 - RTS 19B4: A9 01 - LDA #$01 19B6: 8D C8 19 - STA $19C8 19B9: EE D0 19 - INC $19D0 19BC: 38 - SEC 19BD: 60 - RTS 19BE: A9 01 - LDA #$01 19C0: 8D C8 19 - STA $19C8 19C3: EE D2 19 - INC $19D2 19C6: 38 - SEC 19C7: 60 - RTS 19C8: 00 00 00 00 - DB $00,$00,$00,$00 19CC: 00 00 00 00 - DB $00,$00,$00,$00 19D0: 00 00 00 00 - DB $00,$00,$00,$00 19D4: 00 00 00 00 - DB $00,$00,$00,$00 19D8: E1 F4 - SBC ($F4,X) 19DA: E6 FF - INC $FF 19DC: AE 7A 1A - LDX $1A7A 19DF: BF 22 0F E1 - LDAL $E10F22,X 19E3: 10 05 - BPL $19EA 19E5: 20 18 1A - JSR $1A18 19E8: BD 2D - BCS $1A17 19EA: 20 B8 1B - JSR $1BB8 19ED: 38 - SEC 19EE: A3 7A 1A - LDX $1A7A 19F1: BF 22 0F E1 - LDA $E10F22,X 19F5: ED 63 18 - SBC $1863 19F8: F0 12 - BEQ $1A0C 19FA: A0 01 - LDA #$01 19FC: B0 06 - BCS $1A04 19FE: A0 00 - LDY #$00 ; ; (disk block $04A0 / 1184 @ $00/1A00) ; 1A00: 49 FF - EOR #$FF 1A02: 69 01 - ADC #$01 1A04: AA - TAX 1A05: 98 - TYA 1A06: 20 5E 1B - JSR $1B5E 1A09: 20 41 1A - JSR $1A41 1A0C: AD 63 18 - LDA $1863 1A0F: AE 7A 1A - LDX $1A7A 1A12: 9F 22 0F E1 - STAL $E10F22,X 1A16: 18 - CLC 1A17: 60 - RTS 1A18: A9 01 - LDA #$01 1A1A: 20 5E 1B - JSR $1B5E 1A1D: A2 50 - LDX #$50 1A1F: 20 41 1A - JSR $1A41 1A22: A2 50 - LDX #$50 1A24: A9 07 - LDA #$07 1A26: 20 9B 1B - JSR $1B9B 1A29: A9 0A - LDA #$0A 1A2B: 20 54 1B - JSR $1B54 1A2E: 10 06 - BPL $1A36 1A30: CA - DEX 1A31: D0 F1 - BNE $1A24 1A33: 38 - SEC 1A34: 80 01 - BRA $1A37 1A36: 18 - CLC 1A37: A9 00 - LDA #$00 1A39: AE 7A 1A - LDX $1A7A 1A3C: 9F 22 0F E1 - STAL $E10F22,X 1A40: 60 - RTS 1A41: A9 04 - LDA #$04 1A43: 20 5E 1B - JSR $1B5E 1A46: 20 57 1B - JSR $1B57 1A49: 10 FB - BPL $1A46 1A4B: CA - DEX 1A4C: D0 F3 - BNE $1A41 1A4E: A2 4F - LDX #$4F 1A50: CA - DEX 1A51: D0 FD - BNE $1A50 1A53: 60 - RTS 1A54: 08 - PHP 1A55: 78 - SEI 1A56: 8D 7A 1A - STA $1A7A 1A59: 20 D3 1A - JSR $1AD3 1A5C: 20 2E 1B - JSR $1B2E 1A5F: 08 - PHP 1A60: 48 - PHA 1A61: A0 00 - LDY #$00 1A63: 8C 31 C0 - STY $C031 ; diskreg 1A66: 8C EA C0 - STY $C0EA ; slot 6 stuff? 1A69: 20 1B 1B - JSR $1B1B 1A6C: 68 - PLA 1A6D: 28 - PLP 1A6E: B0 03 - BCS $1A73 1A70: 28 - PLP 1A71: 18 - CLC 1A72: 60 - RTS 1A73: C9 2F - CMP #$2F 1A75: D0 F9 - BNE $1A70 1A77: 28 - PLP 1A78: 38 - SEC 1A79: 60 - RTS 1A7A: 00 00 - DB $00,$00 1A7C: 20 54 1A - JSR $1A54 1A7F: 90 01 - BCC $1A82 1A81: 60 - RTS 1A82: 20 D3 1A - JSR $1AD3 1A85: A9 09 - LDA #$09 1A87: 20 5E 1B - JSR $1B5E 1A8A: A9 C8 - LDA #$C8 1A8C: 20 9B 1B - JSR $1B9B 1A8F: A9 03 - LDA #$03 1A91: 8D CF 1A - STA $1ACF 1A94: 9A 0D - LDA #$0D 1A96: 20 5E 1B - JSR $1B5E 1A99: A9 C3 - LDA #$C3 1A9B: 8A D1 1A - STA $1AD1 1A9E: A9 0A - LDA #$0A 1AA0: 20 9B 1B - JSR $1B9B 1AA3: A9 02 - LDA #$02 1AA5: 20 54 1B - JSR $1B54 1AA8: 30 0F - BMI $1AB9 1AAA: CE D1 1A - DEC $1AD1 1AAD: D0 EF - BNE $1A9E 1AAF: CE CF 1A - DEC $1ACF 1AB2: D0 E0 - BNE $1A94 1AB4: A9 27 - LDA #$27 1AB6: 38 - SEC 1AB7: 80 06 - BRA $1ABF 1AB9: A9 01 - LDA #$01 1ABB: 20 9B 1B - JSR $1B9B 1ABE: 18 - CLC 1ABF: 08 - PHP 1AC0: 48 - PHA 1AC1: A0 00 - LDY #$00 1AC3: 3C 31 C0 - STY $C031 1AC6: 8C EA C0 - STA $C0EA 1AC9: 20 1B 1B - JSR $1B1B 1ACC: 68 - PLA 1ACD: 28 - PLP 1ACE: 60 - RTS 1ACF: 00 00 00 00 - DB $00,$00,$00,$00 1AD3: AD 36 C0 - LDA $C036 1AD6: 8D 19 1B - STA $1B19 1AD9: 29 FB - AND #$FB 1ADB: 09 80 - ORA #$80 1ADD: 8D 36 C0 - STA $C036 1AE0: AD 2D C0 - LDA $C02D 1AE3: 8D 17 1B - STA $1B17 1AE6: 29 9F - AND #$9F 1AE8: 8D 2D C0 - STA $C02D 1AEB: AD 31 C0 - LDA $C031 1AEE: 09 40 - ORA #$40 1AF0: 8D 31 C0 - STA $C031 1AF3: A0 0F - LDY #$0F 1AF5: 2C E8 C0 - BIT $C0E8 1AF8: 2C ED C0 - BIT $C0ED 1AFB: 80 04 - BRA $1B01 1AFD: 98 - TYA 1AFE: 8D EF C0 - STA $C0EF 1B01: 98 - TYA 1B02: 4D EE C0 - EOR $C0EE 1B05: 29 1F - AND #$1F 1B07: D0 F4 - BNE $1AFD 1B09: AD 7A 1A - LDA $1A7A 1B0C: AA - TAX 1B0D: 3C EA C0 - BIT $C0EA,X 1B10: 2C EC C0 - BIT $C0EC 1B13: 2C E9 C0 - BIT $C0E9 1B16: 60 - RTS 1B17: 00 00 00 00 - DB $00,$00,$00,$00 1B1B: AD E8 C0 - LDA $C0E8 1B1E: 9C 31 C0 - STZ $C031 1B21: AD 19 1B - LDA $1B19 1B24: 8D 36 C0 - STA $C036 1B27: AD 17 1B - LDA $1B17 1B2A: 8D 2D C0 - STA $C02D 1B2D: 60 - RTS 1B2E: A2 02 - LDX #$02 1B30: BD 51 1B - LDA $1B51,X 1B33: 20 54 1B - JSR $1B54 1B36: 0A - ASL 1B37: 6E 50 1B - ROR $1B50 1B3A: CA - DEX 1B3B: 10 FE - BPL $1B30 1B3D: 2C 50 1B - BIT $1B50 1B40: 70 06 - BVS $1B48 1B42: 10 08 - BPL $1B4C 1B44: A9 00 - LDA #$00 1B46: 18 - CLC 1B47: 60 - RTS 1B48: A9 2F - LDA #$2F 1B4A: 38 - SEC 1B4B: 60 - RTS 1B4C: A9 2B - LDA #$2B 1B4E: 38 - SEC 1B4F: 60 - RTS 1B50: 00 06 02 0C - DB $00,$06,$02,$0C ; this is similar to modulae $999E (apparently-disassembled firmware area) 1B54: 20 68 1B - JSR $1B68 1B57: 2C ED C0 - BIT $C0ED 1B5A: AD EE C0 - LDA $C0EE 1B5D: 60 - RTS 1B5E: 20 68 1B - JSR $1B68 1B61: 2C E7 C0 - BIT $C0E7 1B64: 2C E6 C0 - BIT $C0E6 1B67: 60 - RTS ; again, straight from IWM docs: get status and control bits for drive.. seek to track? 1B68: 2C E0 C0 - BIT $C0E0 1B6B: 2C E3 C0 - BIT $C0E3 1B6E: 2C E6 C0 - BIT $C0E6 1B71: 2C E4 C0 - BIT $C0E4 1B74: 4A - LSR 1B75: 90 03 - BCC $1B7A 1B77: 2C E5 C0 - BIT $C0E5 1B7A: 4A - LSR 1B7B: 48 - PHA 1B7C: AD 31 C0 - LDA $C031 1B7F: 29 7F - AND #$7F 1B81: 90 02 - BCC $1B85 1B83: 09 80 - ORA #$80 1B85: 9D 31 C0 - STA $C031 1B88: 68 - PLA 1B89: 4A - LSR 1B8A: 90 03 - BCC $1B8F 1B8C: 2C E1 C0 - BIT $C0E1 1B8F: 4A - LSR 1B90: B0 03 - BCC $1B95 1B92: 2C E2 C0 - BIT $C0E2 1B95: 60 - RTS 1B96: 48 - PHA 1B97: 20 9B 1B - JSR $1B9B 1B9A: 68 - PLA 1B9B: 85 69 - STA $69 1B9D: AD 36 C0 - LDA $C036 1BA0: 48 - PHA 1BA1: 29 7F - AND #$7F 1BA3: 8D 36 C0 - STA $C036 1BA6: A9 64 - LDA #$64 1BA8: 85 68 - STA $68 1BAA: C6 68 - DEC $68 1BAC: EA - NOP 1BAD: D0 FB - BNE $1BAA 1BAF: C9 69 - DEC $69 1BB1: D0 F3 - BNE $1BA6 1BB3: 68 - PLA 1BB4: 8D 36 C0 - STA $C036 1BB7: 60 - RTS 1BB8: A9 08 - LDA #$08 1BBA: 20 54 1B - JSR $1B54 1BBD: 10 0B - BPL $1BCA 1BBF: 20 61 1B - JSR $1B61 1BC2: A9 19 - LDA #$19 1BC4: 8D D6 1B - STA $1BD6 1BC7: 20 96 1B - JSR $1B96 1BCA: 60 - RTS 1BCB: A9 0B - LDA #$0B 1BCD: 20 54 1B - JSR $1B54 1BD0: 2C EE C0 - BIT $C033 1BD3: 30 FB - BMI $1BD0 1BD5: 60 - RTS 1BD6: 00 00 - DB $00,$00 1BD8: A2 01 - LDX #$01 1BDA: AD 67 18 - LDA $1867 1BDD: 10 02 - BPL $1BE1 1BEF: A2 03 - LDX #$03 1BE1: 8A - TXA 1BE2: 20 54 1B - JSR $1B54 1BE5: AD EC C0 - LDA $C0EC 1BE8: AD EC C0 - LDA $C0EC 1BEB: 60 - RTS 1BEC: 20 06 91 - JSR $9106 1BEF: 18 - CLC 1BF0: FB - XCE 1BF1: E2 30 - SEP $30 1BF3: 4B - PHK 1BF4: AB - PLB 1BF5: F4 00 00 - PEA $0000 1BF8: 2B - PLD 1BF9: A9 19 - LDA #$19 1BFB: 1C 35 C0 - TRB $C035 1BFE: A9 F0 - LDA #$F0 ; ; (disk block $04A1 / 1185 @ $00/1C00) ; 1C00: CD 2E C0 - CMP $C02E 1C03: D0 FB - BNE $1C00 ; wait for vbl 1C05: A9 41 - LDA #$41 1C07: 8D 29 C0 - STA $C029 ; VGC text mode 1C0A: A9 F0 - LDA #$F0 ; white text on black background 1C0C: 8D 22 C0 - STA $C022 1C0F: 20 58 FC - JSR $FC58 ; clear screen 1C12: 20 93 FE - JSR $FE93 ; PR #0 1C15: 20 10 C0 - BIT $C010 ; clear keyboard strobe 1C18: AD 5C 1C - LDA $1C5C 1C1B: F0 0D - BEQ $1C2A 1C1D: 20 ED FD - JSR $FDED ; output character 1C20: EE 19 1C - INC $1C19 1C23: D0 F3 - BNE $1C18 1C25: EE 1A 1C - INC $1C1A 1C28: 80 EE - BRA $1C18 1C2A: AD 69 18 - LDA $1869 1C2D: 20 7C 1A - JSR $1A7C 1C30: AD 6B 18 - LDA $186B 1C33: 20 7C 1A - JSR $1A7C ; ... ; handle loaded data appropriately ; $81 - call $1CE8 ; $82 - call $1D51 (Byte Slasher) ; everything else: call _UnPackBytes 1CAE: C9 81 00 - CMP #$0081 1CB1: F0 35 - BEQ 1CE8 1CB3: C9 82 00 - CMP #$8200 1CB6: D0 03 - BNE $1CBB 1CB8: 82 96 00 - BRL $1D51 1CBB: C2 30 - REP $30 1CBD: A9 00 80 - LDA #$8000 1CC0: 8D E6 1C - STA $1CE6 1CC3: F4 00 00 - PEA $0000 1CC6: AD 4F 1D - LDA $1D4F 1CC9: 48 - PHA 1CCA: AD 4D 1A - LDA $1D4D 1CCD: 48 - PHA 1CCE: F4 00 80 - PEA $8000 1CD1: F4 00 00 - PEA $0000 1CD4: F4 08 00 - PEA $0008 1CD7: F4 00 00 - PEA $0000 1CDA: F4 E6 1C - PEA $1CE6 1CDD: A2 03 27 - LDX #$2703 1CE0: 22 00 00 E1 - JSL $E10000 ; _UnPackBytes (Misc Tools) 1CE4: 68 - PLA 1CE5: 60 - RTS 1CE6: 00 80 - DW $8000 1CE8: C2 30 - REP $30 1CEA: AD 4D 1D - LDA $1D4D 1CED: 85 04 - STA $04 1CEF: AD 4F 1D - LDA $1D4F 1CF2: 85 06 - STA $06 ; ... 1D4D: 00 00 - DB $00,$00 1D4F: 00 00 - DB $00,$00 1D51: 80 22 - BRA $1D75 1D53: - STR 'Byte Slasher v1.0 - (c) ------- 90' 1D75: A5 08 - LDA $08 1D77: 85 0C - STA $0C 1D79: A5 0A - LDA $0A 1D7B: 85 0E - STA $0E 1D7D: AD 4D 1D - LDA $1D4D 1D80: 85 04 - STA $04 1D82: AD 4F 1D - LDA $1D4F 1D85: 85 06 - STA $06 1D87: E2 20 - SEP $20 1D89: A2 01 - LDX #$0100 1D8C: 86 10 - STX $10 1D8E: 4C E3 1D - JMP $1DD3 1D91: A7 04 - LDA [$04] 1D93: C9 04 - CMP #$04 1D95: 90 24 - BCC $1DBB 1D97: 85 14 - STA $14 1D99: C2 20 - REP $20 1D9B: E6 04 - INC $04 1D9D: A7 04 - LDA [$04] 1D9F: A8 - TAY 1DA0: E6 04 - INC $04 1DA2: E6 04 - INC $04 1DA4: E2 20 - SEP $20 1DA6: B7 0C - LDA [$0C],Y 1DA8: 87 08 - STA [$08] 1DAA: C2 20 - REP $20 1DAC: E6 08 - INC $08 1DAE: E2 20 - SEP $20 1DB0: C8 - INY 1DB1: C6 14 - DEC $14 1DB3: D0 F1 - BNE $1DA6 1DB5: 80 DA - BRA $1D91 1DB7: C2 30 - REP $30 1DB9: 60 - RTS 1DBA: 00 - DB $00 1DBB: C9 02 F0 - CMP #$F002 1DBE: F8 - SED 1DBF: C9 01 F0 - CMP #$F001 1DC2: 08 - PHP 1DC3: C2 20 - REP $30 1DC5: E6 04 - INC $04 1DC7: E2 20 - SEP $20 1DC9: A7 04 - LDA [$04] 1DCB: 85 10 - STA $10 1DCD: C2 20 - REP $20 1DCF: E6 04 - INC $04 1DD1: E2 20 - SEP $20 1DD3: A7 04 - LDA [$04] 1DD5: 87 08 - STA [$08] 1DD7: C2 20 - REP $20 1DD9: E6 04 - INC $04 1DDB: E6 08 - INC $08 1DDD: E2 20 - SEP $20 1DDF: C6 10 - DEC $10 1DE1: D0 F0 - BNE $1DD3 1DE3: 80 AC - BRA $1D91 ; (disk block $04A2 / 1186 @ $00/1E00) ; (disk block $04A3 / 1187 @ $00/2000) ; (disk block $04A4 / 1188 @ $00/2200) ; (disk block $04A5 / 1189 @ $00/2400) ; (disk block $04A6 / 1190 @ $00/2600) ; (disk block $04A7 / 1191 @ $00/2800) ; (disk block $04A8 / 1192 @ $00/2A00) ; (disk block $04A9 / 1193 @ $00/2C00) ; OCTET2 2C00: - HEX 00000000000000000000000000000000 ; Fast decoding tables - HEX 40404040404040404040404040404040 - HEX 80808080808080808080808080808080 - HEX C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 ;OCTET3 - HEX 000000004040404080808080C0C0C0C0 ; standard - HEX 000000004040404080808080C0C0C0C0 - HEX 000000004040404080808080C0C0C0C0 - HEX 000000004040404080808080C0C0C0C0 ;OCTET4 - HEX 004080C0004080C0004080C0004080C0 - HEX 004080C0004080C0004080C0004080C0 - HEX 004080C0004080C0004080C0004080C0 - HEX 004080C0004080C0004080C0004080C0 ; disk block $0007 / 0007: block tables for soundsmith song BE00: 08 09 0A 0B 0C 00 00 00 00 BF00: 00 00 00 00 00 00 00 00 00 ; disk block $000D / 0013: block tables (SHR picture?) BE00: 0E 0F 10 11 12 13 14 15 16 ;... BF00: 00 00 00 00 00 00 00 00 00