DataMuseum.dk

Presents historical artifacts from the history of:

ICL Comet

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about ICL Comet

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦a05e0ede5⟧ Bits:30002801 MPS-2000 V 1.0 COMET Monitor Kildetekst, TextFile

    Length: 26849 (0x68e1)
    Description: Bits:30002801 MPS-2000 V 1.0 COMET Monitor Kildetekst
    Types: TextFile

TextFile


;
;/MPS-2000 MONITOR V 1.0 COMET/
;/COPYRIGHT MOGENS PELLE OG GROSBOELL-POULSEN/
;DATO:11-1-81
;
	
	
	.ORG	0f000h

	
base	=	$
rst7	=	38H
	;
	;I/O-ENHEDER
	;
tti	=	0C0H
tto	=	0C0H
tts	=	0C1H
	;
mcrtd0	=	0D0H
mcrtd1	=	0D1H
crti	=	0D2H
crto	=	0D2H
crts	=	0D3H
	;
	;<KONSTANTER>
	;
false	=	0
true	=	0FFH
cr	=	0DH
lf	=	0AH
esc	=	1BH
bell	=	7
rub	=	0FFH
fil	=	0
max	=	7
initty	=	0CEH
inittz	=	027H
ioff	=	0DFH
obpnt	=	0ECH
ibpnt	=	0EDH
flram	=	20H
lpsp	=	0F1H
lpdp	=	0F0H
empty	=	10H
busy	=	20H
strobe	=	0
lpdc	=	0F2H
lpsc	=	0F3H
srdp	=	lpsp
dc1	=	11H
	;
	;<I/O KONF.MASKER>
	;
cmsk	=	11111100b
rmsk	=	11110011b
pmsk	=	11001111b
lmsk	=	00111111b
	;
	;<Console konf.>
ctty	=	0
ccrt	=	1
batch	=	2
cuser	=	3
	;
	;<Reader konf.>
rtty	=	0
rbuf	=	4
rcas	=	8
ruser	=	0ch
	;
	;<Puncher konf.>
	;
ptty	=	0
pbuf	=	10h
pcas	=	20h
puser	=	30h
	;
	;<Lister konf.>
	;
ltty	=	0
lcrt	=	40h
line	=	80h
luser	=	0c0h
	;
	;<Vektorer til u-funk.>
	;
ciloc	=	0f1h
coloc	=	0f4h
ruloc	=	0f7h
puloc	=	0fah
luloc	=	0fdh
csloc	=	0eeh
	;
	;<Programkoder>
	jp	begin
	jp	ci
	jp	ri
	jp	co
	jp	po
	jp	lo
	jp	csts
	jp	iochk
	jp	ioset
	jp	memck
trap	jp	restart
	jp	expr
	jp	clrscr
	jp	screen
	;
	;Navn:
msg	.byte	cr,lf,0,0,0
	.byte	"MPS-2000 MONITOR V 1.S"
	.byte	cr
	.byte	"COPYRIGHT (C) 1980 DANSK SYSTEMPROGRAMMEL & "
	.byte	"METANIC APS"
	.byte	cr
msgl	=	$-msg
	;
	;Initialisering. og start
	;
begin	di
	ld	de,0ff40h
dlaya	dec	d
	jp	nz,dlaya
	dec	e
	jp	nz,dlaya
	ld	hl,stabel
	ld	b,12
	ld	c,0
crti30	ld	a,c
	out	(mcrtd0),a
	inc	c
	ld	a,(hl)
	out	(mcrtd1),a
	inc	hl
	djnz	crti30
	ld	a,initty
	out	(tts),a
	ld	a,1
	out	(0e8h),a
	out	(0e9h),a
	ld	a,47h
	out	(0eah),a
	ld	a,34h
	out	(0eah),a
	ld	a,inittz
	out	(tts),a
	ld	a,0fh
	out	(lpdc),a
	ld	a,0cfh
	out	(lpsc),a
	ld	a,0f0h
	out	(lpsc),a
	ld	a,0fh
	out	(srdp),a
	ld	a,3
	out	(lpdc),a
	ld	a,dc1
	out	(lpdp),a
	in	a,(lpsp)
	set	strobe,a
	out	(lpsp),a
	ld	sp,ahead - 4
	jp	memsiz + 1
	.word	ahead
ahead	ld	sp,hl
	ex	de,hl
	ld	bc,endx - exit
	ld	hl,exit
	ldir
	ex	de,hl
	ld	bc,-6fh
	add	hl,bc
	push	hl
	ld	bc,retur	
	ld	(hl),c
	inc	hl
	ld	(hl),b
	ld	hl,0
	ld	b,10
stkit	push	hl
	djnz	stkit
	ld	c,line ø pcas ø rcas ø ccrt
	call	ioset
	ld	hl,0
	call	abg
	call	clrscr
	ld	a,erf
	ld	b,obpnt - erf + 1
	ld	c,0
ini	call	wmem
	inc	a
	djnz	ini
	ld	a,0c3h	;jmp ud i 66h
	ld	(66h),a
	ld	hl,restart
	ld	(67h),a
	ld	bc,6c3h
	ld	a,csloc-3
ini1	add	a,3
	call	wmem
	djnz	ini1
	call	inibuf
hello	ld	b,msgl
	call	tom
start	ld	de,start
	push	de
	call	crlf
	ld	c,':'
	call	co
star0	call	ti
	and	7fh
	jr	z,star0
	sub	'0'
	ret	m
	cp	'Z'-'0'+1
	ret	nc
	add	a,a
	ld	b,0
	ld	c,a
	ld	hl,tbl
	add	hl,bc
	ld	e,(hl)
	inc	hl
	ld	d,(hl)
	ex	de,hl
	call	blk
	ld	c,2
	jp	(hl)
	;
	;Kommandotabel
tbl	.word	csvek
	.word	civek
	.word	covek
	.word	ruvek
	.word	puvek
	.word	luvek
	.word	seks
	.word	strsg
	.word	inp8
	.word	dmp8
	.word	error
	.word	baand
	.word	inibuf
	.word	sunit
	.word	inobuf
	.word	error
	.word	error
	.word	assign
	.word	back
	.word	comp
	.word	disp
	.word	eof
	.word	fill
	.word	goto
	.word	hexn
	.word	iport
	.word	test
	.word	kin
	.word	load
	.word	move
	.word	null
	.word	oport
	.word	puta
	.word	qout
	.word	read1	
	.word	subs
	.word	type
	.word	unld
	.word	verify
	.word	write1
	.word	xam
	.word	where
	.word	size
	.block	2
	;
	;
