; ESCAPE FROM JOVI
;
; Written by O.Wagner
;            Landsberge 5
;            4322 Sprockhövel 2
;            West Germany
;
; This program is SHAREWARE!
; It may be copied for any
; purpose (except selling), as
; long as the copying license
; is included. 
; If you like this program, please
; send a donation (about 10,-DM, $8)
; to the author. Include a disk to 
; obtain new levels, instructions
; and tools to create your own!
; If these donation will cover my
; expenses, I will release more
; programms on this way!


; This source is for the SEKA assembler!

rp1=$55dc0
rp2=$55ec0

; Lib-Offsets

; Dos
Open= -30
Close= -36
Read= -42
Write= -48

; Exec
AllocAbs= -204
OldOpenLib= -408

; Gfx
InitBitmap= -390
InitRastPort= -198
Move= -240
RectFill= -306
SetAPen= -342
SetBPen= -348
SetDrMd= -354
Text= -60
WaitTOF= -270
Draw= -246
CopInit= 50

 move.l 4.w,a6
 lea $50000,a1
 move.l #$20000,d0
 jsr AllocAbs(a6)
 lea dosname,a1
 jsr OldOpenLib(a6)
 move.l d0,dosbase
 lea gfxname,a1
 jsr OldOpenLib(a6)
 move.l d0,gfxbase

; load data
 bsr.L loaddat
 bsr.l loadhi

; grafix setup
 bsr.L initrps
 bsr.l initpf
 move.l CopInit(a6),gfxsave
 move.l #clist,CopInit(a6)
 
; some sound setup
 move.l #svoid,d0
 move.l d0,$dff0a0
 move.l d0,$dff0b0
 move.l d0,$dff0c0
 move.l d0,$dff0d0
 moveq #1,d0
 move d0,$dff0a4
 move d0,$dff0b4
 move d0,$dff0c4
 move d0,$dff0d4
 move #$800f,$dff096

mainloop:
 bsr.L introtitle
; (dirty!!!) quit if left
; mousebutton is pressed 
 btst #6,$bfe001
 bne.s w2
 move.l gfxsave,CopInit(a6)
 move.l #$f,$dff096
 rts
 w2: 
 move.l #clist,CopInit(a6)
 move.b #3,ships
 clr.w score
 clr.b level
 move.b #145,maxfuel
 move.b #99,maxtime
 bsr.L cls
leveloop:
 lea rp1,a1
 moveq #1,d0
 jsr SetAPen(a6)
 lea pleasewait,a0
 moveq #115,d0
 move d0,d1
 bsr.l print
 bsr.l viewscore
 move.b level,d0
 bsr.l loadlevel 
gameloop:
 move #1070,d0
 bsr.l gotoline
 bsr.l fadein
 move.b #130,$56001
 bsr.l spriteon
 move.b maxfuel,fuel
 move.l #1070*1024,ypos
 move.l #260*1024,xpos
 clr xspe
 clr yspe
 move.b maxtime,time
 bsr.L viewscore
 bsr.l viewships
 bsr.l viewhi
 bsr.l viewtime
 bsr.l viewfuel
 move.b #50,tcount
 move #%11010011010,$dff098
 move $dff00e,d0
maingameloop:
 jsr WaitTOF(a6)
 subq.b #1,rcount
 bne.s mgl99
 rol #1,$56012
 move.b #6,rcount
mgl99:
 subq.b #1,tcount
 bne.s mgl1
 subq.b #1,time
 beq.L crash
 move.b #50,tcount
mgl1: 
 clr.l d1
 clr d7
 tst.b fuel
 beq.L mgl6 ; no fuel left
 bsr.l joyask
 move d0,d7
 bne.s mgls
 bsr.L soff
 bra.s mgl6
mgls:
 move.l #$5f000,$dff0d0
 move #1486/2,$dff0d4
 move #415,$dff0d6
 move #35,$dff0d8
 move.l #$5f000,$dff0c0
 move #1486/2,$dff0c4
 move #451,$dff0c6
 move #29,$dff0c8
 
 subq.b #1,fuelc
 bne.s mgl6
 subq.b #1,fuel
 move.b #20,fuelc
