;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;
; Las Vegas Super-Slot, (c) 1980 by David W. Friedman
;
; for the
;
; Vector Graphics Flashwriter I Video Board
;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;
; Copyright 1980 (c) by: David W. Friedman
; 2-8-24 Okubo, Shinjuku-Ku
; Tokyo, Japan 160
;
; From an article: Dr. Dobb's Journal
; Number 50, November/December 1980
; Volume 5, Issue 10
; Pages 10-22
;
; Entered by: Kelly Smith, MP/M-net (tm)
; 805-527-9321 (Modem, 300 Baud)
;
base equ 0 ; system base address
wmstt equ base
bdos equ base+5 ; bdos entry address
fcb equ base+5ch; file control block
dmad equ base+80h; dma address
tpa equ base+100h ; transient program area
setbdos equ 13 ; drive number A, default dma address
openf equ 15 ; open file function
closef equ 16 ; close file function
deletef equ 19 ; delete file function
readf equ 20 ; read file function
writef equ 21 ; write file function
creatf equ 22 ; create file function
vid equ base+0d000h ; base of video memory
vidh equ vid/100h
attb equ vid+400h ; base of video attribute memory
attbh equ attb/100h
vidndh equ vidh+8
lnlgth equ 64 ; video screen length
scrnht equ 16 ; video screen height
blkon equ 8080h
blkoff equ 0
ctrl equ 00011111b ; assembler control key mask
crmk equ ctrl and 'M'
bkspmk equ ctrl and 'H'
belmk equ ctrl and 'G'
org tpa ; transient program start address
start: lxi sp,stkptr
call initiz
main: call ready
call keytest
call pcread
cpi '$'
cz collect
cpi ctrl and 'E'
cz exit
cpi ctrl and 'T'
cz test
cpi ctrl and 'Z'
cz zero
cpi ctrl and 'P'
cz plays
cpi crmk
jnz main
call accept
jz main
call nready
call operate
jnc main
call payjack
call svjack
jmp main
exit: lxi h,exitstg+1
call match
mvi a,crmk
rnz
call erase
call svjack
jmp wmstt ; return to CP/M
operate:call charge
xra a
sta value
call showin
call crank
call speed
mvi a,12 ; minimum initial spin time 4
call spin1
call winchk
call showin
credout:lda value
ora a ; carry = 0
rz
mov e,a
lhld credtv
bump: inx h
shld credtv
call bksout
push h
push d
call shocred
pop d
pop h
call timerx
dcr e
jnz bump
call spcout ; at least 1 space if big payback
lda value
sui 250
cmc
ret
match: call pcread
cmp m
inx h
rnz
mov a,m
ora a
jnz match
ret
initiz: call erase
lxi h,vid+0*lnlgth+0
lxi d,payoff
call shostg
lxi h,vid+14*lnlgth+0
call shostg
lxi b,blkon+100h*4+12 ; 4 X 12 area
lxi h,attb+6*lnlgth+0
call boxy
lxi h,attb+6*lnlgth+48
call boxy
lxi b,blkon+100h*4+36 ; 4 X 36 area
lxi h,attb+10*lnlgth+12
mvi a,8 ; half intensity shading
call graph
lxi h,attb+2*lnlgth+12
push h
call graph
pop h
push h
lxi b,blkon+100h*12+10 ; 12 X 10 area
call graphon
pop h
call boxy
lxi d,(25-12) or (38-25) ; corner delta
dad d
push h
call graphon
pop h
call boxy
dad d
push h
call graphon
pop h
call boxy
lxi h,attb+8*lnlgth+12
lxi b,0302h ; B = 3 columns, C = horizontal line graphics
ticks: push h
mov a,c
ora m
mov m,a
mov a,l
adi 9 ; 10-1 = box width-1
mov l,a
mov a,c
ora m
mov m,a
pop h
dad d
dcr b
jnz ticks
lxi h,bell ; initial reel display
shld reel3p
lxi h,bell1x
shld reel2p
lxi h,bellx
shld reel1p
lxi h,1010h ; last 16 counts = 4 lines
shld reel1s
shld reel2s ; includes "reels3"
call spin ; applies pattern
call crank ; applies handle
lxi h,0
shld value
shld credtv
shld recipt
call showin
call shocred
call ldjack
jp shojack
lxi h,100
init2: shld jackpot
shojack:call belout
call timerx
lxi d,jackstg
lxi h,vid+3*lnlgth+0
call shostg
lxi d,vid+4*lnlgth+3
lhld jackpot
mvi b,1
jmp sho5dig
keytest:call pcin ; returns A = 1, if key waiting
ora a
inx b
jnz keytest
mov a,c
sta random
ret
collect:call accept
mvi a,crmk
rnz ; credits remaining
lxi d,20
lhld recipt
dad d
shld recipt
lhld credtv
dad d
push d
call charge1
pop d
mov a,e
jmp pljack
payjack:lhld jackpot
lxi d,-10
dad d
jnc paid
shld jackpot
lhld credtv
lxi d,10
dad d
call charge1
call shojack
lxi d,jackstg
lxi h,vid+8*lnlgth+0
push h
call shostg
call spcout
call bksout
call bksout
call timerx
pop h
call shostg ; "njackstg" follows "jackstg"
jmp payjack
paid: lxi h,0
jmp init2
accept: lhld credtv
mov a,h
ora l
ret
crank: lxi h,attb+2*lnlgth+55
push h
call handof
lxi h,attb+9*lnlgth+55
push h
call handon
pop h
call timerx
call crout
call timerx
call handof
pop h
handon: lxi b,blkon+100h*2+8 ; 2 X 8 box
call boxy
lxi d,2*lnlgth+6 ; lever relative position
dad d
lxi b,blkon+100h*15+2 ; full X 2 box
jmp boxy
handof: lxi b,blkoff+100h*2+8
call boxy
lxi d,2*lnlgth+6
dad d
lxi b,blkoff+100h*15+2
boxy: push d
push h
push h
push b
call gphrhz ; horizontal lines
pop b
push b
ora a
cz boxy2 ; if not past right
pop b
pop h
push b
call boxy2 ; left vertical lines
pop b
push b
call gphrhz ; bottom horizontal lines
pop b
pop h
pop d
ret
boxy2: mvi a,80h
ana c ; pickup blkon/off condition
ori 1 ; only 1 wide needed
mov c,a
mvi a,0100b ; verticle line graphics
jmp graph
graphon:mvi a,0001b ; graphics bit
graph: push d
push b
push psw
lxi d,lnlgth
graph1: mov a,b
ani scrnht-1
jz graphed ; if no more
pop psw
push psw
push b
push h
call grapher
pop h
pop b
dad d
mov a,h
cpi vidndh
jnc graphed ; if past bottom
dcr b
jmp graph1
graphed:pop psw
pop b
pop d
ret
gphrhz: mvi a,0010b ; horizontal line graphics
grapher:mov b,a
graphr1:mov a,c
ani lnlgth-1
rz ; if no more
mov a,b
cma ; create bit mask
ana m
mov m,a
mov a,c
ora a
jp grphof ; if blkoff, then done
mov a,b
ora m
mov m,a ; set bit to 1
grphof: inx h ; next byte
mov a,l
ani lnlgth-1
mov a,h ; A reg. non-zero on return, if past right edge
rz
dcr c
jmp graphr1
speed: lxi d,reel1s
lhld random ; in L reg.
mvi a,00110000b
ana l
ori 80h
stax d ; range 80, 90, a0, b0
inx d ; reel2s
mvi a,00011000b
ana l
ori 0c0h
stax d ; range c0, c8, d0,d8
inx d ; reel3s
mvi a,00001100b
ana l
ori 10h
mov h,a ; random+1 range 10, 14, 18, 1c
shld random ; specified in H reg. (random+1)
ori 0f0h
stax d
ret
spin: mvi a,4 ; 4 line/pattern
spin1: sta spincnt
lxi b,reel1s
lhld reel1p
lxi d,vid+2*lnlgth+12
call spiner
shld reel1p
lxi b,reel2s
lhld reel2p
lxi d,vid+2*lnlgth+25
call spiner
shld reel2p
lxi b,reel3s
lhld reel3p
lxi d,vid+2*lnlgth+38
call spiner
shld reel3p
lda spincnt
dcr a
jnz spin1
call pcin
ora a
jnz stopkey
stopcmp:lda reel3s
lhld reel1s ; reel2s in H reg.
ora h
ora l
jnz spin
ret
stopkey:call pcread
lhld random+1 ; specification in L reg.
lxi d,reel1s
sui '1'
mvi h,0
jz stopky1
dcr a
inx d ; reel2s
mvi h,4
jz stopky1 ; if '2'
dcr a
jnz spin ; if not '3'
inx d ; reel3s
mvi h,8
stopky1:ldax d
cpi 11h
jc spin ; if now stopping
mov a,h
ora l
stax d ; ranges from 10h to 1ch
mvi a,8 ; minimum time between stop keys
jmp spin1
spiner: ldax b
spiner1:ora a
jz timer1 ; keep speed constant
dcr a
stax b
cpi 11h
jnc resetp ; if not slowing
ani 3
cpi 1
jnc timer1 ; fill 3/4ths of time
call spcout ; sound effects
resetp: mov a,m
cpi 40h ; cherry marker
jc resetp1
lxi h,cherryy
resetp1:push d
lxi d,-10 ; 10 bytes/line
dad d
pop d
push h
xchg
call mvptn
pop h ; restore new pattern position for save
ret
mvptn: lxi b,100h*10+12 ; 10 wide X 12 high
mvptn2: push b
push h
mvptn1: ldax d
mov m,a
inx h
inx d
dcr b
jnz mvptn1
pop h
pop b
push d
lxi d,lnlgth
dad d
pop d ; next line, same horizontal position
dcr c
jnz mvptn2
ret
timerx: mvi a,180 ; about right for me...
jmp timer
timer1 mvi a,8 ; run a bit faster (9 is exact)
timer: push h
mov h,a
timea: dcr a
jnz timea
dcr h
jnz timea
pop h
ret
winchk: xra a
sta value
lxi h,vid+6*lnlgth+13
call bytina
mov e,a
lxi h,vid+6*lnlgth+26
call bytina
mov d,a
lxi h,vid+6*lnlgth+39
call bytina
cpi 7 ; bar code
jnz notbar
cmp d
jz winer3 ; any+2 bars, is o.k.
mov a,e ; reel 3's code = 1's
notbar: cmp e ; r3 verses r1
jnz lowchk
cmp d ; r3 verses r2
jnz lowchk
winer3: mvi d,0
lxi h,paytbl
dad d
mov a,m ; table+code = win value
jmp strval
lowchk: mov a,e
cpi 1 ; cherry's code
rnz
cmp d ; r1 verses r2
mvi a,2 ; just for first cherry
jnz strval
mvi a,5 ; for both cherries
strval: sta value
cpi 250
rz
ora a
jz addjak ; if lemon, won
cpi 14
rc
pljack: rrc
rrc
rrc
ani 0fh
rz
addjak: mov e,a
mvi d,0
inx d
lhld jackpot
dad d ; adds from 1 to 13 on jackpot
jmp init2
bytina: mvi a,01000000b ; non-display code bit
mov c,a
ana m
rlc
mov b,a
mov a,c
inx h
ana m
ora b
rlc
mov b,a
mov a,c
inx h
ana m
ora b
rlc
rlc ; adjust to lowest bits
ret
charge: lhld credtv
dcx h
charge1:shld credtv
shocred:lxi d,kredit
lxi h,vid+7*lnlgth+49
call shostg
lhld credtv
shocrd1:lxi d,vid+8*lnlgth+52
mvi b,1 ; all zeros show
jmp sho5dig
showin: lxi d,winstg
lxi h,vid+7*lnlgth+2
call shostg
lxi d,vid+8*lnlgth+2
lhld value
mvi b,0 ; leading zeros suppressed
sho5dig:push d
lxi d,-10000 ; X = 10000 divisor
call divx
pop d
stax d
inx d
push d
lxi d,-1000
call divx
pop d
stax d
inx d
push d
lxi d,-100
call divx
pop d
stax d
inx d
push d
lxi d,-10
call divx
pop d
stax d
inx d
push d
lxi d,-1
call divx
pop d
cpi ' '
jnz lastd
mvi a,'0' ; show at least 1 disgit, if zero
lastd: stax d
ret
divx: mvi c,'0'-1
divx1: inr c
dad d
jc divx1
mov a,e
cma
mov e,a
mov a,d
cma
mov d,a
inx d ; two's complement in D reg.
dad d
mov a,c
ora b
mov b,a ; set suppress flag
cpi '0'
jnz nlzero
mvi c,' ' ; if only zeros to here
nlzero: mov a,c
ret
ldjack: mvi a,5
ldjak1: sta trials
call setdsk
call setfcb
call open
rm
call read
jnz tryagn
lhld dmad
shld jackpot
lhld dmad+2
shld recipt
jmp close
tryagn: lda trials
dcr a
jnz ldjak1
dcr a
ret
svjack: mvi a,5
svjack1:sta trials
call setdsk
call setfcb
call delete
call create
cpi 55
rnc
lhld jackpot
shld dmad
lhld recipt
shld dmad+2
call write
jnz retry
call close
rp
retry: lda trials
dcr a
jnz svjack1
ret
mvzfcb: lxi b,21h
lxi h,fcb
mvcybm: push h
mvcybm1:mov m,b
inx h
dcr c
jnz mvcybm1
pop h
ret
setfcb: call mvzfcb
lxi d,jackfl
inx h
jmp shostg
nready: lxi d,nredy
jmp ready1
ready: lxi d,redy
ready1: lxi h,vid+11*lnlgth+2
shostg: ldax d
inx d ; now to skip stop on return
ora a
rz
mov m,a
inx h
jmp shostg
erase: mvi a,vidndh
lxi h,vid
erase1: mvi m,' '
inx h
cmp h
jnz erase1
ret
pcin: push b
mvi b,6 ; low address byte of bios "console status"
jmp caler
pcread: push b
mvi b,9 ; low address byte of bios "console input"
jmp caler
belout: mvi a,belmk
jmp prchr
spcout: mvi a,' '
jmp prchr
bksout: mvi a,bkspmk
jmp prchr
crout: mvi a,crmk
prchr: push b
if printer
mvi b,0fh ; low address byte of bios "list"
endif
if not printer
mvi b,0ch ; low address byte of bios "conout"
endif
caler: push d
push h
mov c,a ; routines expect value in C reg.
lhld wmstt+1 ; H&L regs. = bios warmboot = xx03h
mov l,b
lxi d,rtnbak
push d
pchl
;
; BIOS routine executes here
;
rtnbak: pop h
pop d
pop b
ret
setdsk: mvi a,setbdos
jmp abdos
delete: mvi a,deletef
jmp abdos
create: mvi a,creatf
jmp abdos
write: mvi a,writef
jmp abdos
close: mvi a,closef
jmp abdos
open: mvi a,openf
jmp abdos
read: mvi a,readf
abdos: mov c,a
lxi d,fcb
call bdos
push a
lda attb-lnlgth
cpi 'B'
jnz abdos1
call erase
lxi d,dskerr
lxi h,vid+6*lnlgth+9
call shostg
jmp wmstt ; bail out to CP/M
abdos1: pop a
ora a
ret
dskerr: db 'Problem with drive A: disk, returning to CP/M',0
jackstg:db '$' or 80h,' ' or 80h,'J' or 80h
db 'A' or 80h,'C' or 80h,'K' or 80h
db 'P' or 80h,'O' or 80h,'T' or 80h
db ' ' or 80h,'$' or 80H,' ' or 80h,0
njakstg:db ' '
nredy: db ' ',0
redy: db ' ' or 80h,'R' or 80h,'E' or 80h
db 'A' or 80h,'D' or 80h,'Y' or 80h
db ' ' or 80h,0
jackfl: db 'jackpotslot',0
tststg: db 'Testing',0
kredit: db '$ Credit $',0
rcptstg:db ' Receipts ',0
winstg: db '$ Wins $',0
exitstg:db ctrl and 'E',ctrl and 'X',ctrl and 'I',ctrl and 'T',0
zerostg:db ctrl and 'Z',ctrl and 'E',ctrl and 'R',ctrl and 'O',0
tstmch: db ctrl and 'T',ctrl and 'E',ctrl and 'S',ctrl and 'T',0
playstg:db ctrl and 'P',ctrl and 'L',ctrl and 'A',ctrl and 'Y',0
payoff: db ' All bars= 250+jackpot '
db ' Las Vegas '
db 'Melon+ M/Bar+M/Bar=100 '
db '$$$$+$$/Bar+$$/Bar=50 '
db ' Super-Slot '
db 'Bell+BL/Bar+BL/Bar=20',0
db ' Plum+PL/Bar+PL/Bar=14 '
db ' (c) 1980 '
db 'Orange+0/Bar+0/Bar=10 '
db 'Cherry+C/Bar+C/Bar=10 '
db ' Dave Friedman '
db 'C+C+Any=5 C+Any=2',0
cherry:
db 40h
db 00h
db 00h
db 40h
db 00h
db 00h
db 00h
db 00h
db 03h
db 10h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 01h
db 1eh
db 00h
db 00h
db 09h
db 1bh
db 1fh
db 2dh
db 37h
db 1fh
db 3fh
db 19h
db 08h
db 00h
db 26h
db 36h
db 36h
db 20h
db 04h
db 36h
db 36h
db 34h
db 20h
db 00h
db 40h
db 49h
db 12h
db 1bh
db 19h
db 09h
db 08h
db 00h
db 00h
db 01h
db 34h
db 0ch
db 10h
db 04h
db 3bh
db 2dh
db 2eh
db 3bh
db 08h
db 06h
db 08h
db 02h
db 05h
db 01h
db 3ch
db 2dh
db 1bh
db 1eh
db 20h
db 00h
db 04h
db 22h
db 12h
db 36h
db 34h
db 24h
db 20h
db 00h
db 00h
bell:
db 00h
db 40h
db 12h
db 12h
db 13h
db 1ah
db 12h
db 12h
db 00h
db 00h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 19h
db 00h
db 00h
db 00h
db 04h
db 24h
db 24h
db 26h
db 34h
db 24h
db 24h
db 20h
db 00h
db 01h
db 49h
db 49h
db 49h
db 09h
db 09h
db 09h
db 09h
db 09h
db 08h
db 07h
db 02h
db 11h
db 38h
db 1bh
db 18h
db 38h
db 12h
db 07h
db 38h
db 07h
db 06h
db 30h
db 38h
db 1bh
db 18h
db 38h
db 3bh
db 2eh
db 38h
db 04h
db 24h
db 24h
db 24h
db 24h
db 24h
db 24h
db 24h
db 24h
db 20h
db 00h
db 00h
db 40h
db 01h
db 09h
db 09h
db 09h
db 08h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 37h
db 3fh
db 3dh
db 3fh
db 3fh
db 3fh
db 3fh
db 34h
db 00h
db 00h
db 00h
db 24h
db 24h
db 24h
db 24h
db 20h
db 00h
db
00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 09h
db 09h
db 09h
db 00h
db 00h
db 00h
db 1bh
db 1fh
db 24h
db 3fh
db 3fh
db 3fh
db 30h
db 00h
db 00h
db 0fh
db 3fh
db 3fh
db 12h
db 12h
db 16h
db 24h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 40h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 01h
db 0bh
db 1bh
db 3fh
db 3fh
db 3bh
db 18h
db 00h
db 00h
db 02h
db 3eh
db 3fh
db 3fh
db 3eh
db 34h
db 20h
db 00h
db 00h
db 02h
db 34h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 01h
db 09h
db 09h
db 09h
db 08h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 37h
db 3fh
db 3dh
db 3fh
db 3fh
db 3fh
db 3fh
db 34h
db 00h
db 00h
db 00h
db 24h
db 24h
db 24h
db 24h
db 20h
db 00h
db 00h
db 00h
db 00h
db 40h
db 00h
db 42h
db 1ah
db 02h
db 1ah
db 00h
db 00h
db 00h
db 00h
db 00h
db 3ch
db 24h
db 3ch
db 24h
db 3ch
db 24h
db 20h
db 00h
db 00h
db 00h
db 24h
db 24h
db 3ch
db 24h
db 3ch
db 24h
db 38h
db 00h
db 00h
db 00h
db 24h
db 24h
db 36h
db 36h
db 34h
db 24h
db 20h
db 00h
db 00h
db 00h
db 40h
db 41h
db 09h
db 09h
db 08h
db 00h
db 00h
db 00h
db 00h
db 00h
db 16h
db 24h
db 00h
db 00h
db 2dh
db 3ah
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 02h
db 34h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 04h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 12h
db 12h
db 13h
db 1ah
db 12h
db 12h
db 00h
db 00h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 19h
db 00h
db 00h
db 00h
db 04h
db 24h
db 24h
db 26h
db 34h
db 24h
db 24h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 09h
db 09h
db 09h
db 00h
db 00h
db 00h
db 1bh
db 1fh
db 24h
db 3fh
db 3fh
db 3fh
db 30h
db 00h
db 00h
db 0fh
db 3fh
db 3fh
db 12h
db 12h
db 16h
db 24h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 00h
db 00h
db 00h
db 00h
db 03h
db 10h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 01h
db 1eh
db 00h
db 00h
db 09h
db 1bh
db 1fh
db 2dh
db 37h
db 1fh
db 3fh
db 19h
db 08h
db 00h
db 26h
db 36h
db 36h
db 20h
db 04h
db 36h
db 36h
db 34h
db 20h
db 00h
db 40h
db 49h
db 12h
db 1bh
db 19h
db 09h
db 08h
db 00h
db 00h
db 01h
db 34h
db 0ch
db 10h
db 04h
db 3bh
db 2dh
db 2eh
db 3bh
db 08h
db 06h
db 08h
db 02h
db 05h
db 01h
db 3ch
db 2dh
db 1bh
db 1eh
db 20h
db 00h
db 04h
db 22h
db 12h
db 36h
db 34h
db 24h
db 20h
db 00h
db 00h
bellx:
db 00h
db 40h
db 12h
db 12h
db 13h
db 1ah
db 12h
db 12h
db 00h
db 00h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 19h
db 00h
db 00h
db 00h
db 04h
db 24h
db 24h
db 26h
db 34h
db 24h
db 24h
db 20h
db 00h
db 00h
db 40h
db 00h
db 42h
db 1ah
db 02h
db 1ah
db 00h
db 00h
db 00h
db 00h
db 00h
db 3ch
db 24h
db 3ch
db 24h
db 3ch
db 24h
db 20h
db 00h
db 00h
db 00h
db 24h
db 24h
db 3ch
db 24h
db 3ch
db 24h
db 28h
db 00h
db 00h
db 00h
db 24h
db 24h
db 36h
db 36h
db 34h
db 24h
db 20h
db 00h
db 00h
db 00h
db 40h
db 40h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 01h
db 0bh
db 1bh
db 3fh
db 3fh
db 3bh
db 18h
db 00h
db 00h
db 02h
db 3eh
db 3fh
db 3fh
db 3eh
db 34h
db 20h
db 00h
db 00h
db 02h
db 34h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 01h
db 09h
db 09h
db 08h
db 00h
db 00h
db 00h
db 00h
db 00h
db 16h
db 24h
db 00h
db 00h
db 2dh
db 3ah
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 02h
db 34h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 04h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 01h
db 09h
db 09h
db 09h
db 08h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 37h
db 3fh
db 3dh
db 3fh
db 3fh
db 3fh
db 3fh
db 34h
db 00h
db 00h
db 00h
db 24h
db 24h
db 24h
db 24h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 00h
db 00h
db 00h
db 00h
db 03h
db 10h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 01h
db 1eh
db 00h
db 00h
db 09h
db 1bh
db 1fh
db 2dh
db 37h
db 1fh
db 3fh
db 19h
db 08h
db 00h
db 26h
db 36h
db 36h
db 20h
db 04h
db 36h
db 36h
db 34h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 09h
db 09h
db 09h
db 00h
db 00h
db 00h
db 1bh
db 1fh
db 24h
db 3fh
db 3fh
db 3fh
db 30h
db 00h
db 00h
db 0fh
db 3fh
db 3fh
db 12h
db 12h
db 16h
db 24h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
bell1x:
db 00h
db 40h
db 12h
db 12h
db 13h
db 1ah
db 12h
db 12h
db 00h
db 00h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 19h
db 00h
db 00h
db 00h
db 04h
db 24h
db 24h
db 26h
db 34h
db 24h
db 24h
db 20h
db 00h
db 01h
db 49h
db 49h
db 49h
db 09h
db 09h
db 09h
db 09h
db 09h
db 08h
db 07h
db 02h
db 11h
db 38h
db 1bh
db 18h
db 38h
db 12h
db 07h
db 38h
db 07h
db 06h
db 30h
db 38h
db 1bh
db 18h
db 38h
db 3bh
db 2eh
db 38h
db 04h
db 24h
db 24h
db 24h
db 24h
db 24h
db 24h
db 24h
db 24h
db 20h
db 00h
db 00h
db 40h
db 01h
db 09h
db 09h
db 09h
db 08h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 37h
db 3fh
db 3dh
db 3fh
db 3fh
db 3fh
db 3fh
db 34h
db 00h
db 00h
db 00h
db 24h
db 24h
db 24h
db 24h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 40h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 01h
db 0bh
db 1bh
db 3fh
db 3fh
db 3bh
db 18h
db 00h
db 00h
db 02h
db 3eh
db 3fh
db 3fh
db 3eh
db 34h
db 20h
db 00h
db 00h
db 02h
db 34h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 09h
db 09h
db 09h
db 00h
db 00h
db 00h
db 1bh
db 1fh
db 24h
db 3fh
db 3fh
db 3fh
db 30h
db 00h
db 00h
db 0fh
db 3fh
db 3fh
db 12h
db 12h
db 16h
db 24h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 40h
db 01h
db 09h
db 09h
db 08h
db 00h
db 00h
db 00h
db 00h
db 00h
db 16h
db 24h
db 00h
db 00h
db 2dh
db 3ah
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 02h
db 34h
db 20h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 00h
db 04h
db 20h
db 00h
db 00h
db 00h
db 00h
cherryy:
db 40h
db 00h
db 00h
db 40h
db 00h
db 00h
db 00h
db 00h
db 03h
db 10h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 01h
db 1eh
db 00h
db 00h
db 09h
db 1bh
db 1fh
db 2dh
db 37h
db 1fh
db 3fh
db 19h
db 08h
db 00h
db 26h
db 36h
db 36h
db 20h
db 04h
db 36h
db 36h
db 34h
db 20h
db 00h
db 40h
db 49h
db 12h
db 1bh
db 19h
db 09h
db 08h
db 00h
db 00h
db 01h
db 34h
db 0ch
db 10h
db 04h
db 3bh
db 2dh
db 2eh
db 3bh
db 08h
db 06h
db 08h
db 02h
db 05h
db 01h
db 3ch
db 2dh
db 1bh
db 1eh
db 20h
db 00h
db 04h
db 22h
db 12h
db 36h
db 34h
db 24h
db 20h
db 00h
db 00h
db 00h
db 40h
db 12h
db 12h
db 13h
db 1ah
db 12h
db 12h
db 00h
db 00h
db 00h
db 00h
db 00h
db 1fh
db 3fh
db 3fh
db 3bh
db 00h
db 00h
db 00h
db 00h
db 00h
db 0bh
db 3fh
db 3fh
db 3fh
db 3fh
db 19h
db 00h
db 00h
db 00h
db 04h
db 24h
db 24h
db 26h
db 34h
db 24h
db 24h
db 20h
db 00h