stabel	.byte	63h
	.byte	40h
	.byte	4dh
	.byte	0ah
	.byte	19h
	.byte	00h
	.byte	10h
	.byte	13h
	.byte	00h
	.byte	0bh
	.byte	60h
	.byte	08h
	;
	;
inibuf	ld	a,ibpnt
	ld	c,0ffh
	jr	wmem
	;
inobuf	ld	a,obpnt
	ld	c,0
	jr	wmem
	;
sunit	call	expr1
	pop	bc
	ld	a,c
	and	1
	ld	c,a
	ld	a,unit
	jr	wmem
	;
assign	call	ti
	ld	hl,ltbl
	ld	bc,400h
	ld	de,5
ass0	cp	(hl)
	jr	z,ass1
	add	hl,de
	inc	c
	jr	nz,ass0
	jr	asserr
ass1	ld	e,c
ass2	call	ti
	cp	'='
	jr	nz,ass2
	call	ti
	ld	bc,400h
ass3	inc	hl
	cp	(hl)
	jr	z,ass4
	inc	c
	djnz	ass3
asserr	jp	error
ass4	ld	a,3
	inc	e
ass5	dec	e
	jr	z,ass6
	sla	c
	sla	c
	rla
	rla
	jr	ass5
ass6	cpl
	ld	d,a
ass7	call	pchk
	jr	nc,ass7
	call	iochk
	and	d
	or	c
	ld	c,a
	;
	;
ioset	ld	a,ioff
wmem	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,a
	ld	(hl),c
	pop	hl
	ret
	;
	;
iochk	ld	a,ioff
rmem	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,a
	ld	a,(hl)
	pop	hl
	ret
	;
csvek	call	vekin
	ld	a,csloc + 1
	jr	vekud
civek	call	vekin
	ld	a,ciloc + 1
	jr	vekud	
covek	call	vekin
	ld	a,coloc + 1
	jr	vekud	
ruvek	call	vekin
	ld	a,ruloc + 1
	jr	vekud	
puvek	call	vekin
	ld	a,puloc + 1
	jr	vekud	
luvek	call	vekin
	ld	a,luloc + 1
vekud	call	wmem
	inc	a
	ld	c,b
	jr	wmem
vekin	call	expr1
	pop	bc
	ret
	;
puta	call	expr1
	call	crlf
	pop	hl
puta1	call	ki
	cp	esc
	jp	z,lfadr
	cp	'-'
	jr	z,puta3
	ld	(hl),a
	ld	c,a
	inc	hl
puta2	call	co
	jr	puta1
puta3	dec	hl
	ld	c,(hl)
	jr	puta2
	;
	;
comp	ld	a,80h
	ex	af,af'
	call	exlf
	call	casrak
comnn	call	riff
	cp	0
	jr	z,comnn
comff	call	riff
	cp	0ffh
	jr	z,comff
	jr	comd1
comd	call	riff
comd1	cp	(hl)
	call	nz,cerr
	ld	a,erro2
	call	rmem
	and	4
	jp	nz,error
	call	hilo
	jr	nc,comd
	jp	read2
	;
	;
cerr	ld	b,a
	call	hlsp
	ld	a,(hl)
	call	lbyte
	call	blk
	ld	a,b
	call	lbyte
	jp	crlf
	;
	;
disp	call	exlf
disd0	call	lfadr
disd1	call	blk
	ld	a,(hl)
	call	lbyte
	call	hilox
	ld	a,l
	and	0fh
	jr	nz,disd1
	jr	disd0
	;
	;
eof	call	expr1
eof1	call	peol
	ld	c,':'
	call	po
	xor	a
	call	pbyte
	pop	hl
	call	padr
	ld	hl,0
	call	padr
	jp	null
	;
	;
fill	call	expr3
fif	ld	(hl),c
	ld	a,c
	cp	(hl)
	jr	z,fihp
ader	call	lfadr
	jp	error
fihp	call	hilo
	jr	nc,fif
	pop	de
	jp	start
	;
	;
goto	call	pchk
	jr	c,gotg3
	jr	z,gotg0
	call	exf
	pop	de
	ld	hl,ploc
	add	hl,sp
	ld	(hl),d
	dec	hl
	ld	(hl),e
	ld	a,b
	cp	cr
	jr	z,gotg3
gotg0	ld	d,2
	ld	hl,tloc
	add	hl,sp
gotg1	push	hl
	call	expr1
	ld	e,b
	pop	bc
	pop	hl
	ld	a,b
	or	c
	jr	z,gotg2
	ld	(hl),c
	inc	hl
	ld	(hl),b
	inc	hl
	ld	a,(bc)
	ld	(hl),a
	inc	hl
	ld	a,0ffh
	ld	(bc),a
gotg2	ld	a,e
	cp	cr
	jr	z,gotg2a
	dec	d
	jr	nz,gotg1
gotg2a	ld	a,0c3h
	ld	(rst7),a
	ld	hl,trap
	ld	(rst7+1),hl
gotg3	call	crlf
	pop	de
	ld	hl,22
	add	hl,sp
	jp	(hl)
	;
	;
test	call	exlf
test1	ld	a,(hl)
	ld	b,a
	cpl
	ld	(hl),a
	xor	(hl)
	jr	z,test2
	push	de
	ld	d,b
	ld	e,a
	call	hlsp
	call	bits
	call	crlf
	ld	b,d
	pop	de
test2	ld	(hl),b
	call	hilox
	jr	test1
	;
	;
move	call	expr3
movm	ld	a,(hl)
	ld	(bc),a
	ld	a,(bc)
	cp	(hl)
	jr	z,movm1
	push	bc
	pop	hl
	jp	ader
movm1	inc	bc
	call	hilox
	jr	movm
	;
	;
read1	call	read
read2	call	iochk
	and	ürmsk
	cp	rcas
	jp	z,rdfin
	ret
read	ld	a,81h
	ex	af,af'
	call	expr1
	ld	a,b
	sub	cr
	ld	b,a
	ld	c,a
	pop	de
	jr	z,rer0
	call	expr1
	pop	bc
rer0	ex	de,hl
	exx
	call	crlf
	call	casrak
lod0	call	rix
	sub	':'
	ld	b,a
	and	0feh
	jr	nz,lod0
	ld	d,a
	call	sbyte
	ld	e,a
	call	sbyte
	push	af
	call	sbyte
	exx
	pop	de
	ld	e,a
	push	bc
	push	de
	push	hl
	add	hl,de
	ex	(sp),hl
	pop	ix
	exx
	pop	hl
	call	sbyte
	dec	a
	ld	a,b
	pop	bc
	jr	nz,rea
	add	hl,bc
	add	ix,bc