mgl6:
 move d7,d0
 btst #2,d0
 beq.s mgl2
 sub #15,yspe
mgl2:
 btst #3,d0
 beq.s mgl4
 add #14,yspe
mgl4:
 addq #5,yspe
 move yspe,d1
 bmi.s mgl3
 add.l d1,ypos
 bra.s mgl5
mgl3:
 neg d1
 sub.l d1,ypos
mgl5:
 btst #0,d0
 beq.s mgl7
 sub #14,xspe
mgl7:
 btst #1,d0
 beq.s mgl8
 add #14,xspe
mgl8:
 clr.l d1
 move xspe,d1
 bpl.s mgl9
 neg d1
 sub.l d1,xpos
 bra.s mgl10
mgl9:
 add.l d1,xpos

mgl10:
 move.l xpos,d1
 asr.l #8,d1
 asr.l #2,d1
 bclr #0,$56003
 btst #0,d1
 beq.s mgl11
 bset #0,$56003
mgl11: 
 asr #1,d1
 move.b d1,$56001

 move.l ypos,d0
 asr.l #8,d0
 asr.l #2,d0
 move.l d0,d7
 bsr.l gotoline  
 cmp #50,d7
 ble.L youmadeit 
 move $dff00e,d0
 and #%100010,d0
 bne.s crash
 bsr.l viewfuel
 bsr.l viewtime
 bra.L maingameloop 

crash:
 bsr.l bumm
 bsr.l viewtime
 bsr.l spriteoff
 bsr.L fadeout

 subq.b #1,ships
 bsr.L viewships
 tst.b ships
 bne.L gameloop
 bsr.l dohiscore
 lea rp1,a1
 moveq #1,d0
 jsr SetDrMd(a6)
 moveq #1,d0
 jsr SetAPen(a6)
 moveq #0,d0
 jsr SetBPen(a6)
 lea gameovert,a0
 move #115,d0
 move #115,d1
 bsr.l print
 moveq #85,d3
gameoverw2:
 jsr WaitTOF(a6)
 dbf d3,gameoverw2
 bra.L mainloop
youmadeit:
 bsr.l soff
 lea rp1,a1
 moveq #1,d0 
 jsr SetDrMd(a6)
 moveq #3,d0
 jsr SetAPen(a6)
 moveq #0,d0
 jsr SetBPen(a6)
 lea ymit,a0
 move #102,d0
 move #80,d1
 bsr.l print
 clr.l d0
 clr.l d1
 move.b fuel,d0
 move.b time,d1
 add d0,d1
 moveq #0,d0
 move.b level,d0
 addq.b #1,d0
 mulu d0,d1
 add d1,score
 addq.b #1,level
 bsr.L spriteoff
 bra.L leveloop
xpos: dc.l 160*1024
ypos: dc.l 1070*1024
xspe: dc.w 0
yspe: dc.w 0
 
ymit: dc.b "YOU MADE IT!",0
gameovert: dc.b "GAME OVER",0
even
score: dc.w 0
ships: dc.b 0
level: dc.b 0
fuel: dc.b 200
maxfuel: dc.b 145
fuelc: dc.b 10
time: dc.b 99
maxtime: dc.b 99
tcount: dc.b 50
rcount: dc.b 5

pleasewait:
 dc.b "GET READY",0
even
dosname:
 dc.b "dos.library",0
dosbase:
 dc.l "WWS"
gfxname:
 dc.b "graphics.library",0,"!"
gfxsave:
 dc.l "WWS"
gfxbase:
 dc.l "WWS"
clist:
 dc.w $00e0,$0005,$00e2,$0000
 dc.w $00e4,$0006,$00e6
add1:
 dc.w $000
 dc.w $00e8,$0005,$00ea,8000
 dc.w $00ec,$0006,$00ee
