;:sys36864 ;.opt oo *=$ce49 clrchn =$ffcc direct =$302 ready =$a474 link =$a533 clr =$a660 strout =$ab1e poke =$b828 basicinit =$e453 chkkey =$f6bc hwinit =$fd15 irqinit =$fda3 nmi =$fe56 rsres =$fe66 nonmi =$fe72 gores =$fffc goirq =$fffe endram =$283 crsr =$286 kbvec =$28f cia2x =$2a1 dbrk =$316 dnmi =$318 schmal =$d016 col1 =$d020 col2 =$d021 cia2y =$dd0d nmivec =$fffa port =1 ioin =$13 tmp =$22 memend =$31 stop =$91 jmp run1 jmp run2 run1 jsr install bit flag bpl fg0 jmp repair ; run2 jsr unnew lda tmp clc adc #2 sta 45 lda tmp+1 adc #0 sta 46 jsr clr jmp ready ; fg0 lda cia2x sta cia2y rts ; install jsr farben lda #hi jsr strout act ldy #6 l2 lda hardpoke,y sta poke,y dey bpl l2 lda #$7f sta cia2y ldy #5 l3 lda hwvec,y sta nmivec,y dey bpl l3 ldy #3 l4 lda brktab,y sta dbrk,y dey bpl l4 rts ; qrti rti hwnmi sei pha txa pha tya pha lda #55 sta port lda #$7f sta cia2y ldy cia2y bpl oknmi jmp nonmi ; oknmi jsr setnmiv lda #-1 jsr pause jsr init jsr chkkey lda stop cmp #$f4 beq hwres cmp #$7f bne nodir jsr setdir nodir jmp nmi ; init jsr setnmiv jsr clrchn lda #0 sta ioin lda #$48 sta kbvec lda #$eb sta kbvec+1 jsr basicinit jsr hwinit jsr act jmp irqinit ; setdir lda dirmerk sta direct lda dirmerk+1 sta direct+1 rts ; dirmod jsr farben jsr act lda #$83 sta direct lda #$a4 sta direct+1 jmp (direct) ; break jsr init jsr setdir jmp rsres ; hwirq pha lda #55 sta port pla jmp (goirq) ; setnmiv lda #55 sta port lda #$7f sta cia2y lda nmimerk sta dnmi lda nmimerk+1 sta dnmi+1 rts ; hwres jsr setnmiv sec ror flag ldy #13 l6 lda 43,y sta store,y dey bpl l6 lda endram sta ramend lda endram+1 sta ramend+1 lda #5 sta schmal lda #$a0 jsr pause jmp (gores) ; farben lda #11 sta crsr lda #12 sta col1 lda #15 sta col2 noprg rts ; repair lsr flag lda memend cmp #3 bne noprg lda memend+1 cmp #8 bne noprg ldy #13 l1 lda store,y sta 43,y dey bpl l1 lda ramend sta endram lda ramend+1 sta endram+1 sec lda 45 sbc 43 cmp #2 bne unnew lda 46 sbc 44 beq noprg unnew lda #1 tay sta (43),y jmp link ; hardpoke ldx #55 stx port jmp poke ; pause ldy #0 ldx #$fc wait2 sta temp wait iny bne wait inc temp bne wait inx bne wait2 rts ; hi .byt 13 .byte "uncrash" .byt 13,0 flag brk temp brk store .word 0,0,0,0,0,0 ramend .word 0 hwvec .word hwnmi,hwres,hwirq brktab .word break,hwnmi nmimerk .word qrti dirmerk .word dirmod