rea	inc	e
	dec	e
	jr	z,done
	dec	a
	jr	z,lodr
rel1	call	sbyte
	call	store
	jr	nz,rel1
lod4	call	sbyte
	jr	z,lod0
err3	push	ix
	pop	hl
	call	ladr
err2	jp	error
done	ld	a,h
	or	l
	ret	z
	ex	de,hl
	ld	hl,ploc + 2
	add	hl,sp
	ld	(hl),d
	dec	hl
	ld	(hl),e
	ret
lodr	ld	l,1
lodl1	call	lodcb
	jr	c,lodl3
lodl5	call	store
	jr	nz,lodl1
	jr	lod4
lodl3	ld	c,a
	call	lodcb
	ld	b,a
	exx
	push	bc
	exx
	ex	(sp),hl
	add	hl,bc
	ld	a,l
	call	store
	ld	a,h
	pop	hl
	jr	lodl5
lodcb	dec	l
	jr	nz,lodlc1
	call	sbyte
	dec	e
	ld	h,a
	ld	l,8
lodlc1	call	sbyte
	sla	h
	ret
sbyte	push	bc
	call	ribble
	rlca
	rlca
	rlca
	rlca
	ld	c,a
	call	ribble
	or	c
	ld	c,a
	add	a,d
	ld	d,a
	ld	a,c
	pop	bc
	ret
store	ld	(ix+0),a
	cp	(ix)
	jr	nz,err3
	inc	ix
	dec	e
	ret
	;
	;
subs	call	expr1
	pop	hl
subs0	ld	a,(hl)
	call	lbyte
	call	copck
	ret	c
	jr	z,subs1
	cp	'_'
	jr	z,subs2
	push	hl
	call	exf
	pop	de
	pop	hl
	ld	(hl),e
	ld	a,e
	cp	(hl)
	jp	z,ader
	ld	a,b
	cp	cr
	ret	z
subs1	inc	hl
subs3	ld	a,l
	and	7
	call	z,lfadr
	jr	subs0
subs2	dec	hl
	jr	subs3
	;
	;
type	call	exlf
typt0	call	lfadr
	ld	b,48
typt1	ld	a,(hl)
	and	7fh
	cp	' '
	jr	nc,typt3
typt2	ld	a,'.'
typt3	cp	7fh
	jr	nc,typt2
	ld	c,a
	call	co
	call	hilox
	djnz	typt1
	jr	typt0
	;
	;
where	ld	d,0
whew0	call	expr1
	pop	hl
	ld	h,l
	push	hl
	inc	sp
	inc	d
	ld	a,b
	sub	cr
	jr	nz,whew0
	ld	b,a
	ld c,a
	ld	h,a
	ld	l,d
	dec	l
	add	hl,sp
	push	hl
	push	bc
findc	push	bc
	call	crlf
	pop	bc
find1	pop	hl
	pop	ix
	ld	e,d
	ld	a,(ix + 0)
	cpir
	jp	po,done2
	push	ix
	push	hl
found	dec	e
	jr	z,tell
	ld	a,(ix - 1)
	cp	(hl)
	jr	nz,find1
	inc	hl
	dec	ix
	jr	found
tell	pop	hl
	push	hl
	dec	hl
	push	bc
	call	ladr
	pop	bc
	jr	findc
done2	inc	sp
	dec	e
	jr	nz,done2
	ret
	;
	;
write1	call	write
	call	iochk
	and	üpmsk
	cp	pcas
	jr	z,wrihop
	cp	pbuf
	ret	nz
wrihop	ld	hl,star0
	push	hl
	jp	eof1	
write	ld	a,81h
	ex	af,af'
	call	exlf
	call	wait
	call	caswak
	call	lead
wriw0	call	peol
	ld	bc,':'
	call	po
	push	de
	push	hl
wriw1	inc	b
	call	hilo
	jr	c,wriw4
	ld	a,24
	sub	b
	jr	nz,wriw1
	pop	hl
	call	wriw2
	pop	de
	jr	wriw0
wriw2	ld	d,a
	ld	a,b
	call	pbyte
	call	padr
	xor	a
	call	pbyte
wriw3	ld	a,(hl)
	call	pbyte
	inc	hl
	djnz	wriw3
	xor	a
	sub	d
	jp	pbyte
wriw4	pop	hl
	pop	de
	xor	a
	jr	wriw2
	;
	;
xam	call	ti
	ld	hl,actbl
	cp	cr
	jr	z,xamx6
	cp	27h		;'		
	jr	nz,xamx0
	ld	hl,prmtb
	call	ti
	cp	cr
	jr	z,xamx6
xamx0	cp	(hl)
	jr	z,xamx1
	bit	7,(hl)
	jp	nz,error
	inc	hl
	inc	hl
	jr	xamx0
xamx1	call	blk
xamx2	inc	hl
	ld	a,(hl)
	ld	b,a
	and	3fh
	ex	de,hl
	ld	l,a
	ld	h,0
	add	hl,sp
	ex	de,hl
	inc	hl
	ld	a,(de)
	call	lbyte
	bit	7,b
	jr	z,xamx3
	dec	de
	ld	a,(de)
	call	lbyte
xamx3	call	copck
	ret	c
	jr	z,xamx5
	push	hl
	push	bc
	call	exf
	pop	hl
	pop	af
	push	bc
	push	af
	ld	a,l
	ld	(de),a
	pop	bc
	bit	7,b
	jr	z,xamx4
	inc	de
	ld	a,h
	ld	(de),a
xamx4	pop	bc
	pop	hl
	ld	a,b
	cp	cr
	ret	z
xamx5	bit	7,(hl)
	ret	nz
	jr	xamx2
xamx6	call	crlf
xamx7	ld	a,(hl)
	inc	hl
	or	a
	ret	m
	ld	c,a
	call	co
	ld	c,'='
	call	co
	ld	a,(hl)
	ld	b,a
	and	3fh
	inc	hl
	ex	de,hl
	ld	l,a
	ld	h,0
	add	hl,sp
	ex	de,hl
	bit	6,b
	jr	nz,xamx9
	ld	a,(de)
	call	lbyte
	bit	7,b
	jr	z,xamx10
	dec	de
	ld	a,(de)
xamx8	call	lbyte
xamx10	call	blk
	jr	xamx7
xamx9	push	hl
	ld	a,(de)
	ld	h,a
	dec	de
	ld	a,(de)
	ld	l,a
	ld	a,(hl)
	pop	hl
	jr	xamx8
	;
	;
tom	ld	hl,msg
tom1	ld	c,(hl)
	inc	hl
	call	co
	djnz	tom1