add2:
 dc.w $000
 dc.w $00f0,$0005,$00f2,16000

 dc.w $0120,$0005,$0122
spadd:
 dc.w $6000


 dc.w $0100,%101011000000000
 dc.w $0102,0
 dc.w $0092,$0038,$0094,$00d0
 dc.w $008e,$2c81,$0090,$f4c1

 dc.w $0180,0
 dc.w $0182,$0f00
 dc.w $0184,$0555
 dc.w $0186,$0777
 dc.w $0188,$0999
 dc.w $018a,$0bbb
 dc.w $018c,$0ddd
 dc.w $018e,$0

 dc.w $01a2
spcol:
 dc.w $04a4

 dc.w $0196
pf2clr:
 dc.w $0c80

 dc.w $3701,$ff00,$0182,$0d00
 dc.w $3a01,$ff00,$0182,$0a00
 dc.w $4001,$ff00,$0182,$0f00
 dc.w $4b01,$ff00,$0182,$0d00
 dc.w $4f01,$ff00,$0182,$0a00

 dc.w $5501,$ff00,$0182,$0565
 dc.w $6501,$ff00,$0182,$0fff
 dc.w $6d01,$ff00,$0182,$0565

 dc.w $7401,$ff00,$0182,$004e
 dc.w $7d01,$ff00,$0182,$004b
 dc.w $8001,$ff00,$0182,$0048

 dc.w $8601,$ff00,$0182,$00f5
 dc.w $9201,$ff00,$0182,$00e5
 dc.w $9c01,$ff00,$0182,$00d4
 dc.w $a601,$ff00,$0182,$00c4
 dc.w $b001,$ff00,$0182,$00b3

 dc.w $c001,$ff00,$0182,$0c40
 dc.w $e001,$ff00,$0182,$0fff

 dc.w $ffff,$fffe

spritedat:
 dc.w $a085,$aa00
 dc.w %0000001111000000,0
 dc.w %0001111111111000,0
 dc.w %0011111111111100,0
 dc.w %1111111111111111,%1110111011101110
 dc.w %1111111111111111,0
 dc.w %0111111111111110,0
 dc.w %0001000000001000,0
 dc.w %0001000000001000,0
 dc.w %0010100000010100,%0001000000001000
 dc.w %0111110000111110,0
 dc.l 0
gotoline: ; line -> d0
 mulu #40,d0
 move d0,add1
 move d0,add2
 rts

spriteon:
 move.w #$6000,spadd
 move $dff00e,scorebuff
 rts
spriteoff:
 move.w #$6040,spadd
 rts

initrps:
 lea spritedat,a0
 lea $56000,a1
 moveq #10,d0
initrps1:
 clr.l $40(a1)
 move.l (a0)+,(a1)+
 dbf d0,initrps1
 lea bm1,a0
 moveq #3,d0
 move #320,d1
 move #200,d2
 jsr InitBitMap(a6)
 lea bm2,a0
 moveq #1,d0
 move #320,d1
 move #1424,d2
 jsr InitBitMap(a6)
 lea rp1,a1
 jsr InitRastPort(a6) 
 move.l #bm1,rp1+4
 lea rp2,a1
 jsr InitRastPort(a6)
 move.l #bm2,rp2+4
 rts
bm1:
 dc.l 0,0,$50000,$50000+8000,$50000+8000
bm2:
 dc.l 0,0,$60000

coltab:
 dc.w $0c80,$0b70,$0a60,$0960,$0850,$0740,$0640,$0530
 dc.w $0320,$0220,$0110,0
fadein:
 lea coltab+22,a0
 lea pf2clr,a1
 moveq #10,d0
fadein1:
 move.w -(a0),(a1)
 move.w #$2fff,d1
fadein2:
 dbf d1,fadein2
 dbf d0,fadein1
 rts
fadeout:
 lea coltab,a0
 lea pf2clr,a1
 moveq #11,d0
fadeout1:
 move.w (a0)+,(a1)
 move.w #$2fff,d1
