;license:MIT ;(c) 2022 by qkumba !cpu 6502 !to "build/DEMO/KARATEKA#060200",plain *=$200 !source "src/prelaunch/common.a" !source "src/constants.a" ; no code in these !source "src/macros.a" +READ_RAM2_WRITE_RAM2 jsr EnableAccelerator reset +LOAD_FILE_KEEP_DIR karateka, $3FF6, karateka_dir_e-karateka_dir_b +READ_ROM_NO_WRITE lda #$60 sta $4013 jsr $3FF6 ; decompress ldx #5 - lda $100,x sta $BF29+return-callback1,x dex bpl - ldx #callback_e-callback_b - lda callback_b-1,x sta $BF29-1,x dex bne - lda #$AD sta $A4A6 lda #callback1 sta $A51D txa jmp $A495 callback_b !pseudopc $329 { callback1 lda #callback2 sta $210 jmp $200 callback2 jsr $104 ldx #3-1 - lda patch,x sta $B7EA,x sta $B7EF,x sta $B80C,x sta $B818,x dex bpl - lda #$AD sta $D0A sta $C59 sta $C68 sta $C78 sta $C8D sta $CB9 sta $D72 sta $D88 sta $DDF lda #$60 sta $777F ldx #2-1 - lda patch2,x sta $B7FD,x sta $D16,x sta $B5D8,x sta $3F2,x dex bpl - jsr $FB6F +DISABLE_ACCEL lda #0 rts patch !byte $A9,$00,$EA patch2 !word return return } callback_e karateka !byte karateka_e-karateka_b karateka_b karateka_dir_b !text "X/KARATEKA" karateka_dir_e !text "/KARATEKA" karateka_e !if * > $3F0 { !error "code is too large, ends at ", * }