abort	call	csts
	or	a
	ret	z
	;
cchk	call	ki
	cp	esc
	ret	nz
	;
	;
error	call	memsiz
	ld	de,-22
	add	hl,de
	ld	sp,hl
	ld	hl,start
	push	hl
	ld	c,'?'
	call	co
	ld	a,iorun
	call	rmem
	or	a
	ret	z
	ld	a,rset
	out	(wr0),a
	jp	inte2
	;
	;
riff	call	ri
	jr	c,error
	cp	d
	ret
	;
	;
size	call	memsiz
	ld	bc,endx - exit +flram
	add	hl,bc
	;
lfadr	call	crlf
	;
hlsp	call	ladr
	;
blk	ld	c,' '
	;
co	call	iochk
	and	ücmsk
	jr	nz,co0
	;
ttyout	in	a,(tts)

	and	1
	jr	z,ttyout
	ld	a,c
	out	(tto),a
	ret
	;
co0	dec	a
	jr	nz,co1
	;
crtout	ld	a,lf
	cp	c
	ret	z
	xor	a
	cp	c
	ret	z
	exx
	push	bc
	push	de
	push	hl
	exx
	push	bc
	push	de
	push	hl
	ld	de,1
	call	aaaa
	dec	h
	ld	(hl),c
	call	screen
	pop	hl
	pop	de
	pop	bc
	exx
	pop	hl
	pop	de
	pop	bc
	exx
	ld	a,c
	ret
	;
co1	dec	a
	jr	z,lo
	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,coloc
	ex	(sp),hl
	ret
	;
	;LISTER-DEVICES
	;
lo	call	iochk
	and	ülmsk
	jr	z,ttyout
	cp	lcrt
	jr	nz,loli
	call	crtout
	cp	lf
	ret	nz
	call	crtin
	cp	esc
	jp	z,error
	ex	af,af'
	ld	a,c
	ret
loli	cp	line
	jr	z,lnloc
	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,luloc
	ex	(sp),hl
	ret
	;
peol	ld	c,cr
	call	po
	ld	c,lf
	;
po	call	iochk
	and	üpmsk
	jr	z,ttyout
	cp	pcas
	jr	nz,po1
	;
po0	call	inte
	ld	a,wrr
	out	(wr1),a
	ld	a,c
	out	(wr2),a
	ret
	;
po1	cp	pbuf
	jp	z,obuf
	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,puloc
	ex	(sp),hl
	ret
	;
lnloc	in	a,(lpsp)
	and	empty + busy
	cp	empty + busy
	jr	nz,lnloc
	ld	a,c
	out	(lpdp),a
	in	a,(lpsp)
	res	strobe,a
	out	(lpsp),a
	set	strobe,a
	out	(lpsp),a
	ld	a,c
	ret
	;
unld	ld	a,80h
	ex	af,af'
	call	exlf
	call	wait
unlddi	call	caswak
	call	lead
	call	mark
unlu	ld	c,(hl)
	call	po
	call	hilo
	jr	nc,unlu
	call	mark
	;
null	call	trail
	;
wait1	call	iochk
	and	üpmsk
	cp	pcas
	jp	z,wrfin
wait	call	iochk
	and	ücmsk ø üpmsk
	ret	nz
	jp	star0
	;
	;
conv	and	0fh
	add	a,90h
	daa
	adc	a,40h
	daa
	ld	c,a
	ret
	;
	;
exlf	call	expr
	pop	de
	pop	hl
	;
crlf	push	hl
	ld	b,5
	call	tom
	pop	hl
	ret
	;
	;
csts	call	iochk
	and	ücmsk
	jr	nz,cs0
	in	a,(tts)
	cpl
	jr	cs1
cs0	dec	a
	jr	nz,cs3
	in	a,(crts)
cs1	and	2
	ld	a,false
cs2	ret	nz
	cpl
	ret
cs3	dec	a
	ret	z
	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,csloc
	ex	(sp),hl
	ret
	;
	;
expr3	inc	c
	call	expr
	call	crlf
	pop	bc
	pop	de
	pop	hl
	ret
	;
	;
expr1	ld	c,1
expr	ld	hl,0
ex0	call	ti
ex1	ld	b,a
	call	nibble
	jr	c,expex2
	add	hl,hl
	add	hl,hl
	add	hl,hl
	add	hl,hl
	or	l
	ld	l,a
	jr	ex0
expex2	ex	(sp),hl
	push	hl
	ld	a,b
	call	qchk
	jr	nc,expex3
	dec	c
	ret	z
expex3	jp	z,error
	dec	c
	jr	nz,expr
	ret
exf	ld	c,1
	ld	hl,0
	jr	ex1
	;
	;
hilox	call	hilo
	ret	nc
	pop	de
	ret
	;
hilo	inc	hl
	ld	a,h
	or	l
	scf
	ret	z
	ld	a,e
	sub	l
	ld	a,d
	sbc	a,h
	ret
	;
	;
hexn	call	exlf
	push	hl
	add	hl,de
	call	hlsp
	pop	hl
	or	a
	sbc	hl,de
	call	ladr
	add	hl,de
	call	crlf
	ld	b,h
	call	overz
	ld	b,l
	jp	overz
	;
ladr	ld	a,h
	call	lbyte
	ld	a,l
lbyte	push	af
	rrca
	rrca
	rrca
	rrca
	call	lby2
	pop	af
lby2	call	conv
	jp	co
	;
	;
mark	ld	bc,08ffh
	jr	le0
	;
trail	ld	bc,0ff00h
	jr	le0
	;
lead	ld	bc,4800h
le0	call	po
	djnz	le0
	ret
	;
	;
memck	push	hl
	call	memsiz
	ld	a,l
	sub	4ch
	jr	nc,memb
	dec	h
memb	ld	b,h
	pop	hl
	ret
	;
memsiz	push	bc
	ld	hl,0ecffh
memsm0	dec	h
	ld	a,(hl)
	cpl
	ld	(hl),a
	cp	(hl)
	cpl
	ld	(hl),a
	jr	nz,memsm0
	ld	bc,exit - endx - flram
	add	hl,bc
	pop	bc
	ret
	;
	;
ribble	call	rix
nibble	sub	'0'
	ret	c
	cp	'G' - '0'
	ccf
	ret	c
	cp	10
	ccf
	ret	nc
	sub	'A' - '9' - 1
	cp	0ah
	ret
	;
	;
padr	ld	a,h
	call	pbyte
	ld	a,l
	;
pbyte	push	af
	rrca
	rrca
	rrca
	rrca
	call	conv
	call	po
	pop	af
	push	af
	call	conv
	call	po
	pop	af
	add	a,d
	ld	d,a
	ret
	;
	;