fadeout2:
 dbf d1,fadeout2
 dbf d0,fadeout1
 rts
 

initpf:
 lea rp2,a1
 moveq #0,d0
 jsr SetAPen(a6)
 moveq #0,d0
 move d0,d1
 move #319,d2
 move #199,d3
 jsr RectFill(a6)
 lea rp2,a1
 moveq #1,d1
 jsr SetAPen(a6)
 moveq #0,d0
 move #1224,d1
 move #319,d2
 move #1423,d3
 jsr RectFill(a6)


print: ; add -> a0, x -> d0, y -> d1
 move.l a3,-(sp)
 move.l a0,a3
 lea rp1,a1
 jsr Move(a6)
 moveq #0,d0
 move.l a3,a0
 lea rp1,a1
print1:
 addq #1,d0
 tst.b (a3)+
 bne.s print1
 subq #1,d0
 move.l (sp)+,a3
 jmp Text(a6)

title:
 lea rp1,a1
 moveq #0,d0
 jsr SetDrMd(a6)
 bsr.L cls
 lea rp1,a1
 moveq #1,d0
 jsr SetAPen(a6)
 lea ttxt1,a0
 move #92,d0
 move #63,d1
 bsr.s print
 lea rp1,a1
 move #90,d0
 move #52,d1
 jsr Move(a6)
 move #220,d0
 move #52,d1
 jsr Draw(a6)
 move #90,d0
 move #68,d1
 lea rp1,a1
 jsr Move(a6)
 move #220,d0
 move #68,d1
 jsr Draw(a6) 

 lea hinames+48,a5
 lea hiscores+8,a4
 moveq #4,d7
writescores:
 lea rp1,a1
 move #133,d0
 move d7,d1
 mulu #10,d1
 add #100,d1
 move d1,d6
 jsr Move(a6)
 move.l a5,a0
 moveq #12,d0
 jsr Text(a6) 
 move.w (a4),d0
 move #83,d1
 move d6,d2
 bsr.L pscore
 sub.l #12,a5
 sub.l #2,a4
 dbra d7,writescores  
 lea ttxt2,a0
 moveq #40,d0
 move #190,d1
 bsr.L print
 lea ttxt3,a0
 moveq #81,d0
 move #165,d1
 bsr.l print
 lea ttxt4,a0
 moveq #108,d0
 moveq #85,d1
 bsr.l print
 rts

ttxt4:
 dc.b "HALL OF FAME",0
ttxt3:
 dc.b "PRESS FIRE TO START",0
ttxt2:
 dc.b "Written and © 1988 by O.Wagner",0
ttxt1:
 dc.b "ESCAPE FROM JOVI",0
even

hiscores:
 dc.w 500,400,300,200,100
hinames:
 dc.b "The Werewolf"
 dc.b "The Werewolf"
 dc.b "The Werewolf"
 dc.b "The Werewolf"
 dc.b "The Werewolf"

pscore:
 movem.l d3/d4,-(sp)
 lea scorebuff,a0
 move d0,d3
 divu #10000,d3 
 move d3,d4
 mulu #10000,d3
 sub d3,d0
 add.b #"0",d4
 move.b d4,(a0)+
 move d0,d3
 divu #1000,d3
 move d3,d4
 mulu #1000,d3
 sub d3,d0
 add.b #"0",d4
 move.b d4,(a0)+
 
 move d0,d3
 divu #100,d3
 move d3,d4
 mulu #100,d3
 sub d3,d0
 add.b #"0",d4
 move.b d4,(a0)+
 move d0,d3
 divu #10,d3
 move d3,d4
 mulu #10,d3
 sub d3,d0
 add.b #"0",d4
 move.b d4,(a0)+
 add.b "0",d0
 move.b d4,(a0)
 lea scorebuff,a0
 move d1,d0
 move d2,d1
 bsr.L print
 movem.l (sp)+,d3/d4
 rts
scorebuff:
 dc.b "00000",0

