|
Now there's a listing of the program that contain the instruction to
read this format. The fields that depends by the particular game that are
loading are removed.
The load routine uses screen loading border effect.
This program is also autostarting (see location 0302h) and the loaded
program is automatically execute (location 03F5 RTI), becouse it pass the cpu
control to a loaded address.
0302 B6 03 dw 03B6 Routine: Read the program 0304 B5
033C 03 db 03 Type 033D 02 03 dw 0302 StartAddress 033F 05 03 dw 0305 EndAddress 0341 20 20 20 20 20 20 20 20 Nome 0349 20 20 20 20 20 20 20 20 0351 20 0352 03 4C SLO ($4C,X) Scratch area BASIC pointer Routine: Read a bit 0354 A9 10 LDA #$10 0356 2C 0D DC BIT $DC0D Interrupt control register CIA #1 0359 F0 FB BEQ $0356 Tape I/O buffer 035B 8E 07 DD STX $DD07 Timer B #2: HI Byte 035E A9 19 LDA #$19 0360 8D 0F DD STA $DD0F Control register B of CIA #2 0363 AD 0D DD LDA $DD0D Interrupt control register CIA #2 0366 4A LSR A Count 107h=263 cycle of ~1Mhz 0367 4A LSR A 0368 60 RTS Routine: Delay cycle 0369 A0 00 LDY #$00 036B 84 C0 STY $C0 Stop motor of tape 036D A9 0B LDA #$0B 036F 8D 11 D0 STA $D011 VIC control register 0372 CA DEX 0373 D0 FD BNE $0372 Tape I/O buffer 0375 88 DEY 0376 D0 FA BNE $0372 Tape I/O buffer 0378 78 SEI 0379 60 RTS Routine: Read a Byte (in A e $BD) 037A A9 08 LDA #$08 037C 85 A3 STA $A3 Serial counter of bits: Flag EOI 037E 20 54 03 JSR $0354 Routine: Read a bit 0381 26 BD ROL $BD RS-232 output parity/Transient cassette 0383 EE 20 D0 INC $D020 Borde color 0386 C6 A3 DEC $A3 Serial counter of bits: Flag EOI 0388 D0 F4 BNE $037E Tape I/O buffer 038A A5 BD LDA $BD RS-232 output parity/Transient cassette 038C 60 RTS Routine: Found synchronization 038D 20 69 03 JSR $0369 Routine: Delay cycle 0390 A9 07 LDA #$07 0392 8D 06 DD STA $DD06 Timer B #2: Lo Byte 0395 A2 01 LDX #$01 Count 107h=263 cycle of ~1Mhz 0397 20 54 03 JSR $0354 Routine: Read a bit 039A 26 BD ROL $BD RS-232 output parity/Transient cassette 039C A5 BD LDA $BD RS-232 output parity/Transient cassette 039E C9 02 CMP #$02 Synchronization byte 03A0 D0 F5 BNE $0397 Tape I/O buffer 03A2 A0 09 LDY #$09 Countdown start of sequence 03A4 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) 03A7 C9 02 CMP #$02 Synchronization byte 03A9 F0 F9 BEQ $03A4 Tape I/O buffer 03AB C4 BD CPY $BD RS-232 output parity/Transient cassette 03AD D0 E8 BNE $0397 Tape I/O buffer 03AF 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) 03B2 88 DEY Execute countdown 03B3 D0 F6 BNE $03AB Tape I/O buffer 03B5 60 RTS Routine: Read the program 03B6 58 CLI 03B7 20 8D 03 JSR $038D Routine: Found synchronization (and read starting address) 03BA 85 C1 STA $C1 I/O starting address 03BC 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) (starting address) 03BF 85 C2 STA $C2 I/O starting address 03C1 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) (ending address) 03C4 85 2D STA $2D Pointer: BASIC starting variables 03C6 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) (ending address) 03C9 85 2E STA $2E Pointer: BASIC starting variables 03CB 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) (return address) 03CE 48 PHA 03CF 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) (return address) 03D2 48 PHA 03D3 98 TYA 03D4 48 PHA 03D5 20 7A 03 JSR $037A Routine: Read a Byte (in A e $BD) 03D8 91 C1 STA ($C1),Y I/O starting address 03DA E6 C1 INC $C1 I/O starting address 03DC D0 02 BNE $03E0 Tape I/O buffer 03DE E6 C2 INC $C2 I/O starting address 03E0 A5 C1 LDA $C1 I/O starting address 03E2 C5 2D CMP $2D Pointer: BASIC starting variables 03E4 A5 C2 LDA $C2 I/O starting address 03E6 E5 2E SBC $2E Pointer: BASIC starting variables 03E8 90 EB BCC $03D5 goto read next byte 03EA E6 C0 INC $C0 Stop motor of tape 03EC 8C A0 02 STY $02A0 Contain IRQ vector during tape I/O 03EF 20 93 FC JSR $FC93 Routine: Stop motor, disable int. CIA #1 03F2 20 A0 E5 JSR $E5A0 Routine: Set VIC6567 registers and devices 03F5 40 RTI 03F6 20 59 A6 JSR $A659 BASIC ROM 03F9 4C EA A7 JMP $A7EA BASIC ROM 03FC 21
commodore 64 | Tognon Stefano programs |