copck	ld	c,'-'
	call	co
	;
pchk	call	ti
	;
qchk	cp	' '
	ret	z
	cp	','
	ret	z
	cp	cr
	scf
	ret	z
	ccf
	ret
	;
	;
ci	call	iochk
	and	ücmsk
	jr	nz,ci1
ttyin	in	a,(tts)
	and	2
	jr	z,ttyin
	in	a,(tti)
	ret
	;
ci1	dec	a
	jr	nz,ci2
	;
crtin	in	a,(crts)
	and	2
	jr	nz,crtin
	in	a,(crti)
	ret
	;
ci2	dec	a
	jr	z,ri
	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,ciloc
	ex	(sp),hl
	ret
	;
	;
ri	call	iochk
	and	ürmsk
	jr	nz,ricas1
	;
ritt	call	ttyin
	or	a
	ret
	;
ricas1	cp	rcas
	jr	nz,ribuf
	;
ricas	call	inte
	call	rdint1
	jp	nz,abend
	in	a,(rr2)
	or	a
	ret
	;
ribuf	cp	rbuf
	jp	z,ibuf
	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,ruloc
	ex	(sp),hl
	ret
	;
rix	call	riff
	and	7fh
	ret
	;
	;
load	ld	a,80h
	ex	af,af'
	call	expr1
	pop	hl
loaddi	call	crlf
	call	casrak
	ld	d,0ffh
ddil0	ld	b,4
ddil1	call	riff
	jr	nz,ddil0
	djnz	ddil1
ddil2	call	riff
	jr	z,ddil2
	ld	(hl),a
ddil3	inc	hl
	call	riff
	jr	z,ddiel
	ld	(hl),a
	jr	ddil3
ddiel	ld	e,1
ddiel0	call	riff
	jr	nz,ddiel1
	inc	e
	ld	a,max
	cp	e
	jr	nz,ddiel0
	call	read2
	jp	lfadr
ddiel1	ld	(hl),d
	inc	hl
	dec	e
	jr	nz,ddiel1
	ld	(hl),a
	jr	ddil3
	;
retur	dec	sp
	dec	sp
	dec	sp
	dec	sp
	;
restart	di
	push	hl
	push	de
	push	bc
	push	af
	call	memsiz
	ex	de,hl
	ld	hl,10
	add	hl,sp
	ld	b,4
	ex	de,hl
restr0	dec	hl
	ld	(hl),d
	dec	hl
	ld	(hl),e
	pop	de
	djnz	restr0
	pop	bc
	dec	bc
	ld	sp,hl
	ld	hl,tlocx
	add	hl,sp
	ld	a,(hl)
	sub	c
	inc	hl
	jr	nz,restr1
	ld	a,(hl)
	sub	b
	jr	z,restr3
restr1	inc	hl
	inc	hl
	ld	a,(hl)
	sub	c
	jr	nz,restr2
	inc	hl
	ld	a,(hl)
	sub	b
	jr	z,restr3
restr2	inc	bc
restr3	ld	hl,llocx
	add	hl,sp
	ld	(hl),e
	inc	hl
	ld	(hl),d
	inc	hl
	inc	hl
	ld	(hl),c
	inc	hl
	ld	(hl),b
	push	bc
	ld	c,'@'
	call	co
	pop	hl
	call	ladr
	ld	hl,tlocx
	add	hl,sp
	ld	bc,200h
restr4	ld	e,(hl)
	ld	(hl),c
	inc	hl
	ld	d,(hl)
	ld	(hl),c
	inc	hl
	ld	a,e
	or	d
	jr	z,restr5
	ld	a,(hl)
	ld	(de),a
restr5	inc	hl
	djnz	restr4
	ex	af,af'
	exx
	push	hl
	push	de
	push	bc
	push	af
	push	ix
	push	iy
	ld	a,i
	ld	b,a
	ld	a,r
	ld	c,a
	push	bc
	jp	start
	;
	;
ki	call	ci
	and	7fh
	ret
	;
ti	call	ki
	inc	a
	ret	m
	dec	a
	ret	z
	cp	'N'
	ret	z
	cp	6eh
	jr	z,tit
	cp	cr
	ret	z
	push	bc
	ld	c,a
	call	co
	ld	a,c
	pop	bc
	cp	'A' - 1
	ret	c
	cp	7ah + 1
	ret	nc
tit	and	5fh
	ret
	;
	;
iport	call	expr1
	pop	bc
	in	e,(c)
bits	ld	b,8
ipq2	call	blk
	sla	e
	ld	a,'0' > 1
	adc	a,a
	ld	c,a
	call	co
	djnz	ipq2
	ret
oport	call	expr
	pop	de
	pop	bc
	out	(c),e
	ret
	;
	;
verify	call	expr3
verio	ld	a,(bc)
	cp	(hl)
	jr	z,verib
	push	bc
	call	cerr
	pop	bc
verib	inc	bc
	call	hilox
	jr	verio
	;
qout	ld	a,80h
	ex	af,af'
	call	exlf
	call	iochk
	push	af
	and	pmsk
	or	pcas
	call	resaf + 1
	call	unlddi
	jr	resaf
	;
kin	ld	a,80h
	ex	af,af'
	call	expr1
	pop	hl
	call	iochk
	push	af
	and	rmsk
	or	rcas
	call	resaf + 1
	call	loaddi
resaf	pop	af
	ld	c,a
	jp	ioset
	;
	;I/O-TABEL
	;
ltbl	.byte	'C'
	.byte	'T'
	.byte	'C'
	.byte	'B'
	.byte	'U'
	;
	.byte	'R'
	.byte	'T'
	.byte	'B'
	.byte	'C'
	.byte	'U'
	;
	.byte	'P'
	.byte	'T'
	.byte	'B'
	.byte	'C'
	.byte	'U'
	;
	.byte	'L'
	.byte	'T'
	.byte	'C'
	.byte	'L'
	.byte	'U'
	;
	;
exit	pop	bc
	ld	a,c
	ld	r,a
	ld	a,b
	ld	i,a
	pop	iy
	pop	ix
	pop	af
	pop	bc
	pop	de
	pop	hl
	ex	af,af'
	exx
	pop	de
	pop	bc
	pop	af
	pop	hl
	ld	sp,hl
	nop
	ld	hl,0
	jp	0
	.word	0,0,0
	;