cls:
 lea rp1,a1
 moveq #0,d0
 jsr SetAPen(a6)
 moveq #10,d0
 moveq #50,d1
 move #310,d2
 move #192,d3
 jmp RectFill(a6)

introtitle:
 bsr.l spriteoff
 bsr.L title
 moveq #0,d7
 move d7,d0
 bsr.l gotoline
 move #$0c80,pf2clr

wait:
 move d7,d0
 bsr.l gotoline 
 addq #1,d7
 cmp #1199,d7
 beq.s wait2
wait1:
 jsr WaitTOF(a6)
 btst #7,$bfe001
 beq.s waitcont
 bra.s wait
wait2:
 move d7,d0
 bsr.l gotoline
 subq #1,d7
 beq.s wait
 jsr WaitTOF(a6)
 btst #7,$bfe001
 beq.s waitcont
 bra.s wait2
waitcont:
 bsr.s cls
 rts

loadlevel:
 move.b d0,scorebuff
 bsr.L fadeout
 move.b scorebuff,d0
 cmp.b levinmem,d0
 beq.s loadlevelret
loadlevel1:
 move.l dosbase,a6
 move.b d0,levinmem
 add.b #"0",d0
 move.b d0,levname+2
 move.l #levname,d1
 move.l #1005,d2 ; ACCESS_READ
 jsr Open(a6) 
 tst.l d0
 bne.s loadlevel2
 moveq #0,d0 ; now, have to
 clr.b level ; start over
 sub.b #10,maxfuel ; things getting
 sub.b #10,maxtime ; harder...
 addq.b #1,ships
 bra.s loadlevel1
loadlevel2:
 move.l d0,d6
 move.l d6,d1
 move.l #$61f40,d2
 move.l #40960,d3
 jsr Read(a6)
 move.l d6,d1
 jsr Close(a6)
 move.l gfxbase,a6  
 move.l #clist,CopInit(a6)
loadlevelret:
 bra.L cls
levinmem:
 dc.b 0
even
levname:
 dc.b "l00",0
buff:
 dc.w 0 

viewships:
 move.b ships,d0
 add.b #"0",d0
 move.b d0,buff
 move #194,d0
 move #14,d1
 lea rp1,a1
 jsr Move(a6)
 lea buff,a0
 lea rp1,a1
 moveq #1,d0
 jmp Text(a6)

viewhi:
 move hiscores,d0
 move #250,d1
 moveq #14,d2
 bra.L pscore
 
viewfuel:
 lea rp1,a1
 move #33,d1
 move #60,d0
 jsr Move(a6)
 move #33,d1
 moveq #0,d0
 move.b fuel,d0
 add #60,d0
 jsr Draw(a6)
 lea rp1,a1
 moveq #7,d0
 jsr SetAPen(a6)
 move #33,d1
 move #210,d0
 jsr Draw(a6)
 moveq #1,d0
 lea rp1,a1
 jmp SetAPen(a6)
  
viewtime:
 lea rp1,a1
 move #285,d0
 move #36,d1
 jsr Move(a6)
 clr.l d0
 move.b time,d0
 divu #10,d0
 move d0,d1
 mulu #10,d0
 move.b time,d2
 sub d0,d2
 add.b #"0",d1
 move.b d1,buff
 lea buff,a0
 add.b #"0",d2
 move.b d2,buff+1
 moveq #2,d0
 jmp Text(a6) 

viewscore:
 lea rp1,a1
 moveq #2,d0
 jsr SetAPen(a6)
 moveq #7,d0
 jsr SetBPen(a6)
 moveq #1,d0
 jsr SetDrMd(a6)
 move score,d0
 move #73,d1
 move #14,d2
 bra.L pscore

joyask:
 clr.l d0
 movem.l d1-d3,-(sp)
 move.w $dff00c,d1
 btst #9,d1
 beq.s joyask1
 bset #0,d0
joyask1:
 btst #1,d1
 beq.s joyask2
 bset #1,d0
joyask2:
 move d1,d2
 move d1,d3
 and #2,d2
 and #1,d3
 asr #1,d2
 eor d2,d3
 beq.s joyask3
 bset #3,d0
