base:cult_loader
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:cult_loader [2015-04-17 04:31] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Cult Loader ====== | ||
+ | |||
+ | < | ||
+ | Cult Loader Disassembly | ||
+ | |||
+ | Fungus of Nostalgia 2006 | ||
+ | |||
+ | |||
+ | 0355 78 | ||
+ | 0356 A9 AF LDA #$AF ;initalize file length | ||
+ | 0358 85 AE STA $AE | ||
+ | 035A A9 DD LDA #$DD ;($ae) = $ddaf | ||
+ | 035C 85 AF STA $AF | ||
+ | 035E A9 05 LDA #$05 ;motor on , i/o only | ||
+ | 0360 85 01 STA $01 | ||
+ | 0362 A9 1F LDA #$1F | ||
+ | 0364 8D 0D DC STA $DC0D ;cia irq's off | ||
+ | 0367 85 A4 STA $A4 ; | ||
+ | 0369 AD 0D DC LDA $DC0D ; | ||
+ | 036C A9 00 LDA #$00 | ||
+ | 036E 85 95 STA $95 ;sync flag | ||
+ | 0370 85 90 STA $90 ;st = 00 | ||
+ | 0372 A9 A0 LDA #$A0 ;threshold is $01a0 hex | ||
+ | 0374 8D 06 DC STA $DC06 | ||
+ | 0377 A9 03 LDA #$03 | ||
+ | 0379 8D 07 DC STA $DC07 | ||
+ | 037C A9 90 LDA #$90 ;enable irq on tape in | ||
+ | 037E 8D 0D DC STA $DC0D | ||
+ | 0381 A9 92 LDA #$92 ;irq vector $0392 | ||
+ | 0383 8D FE FF STA $FFFE | ||
+ | 0386 A9 03 LDA #$03 | ||
+ | 0388 8D FF FF STA $FFFF | ||
+ | 038B 58 | ||
+ | 038C A5 A4 LDA $A4 ;wait for end of load | ||
+ | 038E D0 FC BNE $038C | ||
+ | 0390 60 | ||
+ | |||
+ | 0391 00 | ||
+ | | ||
+ | 0392 48 | ||
+ | 0393 98 | ||
+ | 0394 48 | ||
+ | 0395 AD 07 DC LDA $DC07 ;get threshold high | ||
+ | 0398 A0 11 LDY #$11 ;reset timer and irq | ||
+ | 039A 8C 0F DC STY $DC0F | ||
+ | 039D EE 20 D0 INC $D020 ;load effect | ||
+ | 03A0 49 02 EOR #$02 ;adjust threshold (invert bits) | ||
+ | 03A2 4A | ||
+ | 03A3 4A | ||
+ | 03A4 66 A9 ROR $A9 ;rol in the bit | ||
+ | 03A6 90 0F BCC $03B7 ; | ||
+ | 03A8 EA | ||
+ | 03A9 AD 0D DC LDA $DC0D ; | ||
+ | 03AC 68 | ||
+ | 03AD A8 | ||
+ | 03AE 68 | ||
+ | 03AF 40 | ||
+ | | ||
+ | 03B0 A9 7F LDA #$7F ;initialize input byte #%01111111 | ||
+ | 03B2 85 A9 STA $A9 | ||
+ | 03B4 D0 F3 BNE $03A9 ;jump always | ||
+ | 03B6 EA | ||
+ | |||
+ | 03B7 A5 A9 LDA $A9 ;get completed byte | ||
+ | 03B9 A4 95 LDY $95 ;0 = were still syncing | ||
+ | 03BB D0 09 BNE $03C6 ;(Y has set the flags or not) | ||
+ | 03BD C9 80 CMP #$80 | ||
+ | 03BF D0 E8 BNE $03A9 ;exit irq | ||
+ | 03C1 85 95 STA $95 | ||
+ | 03C3 F0 EB BEQ $03B0 ; | ||
+ | |||
+ | 03C5 00 | ||
+ | |||
+ | 03C6 10 11 BPL $03D9 ; | ||
+ | 03C8 C9 AA CMP #$AA ;sync # | ||
+ | 03CA F0 06 BEQ $03D2 ; | ||
+ | |||
+ | 03CC A9 00 LDA #$00 ;not sync, so reset flag to sync | ||
+ | 03CE 85 95 STA $95 | ||
+ | 03D0 F0 D7 BEQ $03A9 ;exit irq | ||
+ | |||
+ | 03D2 A9 01 LDA #$01 ;sync achived | ||
+ | 03D4 85 95 STA $95 ;set flag for loading | ||
+ | 03D6 D0 D8 BNE $03B0 ; | ||
+ | |||
+ | 03D8 EA | ||
+ | |||
+ | 03D9 A0 00 LDY #$00 ;load to mem | ||
+ | 03DB C6 01 DEC $01 ;all ram | ||
+ | 03DD 91 AC STA ($AC), | ||
+ | 03DF E6 01 INC $01 ;i/o back in | ||
+ | 03E1 E6 AC INC $AC ;inc low of store | ||
+ | 03E3 D0 02 BNE $03E7 | ||
+ | 03E5 E6 AD INC $AD ;inc high of store | ||
+ | 03E7 38 | ||
+ | 03E8 A5 AC LDA $AC ;adj file size low | ||
+ | 03EA E5 AE SBC $AE | ||
+ | 03EC A5 AD LDA $AD | ||
+ | 03EE E5 AF SBC $AF ;adj filesize high | ||
+ | 03F0 90 BE BCC $03B0 ; | ||
+ | |||
+ | 03F2 A9 00 LDA #$00 ;set load complete | ||
+ | 03F4 85 A4 STA $A4 | ||
+ | 03F6 F0 B8 BEQ $03B0 ;exit irq | ||
+ | |||
+ | 03F8 8E 08 05 STX $0508 ; | ||
+ | 03FB 12 ??? | ||
+ | </ | ||
base/cult_loader.txt · Last modified: 2015-04-17 04:31 by 127.0.0.1