endx	=	$
aloc	=	15h
bloc	=	13h
cloc	=	12h
dloc	=	11h
eloc	=	10h
floc	=	14h
hloc	=	31h
lloc	=	30h
ploc	=	34h
sloc	=	17h
tloc	=	35h
tlocx	=	25h
llocx	=	20h
aploc	=	09h
bploc	=	0bh
cploc	=	0ah
dploc	=	0dh
eploc	=	0ch
fploc	=	8
hploc	=	0fh
lploc	=	0eh
xloc	=	7
yloc	=	5
rloc	=	2
iloc	=	3
	;
actbl	.byte	'A', aloc
	.byte	'B', bloc
	.byte	'C', cloc
	.byte	'D', dloc	
	.byte	'E', eloc
	.byte	'F', floc
	.byte	'H', hloc 
	.byte	'L', lloc
	.byte	'M', hloc ø 0c0h
	.byte	'P', ploc ø 080h
	.byte	'S', sloc ø 080h
	.byte	'I', iloc
	;
prmtb	.byte	'A',aploc
	.byte	'B',bploc
	.byte	'C',cploc
	.byte	'D',dploc
	.byte	'E',eploc
	.byte	'F',fploc
	.byte	'H',hploc
	.byte	'L',lploc
	.byte	'M',hploc ø 0c0h
	.byte	'X',xloc ø 80h
	.byte	'Y',yloc ø 80h
	.byte	'R',rloc
	.byte	80h
	;
	;
	;ANDEN DEL AF MONITOR-SOURCE
	;V 1.0 COMET
	;KONSTANTER TIL OP.SYS.
	;
rr0	=	0e0h
rrq	=	1
wrq	=	2
grq	=	4
rdf	=	8
c3s	=	10h
c2s	=	20h
	;
rr1	=	0e1h
uas	=	1
c1s	=	2
rws	=	4
scip	=	8
swp	=	10h
mkf	=	20h
mk	=	40h
s3	=	80h
	;
rr2	=	0e2h
rr3	=	0e3h
nar	=	1
nbr	=	2
cor	=	4
doe	=	8
cre	=	10h
rec	=	20h
gpf	=	40h
wd	=	80h
gnt	=	1
wr0	=	0e0h
wmd	=	2
wcr	=	8
wme	=	10h
srs	=	20h
rset	=	80h
wr1	=	0e1h
grd	=	2
gre	=	4
rrd	=	8
rre	=	10h
rrr	=	40h
wrr	=	80h
wr2	=	0e2h
wr3	=	0e3h
rw	=	8
rri	=	10h
c1	=	20h
c2	=	80h
c3	=	40h
wr5	=	0e5h
rmd	=	8
rme	=	10h
wr6	=	0e6h
ua	=	1
	;
	;OFFSET-VAERDIER
	;
erf	=	0e0h
err1	=	0e1h
erro2	=	0e2h
poerr	=	0e3h
rderr	=	0e4h
prerr	=	0e5h
rcerr	=	0e6h
iorun	=	0e7h
unit	=	0e8h
eot	=	0e9h
blokke	=	0eah
blknr	=	0ebh
	;
nzflg	=	7
	;
strsg	ld	c,4
	call	expr
	pop	bc
	inc	c
	pop	hl
	ld	b,l
	dec	b
	push	bc
	pop	iy
	pop	hl
	pop	de
	and	a
	sbc	hl,de
	push	hl
	pop	ix
	call	crlf
stlp3	call	iochk
	push	af
	ld	c,1
	call	ioset
	push	de
	ld	hl,-64
	call	carret
	pop	de
	ld	c,cr
	call	crtout
	ld	h,d
	ld	l,e
	call	hlsp
	pop	af
	ld	c,a
	call	ioset
	inc	hl
	push	ix
	pop	bc
stlp2	ld	a,(de)
	cpir
	jp	po,stfin1
	push	bc
	dec	hl
	push	hl
	push	de
	push	iy
	pop	bc
stlp1	inc	de
	inc	hl
	ld	a,(de)
	cp	(hl)
	jr	z,sthp1
	dec	c
	jr	z,stnmat
sthp1	djnz	stlp1
	push	bc
	ld	c,cr
	call	co
	pop	hl
	ex	(sp),hl
	call	hlsp
	ld	d,h
	ld	e,l
	pop	bc
	push	iy
	pop	hl
	ld	a,l
	sub	c
	inc	h
	ld	l,a
	call	hlsp
	pop	hl
	call	ladr
	call	crlf
	jr	sthp2
stnmat	pop	de
	pop	hl
sthp2	inc	hl
	pop	bc
	jr	stlp2
stfin1	inc	de
	dec	ix
	call	abort
	push	ix
	pop	hl
	ld	a,l
	or	h
	jr	nz,stlp3
	ret
	;
inp8	call	exlf
	call	trans
	ld	b,a
	ex	de,hl
	call	trans
	ld	h,b
	ld	l,a
	jr	imp84
imp80	ld	b,(hl)
	call	overz
	call	copck
	ret	c
	jr	z,imp81
	cp	'_'
	jr	z,imp82
	push	hl
	call	exf
	pop	hl
	call	trans
	pop	hl
	ld	(hl),a
	ld	a,b
	cp	cr
	ret	z
imp81	inc	hl
imp83	ld	a,l
	and	7
	jr	nz,imp80
imp84	call	moverz
	jr	imp80
imp82	dec	hl
	jr	imp83
	;
dmp8	ld	c,4
	call	expr
	pop	hl
	call	trans
	ld	e,a
	pop	hl
	call	trans
	ld	d,a
	pop	hl
	call	trans
	ld	b,a
	pop	hl
	call	trans
	ld	h,a
	ld	l,b
impd80	call	moverz
impd81	ld	b,(hl)
	call	overz
	call	abort
	call	hilox
	ld	a,l
	and	7
	jr	nz,impd81
	jr	impd80
	;
trans	ld	a,h
	and	3
	rrca
	rrca
	ld	h,a
	ld	a,l
	and	70h
	rrca
	or	h
	ld	h,a
	ld	a,l
	and	7
	or	h
	ret
	;
moverz	call	lfadr
	call	blk
	ld	b,h
	call	overz
	ld	b,l
	call	overz
	jp	blk
	;
overz	ld	a,b
	and	0c0h
	call	ovsk6
	ld	a,b
	and	38h
	call	ovsk3
	ld	a,b
	and	7
	call	ovsk0
	jp	blk
	;
ovsk6	rrca
	rrca
	rrca
ovsk3	rrca
	rrca
	rrca
ovsk0	add	a,30h
	ld	c,a
	jp	co
	;
	;SPOL TAPE TILBAGE
	;