joyask3:
 move d1,d2
 move d1,d3
 and #256,d2
 and #512,d3
 asr #1,d3
 eor d2,d3
 beq.s joyask4
 bset #2,d0
joyask4:
 btst #7,$bfe001
 bne.s joyask5
 bset #7,d0
joyask5:
 movem.l (sp)+,d1-d3
 rts

dohiscore:
 move score,d0
 cmp hiscores+8,d0
 bge.s dohiscore1
 rts
dohiscore1:
 move.l #"    ",hiscon
 move.l #"    ",hiscon+4
 move.l #"    ",hiscon+8
 bsr.L cls
 lea rp1,a1
 moveq #1,d0
 jsr SetAPen(a6)
 moveq #0,d0
 jsr SetDrMd(a6)
 lea shs1,a0
 move #40,d0
 move #78,d1
 bsr.l print
 lea shs2,a0
 move #56,d0
 move #108,d1
 bsr.l print
 lea shs3,a0
 move #56,d0
 move #124,d1
 bsr.l print
 lea shs4,a0
 move #56,d0
 move #140,d1
 bsr.l print 
 lea rp1,a1
 move #105,d0
 move #186,d1
 jsr Move(a6)
 move #207,d0
 move #186,d1
 jsr Draw(a6) 
 moveq #2,d0
 jsr SetDrMd(a6)
 moveq #1,d6
 move d6,d7
 moveq #0,d5
 lea hiscon,a5
 bsr.L drawhiblock
dohiloop:
 bsr.L joyask
 tst.b d0
 beq.s dohiloop
 move.b d0,scorebuff
 bsr.L drawhiblock
 move.b scorebuff,d0
 btst #0,d0
 beq.s dohiloop1
 subq #1,d6
 bne.s dohiloop1
 moveq #13,d6
dohiloop1:
 btst #1,d0
 beq.s dohiloop2
 addq #1,d6
 cmp #14,d6
 bne.s dohiloop2
 moveq #1,d6
dohiloop2:
 btst #2,d0
 beq.s dohiloop3
 subq #1,d7
 bne.s dohiloop3
 moveq #3,d7
dohiloop3:
 btst #3,d0
 beq.s dohiloop4
 addq #1,d7
 cmp #4,d7
 bne.s dohiloop4
 moveq #1,d7
dohiloop4:
 btst #7,d0
 bne.s dohientry
 bsr.L drawhiblock
dohiwait:
 move #9,d4
dohiloop5:
 jsr WaitTOF(a6)
 dbf d4,dohiloop5
 bra.s dohiloop
dohientry:
 bsr.L drawhiblock
 move d6,d0
 move d7,d1
 subq #1,d0
 subq #1,d1
 mulu #13,d1
 add d1,d0
 lea scht,a0
 move.b (a0,d0),d0
 cmp.b #"~",d0
 beq.s dohirub
 cmp.b #"`",d0
 beq.s dohiend
 cmp.b #12,d5
 beq.L dohiwait 
 move.b d0,(a5,d5)
 addq.b #1,d5
dohiwrite:
 lea rp1,a1
 moveq #1,d0
 jsr SetDrMd(a6)
 moveq #0,d0
 jsr SetBPen(a6)
 moveq #1,d0
 jsr SetAPen(a6)
 move.l a5,a0
 move #108,d0
 move #183,d1
 bsr.l print
 bra.s dohiwait 
 rts
dohirub:
 tst.b d5
 beq.L dohiwait
 subq.b #1,d5
 move.b #" ",(a5,d5)
 bra.L dohiwrite
