;: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
	ldy #>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