back	ld	a,unit
	call	rmem
	out	(wr6),a
	in	a,(rr1)
	and	scip
	jp	z,error
	ld	a,rw
	out	(wr3),a
	ld	c,0
	ld	a,eot
	call	wmem
	ld	a,blknr
	jp	wmem
	;
	;
	;AKTIVER TAPE TIL SKRIVNING
	;
caswak	call	iochk
	and	üpmsk
	cp	pcas
	jr	z,fnskr
	cp	pbuf
	jp	z,inobuf
	ret
fnskr	call	ti
	ld	b,a
	call	bufwak
	ld	c,b
	call	po0
	ex	af,af'
	ld	c,a
	call	po0
	ex	af,af'
	ret
bufwak	push	de
	ld	e,1
	call	tpck
skr8	ld	a,c1+c2
	out	(wr3),a
	ld	a,blknr
	call	rmem
	cp	2
	ld	a,50
	jp	skr1
	ld	a,200
skr1	call	delay
	ld	a,0aah
	out	(wr2),a
	ld	a,wme
	out	(wr0),a
	pop	de
	ret
	;
	;
	;STANDS SKRIVNING
	;
wrfin	call	inte
	ld	a,wrr
	out	(wr1),a	
	ld	a,wcr
	out	(wr0),a
	call	inte
	ld	a,wrr
	out	(wr1),a
	call	inte
	ld	a,wrr
	out	(wr1),a
	ld	a,0aah
	out	(wr2),a
	xor	a
	out	(wr0),a
	call	inte
	ld	a,wrr
	out	(wr1),a
	ld	a,wmd
	out	(wr0),a
	ld	a,8
	call	delay
	call	eotck
	ld	a,c1
	out	(wr3),a
	ld	a,40
	call	delay
	call	eotck
	in	a,(rr3)
	and	cor
	ld	c,a
	ld	a,erro2
	call	mskr
skr6	xor	a
	out	(wr3),a
	jp	gap2
	;
	;
	;AKTIVER TAPE TIL LAESNING
	;
casrak	call	iochk
	and	ürmsk
	cp	rcas
	jr	z,filnvn
	cp	rbuf
	jp	z,inibuf
	ret
filnvn	call	bufrak
	in	a,(rr2)
	ld	c,a
	call	co
	call	ricas
	ld	c,a
	ex	af,af'
	cp	c
	ret	z
	ld	c,'?'
	call	co
	ld	bc,error
	push	bc
	jp	rdbrk
bufrak	push	de
	ld	e,0
	call	tpck
les1	ld	a,gre + rre
	out	(wr1),a
	ld	a,c2
	out	(wr3),a
	ld	a,24
	call	delay
	xor	a
	out	(wr3),a
	ld	a,c2
	out	(wr3),a
	ld	a,rme
	out	(wr5),a
	pop	de
	call	ricas
	sub	0aah
	ld	c,a
	ld	a,prerr
	call	mskr
lesok	call	inte
	call	rdint1
	jp	nz,abend
	in	a,(rr3)	
	and	rec
	xor	rec
	ld	c,a
	ld	a,rcerr
mskr	call	wmem
	ret	z
erfskr	ld	a,erf
	jp	wmem
	;
tpck	ld	c,true
	call	inte21
	call	ready
	jr	nz,tpnot
	ld	a,eot
	call	rmem
	or	a
	ret	z
tpnot	call	inte2
	inc	c
	jp	abnd2
	;
	;STANDS LAESNING FRA TAPE
	;
rdfin	call	inte
	call	rdint1
	jr	z,rdfin
rdfin1	ld	a,grd
	out	(wr1),a
	ld	a,rmd
	out	(wr5),a
	call	eotck
	xor	a
	out	(wr3),a
	ld	a,24
	call	delay
	call	eotck
	in	a,(rr3)
	and	cre + doe + cor + nbr + nar
	ld	c,a
	ld	a,erro2
	call	wmem
	ld	a,c
	and	cre +  doe + cor
	jr	z,gap1
	ld	c,a
	call	erfskr
gap1	in	a,(rr2)
	sub	0aah
	ld	c,a
	ld	a,poerr
	call	mskr
gap2	ld	a,-1
	call	spol11
inte2	ld	c,false
inte21	ld	a,iorun
	jp	wmem
	;
	;
eotck	in	a,(rr1)
	and	mkf
	ret	z
	ld	c,a
speot	ld	a,eot
	jr	abnd1
	;
	;
ready	push	de
	call	clear
	ld	a,rset
	out	(wr0),a
	ld	a,unit
	call	rmem
	out	(wr6),a
	in	a,(rr1)
	and	rws
	jr	nz,abnd3
	pop	de
	ld	a,e
	or	a
	in	a,(rr1)
	jr	nz,ready1
	and	scip
	xor	scip
	jr	ready2
ready1	and	scip + swp
	xor	scip + swp
ready2	ld	c,a
	ld	a,err1
	jp	mskr
	;
	;
clear	ex	de,hl
	ld	hl,0
	add	hl,sp
	ex	de,hl
	ld	e,erf
	ld	c,nzflg
	xor	a
clear1	ld	(de),a
	inc	de
	dec	c
	jr	nz,clear1
	ret
	;
	;
inte	push	af
	push	hl
	ld	hl,0
inte1	call	eotck
	in	a,(rr0)
	and	rrq + wrq + grq
	jr	nz,hpi
	dec	hl
	ld	a,l
	or	h
	jr	nz,inte1
	jr	abnd3
hpi	pop	hl
	pop	af
	ret
	;
rdint1	in	a,(rr0)
	and	grq
	ret	nz
	ld	a,rrr
	out	(wr1),a
	ret
	;
abend	ld	c,1
	ld	a,rderr
abnd1	call	wmem
abnd2	call	erfskr
abnd3	jp	error
	;
	;
seks	call	ti
	ld	d,a
	call	crlf
seksks	call	bufrak
	in	a,(rr2)
	ld	c,a
	call	co
	cp	d
	jr	z,sekfu
	call	rdfin
	call	abort
	jr	seksks
sekfu	call	ricas
	sub	50h
	ld	c,a
	call	co
rdbrk	xor	a
	call	delay
	call	rdfin1
	ld	a,blknr
	call	rmem
	dec	a
	ld	b,a
	jr	spol
	;
	;
	;SPOLEFUNKTION, FIND BLOK
	;
	;
baand	call	expr1
	pop	hl
	ld	b,l	
	;
	;
	;SELVE SPOLERUTINEN
	;
spol	ld	a,blknr
	call	rmem
	sub	b
	ld	c,a
	ld	a,blokke
	call	wmem
	ld	e,0
	call	tpck
	ld	a,blokke
	call	rmem
	or	a
	ret	z
	ld	a,c2
	jp	m,spol2
	ld	a,c3