dohiend:
 move score,d0
 moveq #4,d1
 cmp hiscores+6,d0
 ble.L dohiname
 move hiscores+6,hiscores+8
 move.l hinames+36,hinames+48
 move.l hinames+40,hinames+52
 move.l hinames+44,hinames+56
 moveq #3,d1
 cmp hiscores+4,d0
 ble.L dohiname
 move hiscores+4,hiscores+6
 move.l hinames+24,hinames+36
 move.l hinames+28,hinames+40
 move.l hinames+32,hinames+44
 moveq #2,d1
 cmp hiscores+2,d0
 ble.s dohiname
 move hiscores+2,hiscores+4
 move.l hinames+12,hinames+24
 move.l hinames+16,hinames+28
 move.l hinames+20,hinames+32
 moveq #1,d1
 cmp hiscores,d0
 ble.s dohiname
 move hiscores,hiscores+2 
 move.l hinames,hinames+12
 move.l hinames+4,hinames+16
 move.l hinames+8,hinames+20
 moveq #0,d1
dohiname:
 move d1,d2
 rol #1,d2
 lea hiscores,a0
 move d0,(a0,d2)
 lea hinames,a0
 mulu #12,d1
 move.l hiscon,(a0,d1)
 move.l hiscon+4,4(a0,d1)
 move.l hiscon+8,8(a0,d1)
; now we gonna save the list
 move.l gfxsave,CopInit(a6)
 move.l dosbase,a6
 move.l #hilistname,d1
 move.l #1006,d2 ; ACCESS_WRITE
 jsr Open(a6)
 move.l d0,d7
 beq.s hiret
 move.l d0,d1
 move.l #hiscores,d2
 move.l #70,d3
 jsr -48(a6)
 move.l d7,d1
 jsr Close(a6)
hiret:
 move.l gfxbase,a6
 move.l CopInit(a6),gfxsave
 move.l #clist,CopInit(a6) 
 add #4,a7
 bra.L mainloop
 
hilistname:
 dc.b "EFJ_HiScores",0
 even
drawhiblock:
 lea rp1,a1
 moveq #2,d0
 jsr SetDrMd(a6)
 moveq #16,d1
 mulu d7,d1
 add #84,d1
 move d1,d3
 add #11,d3
 moveq #16,d0
 mulu d6,d0
 add #38,d0
 move d0,d2
 add #11,d2
 lea rp1,a1
 jmp RectFill(a6) 
 rts


scht:
 dc.b "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ~`"
shs1:
 dc.b "NEW HISCORE - ENTER YOUR NAME",0
shs2:
 dc.b "A B C D E F G H I J K L M",0
shs3:
 dc.b "N O P Q R S T U V W X Y Z",0
shs4:
 dc.b "0 1 2 3 4 5 6 7 8 9   « ×",0
even
hiscon:
 dc.b "            ",0 ; yep, 12 !
even
svoid:
 dc.w 0
bumm:
 move.l #$59000,$dff0a0
 move.l #$59000,$dff0b0
 move #19670/2,$dff0a4
 move #19670/2,$dff0b4
 move #580,$dff0a6
 move #579,$dff0b6
 move #65,$dff0a8
 move #65,$dff0b8
 move #$ffff,d0
bumm1:
 move d0,$dff1a2
 dbf d0,bumm1
 move #1,$dff0a4
 move #1,$dff0b4
 move.l #svoid,$dff0a0
 move.l #svoid,$dff0b0
soff:
 move #1,$dff0c4
 move #1,$dff0d4
 move.l #svoid,$dff0c0
 move.l #svoid,$dff0d0
 rts

loadhi:
 move.l dosbase,a6
 move.l #hilistname,d1
 move.l #1005,d2
 jsr Open(a6)
 move.l d0,d7
 beq.s loadhiret
 move.l #hiscores,d2
 move.l d0,d1
 move.l #70,d3
 jsr Read(a6)
 move.l d7,d1
 jsr Close(a6)
loadhiret:
 move.l gfxbase,a6
 rts

loaddat:
 move.l dosbase,a6
 move.l #datname,d1
 move.l #1005,d2
 jsr Open(a6)
 move.l d0,d7
 move.l #$50000,d2
 move.l d0,d1
 move.l d2,d3
 jsr Read(a6)
 move.l d7,d1
 jmp Close(a6)
datname:
 dc.b "EFJ_data",0