spol2	out	(wr3),a
	ld	d,a
	ld	a,rme
	out	(wr5),a
	ld	a,blokke
	call	rmem
	or	a
	jp	p,spol0
	neg
spol0	ld	b,a
	ld	a,6
	call	delay
spol5	xor	a
	out	(wr3),a
	ld	a,d
	out	(wr3),a
	ld	a,srs
	out	(wr0),a
spol3	in	a,(rr1)
	and	mkf
	jr	nz,spol9
	in	a,(rr3)
	and	rec
	jr	z,spol3
spol4	in	a,(rr3)
	and	gpf
	jr	z,spol4
	in	a,(rr1)
	and	mkf
	jr	nz,spol9
	dec	b
	jr	nz,spol5
	ld	a,d
	cp	c3
	ld	a,30
	call	z,delay
	in	a,(rr1)
	and	mkf
	jr	nz,spol9
	xor	a
	out	(wr3),a
	ld	a,24
	call	delay
	in	a,(rr1)
	and	mkf
	jr	nz,spol9
	ld	a,blokke
	call	rmem
spol11	ld	b,a
	ld	a,blknr
	call	rmem
	sub	b
	ld	c,a
	ld	a,blknr
	call	wmem
	jp	inte2
spol9	xor	a
	out	(wr3),a
	ld	a,24
	call	delay
	ld	a,d
	cp	c3
	ld	a,blokke
	call	rmem
	jr	z,spol10
	add	a,b
	call	spol11
	ld	c,1
	jp	speot
spol10	sub	b
	jr	spol11
	;
	;
delay	push	de
delay1	ld	e,30
delay2	ld	d,22
delay3	dec	d
	jr	nz,delay3
	dec	e
	jr	nz,delay2
	dec	a
	jr	nz,delay1
	pop	de
	ret
	;
	;
	;BUFFER-RUTINER
	;
obuf	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,obpnt
	inc	(hl)
	ld	l,(hl)
	dec	l
	dec	h
	dec	h
	dec	h
	ld	(hl),c
	inc	l
	call	z,obob
	pop	hl
	ld	a,c
	ret
obob	push	bc
	call	bufwak
	ld	a,wrr
	ld	bc,wr2
oblpx	call	inte
	out	(wr1),a
	outi
	jr	nz,oblpx
	call	wrfin
	call	blkskr
	pop	bc
	ret
	;
ibuf	push	hl
	ld	hl,0
	add	hl,sp
	ld	l,ibpnt
	inc	(hl)
	ld	l,(hl)
	dec	h
	dec	h
	dec	l
	inc	l
	call	z,ibuibi
	ld	a,(hl)
	pop	hl
	or	a
	ret
ibuibi	push	bc
	call	bufrak
	ld	bc,rr2
	jr	ibuin1
ibuinl	call	inte
	call	rdint1
	jp	nz,abend
ibuin1	ini
	jr	nz,ibuinl
	call	rdfin
	call	blkskr
	pop	bc
	dec	h
	ret
	;
blkskr	push	hl
	push	de
	ld	hl,-64
	call	carret
	pop	de
	call	crlf
	ld	a,blknr
	call	rmem
	dec	a
	call	lbyte
	pop	hl
	jp	blk
	;
clrscr	xor	a
	call	aaaa
	ld	(hl),a
	ld	hl,0ec00h
	ld	de,0ec01h
	ld	bc,3ffh
	ld	(hl),' '
	ldir
	ld	hl,0
	jp	abc
screen	ld	a,d
	or	e
	ret	z
	ld	a,(hl)
	inc	hl
	dec	de
	exx
	cp	9
	jr	nz,aca
	push	de
	call	bbbb
	call	eeee
	ex	de,hl
	pop	de
	ld	a,l
	and	0f8h
	ld	l,a
	ld	de,8
	add	hl,de
	xor	a
	jr	ada
aca	cp	0dh
	jr	nz,aea
	push	de
	call	bbbb
	call	eeee
	ex	de,hl
	pop	de
	ld	a,l
	and	3fh
	jr	nz,afa
	push	hl
	call	aaaa
	ld	a,(hl)
	pop	hl
	or	a
	jr	z,aga
afa	ld	a,l
	and	0c0h
	ld	l,a
	ld	de,40h
	add	hl,de
aga	ld	a,1
	jr	ada
aea	push	de
	call	bbbb
	call	eeee
	ex	de,hl
	pop	de
	call	abd
	xor	a
	push	de
	call	bbbb
	call	eeee
	ex	de,hl
	pop	de
	inc	hl
ada	push	hl
	call	aaaa
	ld	(hl),a
	pop	hl
	ld	a,h
	xor	4
	or	l
	jr	nz,aha
	ld	hl,0
	call	abe
	ld	b,40h
	ld	a,20h
abf	ld	(hl),a
	inc	hl
	djnz	abf
	ld	hl,40h
	call	abe
	call	abg
	ld	hl,03c0h
aha	call	abc
	exx
	jp	screen
abe	push	hl
	call	cccc
	call	eeee
	pop	hl
	add	hl,de
	ld	a,h
	and	3
	add	a,0ech
	ld	h,a
	ret
abd	ld	b,a
	call	abe
	ld	(hl),b
	ret
abg	push	de
	ex	de,hl
	call	cccc
	call	dddd
	pop	de
	ld	a,0ch
	out	(mcrtd0),a
	ld	a,h
	out	(mcrtd1),a
	ld	a,0dh
	out	(mcrtd0),a
	ld	a,l
	out	(mcrtd1),a
	ret
carret	push	hl
	call	bbbb
	call	eeee
	pop	hl
	add	hl,de
abc	push	de
	ex	de,hl
	call	bbbb
	call	dddd
	pop	de
	push	hl
	call	cccc
	call	eeee
	pop	hl
	add	hl,de
	ld	a,0eh
	out	(mcrtd0),a
	ld	a,h
	out	(mcrtd1),a
	ld	a,0fh
	out	(mcrtd0),a
	ld	a,l
	out	(mcrtd1),a
	ret
	;
aaaa	ld	hl,0ff00h
	add	hl,sp
	ld	l,0fbh
	ret
bbbb	ld	hl,0ff00h
	add	hl,sp
	ld	l,0feh
	ret
cccc	ld	hl,0ff00h
	add	hl,sp
	ld	l,0fch
	ret
dddd	ld	(hl),e
	inc	hl
	ld	(hl),d
	ex	de,hl
	ret
eeee	ld	e,(hl)
	inc	hl
	ld	d,(hl)
	ret
	;
	;
	.END