;======================================================================
;By Atomic_Bios
;Dooms Day
;======================================================================
use16
;======================================================================
Org  100h
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  fs, ax
mov  gs, ax

mov  si, OldVect
call SaveVect

cli
mov  ax, 0
mov  es, ax
mov  ax, word [es: 0x5*4+2]
mov  word [cs:old05s], ax
mov  ax, word [es: 0x5*4]
mov  word [cs:old05o], ax
mov  ax, word [es: 0x09*4+2]
mov  word [es: 0x27*4+2], ax
mov  ax, word [es: 0x09*4]
mov  word [es: 0x27*4], ax
mov  ax, word [es: 0x13*4+2]
mov  word [cs:old13s], ax
mov  ax, word [es: 0x13*4]
mov  word [cs:old13o], ax
mov  ax, word [es: 0x27*4+2]
mov  word [cs:old27s], ax
mov  ax, word [es: 0x27*4]
mov  word [cs:old27o], ax
mov  ax, word [es: 0x1c*4+2]
mov  word [cs:old1cs], ax
mov  ax, word [es: 0x1c*4]
mov  word [cs:old1co], ax
mov  ax, word [es: 0x21*4+2]
mov  word [cs:old21s], ax
mov  ax, word [es: 0x21*4]
mov  word [cs:old21o], ax
mov  ax, word [es: 0x22*4+2]
mov  word [cs:old22s], ax
mov  ax, word [es: 0x22*4]
mov  word [cs:old22o], ax
mov  word [es: 0x05*4+2], cs
mov  word [es: 0x05*4], Extra1
mov  word [es: 0x55*4+2], cs
mov  word [es: 0x55*4], Extra1
mov  word [es: 0x56*4+2], cs
mov  word [es: 0x56*4], Extra1
mov  word [es: 0x57*4+2], cs
mov  word [es: 0x57*4], Extra1
mov  word [es: 0x58*4+2], cs
mov  word [es: 0x58*4], Extra1
mov  word [es: 0x59*4+2], cs
mov  word [es: 0x59*4], Extra1
mov  word [es: 0x80*4+2], cs
mov  word [es: 0x80*4], Extra1
mov  word [es: 0x81*4+2], cs
mov  word [es: 0x81*4], Extra1
mov  word [es: 0x82*4+2], cs
mov  word [es: 0x82*4], Extra1
mov  word [es: 0x83*4+2], cs
mov  word [es: 0x83*4], Extra1
mov  word [es: 0x84*4+2], cs
mov  word [es: 0x84*4], Extra1
mov  word [es: 0x85*4+2], cs
mov  word [es: 0x85*4], Extra1
mov  word [es: 0x86*4+2], cs
mov  word [es: 0x86*4], Extra1
mov  word [es: 0x87*4+2], cs
mov  word [es: 0x87*4], Extra1
mov  word [es: 0x88*4+2], cs
mov  word [es: 0x88*4], Extra1
mov  word [es: 0x89*4+2], cs
mov  word [es: 0x89*4], Extra1
mov  word [es: 0x8A*4+2], cs
mov  word [es: 0x8A*4], Extra1
mov  word [es: 0x8B*4+2], cs
mov  word [es: 0x8B*4], Extra1
mov  word [es: 0x8C*4+2], cs
mov  word [es: 0x8C*4], Extra1
mov  word [es: 0x8D*4+2], cs
mov  word [es: 0x8D*4], Extra1
mov  word [es: 0x8E*4+2], cs
mov  word [es: 0x8E*4], Extra1
mov  word [es: 0x8F*4+2], cs
mov  word [es: 0x8F*4], Extra1
mov  word [es: 0xA0*4+2], cs
mov  word [es: 0xA0*4], Extra1
mov  word [es: 0xA1*4+2], cs
mov  word [es: 0xA1*4], Extra1

;mov  word [es: 0x1b*4+2], cs
;mov  word [es: 0x1b*4], CtrlC
sti
jmp  BeginOS
;======================================================================
OEM_ID            db "MASK$"
BytesPerSector    dw 0x0200
SectorsPerCluster db 0x01
ReservedSectors   dw 0x0001
TotalFATs         db 0x01
MaxRootEntries    dw 0x00E0
TotalSectorsSmall dw 0x0B40
MediaDescriptor   db 0xF0
SectorsPerFAT     dw 0x0012
SectorsPerTrack   dw 0x0012
NumHeads          dw 0x0002
HiddenSectors     dd 0x00000000
TotalSectorsLarge dd 0x00000000
DriveNumber       db 0x00
Flags             db 0x00
Signature         db 0x29
VolumeID          dd 0xFFFFFFFF
VolumeLabel       db "CRUNCH$",0
SystemID          db "FAT12$"
LoadFatDI         dw 0x0000
absoluteSector    db 0x00
absoluteHead      db 0x00
absoluteTrack     db 0x00
datasector        dw 0x0000
cluster           dw 0x0000
;======================================================================
BeginOS:
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  fs, ax
mov  gs, ax
;======================================================================
call SetVectors
call ActiveNMI
;======================================================================
mov  di, ImageName
mov  cx, 80
mov  al, 0
LoopIt1:
stosb
loop LoopIt1
;======================================================================
mov  di, MainBuffer
mov  cx, 512 * 12h
mov  al, 0
LoopIto:
stosb
loop LoopIto
;======================================================================
push es
mov  ax, 0x3000
mov  es, ax
mov  di, 0
mov  cx, 0xffff
mov  al, 0
LoopIt2:
stosb
loop LoopIt2
pop  es
;======================================================================
cmp  byte [cs:Delay1], 2
je   OnlyCmdPrompt
cmp  byte [cs:Delay1], 1
jne  NoDelay
mov  si, iload
call Show
mov  ah, 4
mov  al, 0
mov  dl, 80
int  0x18
cmp  al, 0
je   LoadMenuX
jmp  NotLoadMenu
LoadMenuX:
NoDelay:
push cs
pop  ds
mov  ah, 0
mov  si, menu
int  0x18
NotLoadMenu:
call putc
OnlyCmdPrompt:
;======================================================================
mov  SI, Intro
call Show
;======================================================================
mov  SI, Prompt
call Show
;======================================================================
mov  SI, Buffer
call cinputbs
mov  CX, 80
mov  SI, Buffer
call cparse
;======================================================================
call ChkCmds
jmp  BeginOS
zname  rb 12
addcom db 0x00
;======================================================================
Loader:
call PrintCrLf
mov  SI, Buffer
mov  al, 1
call cpointp
Loader2:
mov  DI, ImageName
call CopyMem
;=====================
call CmdLine
;=====================
mov  DI, ImageName
call Convert
cmp  byte [cs:addcom], 1
jne  NotCOMextAdd
mov  byte [cs:ImageName+8], 'C'
mov  byte [cs:ImageName+9], 'O'
mov  byte [cs:ImageName+10], 'M'
NotCOMextAdd:
;=====================
mov  SI, msg1
call Show
call LoadRootDir
;=====================
mov  SI, msg2
call Show
mov  SI, ImageName
call Show
call ScanNames
;=====================
mov  SI, msg3
call Show
call LoadFat
;=====================
mov  SI, msg4
call Show
mov  ax, 0x3000
mov  es, ax
mov  bx, 0x0100
call ReadImage
;=====================
mov  SI, msg5
call Show
jmp  RunImage
;======================================================================
LoadRootDir:
push ax
push bx
push cx
push dx
push bp
push ds
push es
xor  cx, cx
xor  dx, dx
mov  ax, 0x0020
mul  WORD [MaxRootEntries]
div  WORD [BytesPerSector]
xchg ax, cx
mov  al, BYTE [TotalFATs]
mul  WORD [SectorsPerFAT]
add  ax, WORD [ReservedSectors]
mov  WORD [datasector], ax
add  WORD [datasector], cx
mov  bx, MainBuffer
mov  bp, 2
MOV  CX, WORD [SectorsPerFAT]
call io
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
ret
;======================================================================
ScanNames:
push ax
push bx
push cx
push dx
push bp
push ds
push es
mov  ax, cs
mov  ds, ax
mov  cx, WORD [MaxRootEntries]
mov  di, MainBuffer
Loops1:
push cx
mov  cx, 0x000B
mov  si, ImageName
push di
rep  cmpsb
pop  di
pop  cx
je   Continue2FAT
add  di, 0x0020
;mov  SI, cont
;call Show
loop Loops1
mov  SI, err1
call Show
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
jmp  BeginOS
Continue2FAT:
mov  word [cs:LoadFatDI], DI
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
ret
;======================================================================
ShowNames:
push ax
push bx
push cx
push dx
push bp
push ds
push es
mov  cx, WORD [MaxRootEntries]
mov  si, MainBuffer
mov  dx, 0
Loops1S:
call strlen
cmp  cx, 11
jl   TooSmall
mov  al, '['
mov  bx, 0x000b
call putc
mov  byte [ds:si+11], 0
call Show
mov  al, ']'
mov  bx, 0x000b
call putc
mov  al, ' '
mov  bx, 0x0001
call putc
inc  dx
cmp  dx, 5
jne  NotDX5
mov  dx, 0
push si
call PrintCrLf
pop  si
NotDX5:
TooSmall:
add  si, 0x0020
cmp  byte [si], 0
je   DoneListing
loop Loops1S
DoneListing:
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
ret
;======================================================================
Exist:
push ax
push bx
push cx
push dx
push bp
push ds
push es
mov  ax, cs
mov  ds, ax
mov  cx, WORD [MaxRootEntries]
mov  di, MainBuffer
LoopsX:
push cx
mov  cx, 0x000B
mov  si, ImageName
push di
rep  cmpsb
pop  di
pop  cx
je   FileFound
add  di, 0x0020
loop LoopsX
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
mov  ax, 0x0000
ret
FileFound:
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
mov  ax, 0x0001
ret
;======================================================================
LoadFat:
push ax
push bx
push cx
push dx
push bp
push ds
push es
mov  DI, word [cs:LoadFatDI]
mov  dx, WORD [di + 0x001A]
mov  WORD [cluster], dx
xor  ax, ax
mov  al, BYTE [TotalFATs]
mul  WORD [SectorsPerFAT]
mov  cx, ax
mov  ax, WORD [ReservedSectors]
;read FAT into memory (MainBuffer)
push cs
pop  es
mov  bx, MainBuffer
mov  bp, 2
MOV  CX, WORD [SectorsPerFAT]
call io
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
ret
;======================================================================
WriteImage:
push bp
mov  bp, 3
jmp  BPSetW
ReadImage:
push bp
mov  bp, 2
BPSetW:
push ax
push bx
push cx
push dx
push ds
push es
push bx
LOAD_IMAGE:
mov  ax, WORD [cluster]
pop  bx
call ClusterLBA
xor  cx, cx
mov  cl, BYTE [SectorsPerCluster]
call io
push bx
mov  ax, WORD [cluster]
mov  cx, ax
mov  dx, ax
shr  dx, 0x0001
add  cx, dx
mov  bx, MainBuffer
add  bx, cx
mov  dx, WORD [bx]
test ax, 0x0001
jnz  ODD_CLUSTER
EVEN_CLUSTER:
and  dx, 0000111111111111b
jmp  DONE1
ODD_CLUSTER:
shr  dx, 0x0004
DONE1:
mov  WORD [cluster], dx
cmp  dx, 0x0FF0
jb   LOAD_IMAGE
DONE:
pop  ax

pop  es
pop  ds
pop  dx
pop  cx
pop  bx
pop  ax
pop  bp
ret
;======================================================================
RunImage:
call SimpleStart
mov  ax, 0x3000
mov  ds, ax
mov  es, ax
mov  fs, ax
mov  gs, ax
mov  al, byte [es:0x0102]
mov  byte [cs:pjmp], al
push WORD 0x3000
push WORD 0x0100
call ActiveNMI
retf
;======================================================================
RunImage2:
mov  ax, 0x4000
mov  ds, ax
mov  es, ax
mov  fs, ax
mov  gs, ax
mov  byte [ds:81h], ' '
mov  byte [ds:82h], 'e'
mov  byte [ds:83h], 'x'
mov  byte [ds:84h], 'i'
mov  byte [ds:85h], 't'
mov  byte [ds:86h], 13
mov  byte [ds:87h], 10
push WORD 0x4000
push WORD 0x0100
call ActiveNMI
retf
;======================================================================
;PROCEDURE io
;r/w cx sectors from disk starting at ax into
;memory location es:bx
;======================================================================
io:
push si
push di
MAIN:
mov  di, 0x0008
SECTORLOOP:
push ax
push bx
push cx
call LBACHS
mov  ax, bp
xchg ah, al
mov  al, 0x01
mov  ch, BYTE [absoluteTrack]
mov  cl, BYTE [absoluteSector]
mov  dh, BYTE [absoluteHead]
mov  dl, BYTE [DriveNumber]
int  0x13
jnc  SUCCESS
xor  ax, ax
int  0x13
dec  di
pop  cx
pop  bx
pop  ax
jnz  SECTORLOOP
pop  cx
pop  bx
pop  ax
mov  si, err2
call Show
jmp  BeginOS
SUCCESS:
cmp  byte [cs:Silent], 1
je   SkipCont
push ax
push bx
mov  al, byte [cs:cont]
mov  bx, 0x000b
call putc
pop  bx
pop  ax
SkipCont:
pop  cx
pop  bx
pop  ax
add  bx, WORD [BytesPerSector]
inc  ax
loop MAIN
pop  di
pop  si
ret
;======================================================================
; PROCEDURE ClusterLBA
; convert FAT cluster into LBA addressing scheme
; LBA = (cluster - 2) * sectors per cluster
;======================================================================
ClusterLBA:
sub  ax, 0x0002
xor  cx, cx
mov  cl, BYTE [SectorsPerCluster]
mul  cx
add  ax, WORD [datasector]
ret
;======================================================================
; PROCEDURE LBACHS
; convert ‘ax’ LBA addressing scheme to CHS addressing scheme
; absolute sector = (logical sector / sectors per track) + 1
; absolute head   = (logical sector / sectors per track) MOD number of heads
; absolute track  = logical sector / (sectors per track * number of heads)
;*************************************************************************
LBACHS:
xor  dx, dx
div  WORD [SectorsPerTrack]
inc  dl
mov  BYTE [absoluteSector], dl
xor  dx, dx
div  WORD [NumHeads]
mov  BYTE [absoluteHead], dl
mov  BYTE [absoluteTrack], al
ret
;======================================================================
;======================================================================
cinputbs:
push ax
push bx
push cx
push dx
push bp
push si


mov  ah, 0x03
mov  bh, 0
int  0x10
mov  byte [cs:oldpos], dl
mov  BP, si
GetInput3:
mov  ah, 0
int  0x16
cmp  al, 8
jne  NotBackSpace
mov  ah, 0x03
mov  bh, 0
int  0x10
cmp  byte [cs:oldpos], dl
je   GetInput3
mov  ah, 0x03
mov  bh, 0
int  0x10
dec  dl
mov  ah, 0x02
mov  bh, 0
int  0x10
mov  bx, 000fh
mov  al, ' '
call putc
mov  ah, 0x03
mov  bh, 0
int  0x10
cmp  dl, 0
jle  NotDecDrip
dec  dl
NotDecDrip:
mov  ah, 0x02
mov  bh, 0
int  0x10
cmp  SI, BP
jle  char0
dec  SI
char0:
jmp  SkipBS
NotBackSpace:
mov  bx, 000fh
call putc
cmp  al, 13
jne  NotIOver3
mov  byte [ds:SI], 0
jmp  GotIt3
NotIOver3:
mov  byte [ds:SI], al
mov  byte [ds:SI+1], 0
inc  SI
SkipBS:
jmp  GetInput3
GotIt3:

pop  si
push si

cmp  byte [ds:si], '^'
jne  GoAwayMm
inc  si
int  0x0a
GoAwayMm:

pop  si
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
ret
;======================================================================
;convert standard file name to FAT12 image file name
Convert:
mov  BX, 0
lopo:
cmp  BYTE [DI+BX], '.'
jne  notdot
mov  AH, [DI+BX+1]
mov  AL, [DI+BX+2]
mov  DH, [DI+BX+3]
cmp  AH, 0
jne  nz1
mov  AH, ' '
mov  AL, ' '
mov  DH, ' '
nz1:
cmp  AL, 0
jne  nz2
mov  AL, ' '
mov  DH, ' '
nz2:
cmp  DH, 0
jne  nz3
mov  DH, ' '
nz3:
n8:
mov  byte [DI+BX], ' '
inc  BX
cmp  BX, 8
jle  n8
cmp  AH,'a'
jb   KeepIt2
cmp  AH,'z'
ja   KeepIt2
sub  AH,32
KeepIt2:
cmp  AL,'a'
jb   KeepIt3
cmp  AL,'z'
ja   KeepIt3
sub  AL,32
KeepIt3:
cmp  DH,'a'
jb   KeepIt4
cmp  DH,'z'
ja   KeepIt4
sub  DH,32
KeepIt4:
mov  BYTE [DI+8], AH
mov  BYTE [DI+9], AL
mov  BYTE [DI+10], DH
mov  BYTE [DI+11], 0
jmp  overr
notdot:
cmp  BYTE [DI+BX], 0
jne  noppp
total0:
mov  BYTE [DI+BX], ' '
inc  BX
cmp  BX, 12
jl   total0
jmp  overr
noppp:
UpCase:
cmp  BYTE [DI+BX],'a'
jb   KeepIt
cmp  BYTE [DI+BX],'z'
ja   KeepIt
sub  BYTE [DI+BX],32
KeepIt:
inc  BX
cmp  BX, 11
jle  lopo
overr:
mov  byte [DI+11], 0
ret
;==================================================================
Show:
cmp  byte [cs:Silent], 0x01
je   SilentMode
jmp  Noise
SilentMode:
cmp  si, msg1
je   Whisper
cmp  si, msg2
je   Whisper
cmp  si, msg3
je   Whisper
cmp  si, msg4
je   Whisper
cmp  si, msg5
je   Whisper
cmp  si, msg6
je   Whisper
cmp  si, err1
je   Whisper
cmp  si, err2
je   Whisper
cmp  si, err3
je   Whisper
cmp  si, err4
je   Whisper
cmp  si, ImageName
je   Whisper
Noise:
push AX
push BX
push SI
ShowLoop2:
lodsb
cmp  al, 0
je   DoneZ2
cmp  al, '$'
je   DoneZ2
mov  bl, 0x0f
cmp  al, '['
je   SetBL
cmp  al, ']'
je   SetBL
jmp  WontSetBL
SetBL:
mov  bl, 0x0b
WontSetBL:
cmp  al, '-'
jne  DashSkip
mov  bl, 0x07
DashSkip:
cmp  al, '%'
jne  NotPer
inc  si
call ScnHex
cmp  al, 3
jne  NotHeart
mov  bl, 0x04
NotHeart:
NotPer:
call putc
jmp  ShowLoop2
DoneZ2:
pop  SI
pop  BX
pop  AX
Whisper:
ret
;==================================================================
Show2:
push AX
push BX
zShowLoop:
lodsb
cmp  al, 0
je   zDone
cmp  al, '$'
je   zDone
call putc
jmp  zShowLoop
zDone:
pop  BX
pop  AX
ret
;==================================================================
Compare:
;Compare SI with DI al = 1 if match
push bx
mov  bx, 0
c_loop:
mov  al, byte [si+bx]
cmp  byte [di+bx], al
jne  c_nope
cmp  al, 00
je   c_yup
inc  bx
jmp  c_loop
c_yup:
pop  bx
mov  al, 01
ret
c_nope:
pop  bx
mov  al, 00
ret
;======================================================================
cparse:
Wings:
mov  al, byte [ds:SI]
cmp  al, ','
jne  NopThat
mov  al, 0
NopThat:
mov  byte [ds:SI], al
inc  SI
loop Wings
ret
;======================================================================
cpointp:
push AX
push CX
push DX
mov  DL, AL
mov  CX, 64000
cmp  DL, 0
je   AllOverP
CounterLoop:
cmp  byte [SI], 0
jne  NotUpCount
inc  SI
dec  DL
cmp  DL, 0
je   AllOverP
NotUpCount:
inc SI
loop CounterLoop
AllOverP:
pop  DX
pop  CX
pop  AX
ret
;======================================================================
CopyMem:
mov  AL, byte [ds:SI]
mov  byte [ds:DI], AL
cmp  AL, 0
jne  NotOver
ret
NotOver:
inc  SI
inc  DI
jmp  CopyMem
;======================================================================
ScnHex:
push cx
push dx
mov  cl,4
xor  dx,dx
scn:
lodsb
cmp  al,'0'
jb   endr
cmp  al,'9'
jna  decdgt
or   al,0x20
cmp  al,'a'
jb   endr
cmp  al,'z'
ja   endr
sub  al,'a'-'9'-1
decdgt:
sub  al,'0'
shl  dx,cl
or   dl,al
jmp  scn
endr:
xchg dx, ax
dec  si
pop  dx
pop  cx
ret
;======================================================================
;parse command line paramiters
;at 3000;0080h
CmdLine:
push es
push bp
mov  ax, 3000h
mov  es, ax
mov  ax, 81h
mov  bp, ax
mov  BX, 0
mov  byte [es: 80h], ' '
clearparam:
mov  byte [es: bp], 0
inc  BP
inc  BX
cmp  BX, 80
jl   clearparam
mov  BX, 0
parse:
cmp  byte [ImageName+BX], 0
je   done1
cmp  byte [ImageName+BX], ' '
jne  skp
push BX
parse2:
mov  ax, 3000h
mov  es, ax
mov  ax, 81h
mov  bp, ax
parse3:
mov  AL, byte [ImageName+BX]
mov  byte [es: bp], AL
cmp  AL, 0
je   doneW
inc  BP
inc  BX
jmp  parse3
skp:
inc  BX
jmp  parse
doneW:
pop  BX
mov  byte [ImageName+BX], 0
done1:
pop  bp
pop  es
ret
;======================================================================
cphex:
push AX
push BX
push CX
MOV  CL,10h
MOV  AH,0
DIV  CL
ADD  AL,30h
ADD  AH,30h
CMP  AL,'9'
JBE  CA4B
ADD  AL,7
CA4B:
CMP  AH,'9'
JBE  CA5B
ADD  AH,7
CA5B:
mov  CX,AX
mov  al,CL
call putc
mov  al,CH
call putc
pop  CX
pop  BX
pop  AX
ret

ChkCmds:
mov  SI, Buffer
mov  DI, cmdQ
call Compare
cmp  al, 1
je   AllOver
mov  SI, Buffer
mov  DI, cmdExit
call Compare
cmp  al, 1
jne  NotByeBye
AllOver:

in   al,61h  ;turn off sound
and  al,252
out  61h,al

push cs
pop  ds
mov  si, OldVect
call RestoreVect

mov  ah, 0x4c
int  0x21
int3
;======================================================================
NotByeBye:
mov  SI, Buffer
mov  DI, cmdRun
call Compare
cmp  al, 1
jne  NotLoad
jmp  Loader
;======================================================================
NotLoad:
mov  SI, Buffer
mov  DI, cmdList
call Compare
cmp  al, 1
jne  NotList
mov  SI, msg1
call Show
call LoadRootDir
mov  SI, msg2
call Show
call ShowNames
jmp  BeginOS
;======================================================================
NotList:
mov  SI, Buffer
mov  DI, cmdShell
call Compare
cmp  al, 1
jne  NotShell
jmp  LoadMenuX
;======================================================================
NotShell:
mov  SI, Buffer
mov  DI, cmdHex
call Compare
cmp  al, 1
jne  NotHex
call ActiveNMI
mov  SI, Buffer
mov  al, 1
call cpointp
push cs
pop  es
mov  ax, Simple
push ax
pop  di
nxt000:
call ScnHex
stosb
lodsb
cmp  al, 0
je   Bud000
jmp  nxt000
Bud000:
mov  al, 0xc3
stosb
call ActiveNMI
push cs
pop  es
call Simple
jmp  BeginOS
;======================================================================
NotHex:
mov  SI, Buffer
mov  DI, cmdWh
call Compare
cmp  al, 1
jne  NotWh
mov  ah, 0x13
int  0x18
;======================================================================
NotWh:
mov  SI, Buffer
mov  DI, cmdNMI
call Compare
cmp  al, 1
jne  NotNMI
cmp  byte [cs:NmiX], 0
je   SetTo1
mov  byte [cs:NmiX], 0
mov  si, nmioff
call Show
jmp  WasSet
SetTo1:
mov  byte [cs:NmiX], 1
mov  si, nmion
call Show
WasSet:
jmp  BeginOS
;======================================================================
NotNMI:
mov  SI, Buffer
mov  DI, cmdCmds
call Compare
cmp  al, 1
jne  NotCmds
call PrintCrLf
mov  si, Commands
mov  cx, 32000
mov  dx, 0
ShowCmds:
cmp  si, EOC
je   DoneCList
cmp  byte [CS:SI], 0
jne  Hummm
inc  si
jmp  Dope
Hummm:
mov  al, '['
mov  bx, 000eh
call putc
call Show2
mov  al, ']'
mov  bx, 000eh
call putc
mov  al, ' '
mov  bx, 0007h
call putc
inc  dx
cmp  dx, 9
jne  NoCrLfBrk
mov  dx, 0
call PrintCrLf
NoCrLfBrk:
Dope:
loop ShowCmds
DoneCList:
call PrintCrLf
jmp  BeginOS
;======================================================================
NotCmds:
mov  SI, Buffer
mov  DI, cmdScreen
call Compare
cmp  al, 1
jne  NotCmdScreen
mov  SI, Buffer
mov  al, 1
call cpointp
call ScnHex
mov  ah, 0
int  0x10
jmp  BeginOS
;======================================================================
NotCmdScreen:
mov  SI, Buffer
mov  DI, cmdColor
call Compare
cmp  al, 1
jne  NotCmdColor
mov  SI, Buffer
mov  al, 1
call cpointp
call ScnHex
mov  ah, 0x26
int  0x18
jmp  BeginOS
;======================================================================
NotCmdColor:
mov  SI, Buffer
mov  DI, cmdStay
call Compare
cmp  al, 1
jne  NotCmdStay
mov  ah, 0x15
mov  al, 2
int  0x18
jmp  BeginOS
;======================================================================
NotCmdStay:
mov  SI, Buffer
mov  DI, cmdGo
call Compare
cmp  al, 1
jne  NotCmdGo
mov  ah, 0x15
mov  al, 1
int  0x18
jmp  BeginOS
NotCmdGo:
;======================================================================
mov  SI, Buffer
mov  DI, cmdPatch
call Compare
cmp  al, 1
jne  NotCmdPatch
push cs
pop  ds
push cs
pop  es
mov  ah, 0x3f
mov  dx, AnyBuff
int  0x21
mov  SI, AnyBuff
mov  DI, StartPatch
mov  cx, EndPatch - StartPatch
;sub  cx, 100h
PatchLoop:
lodsb
stosb
loop PatchLoop
jmp  BeginOS
NotCmdPatch:
;======================================================================
mov  SI, Buffer
mov  DI, cmdVect
call Compare
cmp  al, 1
jne  NotCmdVect
mov  SI, Buffer
mov  al, 1
call cpointp
call ScnHex
push ax
mov  SI, Buffer
mov  al, 2
call cpointp
call ScnHex
push ax
mov  SI, Buffer
mov  al, 3
call cpointp
call ScnHex
push ax
pop  dx
pop  ds
pop  ax
call SetV
push cs
pop  ds
jmp  BeginOS
NotCmdVect:
;======================================================================
mov  SI, Buffer
mov  DI, cmdKill
call Compare
cmp  al, 1
jne  NotCmdKill
mov  SI, Buffer
mov  al, 1
call cpointp
call ScnHex
mov  ah, 0x23
int  0x18
jmp  BeginOS
NotCmdKill:
;======================================================================
mov  SI, Buffer
mov  DI, cmdTest
call Compare
cmp  al, 1
jne  NotCmdTest
mov  SI, Buffer
mov  al, 1
call cpointp
call ScnHex
mov  ah, 0x25
int  0x18
jmp  BeginOS
NotCmdTest:
;======================================================================

mov  SI, Buffer
mov  DI, cmdHelp
call Compare
cmp  al, 1
jne  NotCmdHelp
mov  si, SysHelp
call Show
jmp  BeginOS
NotCmdHelp:

cmp  byte [cs:Buffer], '^'
je   OkWh
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  si, Buffer
mov  di, zname
mov  cx, 12
zcopy:
lodsb
stosb
loop zcopy
mov  byte [cs:addcom], 0
mov  cx, 11
mov  si, zname
mov  di, zname
TestSpace:
lodsb
cmp  al, ' '
jne  NotAddNul
mov  al, 0
stosb
jmp  CmdParamNulDon
NotAddNul:
stosb
loop TestSpace
CmdParamNulDon:
mov  di, zname
call Convert
mov  si, zname
mov  ah, 0x2a
int  0x18
mov  si, Buffer
cmp  al, 1
je   Loader2
mov  byte [cs:addcom], 1
mov  byte [cs:zname+8], 'C'
mov  byte [cs:zname+9], 'O'
mov  byte [cs:zname+10], 'M'
mov  byte [cs:zname+11], 0
mov  si, zname
mov  ah, 0x2a
int  0x18
mov  si, Buffer
cmp  al, 1
je   Loader2
mov  si, err3
call Show
jmp  BeginOS
OkWh:
ret
;======================================================================
mega_x:
int  0xA0
cmp  ah, 0
je   i18f0
cmp  ah, 1
je   i18f1
cmp  ah, 2
je   i18f2
cmp  ah, 3
je   i18f3
cmp  ah, 4
je   i18f4
cmp  ah, 5
je   i18f5
cmp  ah, 6
je   i18f6
cmp  ah, 7
je   i18f7
cmp  ah, 8
je   i18f8
cmp  ah, 9
je   i18f9
cmp  ah, 0ah
je   i18fa
cmp  ah, 0bh
je   i18fb
cmp  ah, 0ch
je   i18fc
cmp  ah, 0dh
je   i18fd
cmp  ah, 0eh
je   i18fe
cmp  ah, 0fh
je   i18ff
cmp  ah, 10h
je   i18f10
cmp  ah, 11h
je   i18f11
cmp  ah, 12h
je   i18f12
cmp  ah, 13h
je   i18f13
cmp  ah, 14h
je   i18f14
cmp  ah, 15h
je   i18f15
cmp  ah, 16h
je   i18f16
cmp  ah, 17h
je   i18f17
cmp  ah, 18h
je   i18f18
cmp  ah, 19h
je   i18f19
cmp  ah, 1Ah
je   i18f1A
cmp  ah, 1Bh
je   i18f1B
cmp  ah, 1Ch
je   i18f1C
cmp  ah, 1Dh
je   i18f1D
cmp  ah, 1Eh
je   i18f1E
cmp  ah, 1Fh
je   i18f1F
cmp  ah, 20h
je   i18f20
cmp  ah, 21h
je   i18f21
cmp  ah, 22h
je   i18f22
cmp  ah, 23h
je   i18f23
cmp  ah, 24h
je   i18f24
cmp  ah, 25h
je   i18f25
cmp  ah, 26h
je   i18f26
cmp  ah, 27h
je   i18f27
cmp  ah, 28h
je   i18f28
cmp  ah, 29h
je   i18f29
cmp  ah, 2Ah
je   i18f2A
cmp  ah, 2Bh
je   i18f2B
cmp  ah, 2Ch
je   i18f2C
cmp  ah, 2Dh
je   i18f2D
push ds
push cs
pop  ds
mov  SI, err4
call Show
xchg ah, al
call cphex
mov  ah, 0
int  0x16
pop  ds
iret
;======================================================================
i18f0:  jmp Mega000
i18f1:  jmp Mega001
i18f2:  jmp Mega002
i18f3:  jmp Mega003
i18f4:  jmp Mega004
i18f5:  jmp Mega005
i18f6:  jmp Mega006
i18f7:  jmp Mega007
i18f8:  jmp Mega008
i18f9:  jmp Mega009
i18fa:  jmp Mega00a
i18fb:  jmp Mega00b
i18fc:  jmp Mega00c
i18fd:  jmp Mega00d
i18fe:  jmp Mega00e
i18ff:  jmp Mega00f
i18f10: jmp Mega010
i18f11: jmp Mega011
i18f12: jmp Mega012
i18f13: jmp Mega013
i18f14: jmp Mega014
i18f15: jmp Mega015
i18f16: jmp Mega016
i18f17: jmp Mega017
i18f18: jmp Mega018
i18f19: jmp Mega019
i18f1A: jmp Mega01A
i18f1B: jmp Mega01B
i18f1C: jmp Mega01C
i18f1D: jmp Mega01D
i18f1E: jmp Mega01E
i18f1F: jmp Mega01F
i18f20: jmp Mega020
i18f21: jmp Mega021
i18f22: jmp Mega022
i18f23: jmp Mega023
i18f24: jmp Mega024
i18f25: jmp Mega025
i18f26: jmp Mega026
i18f27: jmp Mega027
i18f28: jmp Mega028
i18f29: jmp Mega029
i18f2A: jmp Mega02A
i18f2B: jmp Mega02B
i18f2C: jmp Mega02C
i18f2D: jmp Mega02D
;======================================================================
Mega000:
push cx
push si
push di
push ds
push es
mov  ax, cs
mov  es, ax
mov  di, Buffer
mov  cx, 88
CpyTheMem:
lodsb
stosb
cmp  al, 0
je   DoneCpy
loop CpyTheMem
DoneCpy:
mov  ax, cs
mov  ds, ax
call ChkCmds
pop  es
pop  ds
pop  di
pop  si
pop  cx

mov  bx, si
mov  DI, ImageName
LoopDS0:
mov  al, byte [ds:bx]
mov  byte [cs:di], al
cmp  al, 0
je   DoneDS0
inc  bx
inc  di
jmp  LoopDS0
DoneDS0:
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  DI, ImageName
;=====================
call CmdLine
;=====================
call Convert
mov  SI, msg1
call Show
call LoadRootDir
mov  SI, msg2
call Show
mov  SI, ImageName
call Show
call ScanNames
mov  SI, msg3
call Show
call LoadFat
mov  SI, msg4
call Show
mov  ax, 0x3000
mov  es, ax
mov  bx, 0x0100
call ReadImage
mov  SI, msg5
call Show
jmp  RunImage
;======================================================================
Mega001:
push ax
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
push es
push dx
mov  bx, SI
mov  DI, ImageName
LoopDS1:
mov  al, byte [ds:bx]
mov  byte [cs:di], al
cmp  al, 0
je   DoneDS1
inc  bx
inc  di
jmp  LoopDS1
DoneDS1:
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  DI, ImageName
call Convert
mov  SI, msg1
call Show
call LoadRootDir
mov  SI, msg2
call Show
mov  SI, ImageName
call Show
call ScanNames
mov  SI, msg3
call Show
call LoadFat
mov  SI, msg6
call Show
pop  bx
pop  es
call WriteImage
pop  es
pop  ds
pop  bp
pop  di
pop  si
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega002:
push ax
push bx
push cx
push dx
push bp
push ds
push es
push es
push dx
mov  bx, si
mov  DI, ImageName
LoopDS2:
mov  al, byte [ds:bx]
mov  byte [cs:di], al
cmp  al, 0
je   DoneDS2
inc  bx
inc  di
jmp  LoopDS2
DoneDS2:
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  DI, ImageName
call Convert
mov  SI, msg1
call Show
call LoadRootDir
mov  SI, msg2
call Show
mov  SI, ImageName
call Show
call ScanNames
mov  SI, msg3
call Show
call LoadFat
mov  SI, msg4
call Show
pop  bx
pop  es
call ReadImage
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega003:
push AX
push BX
push SI
ShowLoopF3:
lodsb
cmp  al, 0
je   DoneF3
cmp  al, '$'
je   DoneF3
call putc
jmp  ShowLoopF3
DoneF3:
pop  SI
pop  BX
pop  AX
iret
;======================================================================
Mega004:
push bx
push cx
push dx
push es
push bp
push ds
push cs
push cs
pop  ds
pop  es
mov  AL, 0
mov  CH, 0
mov  CL, DL
Delay:
mov  BX, 40h
mov  ES, BX
mov  BL, byte [es:6Ch]
Sleep:
mov  ah, 0x1
int  0x16
jnz  HitKey
mov  DL, byte [es:6Ch]
cmp  BL, DL
je   Sleep
loop Delay
jmp  NoHitKey
HitKey:
mov  ah, 0
int  0x16
jmp  FixTheBug
NoHitKey:
mov  al, 0
FixTheBug:
pop  ds
pop  bp
pop  es
pop  dx
pop  cx
pop  bx
iret
;======================================================================
Mega005:
push ax
push bx
push cx
push dx
push bp
push ds
push es
push di
push dx
push ds
push cx
mov  bx, cs
mov  ds, bx
mov  es, bx
cmp  al, 1
je   ScanThem
call LoadRootDir
pop  ax
pop  ax
pop  ax
jmp  DoneThisOne
ScanThem:
mov  si, MainBuffer
pop  cx
cmp  cx, 0
je   NullBuff
LoopsFF5:
add  si, 0x0020
loop LoopsFF5
NullBuff:
pop  es
pop  di
mov  cx, 11
LoopFF5:
lodsb
stosb
loop LoopFF5
mov  al, 0
stosb
DoneThisOne:
pop  di
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega006:
push ax
push bx
push cx
push dx
push bp
push ds
push es
push si
push di
push ss
push sp

push bx
;------------------------
mov  byte [CS:Sprites+BX], AL
;------------------------
mov  BX, SI
PrintG:
mov  DI, 0
gloop:
mov  AL, byte [DS:BX]
mov  byte [CS:gmsg+DI], AL
cmp  AL, 0
je   DoneMemMove
inc  BX
inc  DI
jmp  gloop
DoneMemMove:
mov  ax, cs
mov  ds, ax
mov  es, ax
;------------------------
pop  bx
mov  ah, 0
mov  al, bh
mov  cx, 12
mul  cx
mov  cx, ax
push cx
mov  ah, 0
mov  al, bl
mov  cx, 8
mul  cx
mov  dx, ax
pop  cx
;------------------------
push word gmsg
push word DX
push word CX
call printString

pop  sp
pop  ss
pop  di
pop  si
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega007:
push ax
push bx
push cx
push dx
push bp
push ds
push es
push bx
;------------------------
mov  byte [CS:Sprites+BX], dl
;------------------------
mov  dh, 0
sub  dl, 48
pop  bx
push dx
mov  ax, cs
mov  ds, ax
mov  es, ax
;------------------------
mov  ah, 0
mov  al, bh
mov  cx, 16
mul  cx
mov  cx, ax
push cx
mov  ah, 0
mov  al, bl
mov  cx, 16
mul  cx
mov  dx, ax
pop  cx
;------------------------
pop  AX
push word AX
push word DX
push word CX
call printDigit
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega008:
mov  al, byte [CS:Sprites+BX]
mov  ah, 0
mov  dx, ax
iret
;======================================================================
Mega009:
push ax
push bx
push cx
push dx
push bp
push ds
push es
pusha
mov  byte [ES:DI], 0
mov  BX, 0
mov  CX, 0xffff
GetLine:
mov  AL, byte [DS:SI]
mov  byte [ES:DI+BX], AL
cmp  AL, 0x00
je   FinalFinish
cmp  AL, 0x0a
jne  SameLine
dec  BP
cmp  BP, 0x00
je   FinalFinish
mov  BX, 0
inc  SI
jmp  NextLine
SameLine:
inc  SI
inc  BX
NextLine:
loop GetLine
FinalFinish:
inc  BX
mov  byte [ES:DI+BX], 0
popa
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega00a:
push ax
push bx
push cx
push dx
push bp
push ds
push es

push ax
mov  ax, cs
mov  ds, ax
mov  es, ax
pop  ax

cmp  al, 0
jne  notf0

mov  ax, 01100h       ;function 11h - load user font pattern
mov  bh, 16           ;16 bytes per character
mov  bl, 0            ;character block - set 0
mov  cx, 128          ;number of chars
mov  dx, 0            ;char. number in block
mov  bp, NewFont0     ;point BP to start of character pattern
int  10h              ;call ROM BIOS video services

jmp  doneFO
notf0:
cmp  al, 1
jne  notf1

mov  ax, 01100h
mov  bh, 16
mov  bl, 0
mov  cx, 94
mov  dx, 33
mov  bp, NewFont1
int  10h

jmp  doneFO
notf1:

cmp  al, 2
jne  notf2

mov  ax, 01100h
mov  bh, 16
mov  bl, 0
mov  cx, 94
mov  dx, 33
mov  bp, NewFont2
int  10h

notf2:


cmp  al, 3
jne  notf3

mov  ax, 01100h
mov  bh, 16
mov  bl, 0
mov  cx, 133
mov  dx, 0
mov  bp, NewFont3
int  10h


notf3:


doneFO:
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega00b:
push ax
push bx
push cx
push dx
push bp
push ds
push es
push di
push si
mov  ax, cs
mov  es, ax
mov  di, letter
mov  dx, 0
mov  ax, 96
add  ax, 4
mul  cx
add  di, ax
add  di, 4
mov  cx, 96
CopySpriteS:
lodsb
stosb
loop CopySpriteS
pop  si
pop  di
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega00c:
push ax
push bx
push cx
push dx
push bp
push ds
push es
push di
push si
mov  ax, cs
mov  es, ax
mov  di, digit
mov  dx, 0
mov  ax, 256
add  ax, 4
mul  cx
add  di, ax
add  di, 4
mov  cx, 256
CopySpriteL:
lodsb
stosb
loop CopySpriteL
pop  si
pop  di
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega00d:
;rand get rand number dh=start dl=end returns al
push bx
push cx
push dx
push bp
push es
mov  ax, 0x40
mov  es, ax
mov  ah, 0
mov  al, byte [es:0x6c]  ;6c
mov  cx, ax
add  cx, bx
add  cl, byte [cs:seed]
mov  bh, dh
mov  bl, dl
GetRand:
cmp  dh, bl
jle  DoneOK
mov  dh, bh
DoneOK:
mov  al, dh
add  dh, 1
loop GetRand
add  byte [cs:seed], 1
cmp  byte [cs:seed], 0xff
jne  NotReset
mov  byte [cs:seed], 0x00
NotReset:
pop  es
pop  bp
pop  dx
pop  cx
pop  bx
iret
;======================================================================
Mega00e:
push ax
push bx
push cx
push dx
push bp
push ds
push es
call cinputbs
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega00f:
push ax
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
push gs
push fs
push ss
push sp
push cs
pop  es
mov  DI, Buffer
mov  cx, 128
CopyMemoryX:
lodsb
stosb
loop CopyMemoryX
push cs
pop  ds
push cs
pop  es
mov  SI, Buffer
mov  ax, Simple
push ax
pop  di
nxt000X:
call ScnHex
stosb
lodsb
cmp  al, 0
je   Bud000X
jmp  nxt000X
Bud000X:
mov  al, 0xc3
stosb
call ActiveNMI
call Simple
pop  sp
pop  ss
pop  fs
pop  gs
pop  es
pop  ds
pop  bp
pop  di
pop  si
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega010:
mov  byte [cs:Silent], al
iret
;======================================================================
Mega011:
push ax
push es
push di
mov  ax, cs
mov  es, ax
mov  di, menu
CpyName:
lodsb
stosb
cmp  al, 0
je   OkSet
loop CpyName
OkSet:
pop  di
pop  es
pop  ax
iret
;======================================================================
Mega012:
push bx
push ds
push es
mov  bx, cs
mov  ds, bx
mov  es, bx
mov  byte [cs:NmiX], al
call ActiveNMI
pop  es
pop  ds
pop  bx
iret
;======================================================================
Mega013:
push cs
pop  ds
mov  si, wormhole
mov  ax, 0x4000
mov  es, ax
mov  dx, 0x0100
mov  ah, 2
int  0x18
jmp  RunImage2
;======================================================================
Mega014:
mov  byte [cs:Pause1], al
iret
;======================================================================
Mega015:
mov  byte [cs:Delay1], al
iret
;======================================================================
Mega016:
mov  byte [cs:ansi], al
iret
;======================================================================
Mega017:
push ax
push dx
push es
mov  dx, Pal0
cmp  al, 1
jne  NotPal1
mov  dx, Pal1
NotPal1:
cmp  al, 2
jne  NotPal2
mov  dx, Pal2
NotPal2:
cmp  al, 3
jne  NotPal3
mov  dx, Pal3
NotPal3:
cmp  al, 4
jne  NotPal4
mov  dx, Pal4
NotPal4:
cmp  al, 5
jne  NotPal5
mov  dx, Pal5
NotPal5:
push ds
pop  es
mov  ah, 0x10
mov  al, 2
int  0x10
pop  es
pop  dx
pop  ax
iret
Pal0     db 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7
Pal1     db 0,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,7
Pal2     db 8,15,14,13,14,12,11,10,9,8,7,6,5,4,3,2,7
Pal3     db 0,1,64,3,4,5,6,7,8,9,10,11,15,16,12,13,7
Pal4     db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,7
Pal5     db 0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,7
;======================================================================
Mega018:
mov  byte [cs:cont], al
iret
;======================================================================
Mega019:
cmp  al, 0
jne  OkNot0
mov  al, byte [cs:version]
jmp  OkOk
OkNot0:
mov  byte [cs:version], al
OkOk:
iret
;======================================================================
Mega01A:
push ax
push dx
push ds
push es

mov  ax, cs
mov  ds, ax
mov  ah, 0x40
mov  dx, 0x0100
int  0x21

pop  es
pop  ds
pop  dx
pop  ax
iret
;======================================================================
Mega01B:
mov  byte [cs:think], al
iret
;======================================================================
Mega01C:
cmp  al, 0
jne  OkNot0Z
mov  al, byte [cs:country]
jmp  OkOkZ
OkNot0Z:
mov  byte [cs:country], al
OkOkZ:
iret
;======================================================================
Mega01D:
push ds
mov  ax, cs
mov  ds, ax
call BigAscii
pop  ds
iret
;======================================================================
Mega01E:
mov  byte [cs:DatBak], al
push ax
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
push gs
push fs
push ss
push sp
push cs
pop  es
cmp  byte [cs:DatBak], 1
jne  NotStartHexZ
mov  di, SimpleStart
jmp  IsWorking
NotStartHexZ:
cmp  byte [cs:DatBak], 2
jne  NotEndHexZ
mov  di, SimpleEnd
jmp  IsWorking
NotEndHexZ:
cmp  byte [cs:DatBak], 3
jne  NotMidHexZ
mov  di, SimpleMid
jmp  IsWorking
IsWorking:
mov  cx, 128
CopyMemoryZ:
lodsb
cmp  al, '/'
je   DoneItAll
stosb
loop CopyMemoryZ
DoneItAll:
NotMidHexZ:
pop  sp
pop  ss
pop  fs
pop  gs
pop  es
pop  ds
pop  bp
pop  di
pop  si
pop  dx
pop  cx
pop  bx
pop  ax
iret
DatBak db 0
;======================================================================
Mega01F:
cmp  al, 0
je   GetSw
cmp  byte [cs:Toggle+BX], 0
je   SetSwTo1
cmp  byte [cs:Toggle+BX], 1
je   SetSwTo0
mov  byte [cs:Toggle+BX], 0
jmp  GetSw
SetSwTo1:
mov  byte [cs:Toggle+BX], 1
jmp  GetSw
SetSwTo0:
mov  byte [cs:Toggle+BX], 0
jmp  GetSw
GetSw:
mov  al, byte [cs:Toggle+BX]
iret
;======================================================================
Mega020:
push ax
push es
mov  ax, 0x5000
mov  es, ax
mov  byte [es:00], 'A'
mov  byte [es:01], 'A'
mov  byte [es:02], 'A'
mov  byte [es:03], 'A'
mov  byte [es:04], 'A'
mov  byte [es:05], 'A'
mov  byte [es:06], 'A'
mov  byte [es:07], 'A'
mov  byte [es:08], 'A'
mov  byte [es:09], 'A'
mov  byte [es:10], 'A'
pop  es
pop  ax
mov  byte [cs:whip], al
iret
;======================================================================
Mega021:
push ax
push bx
push cx
push dx
push si
push di
push ds
push es
push di
mov  ax, 0x9000
mov  es, ax
mov  ah, 2
mov  dx, 0
int  0x18
pop  si
mov  ax, 0x9000
mov  es, ax
mov  ah, 1
mov  dx, 0
int  0x18
pop  es
pop  ds
pop  di
pop  si
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
Mega022:
mov  byte [cs:aSprite], al
iret
;======================================================================
Mega023:
push ax
push bx
push es
cli
xor  bx, bx
mov  es, bx
mov  bl, 4
mul  bl
mov  bx, ax
mov  word [es:bx], Kill
add  bx, 2
mov  word [es:bx], cs
sti
pop  es
pop  bx
pop  ax
iret
;======================================================================
Mega024:
mov  byte [cs:vortex], al
iret
;======================================================================
Mega025:
push ax
push bx
push es
cli
xor  bx, bx
mov  es, bx
mov  bl, 4
mul  bl
mov  bx, ax
mov  word [es:bx], TestInt
add  bx, 2
mov  word [es:bx], cs
sti
pop  es
pop  bx
pop  ax
iret
;======================================================================
Mega026:
mov  byte [cs:colors], al
iret
;======================================================================
Mega027:
push ax
push si
push di
WriteHex:
call ScnHex
stosb
lodsb
cmp  al, 0
je   Bud
jmp  WriteHex
Bud:
pop  di
pop  si
pop  ax
iret
;======================================================================
Mega028:
push ax
push dx
mov  ax, es
mov  ds, ax
mov  dx, di
mov  al, byte [cs:UseInt]
mov  byte [cs:Patch+1], al
call SetV
Patch:
db   0xCD, 0x00
pop  dx
pop  ax
iret
;======================================================================
Mega029:
pop dx
pop ds
push ds
push dx
iret
;======================================================================
Mega02A:
push bx
push cx
push dx
push si
push di
push ds
push es
mov  bx, si
mov  DI, ImageName
LoopDSA:
mov  al, byte [ds:bx]
mov  byte [cs:di], al
cmp  al, 0
je   DoneDSA
inc  bx
inc  di
jmp  LoopDSA
DoneDSA:
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  al, byte [cs:Silent]
mov  byte [cs:SilentBackup], al
mov  byte [cs:Silent], 1
mov  DI, ImageName
call Convert
call LoadRootDir
mov  SI, ImageName
call Exist
push ax
mov  al, byte [cs:SilentBackup]
mov  byte [cs:Silent], al
pop  ax
pop  es
pop  ds
pop  di
pop  si
pop  dx
pop  cx
pop  bx
iret
;======================================================================
SilentBackup db 0x00
;======================================================================
Mega02B:
push ds
push cs
pop  ds
call Spiral
pop  ds
iret
;======================================================================
Mega02C:
mov  byte [cs:toggle], al
iret
;======================================================================
Mega02D:
pop  ax
pop  ax
push cs
pop  ds
mov  si, OldVect
call RestoreVect
int  19h
mov  ah, 4ch
int  21h
;======================================================================
PrintScreen:
push ax
push ds
push si
push cs
pop  ds
mov  si, PscMsg
call Show
mov  al, 20h
out  20h, al
pop  si
pop  ds
pop  ax
iret

CtrlC:
push ax
push ds
push si
push cs
pop  ds
mov  si, BrkMsg
call Show
mov  al, 20h
out  20h, al
pop  si
pop  ds
pop  ax
iret
;======================================================================
BrkMsg db 13,10,"CTRL+BREAK",13,10,0
PscMsg db 13,10,"PRINT-SCREEN",13,10,0
;======================================================================
msdos:
int  0xA1
cmp  ah, 0x09
je   msdos9
cmp  ah, 0x0a
je   msdosa
cmp  ah, 0x0c
je   msdosc
cmp  ah, 0x3f
je   msdos3f
cmp  ah, 0x40
je   msdos40
cmp  ah, 0x4c
je   msdos4c
iret
;======================================================================
msdos9:  jmp msdos90
msdosa:  jmp msdosa0
msdosc:  jmp msdosc0
msdos3f: jmp msdos3f0
msdos40: jmp msdos400
msdos4c: jmp msdos4c0
;======================================================================
msdos90:
push sp
push bp
push ds
push es
push fs
pusha
mov  SI, DX
call Show
popa
pop  fs
pop  es
pop  ds
pop  bp
pop  sp
iret
;======================================================================
msdosa0:
push  sp
push  bp
push  ds
push  es
push  fs
pusha
mov   SI, DX
add   SI, 1
mov   byte [SI], 64
add   SI, 1
call  cinputbs
popa
pop  fs
pop  es
pop  ds
pop  bp
pop  sp
iret
;==================================================================
msdosc0:
push sp
push bp
push ds
push es
push fs
pusha
mov  SI, DX
mov  byte [SI], 0
mov  byte [SI+1], 0
mov  byte [SI+2], 0
mov  ah, al
int  0x21
popa
pop  fs
pop  es
pop  ds
pop  bp
pop  sp
iret
;======================================================================
msdos3f0:
pusha
push ds
push es


push ds
pop  es
push cs
pop  ds
ReGetFnamer:
mov  si, filer
call Show
mov  si, rw_fname
call cinputbs

mov  si, rw_fname
cmp  byte [si], '#'
jne  NotReadMemory
inc  si
call ScnHex
push ax
lodsb
call ScnHex
push ax
mov  ax, es
mov  ds, ax
mov  si, dx
pop  di
pop  es
mov  cx, 64000
ReadMemoryLoop:
mov  al, byte [es:di]
mov  byte [ds:si], al
inc  si
inc  di
cmp  si, 0xffff
je   MemoryRead
loop ReadMemoryLoop
jmp MemoryWritten
NotReadMemory:

mov  si, rw_fname
mov  ah,0x2a
int  0x18
cmp  al, 1
je   FileDoesExistr
mov  si, FileNotFound
call Show
mov  ah, 0
int  0x16
cmp  al, 'a'
je   Abortedr
call PrintCrLf
jmp  ReGetFnamer
FileDoesExistr:
mov  ah, 2
int  0x18

MemoryRead:
Abortedr:
pop  es
pop  ds
popa
iret
;======================================================================
msdos400:
pusha
push ds
push es

push ds
pop  es

push cs
pop  ds
ReGetFnamew:
mov  si, filew
call Show
mov  si, rw_fname
call cinputbs

mov  si, rw_fname
cmp  byte [si], '#'
jne  NotWriteMemory
inc  si
call ScnHex
push ax
lodsb
call ScnHex
push ax
mov  ax, es
mov  ds, ax
mov  si, dx
pop  di
pop  es
mov  cx, 64000
WriteMemoryLoop:
lodsb
stosb
cmp  di, 0xffff
je   MemoryWritten
loop WriteMemoryLoop
jmp MemoryWritten
NotWriteMemory:

mov  si, rw_fname
mov  ah,0x2a
int  0x18
cmp  al, 1
je   FileDoesExistw
mov  si, FileNotFound
call Show
mov  ah, 0
int  0x16
cmp  al, 'a'
je   Abortedw
call PrintCrLf
jmp  ReGetFnamew
FileDoesExistw:
mov  si, rw_fname
mov  ah, 1
int  0x18

MemoryWritten:
Abortedw:
pop  es
pop  ds
popa
iret
;======================================================================
msdos4c0:
mov  ax, cs
mov  ds, ax
mov  es, ax
call SimpleEnd
cmp  byte [cs:Pause1], 1
jne  NoPauseOnExit
mov  si, ipause
call Show
mov  ah, 0x00
int  0x16
NoPauseOnExit:
jmp  BeginOS
;======================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  ascii2index
;      - converters ascii letter on stack to an index
;          Note: index is left on the stack after returning!
;
;       bp        <- bp
;      ret add
;    ascii letter <- bp + 4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ascii2index:
          push bp                 ; set up bp for args
          mov bp, sp
          push ax                 ; save ax

          mov ax, [bp + 4]        ; get ascii value in al
          mov ah, 0               ; make sure ah is zero

          cmp al, 32              ; if (space)
          jne doQuestion
          mov al, 0               ;   index = 0;
          jmp finish
doQuestion:
          cmp al, 63              ; if ('?')
          jne doPeriod
          mov al, 53              ;   index = 53;
          jmp finish
doPeriod:
          cmp al, 46              ; if ('.')
          jne doLowerCase
          mov al, 54              ;   index = 54;
          jmp finish
doLowerCase:
          cmp al, 97              ; if (> 96)       // must be a lowercase letter
          jl  doCaps
          sub al, 70              ;   index = ascii - 70
          jmp finish
doCaps:
        and al, 003FH           ; index = ascii - 64
finish:
        mov [bp + 4], ax        ; replace ascii letter on stack with index

        pop ax                  ; restore ax
        pop bp
        ret
;;;;;;;;;;;;;;;; end ascii2index ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;printString;;;;;;;;;;;;;;;;;;;;
;  printString(@string, len, x, y)
;
;      bp        <- bp
;     ret addr
;       Y        <- bp + 4
;       X                6
;    @string             8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
printString:
          push bp                 ; set up bp for args
          mov  bp, sp
          pusha                   ; save all regs

          mov  bx, [bp + 6]       ; get X
          mov  si, [bp + 8]       ; get address of string
        mov  dl, [si]           ; get letter
whilex:  
cmp  dl, 0              ; while (letter <> 0)
        je   aallover            ; {
        push dx
        call ascii2index        ;    converter letter to index
                                ;       and leave index on stack
        push bx                 ;    push X
        push word [bp + 4]      ;    push Y
        call printLetter        ;    printLetter(letterindex, x, y)
        add  bx, 10             ;    X = X + 8 + 2  (leave 2 pixel space between letters
        inc  si                 ;    get address of next letter
        mov  dl, [si]           ;    get letter ascii value
        jmp whilex               ; }
aallover:
          popa                      ; restore regs
          pop bp                  ;   and bp
  ret 6                         ; clear args from stack
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; printLetter(letterindex, x, y)
;;   - prints letter with given index at screen position X,Y
;;
;       BP      <- BP
;    RETAddr
;       Y       <- BP + 4
;       X       <- BP + 6
; LETTER INDEX  <- BP + 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
printLetter:
   push bp              ; save bp contents on stack before using it
   mov bp, sp           ; copy sp to bp, bp is now 'base pointer' for args
   pusha                ; save all registers


   mov ax, [bp + 8]     ; get letter index
   mov dx, 0            ; (clear DX for multiplication)
   mov bx, 100          ; size of letter sprite
   imul bx              ; dx:ax = letter * 100
   mov cx, letter       ; get addr of letter array
   add cx, ax           ; @digitSprite = @letter + letter * 100
   push word cx
   push word [bp + 6]
   push word [bp + 4]
   call drawSprite      ; drawSprite(@digitSprite, x, y)

   popa                 ; restore all registers
   pop bp               ; restore bp to original value
   ret  6               ; return and clear stack of its 3 arguments (2 bytes each)
;;;;;;;;;;;; end printLetter  ;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;   getKey
;       - wait for user to press a key
;       - save ascii value of key pressed in ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
getKey:

waitkey:
   mov ah, 11h                   ;   if (key pressed)
   int 16h                       ;   {
   je waitkey

   xor    ax,ax
   int     16h                     ;       get keypress in al
   ret                           ;       return with keypress in ax
;;;;;;;;;;;;;; end getKey ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;; getString ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  getString
;    - get input string from user
;    -  store string at @str
;    - echo input at cursor position
;
;       BP      <- BP
;    RETAddr
;       Y       <- BP + 4
;       X       <- BP + 6
;      @str     <- BP + 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
getString:
   push bp              ; set up bp as args pointer
   mov bp, sp
   pusha                ; save all regs

   mov bx, [bp + 6]    ; get cursor X position where letters will be echoed
   mov si, [bp + 8]     ; get address where string is to be stored
   call getKey          ; ax = getKey()

whileA10:
   cmp al, 13           ; while(letter <> cr)
   je endwhileA10

   cmp al, 'h'          ;   if (letter == backspace)
   jne contin           ;   {
                        ;      if (s1 > string address)  // at least one letter entered

                        ;        back up a letter in input line
                        ;        back up a letter in string we're saving
                        ;        overwrite most recent letter with a blank


   call printLetter     ;   }
                        ;   else
                        ;   {
 contin:
   mov [si], al         ;     store letter at address pointer
                        ;     echo letter on screen ;;;;;;;;;;;;;
   push ax              ;       - push letter on to stack
   call ascii2index     ;       - converter stack entry
   push word bx         ;       - push X
   push word [bp + 4]   ;       - push Y
   call printLetter     ;       - print the letter

   inc si               ;     point to next letter
   add bx, 10           ;     advance print position pointer
doagain:                ;   }
   call getKey          ;   get next letter
   jmp whileA10
endwhileA10:            ; }

   mov byte [si],0      ; add string terminator

   popa                 ; restore regs
   pop bp               ; restore bp
   ret  2               ; clear stack
;;;;;;;;;;;; end getString  ;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;buildNumber ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  buildNumber(digit, total)
;     - builds a number from single digits
;     - total = total * 10 + digit
;
;       BP      <- BP
;    RETAddr
;      total    <- BP + 4
;      digit    <- BP + 6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
buildNumber:
   push bp              ; set up bp as args pointer
   mov bp, sp
   pusha                ; save all regs

   mov ax, [bp +4]      ; get total
   mov dx, 0
   mov bx, 10
   mul bx               ; total = total * 10

   add ax, [bp + 6]     ; total = total + digit

   mov [bp +6], ax      ; return total on stack
   popa                 ; restore regs
   pop bp               ; restore bp
   ret  2               ; leave new total on stack at BP + 6, clear rest
;;;;;;;;;;;; end buildNumber  ;;;;;;;;;;;;;;;;;;



;;;;;;;; getNumber ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  getNumber
;    - get input number from user
;    - echo input at cursor position
;    - store number at @num
;
;       BP      <- BP
;    RETAddr
;       Y       <- BP + 4
;       X       <- BP + 6
;      @num     <- BP + 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
getNumber:
   push bp              ; set up bp as args pointer
   mov bp, sp
   pusha                ; save all regs

   mov bx, 0            ; total = 0
   call getKey          ; get keypress
   mov dx, [bp + 6]     ; get X cursor position for echoing

whileB10:
   cmp al, 13           ; while(key <> cr)
   je endwhileB10
   mov ah, 0
   sub al, 48           ;   converter key to digit

   push word ax         ;   digit
   push word dx         ;   current X
   push word [bp + 4]   ;   Y
   call printDigit      ;   printDigit( digit, X, Y)

   push word ax
   push word bx
   call buildNumber     ;   buildNumber(digit, total)
   pop  bx              ;   total = total * 10 + digit

   add  dx, 16          ;   advance cursor X position to print next digit
   call getKey          ;   get next keypress
   jmp  whileB10
endwhileB10:            ; }

   mov si, [bp + 8]     ; get address where number is to be stored
   mov [si], bx         ; store number at requested address

   popa                 ; restore regs
   pop bp               ; restore bp
   ret  2               ; clear stack
;;;;;;;;;;;; end getNumber  ;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; printNumber(Num, x, y)
;;   - prints Num at screen position X,Y
;;
;       BP      <- BP
;    RETAddr
;       Y       <- BP + 4
;       X       <- BP + 6
;      NUM      <- BP + 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
printNumber:
   push bp              ; save bp contents on stack before using it
   mov bp, sp           ; copy sp to bp, bp is now 'base pointer' for args
   pusha                ; save all registers

   ; Extract digits and put them on the Stack

   mov cx, 0            ; digitcount = 0
   mov ax, [bp + 8]     ; ax = number
do:                     ; Do
   mov  dx, 0           ;    (clear dx)
   mov  bx, 10
   idiv bx              ;    dx:ax = dx:ax / 10     ax = quot, dx = remainder
   push dx              ;    save remainder on stack
   inc cx               ;    inc digitcount
   cmp ax, 0            ; while (number <> 0 )
   jne do

   ; pop each digit off the stack and print it

   mov bx, [bp +6]      ; get x
loop2:                  ; while (digitcount > 0)
                        ;    (digit is already on top of stack, so don't push it
   push bx              ;    push x
   push word [bp + 4]   ;    push y
   call printDigit      ;    printDigit on top of stack at X,Y
   add bx, 16           ;    x = x + spritewidth
   loop loop2
endo:
   popa                 ; restore all registers
   pop bp               ; restore bp to original value
   ret  6               ; return and clear stack of its 3 arguments (2 bytes each)
;;;;;;;;;;;; end printNumber  ;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; printDigit(digit, x, y)
;;   - prints digit at screen position X,Y
;;
;       BP      <- BP
;    RETAddr
;       Y       <- BP + 4
;       X       <- BP + 6
;      DIGIT    <- BP + 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
printDigit:
   push bp              ; save bp contents on stack before using it
   mov bp, sp           ; copy sp to bp, bp is now 'base pointer' for args
   pusha                ; save all registers


   mov ax, [bp + 8]     ; get digit
   mov dx, 0            ; (clear DX for multiplication)
   mov bx, 260          ; size of digit sprite
   imul bx              ; dx:ax = digit * 260
   mov cx, digit        ; get addr of digit array
   add cx, ax           ; @digitSprite = @digit + digit * 260
   push word cx
   push word [bp + 6]
   push word [bp + 4]
   call drawSprite      ; drawSprite(@digitSprite, x, y)

   popa                 ; restore all registers
   pop bp               ; restore bp to original value
   ret  6               ; return and clear stack of its 3 arguments (2 bytes each)
;;;;;;;;;;;; end printDigit  ;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; drawSprite(@sprite, X, Y)
;   - draws selected sprite at selected X and Y position
;
;      reg      <- SP
;      reg
;      reg        (saved registers from pusha)
;      reg
;       BP      <- BP
;    RETAddr
;       Y       <- BP + 4
;       X       <- BP + 6
;    @sprite    <- BP + 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
drawSprite:
   push bp              ; save bp contents on stack before using it
   mov bp, sp           ; copy sp to bp, bp is now 'base pointer' for args
   pusha                ; save all registers

   mov    ax,0a000h       ; get address of GRAPHICS array
   mov    es,ax
                        ; Compute position of first pixel
   mov ax, [bp + 4]     ; get Y
   mov bx, [bp + 4]     ; get copy of Y
   shl    ax,8                ;    multiply y by 256
   shl    bx,6                ;    multiply y by 64
   add    ax,bx               ;    add y * 256 + y * 64
   mov  bx, [bp + 6]    ; get X coordinate
   add    ax,bx               ; add x to y*320
   mov    di,ax           ; di = y*320 +x

   mov si, [bp + 8]     ; si = address of SPRITE array
   mov ax, [si]         ; ax = number of rows
   add si, 2
   mov bx, [si]         ; bx = number of pixel bytes in a row
   add si, 2
whileF10:
   cmp ax, 0            ; while (ax > 0) {                // while there are more rows
   je endwhileF10
   mov cx, bx           ;   cx = bx                       // number of pixels in row
   shr cx, 2            ;   cx = cx/4                     // number of words in a row
looperF20:              ;   while (cx > 0) {              // do all pixels in the row
   mov edx,  [si]
   mov [es:di], edx     ;      GRAPHICS[di] = SPRITE[si]  // move pixel to graphics display
   add si, 4            ;      si = si + 4                // point to next group of 4 pixels
   add di, 4            ;      di = di + 4                // advance graphics pointer 4 bytes
   loop looperF20       ;   }                             // dec cx, continue loop

   add di, 320          ;   di = di + 320 - width         // reset graphics ptr to start of next line
   sub di, bx
   dec ax               ;   dec ax                        // dec number of rows left
   jmp whileF10
endwhileF10:             ; }

   popa                 ; restore all registers
   pop bp               ; restore bp to original value
   ret  6               ; return and clear stack of its 3 arguments (2 bytes each)
;;;;;;;;;;;; end drawSprite ;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; eraseSprite(@sprite, X, Y)
;   - erases selected sprite at X and Y position
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eraseSprite:
   push bp              ; save bp contents on stack
   mov bp, sp           ; copy sp to bp
   pusha                ; save all registers

   mov    ax,0a000h       ; get address of GRAPHICS array
   mov    es,ax
                        ; Compute position of first pixel
   mov ax, [bp + 4]     ; get Y
   mov bx, [bp + 4]     ; get copy of Y
   shl    ax,8                ;    multiply y by 256
   shl    bx,6                ;    multiply y by 64
   add    ax,bx               ;    add y * 256 + y * 64
   mov  bx, [bp + 6]    ; get X coordinate
   add    ax,bx               ; add x to y*320
   mov    di,ax           ; di = y*320 +x

   mov si, [bp + 8]     ; si = address of SPRITE array
   mov ax, [si]         ; ax = number of rows
   add si, 2
   mov bx, [si]         ; bx = number of pixel bytes in a row
   add si, 2
whileG10:
   cmp ax, 0            ; while (ax > 0) {                // while there are more rows
   je endwhileG10
   mov cx, bx           ;   cx = bx                       // get number of pixels in row
   shr cx, 2            ;   cx = cx/4                     // converter to num of words in the row
looperG20:              ;   while (cx > 0) {              // do all words in the row
   mov edx, 0
   mov  [es:di], edx    ;     GRAPHICS[di] = 0            // move pixel to graphics display
   add si, 4            ;     si = si + 4                 // point to next 4 pixels
   add di, 4            ;     di = di + 4                 // advance graphics ptr 4 bytes
   loop looperG20       ;   }                             // dec cx, continue loop

   add di, 320          ;   di = di + 320 - width         // reset graphics ptr to start of next line
   sub di, bx
   dec ax               ;   dec ax                        // dec number of rows left
   jmp whileG10
endwhileG10:            ; }

   popa                 ; restore all registers
   pop bp               ; restore bp
 ret  6                 ; return and clear stack
;;;;;;;;;;;; end eraseSprite ;;;;;;;;;;;;;;;;;;;;;;
cursorX dw 10                   ; cursor position
cursorY dw 10

SetVectors:
push ax
push es
cli
mov  ax, 0
mov  es, ax
mov  ax, word [cs:old13s]
mov  word [es: 0x13*4+2], ax
mov  ax, word [cs:old13o]
mov  word [es: 0x13*4], ax
mov  ax, word [cs:old27s]
mov  word [es: 0x27*4+2], ax
mov  ax, word [cs:old27o]
mov  word [es: 0x27*4], ax
mov  word [es: 0x01*4+2], cs
mov  word [es: 0x01*4], TheMan
;mov  word [es: 0x05*4+2], cs
;mov  word [es: 0x05*4], PrintScreen
mov  word [es: 0x06*4+2], cs
mov  word [es: 0x06*4], TheEscape
mov  word [es: 0x09*4+2], cs
mov  word [es: 0x09*4], Keys
mov  word [es: 0x18*4+2], cs
mov  word [es: 0x18*4], mega_x
mov  word [es: 0x1c*4+2], cs
mov  word [es: 0x1c*4], Handle1c
mov  word [es: 0x21*4+2], cs
mov  word [es: 0x21*4], msdos
mov  word [es: 0x22*4+2], cs
mov  word [es: 0x22*4], cfp_int
mov  word [es: 0x52*4+2], cs
mov  word [es: 0x52*4], Words
mov  word [es: 0x53*4+2], cs
mov  word [es: 0x53*4], Warp
mov  word [es: 0x54*4+2], cs
mov  word [es: 0x54*4], Anim
sti
pop  es
pop  ax
ret
;======================================================================
cfp_int:
cmp  ah, 00
je   I22F0
cmp  ah, 01
je   I22F1
cmp  ah, 02
je   I22F2
cmp  ah, 03
je   I22F3
cmp  ah, 04
je   I22F4
cmp  ah, 05
je   I22F5
cmp  ah, 06
je   I22F6
cmp  ah, 0xfe
je   I22FFE
I22F0: jmp int22f0
I22F1: jmp int22f1
I22F2: jmp int22f2
I22F3: jmp int22f3
I22F4: jmp int22f4
I22F5: jmp int22f5
I22F6: jmp int22f6
I22FFE: jmp int22ffe

int22f0:
finit
faddp
finit
fstcw   [ControlWord] ;load the control word
and     [ControlWord],1111110011111111b ;mask out precision control
or      [ControlWord],0000001100000000b ;set to 64 bits
fldcw   [ControlWord] ;save the control word
;round near
fstcw   [ControlWord] ;load the control word
and     [ControlWord],1001111111111b  ;mask and change the rounfding field
fldcw   [ControlWord]  ;save the control word
iret

int22f1:
;si2st0
push  di
push  bx
push  dx
mov  di, 0
mov  bx, '@'
push bx
mov  bx, FP
mov  cx, 25
mov  al, 0
XoZo:
mov  [bx], al
inc  bx
loop XoZo
GetNext:
mov  dl, byte [ds:si]
inc  si
cmp  dl, 0
je   Encode
cmp  dl,'.'
jne  NotDot
mov  di,1
jmp  GetNext
NotDot: ;?
cmp  di, 0
je   NotDecJ
inc  di
NotDecJ:
sub  dl, 0x30
push dx
jmp  GetNext
Encode:
ffree st5
mov  bx, FP
OnceMore:
pop  dx
cmp  dx, '@'
je   EndOfStr
mov  cl, dl
and  cl, 00001111b
pop  dx
cmp  dx, '@'
je   WriteHalfByte
shl  dx, 4
and  dl, 11110000b
or   cl, dl
mov  [bx], cl
inc  bx
jmp  OnceMore
WriteHalfByte:
mov  [bx], cl
EndOfStr:
mov  BX, FP
FBLD [bx]
cmp  di, 1
jle  DoneGStr
fld1
RaisePower:
fld [X]                     ; ST0 = X
fmulp
dec  di
cmp  di, 1
jne  RaisePower
;round up
fstcw   [ControlWord] ;load the control word
and     [ControlWord],1001111111111b
or      [ControlWord],0100000000000b   ;mask and change the rounfding field
fldcw   [ControlWord] ;save the control word
fdivp
;fld [Y]                     ; ST0 = X
;fsubp
;round near
fstcw   [ControlWord] ;load the control word
and     [ControlWord],1001111111111b  ;mask and change the rounfding field
fldcw   [ControlWord]  ;save the control word
DoneGStr:
pop  di
pop  dx
pop  bx
iret

int22f2:
;ST02di
;pst0
pusha
mov  ebp, 0   ;0=- 1=+
mov  ax, 0
ftst
fstsw ax
sahf
jnb  Positive
mov  ebp, 1
fabs
Positive:
cmp  ebp, 0
je NotNeg
mov  byte [es:di], '-'
add  di, 1
mov  byte [es:di], 0
NotNeg:
;round down
fstcw   [ControlWord] ;get the control word
and     [ControlWord],1001111111111b
or      [ControlWord],0010000000000b ;mask and set rounding field
fldcw   [ControlWord] ;load the new control word
fist [FR1]
fild [FR1]
mov  BX, BCD
fbstp [bx]
mov dl, 0 ; blank leading zeros
mov dh, 9 ; amount of numbers (9)
mov  ah, 0xfe
int  0x22
mov  byte [es:di], '.'
add  di, 1
mov  byte [es:di], 0
fild [FR1]
fsubr ST0,ST1
fild [FPnum]
fmulp ST1, ST0
mov  bx, BCD
fbstp [bx]
mov  dl, 3    ; leading zeros
mov  dh, 6/2  ; # of decimals
mov  ah, 0xfe
int  0x22
RestoreSign:
cmp  ebp, 0
je   IsPositive
fchs
IsPositive:
;round near
fstcw   [ControlWord] ;load the control word
and     [ControlWord],1001111111111b  ;mask and change the rounfding field
fldcw   [ControlWord]  ;save the control word
popa
iret

int22ffe:
;print BCD
pbcd:
push ax
push bx
push cx
push dx
mov  ax, 0
mov  bx, BCD
add  bx, 9
mov  al, dh
GetByte:
dec  bx
dec  ax
cmp  ax, 65535
je   DoneAllBytes
mov  cl, [bx]
cmp  dl, 0
jne  PrintFullByte
push cx
and  cl, 11110000b
cmp  cl, 0
je   TestLowNib
pop  cx
mov  dl, 1
jmp  PrintFullByte
TestLowNib:
pop  cx
push cx
and  cl, 00001111b
cmp  cl, 0
je  PopNext
push ax
push cx
push dx
mov  dx, 0
mov  ch, 0
and  cl, 00001111b
mov  dx, cx
add  dx, 0x30 ; ascii
mov  byte [es:di], dl
add  di, 1
mov  byte [es:di], 0
pop dx
pop cx
pop ax
pop  cx
mov  dl, 1
jmp  GetByte
PrintFullByte:
push cx
shr  cl, 4
push ax
push cx
push dx
mov  dx, 0
mov  ch, 0
and  cl, 00001111b
mov  dx, cx
add  dx, 0x30 ; ascii
mov  byte [es:di], dl
add  di, 1
mov  byte [es:di], 0
pop dx
pop cx
pop ax
pop  cx
push ax
push cx
push dx
mov  dx, 0
mov  ch, 0
and  cl, 00001111b
mov  dx, cx
add  dx, 0x30 ; ascii
mov  byte [es:di], dl
add  di, 1
mov  byte [es:di], 0
pop dx
pop cx
pop ax
cmp  ax, 0
je   DoneAllBytes
jmp  GetByte
PopNext:
Pop  CX
jmp  GetByte
DoneAllBytes:
pop  dx
pop  cx
pop  bx
pop  ax
iret

int22f3:
push ax
push bx
push cx
push dx
push bp
push ds
push es
push cs
pop  ds
mov  si, floatbuff
mov  ah, 0x0e   ;input
int  0x18
mov  ah, 0x01
int  0x22
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret

int22f4:
push ax
push bx
push cx
push dx
push bp
push ds
push es
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  di, floatbuff2
mov  ah, 0x02
int  0x22
mov  si, floatbuff2
mov  ah, 0x03
mov  bl, 0x0f
int  0x18
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret

int22f5:
push ax
push bx
push cx
push dx
push bp
push ds
push es
cmp  al, '+'
jne  fNotadd
faddp
fNotadd:
cmp  al, '-'
jne  fNotsub
fsubp
fNotsub:
cmp  al, '*'
jne  fNotmul
fmulp
fNotmul:
cmp  al, '/'
jne  fNotdiv
fdivp
fNotdiv:
cmp  al, 'q'
jne  fNotsq
fsqrt
fNotsq:
cmp  al, 'p'
jne  fNotpi
fldpi
fNotpi:
cmp  al, 's'
jne  fNotsin
fsin
fNotsin:
cmp  al, 'c'
jne  fNotcos
fcos
fNotcos:
cmp  al, 'h'
jne  fNotchs
fchs
fNotchs:
cmp  al, 'a'
jne  fNotabs
fabs
fNotabs:
pop  es
pop  ds
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
iret
;======================================================================
int22f6:
fcomi st1
je   EqSS
jnb  GrSS
jb   LeSS
jmp  DonS
EqSS:
mov  al, '='
jmp  DonS
GrSS:
mov  al, '<'
jmp  DonS
LeSS:
mov  al, '>'
jmp  DonS
DonS:
iret
;======================================================================
TheMan:
sti
pop  word [cs:TheIP]
pop  word [cs:TheCS]
push word [cs:TheCS]
push word [cs:TheIP]
push bp
mov  bp, sp
push ax
push bx
push cx
push dx
push bp
push ss
push sp
push fs
push gs
push ds
push es
pusha
pushf

mov  ax, cs
mov  ds, ax
mov  es, ax

turn_on:
cmp     [cs:int1_flag], 1  ; turn single-step on?
jne     turn_off; guess not..
or      WORD [bp + 6], 0100h    ; this is an ISR, flags are on stack
mov     [cs:int1_flag], 3
jmp     Face
turn_off:
cmp     [cs:int1_flag], 0  ; turn single-step off?
jne     routine       ; guess not..
and     WORD [bp + 6], 0feffh   ; this is an ISR, flags are on stack
jmp     Face
;---------------------------------------------
routine:
mov  ax, cs
mov  ds, ax
mov  es, ax
mov  bx, word [cs:TheIP]
mov  ax, word [cs:TheCS]
mov  ds, ax
cmp  byte [ds:bx], 0x00
jne  NonCust
cmp  byte [ds:bx+1], 0x00
jne  NotCustom0
cmp  byte [ds:bx+2], 0x00
jne  NotCustom0
mov  bx, 0x0001
mov  al, '>'
call putc
push cs
push cs
pop  ds
pop  es
mov  si, TheBuffer
call cinputbs
mov  si, TheBuffer
int  0x0A
jmp  CustomOver
NotCustom0:
cmp  byte [ds:bx+1], 0x01
jne  NotCustom1
push ax
mov  ah, 0
mov  al, byte [ds:bx+2]
int  0x10
pop  ax
jmp  CustomOver
NotCustom1:
cmp  byte [ds:bx+1], 0x02
jne  NotCustom2
push ax
push bx
mov  ah, 0x0e
mov  al, byte [ds:bx+2]
mov  bx, 0x0007
int  0x10
pop  bx
pop  ax
jmp  CustomOver
NotCustom2:
NonCust:
cmp  byte [ds:bx], 0xCD
jne  NotMask
cmp  byte [ds:bx+1], 0x16
je   NotMask
cmp  byte [ds:bx+1], 0x13
je   NotMask

;mov  ah, 0x09
;mov  dx, msg
;int  0x21
push ax
push bx
push cx
push dx
push bx
mov  ah, 0x03
mov  bh, 0
int  0x10
push dx
mov  dh, 0
mov  dl, 0
mov  ah, 0x02
mov  bh, 0
int  0x10
mov  bx, 0x000b
mov  al, '['
call putc
pop  dx
pop  bx
mov  al, byte [ds:bx+1]
call ShowHex
mov  bx, 0x000b
mov  al, ']'
call putc
mov  ah, 0x02
mov  bh, 0
int  0x10
pop  dx
pop  cx
pop  bx
pop  ax
mov  al, byte [ds:bx+1]
call gvector
mov  al, 2
call svector
popf
popa
pop  es
pop  ds
pop  gs
pop  fs
pop  sp
pop  ss
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
pop  bp
sti
int 2h
;mov  [cs:int1_flag], 0
pop  word [cs:TheIP]
pop  word [cs:TheCS]
push word [cs:TheCS]
add  word [cs:TheIP], 2
push word [cs:TheIP]
iret
NotMask:
Face:
popf
popa
pop  es
pop  ds
pop  gs
pop  fs
pop  sp
pop  ss
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
pop  bp
iret
;======================================================================
TheEscape:
mov  ax, cs
mov  ds, ax
mov  si, dbg2
call Show
mov  ah, 0x4c
int  0x21
int3
;======================================================================
CustomOver:
popf
popa
pop  es
pop  ds
pop  gs
pop  fs
pop  sp
pop  ss
pop  bp
pop  dx
pop  cx
pop  bx
pop  ax
pop  bp
sti
pop  word [cs:TheIP]
pop  word [cs:TheCS]
push word [cs:TheCS]
add  word [cs:TheIP], 3
push word [cs:TheIP]
iret
;======================================================================
ShowHex:
push ax
push bx
push cx
push dx
call ConHex
mov  CX,AX
mov  al,CL
mov  bx, 0x0001
call putc
mov  al,CH
mov  bx, 0x0001
call putc
pop  dx
pop  cx
pop  bx
pop  ax
ret
;======================================================================
ConHex:
push CX
MOV  CL,10h
MOV  AH,0
DIV  CL
ADD  AL,30h
ADD  AH,30h
CMP  AL,'9'
JBE  CA4
ADD  AL,7
CA4:
CMP  AH,'9'
JBE  CA5
ADD  AH,7
CA5:
pop  CX
ret

svector:
cli
xor  bx, bx
mov  es, bx
mov  bl, 4
mul  bl
mov  bx, ax
mov  word [es:bx], dx
add  bx, 2
mov  word [es:bx], ds
push cs
pop  es
sti
ret

gvector:
cli
xor  bx, bx
mov  es, bx
mov  bl, 4
mul  bl
mov  bx, ax
mov  dx, word [es:bx]
add  bx, 2
mov  ds, word [es:bx]
push cs
pop  es
ret

ActiveNMI:
cmp  byte [cs:NmiX], 1
jne  NoNMI
sti
mov  [cs:int1_flag], 1
int  0x01
nop
jmp  UsingNMI
NoNMI:
mov  [cs:int1_flag], 0
nop
UsingNMI:
ret

strlen:
push SI
mov cx, 0
GetLen:
cmp byte [ds:si], 0
je  OverLen
cmp cx, 0xffff
je  OverLen
inc CX
inc SI
jmp GetLen
OverLen:
pop SI
ret
;======================================================================
Keys:
push ax
push bx
push cx
push dx
push si
push di
push ds
push es
push bp
pusha
pushf
mov  ax, cs
mov  ds, ax
mov  es, ax
in   al, 60h
call Chirper
;call cphex
;jmp  NotDash
cmp  al, 1
jne  NotEsc
pop  ax
int  0x27
mov  ah, 0x4c
int  0x21
NotEsc:
cmp  al, 0x58
jne  NotDash
call SimpleMid
NotDash:
popf
popa
pop  bp
pop  es
pop  ds
pop  di
pop  si
pop  dx
pop  cx
pop  bx
pop  ax
int  0x27
iret
;======================================================================
Chirper:
push ax
push bx
mov  byte [cs:scancode],al   ;store scancode.
xor  ax,ax
mov  al, byte [cs:scancode]  ;ignore caps lock key.
cmp  al,3ah
je   ByeChirp
cmp  al,54h                 ;no SysReq key
je   ByeChirp
mov  al, byte [cs:toggle]   ;test status of toggle.
cmp  al,0
je   ByeChirp               ;if program off skip sound routines.
mov  al, byte [cs:scancode] ;get scancode.
cmp  al,58h
ja   nosound                 ;turn sound off when key is released.

xor  bx,bx                  ;zero bx
add  al,al
mov  bx, word [cs:notes]
add  ax,bx                  ;ax = vector address into notes array.
mov  bx,ax
mov  al,0b6h                ;turn on sound
out  43h,al
mov  ax, word [cs:notes+bx]
out  42h,al
mov  al ,ah
out  42h,al
in   al,61h
or   al,3
out  61h,al
jmp  ByeChirp
nosound:                        ;turn off sound, key is released.
in   al,61h
and  al,252
out  61h,al
ByeChirp:
pop  bx
pop  ax
ret
;======================================================================
putc:
push ax
push bx
cmp  byte [cs:colors], 2
jne  NotVer2
mov  bl, 7
cmp  al, '['
jne  aVerCode1
mov  bl, 6
aVerCode1:
cmp  al, ']'
jne  aVerCode2
mov  bl, 6
aVerCode2:
cmp  al, '-'
jne  aVerCode3
mov  bl, 7
aVerCode3:
cmp  al, 'þ'
jne  aVerCode4
mov  bl, 15
aVerCode4:
cmp  al, 0x03
jne  aVerCode5
mov  bl, 4
aVerCode5:
NotVer2:
cmp  byte [cs:colors], 3
jne  NotVer3
mov  bl, 15
cmp  al, '['
jne  bVerCode1
mov  bl, 14
bVerCode1:
cmp  al, ']'
jne  bVerCode2
mov  bl, 14
bVerCode2:
cmp  al, '-'
jne  bVerCode3
mov  bl, 11
bVerCode3:
cmp  al, 'þ'
jne  bVerCode4
mov  bl, 12
bVerCode4:
cmp  al, 0x03
jne  bVerCode5
mov  bl, 4
bVerCode5:
NotVer3:
cmp  byte [cs:colors], 4
jne  NotVer4
mov  bl, 9
cmp  al, '['
jne  cVerCode1
mov  bl, 15
cVerCode1:
cmp  al, ']'
jne  cVerCode2
mov  bl, 15
cVerCode2:
cmp  al, '-'
jne  cVerCode3
mov  bl, 14
cVerCode3:
cmp  al, 'þ'
jne  cVerCode4
mov  bl, 11
cVerCode4:
cmp  al, 0x03
jne  cVerCode5
mov  bl, 4
cVerCode5:
NotVer4:
mov  ah, 0x0e
mov  bh, 0
int  0x10
pop  bx
pop  ax
ret
;======================================================================
Handle1c:
int  0x54
int  0x55
int  0x56
int  0x57
push cx
mov  ch, byte [cs:vortex]
mov  cl, byte [cs:vortex + 1]
OverKill:
push ds
push cs
pop  ds
call SetVectors
pop  ds
;----------------------------
int  0x53
int  0x58
int  0x59
int  0x80
int  0x81
int  0x82
int  0x83
int  0x84
int  0x85
int  0x86
int  0x87
int  0x88
int  0x89
int  0x8A
int  0x8B
int  0x8C
int  0x8D
int  0x8E
int  0x8F
;----------------------------
loop OverKill
pop  cx
iret
;======================================================================
Warp:
cmp  byte [cs:whip], 1
jne  Munch
push ax
push es
mov  ax, 0x5000
mov  es, ax
inc  byte [es:00]
mov  al, 'Z'
inc  al
cmp  byte [es:00], al
jne  NoIncA1
mov  byte [es:00], 'A'
inc  byte [es:01]
NoIncA1:
cmp  byte [es:01], al
jne  NoIncA2
mov  byte [es:01], 'A'
inc  byte [es:02]
NoIncA2:
cmp  byte [es:02], al
jne  NoIncA3
mov  byte [es:02], 'A'
inc  byte [es:03]
NoIncA3:
cmp  byte [es:03], al
jne  NoIncA4
mov  byte [es:03], 'A'
inc  byte [es:04]
NoIncA4:
cmp  byte [es:04], al
jne  NoIncA5
mov  byte [es:04], 'A'
inc  byte [es:05]
NoIncA5:
cmp  byte [es:05], al
jne  NoIncA6
mov  byte [es:05], 'A'
inc  byte [es:06]
NoIncA6:
cmp  byte [es:06], al
jne  NoIncA7
mov  byte [es:06], 'A'
inc  byte [es:07]
NoIncA7:
cmp  byte [es:07], al
jne  NoIncA8
mov  byte [es:07], 'A'
inc  byte [es:08]
NoIncA8:
cmp  byte [es:08], al
jne  NoIncA9
mov  byte [es:08], 'A'
inc  byte [es:09]
NoIncA9:
cmp  byte [es:09], al
jne  NoIncA10
mov  byte [es:09], 'A'
inc  byte [es:10]
NoIncA10:
cmp  byte [es:10], al
jne  NoIncA11
mov  byte [es:10], 'A'
NoIncA11:
int  0x52
pop  es
pop  ax
Munch:
iret

Words:
iret

Anim:
cmp  byte [cs:aSprite], 1
jne  WontAnimSprite
push ax
push cx
push dx
push ds
push bp
push ds
;===============================
mov  ax, cs
mov  ds, ax
;===============================
inc  byte [cs:Cnt0]
mov  al, byte [cs:Cnt0]
cmp  al, 8
jne  NotHit
mov  byte [cs:Cnt0], 0
;===============================
mov  bh, 0
mov  bl, 0
;===============================
Loop1:
Loop2:
mov  ah, 8
int  0x18
;===============================
cmp  al, '0'
je   IsWigd0
cmp  al, '1'
je   IsWigd1
cmp  al, '2'
je   IsWigd2
cmp  al, 'A' ;heart
je   IsWig1
cmp  al, 'B'
je   IsWig2
cmp  al, 'H'
je   IsWig3
cmp  al, 'I'
je   IsWig4
cmp  al, 'J'
je   IsWig5
cmp  al, 'K'
je   IsWig6
cmp  al, 'L'
je   IsWig7
cmp  al, 'M'
je   IsWig8
cmp  al, 'N'
je   IsWig9
cmp  al, 'O'
je   IsWig10
cmp  al, 'P'
je   IsWig11
cmp  al, 'Q'
je   IsWig12
cmp  al, 'R'
je   IsWig13
cmp  al, 'S'
je   IsWig14
cmp  al, 'T'
je   IsWig15
cmp  al, 'U'
je   IsWig16
cmp  al, 'V'
je   IsWig17
cmp  al, 'W'
je   IsWig18
cmp  al, 'X'
je   IsWig19
cmp  al, 'Y'
je   IsWig20
cmp  al, '.'
je   IsWig21
cmp  al, '?'
je   IsWig22
cmp  al, 'f'
je   IsWig23
cmp  al, 'g'
je   IsWig24
cmp  al, 'h'
je   IsWig25
cmp  al, 'i'
je   IsWig26
cmp  al, 'j'
je   IsWig27
cmp  al, 'k'
je   IsWig28
cmp  al, 'l'
je   IsWig29
cmp  al, 'm'
je   IsWig30
cmp  al, 'n'
je   IsWig31
cmp  al, 'o'
je   IsWig32
cmp  al, 'p'
je   IsWig33
cmp  al, 'q'
je   IsWig34
cmp  al, 'r'
je   IsWig35
cmp  al, 's'
je   IsWig36
jmp  NotMan
;===============================
IsWigd0:
mov  dl, '1'
jmp  WigSetd
IsWigd1:
mov  dl, '2'
jmp  WigSetd
IsWigd2:
mov  dl, '0'
jmp  WigSetd
;===============================
IsWig1:
mov  al, 'B'
jmp  WigSet
IsWig2:
mov  al, 'A'
jmp  WigSet
IsWig3:
mov  al, 'I'
jmp  WigSet
IsWig4:
mov  al, 'H'
jmp  WigSet
IsWig5:
mov  al, 'K'
jmp  WigSet
IsWig6:
mov  al, 'J'
jmp  WigSet
IsWig7:
mov  al, 'M'
jmp  WigSet
IsWig8:
mov  al, 'N'
jmp  WigSet
IsWig9:
mov  al, 'L'
jmp  WigSet
IsWig10:
mov  al, 'P'
jmp  WigSet
IsWig11:
mov  al, 'O'
jmp  WigSet
IsWig12:
mov  al, 'R'
jmp  WigSet
IsWig13:
mov  al, 'Q'
jmp  WigSet
IsWig14:
mov  al, 'T'
jmp  WigSet
IsWig15:
mov  al, 'S'
jmp  WigSet
IsWig16:
mov  al, 'V'
jmp  WigSet
IsWig17:
mov  al, 'U'
jmp  WigSet
IsWig18:
mov  al, 'X'
jmp  WigSet
IsWig19:
mov  al, 'Y'
jmp  WigSet
IsWig20:
mov  al, 'W'
jmp  WigSet
IsWig21:
mov  al, '?'
jmp  WigSet
IsWig22:
mov  al, '.'
jmp  WigSet
IsWig23:
mov  al, 'g'
jmp  WigSet
IsWig24:
mov  al, 'f'
jmp  WigSet
IsWig25:
mov  al, 'i'
jmp  WigSet
IsWig26:
mov  al, 'h'
jmp  WigSet
IsWig27:
mov  al, 'k'
jmp  WigSet
IsWig28:
mov  al, 'j'
jmp  WigSet
IsWig29:
mov  al, 'm'
jmp  WigSet
IsWig30:
mov  al, 'l'
jmp  WigSet
IsWig31:
mov  al, 'o'
jmp  WigSet
IsWig32:
mov  al, 'n'
jmp  WigSet
IsWig33:
mov  al, 'q'
jmp  WigSet
IsWig34:
mov  al, 'p'
jmp  WigSet
IsWig35:
mov  al, 's'
jmp  WigSet
IsWig36:
mov  al, 'r'
jmp  WigSet
;===============================
WigSet:
push ax
push si
mov  ah, 6
mov  si, x
mov  byte [cs:si], al
mov  byte [cs:si+1], 0
int  0x18
pop  si
pop  ax
jmp  NotMan
;===============================
WigSetd:
push ax
push bx
push dx
mov  ah, 7
int  0x18
pop  dx
pop  bx
pop  ax
jmp  NotMan
;===============================
NotMan:
cmp  bl, 39
je   DoneL1
inc  bl
jmp  Loop2
;===============================
DoneL1:
mov  bl, 0
cmp  bh, 15
je   DoneIt
inc  bh
jmp  Loop1
;===============================
DoneIt:
NotHit:
pop  ds
pop  bp
pop  ds
pop  dx
pop  cx
pop  ax
WontAnimSprite:
cmp  byte [cs:ansi], 1
je   IsAnsi
cmp  byte [cs:ansi], 2
jne  NoAnsi
IsAnsi:
push ax
push dx
push ds
mov  ax, cs
mov  ds, ax
inc  byte [cs:Cnt1]
cmp  byte [cs:Cnt1], 6
je   Eq1
cmp  byte [cs:Cnt1], 12
je   Eq2
ByeByeA:
inc  byte [cs:Cnt2]
cmp  byte [cs:Cnt2], 6
je   Eq3
cmp  byte [cs:Cnt2], 12
je   Eq4
cmp  byte [cs:Cnt2], 18
je   Eq5
cmp  byte [cs:Cnt2], 24
je   Eq6
cmp  byte [cs:Cnt2], 30
je   Eq7
jmp  ByeBye
Eq1:
mov  dh, 1
mov  dl, 3
mov  al, 7
call Replace
mov  dh, 30  ;125
mov  dl, 31  ;126
mov  al, 7
call Replace
mov  dh, 29  ;124
mov  dl, 30  ;125
mov  al, 7
call Replace
mov  dh, 125
mov  dl, 126
mov  al, 7
call Replace
mov  dh, 124
mov  dl, 125
mov  al, 7
call Replace
mov  dh, 64
mov  dl, 127
mov  al, 7
call Replace
jmp  ByeByeA
Eq2:
mov  byte [cs:Cnt1], 0
mov  dh, 3
mov  dl, 1
mov  al, 7
call Replace
mov  dh, 31 ;126
mov  dl, 29 ;124
mov  al, 2
call Replace
mov  dh, 30  ;125
mov  dl, 31  ;126
mov  al, 7
call Replace
mov  dh, 126
mov  dl, 124
mov  al, 4
call Replace
mov  dh, 125
mov  dl, 126
mov  al, 4
call Replace
mov  dh, 127
mov  dl, 64
mov  al, 7
call Replace
jmp  ByeByeA
Eq3:
mov  dh, 16
mov  dl, 17
mov  al, 7
call Replace
mov  dh, 'þ'
mov  dl, 'þ'
mov  al, 1
call Replace
mov  dh, 128
mov  dl, 129
mov  al, 7
call Replace
jmp  ByeBye
Eq4:
mov  dh, 17
mov  dl, 18
mov  al, 7
call Replace
mov  dh, 'þ'
mov  dl, 'þ'
mov  al, 2
call Replace
mov  dh, 129
mov  dl, 130
mov  al, 7
call Replace
jmp  ByeBye
Eq5:
mov  dh, 18
mov  dl, 16
mov  al, 10
call Replace
mov  dh, 'þ'
mov  dl, 'þ'
mov  al, 3
call Replace
mov  dh, 130
mov  dl, 131
mov  al, 7
call Replace
jmp  ByeBye
Eq6:
mov  dh, 131
mov  dl, 132
mov  al, 7
call Replace
jmp  ByeBye
Eq7:
mov  byte [cs:Cnt2], 0
mov  dh, 132
mov  dl, 128
mov  al, 7
call Replace
jmp  ByeBye
ByeBye:
pop  ds
pop  dx
pop  ax
NoAnsi:
cmp  byte [cs:think], 1
jne  NotThinking
push si
push ds
mov  ax, cs
mov  ds, ax
inc  byte [cs:Cnt3]
cmp  byte [cs:Cnt3], 80
jne  WaitThink
mov  byte [cs:Cnt3], 0
cmp  byte [cs:Mind], 1
jne  NotT1
mov  si, Thought1
NotT1:
cmp  byte [cs:Mind], 2
jne  NotT2
mov  si, Thought2
NotT2:
cmp  byte [cs:Mind], 3
jne  NotT3
mov  si, Thought3
NotT3:
cmp  byte [cs:Mind], 4
jne  NotT4
mov  si, Thought4
NotT4:
cmp  byte [cs:Mind], 5
jne  NotT5
mov  si, Thought5
NotT5:
cmp  byte [cs:Mind], 6
jne  NotT6
mov  si, Thought6
NotT6:
cmp  byte [cs:Mind], 7
jne  NotT7
mov  si, Thought7
NotT7:
push ax
push bx
push cx
push dx
mov  ah, 0x03
mov  bh, 0
int  0x10
push dx
mov  dh, 0
mov  dl, 4
mov  ah, 0x02
mov  bh, 0
int  0x10
call Show
pop  dx
mov  ah, 0x02
mov  bh, 0
int  0x10
pop  dx
pop  cx
pop  bx
pop  ax
inc  byte [cs:Mind]
cmp  byte [cs:Mind], 8
jne  NotMind7
mov  byte [cs:Mind], 1
NotMind7:
WaitThink:
pop  ds
pop  si
NotThinking:
iret
x     db ' ',0,0,0,0
Cnt0  db 0
Cnt1  db 0
Cnt2  db 0
Cnt3  db 0
Mind  db 1
;======================================================================
;cx=sprite# at cursor loc
BigAscii:
push ax
push bx
push cx
push dx
push ds

push cs
pop  ds

mov  si, letter
mov  dx, 0
mov  ax, 96
add  ax, 4
mul  cx
add  si, ax
add  si, 4
mov  cx, 96

call GetPos
call SetPos

mov  bx, 0
DrawLoop:
lodsb
inc  bx
push bx
push dx
mov  bl, al
mov  al, '#'
call putc
pop  dx
pop  bx
cmp  bx, 8
jne  NotBX8
mov  bx, 0
inc  dh
call SetPos
NotBX8:
loop DrawLoop
pop  ds
pop  dx
pop  cx
pop  bx
pop  ax
ret

SetPos:
push ax
push bx
push cx
push dx
mov  ah, 0x02
mov  bh, 0
int  0x10
pop  dx
pop  cx
pop  bx
pop  ax
ret

GetPos:
push ax
push bx
push cx
mov  ah, 0x03
mov  bh, 0
int  0x10
pop  cx
pop  bx
pop  ax
ret


;======================================================================
;dh=old char dl=new char al=color (entire screen)",13,10
Replace:
push ax
push bx
push cx
push dx

push gs
push ax
mov  ax, 0xb800
push ax
pop  gs
pop  ax
mov  bx, 0000
mov  cx, 0xe000
ccColorSet:
cmp  byte [gs:bx], dh
je   TG1
inc  bx
jmp  TG2
TG1:
mov  byte [gs:bx], dl
inc  bx
cmp  byte [cs:ansi], 2
jne  NotAnsi2
mov  byte [gs:bx], al
NotAnsi2:
TG2:
inc  bx
loop ccColorSet
pop  gs
pop  dx
pop  cx
pop  bx
pop  ax
ret
;======================================================================
PrintCrLf:
;print a carrage return and line feed
push si
mov  si, CrLf
call Show
pop  si
ret
;======================================================================
Kill:
iret
;======================================================================
TestInt:
push ds
push si
mov  ax, cs
mov  ds, ax
mov  si, dbg
call Show
pop  si
pop  ds
iret
;======================================================================
SetV:
cli
xor  bx, bx
mov  es, bx
mov  bl, 4
mul  bl
mov  bx, ax
mov  word [es:bx], dx
add  bx, 2
mov  word [es:bx], ds
push cs
pop  es
sti
ret
;======================================================================
Spiral:
push    ax bx cx dx es ds si di
push    cs
pop     ds
mov     ax,0B800h
mov     es,ax                           ;Set ES = Screen
mov     [ds:Spiral_Count],0Ch
mov     [ds:Starting_Point],0D0h
Spiral_Loop:
mov     ax, [ds:Starting_Point]
mov     [ds:Step_Count],ax
One_Step_Loop:
mov     [ds:Horiz_Line_Length],39h
mov     [ds:Vert_Line_Length],1
mov     di,798h
mov     ax,[ds:Spiral_Count]
mov     [ds:Line_Count],ax
Move_Horiz_Line_Left:
mov     cx,[ds:Horiz_Line_Length]
dec     cx
push    ds
push    es
pop     ds
mov     si,di
add     si,2
cld
rep     movsw
pop     ds
mov     cx,[ds:Vert_Line_Length]
push    ds
push    es
pop     ds
mov     si,di
sub     si,0A0h
mov     ax,0A2h
cld
Move_Vert_Line_Up:
movsw
sub     di,ax
sub     si,ax
loop    Move_Vert_Line_Up
Move_Horiz_Line_Right:
pop     ds
mov     cx,[ds:Horiz_Line_Length]
push    ds
push    es
pop     ds
mov     si,di
sub     si,2
std
rep     movsw
pop     ds
mov     cx,[ds:Vert_Line_Length]
inc     cx
push    ds
push    es
pop     ds
mov     si,di
add     si,0a0h
mov     ax,0A2h
std
Move_Vert_Line_Down:
movsw
add     di,ax
add     si,ax
loop Move_Vert_Line_Down
pop     ds
add     [ds:Horiz_Line_Length],2
add     [ds:Vert_Line_Length],2
dec     [ds:Line_Count]
jnz     Move_Horiz_Line_Left
dec     [ds:Step_Count]
jz      Done_One_Spiral
jmp     One_Step_Loop
Done_One_Spiral:
sub     [ds:Starting_Point],8
dec     [ds:Spiral_Count]
jz      Done_Spiral
jmp     Spiral_Loop
Done_Spiral:
pop     di si ds es dx cx bx ax
ret
Starting_Point          dw      ?
Spiral_Count            dw      ?
Horiz_Line_Length       dw      ?
Vert_Line_Length        dw      ?
Step_Count              dw      ?
Line_Count              dw      ?
;======================================================================
SaveVect:
pusha
push ds
mov  di, si
mov  si, 0
mov  ax, 0
mov  ds, ax
mov  cx, 4 * 256
CpyVect:
lodsb
stosb
loop CpyVect
pop  ds
popa
ret
;======================================================================
RestoreVect:
pusha
push es
mov  di, 0
mov  ax, 0
mov  es, ax
mov  cx, 4 * 256
RstVect:
lodsb
stosb
loop RstVect
pop es
popa
ret
;======================================================================
Extra1:
iret
;======================================================================
Extra2:
iret
;======================================================================
Extra3:
iret
;======================================================================
Extra4:
iret
;======================================================================
Extra5:
iret
;======================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  Array of 10 letter sprites
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

letter:

  dw 12, 8
  db 00,00,00,00,00,00,00,00   ; letter[0] ='blank'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

dw 12, 8
  db 00,00,00,00,00,00,00,00    ; letter[1] = 'A'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,04,00,00,00,04,00,00
  db 04,04,04,00,04,04,04,00
  db 04,04,04,00,04,04,04,00
  db 04,04,04,04,04,04,04,00
  db 04,04,04,04,04,04,04,00
  db 00,04,04,04,04,04,00,00
  db 00,04,04,04,04,04,00,00
  db 00,00,04,04,04,00,00,00
  db 00,00,00,04,00,00,00,00

dw 12, 8
  db 00,00,00,00,00,00,00,00    ; 'B'
  db 00,00,00,00,00,00,00,00
  db 00,04,00,00,00,04,00,00
  db 04,04,04,00,04,04,04,00
  db 04,04,04,00,04,04,04,04
  db 04,04,04,04,04,04,04,04
  db 04,04,04,04,04,04,04,04
  db 04,04,04,04,04,04,04,04
  db 00,04,04,04,04,04,04,00
  db 00,04,04,04,04,04,04,00
  db 00,00,04,04,04,04,00,00
  db 00,00,00,04,04,00,00,00

dw 12,8
  db 00,00,00,00,00,00,00,00  ; 'C'
  db 00,00,07,07,07,07,00,00
  db 00,00,07,08,08,07,00,00
  db 00,00,07,00,00,07,00,00
  db 00,00,00,07,07,00,00,00
  db 00,00,06,06,06,06,00,00
  db 00,06,06,06,06,06,06,00
  db 07,00,06,06,06,06,00,07
  db 00,00,06,06,06,06,00,00
  db 00,00,07,00,00,07,00,00
  db 00,00,07,00,00,07,00,00
  db 00,07,07,00,00,07,07,00

dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'D'
  db 00,00,07,07,07,07,00,00
  db 00,00,07,08,08,07,00,00
  db 07,00,07,00,00,07,00,07
  db 00,06,00,07,07,00,06,00
  db 00,00,06,06,06,06,00,00
  db 00,00,06,06,06,06,00,00
  db 00,00,06,06,06,06,00,00
  db 00,00,06,06,06,06,00,00
  db 00,00,07,00,00,07,00,00
  db 00,00,07,00,00,07,00,00
  db 00,07,07,00,00,07,07,00


dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'E'
  db 00,00,07,07,07,07,00,00
  db 00,00,07,08,08,07,00,00
  db 00,00,07,00,00,07,00,00
  db 00,00,00,07,07,00,00,00
  db 00,00,00,06,06,06,06,07
  db 00,00,00,06,06,06,00,00
  db 00,00,00,06,06,06,00,00
  db 00,00,00,06,06,06,00,00
  db 00,00,00,00,07,00,00,00
  db 00,00,00,00,07,00,00,00
  db 00,00,00,00,07,07,07,00

dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'F'
  db 00,00,07,07,07,07,00,00
  db 00,00,07,08,08,07,00,00
  db 00,00,07,00,00,07,00,00
  db 00,00,00,07,07,00,00,00
  db 07,06,06,06,06,00,00,00
  db 00,00,06,06,06,00,00,00
  db 00,00,06,06,06,00,00,00
  db 00,00,06,06,06,00,00,00
  db 00,00,00,07,00,00,00,00
  db 00,00,00,07,00,00,00,00
  db 00,07,07,07,00,00,00,00


dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'G'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,07,07,07,07,00,00
  db 07,00,07,08,08,07,00,07
  db 07,00,07,00,00,07,00,07
  db 00,06,00,07,07,00,06,00
  db 00,00,06,06,06,06,00,00
  db 00,02,06,06,06,06,02,00
  db 02,02,07,02,02,07,02,02


dw 12, 8
  db 00,00,00,14,14,00,00,00     ; 'H'
  db 00,14,14,14,14,14,14,00
  db 14,00,00,00,00,00,00,14
  db 14,00,14,00,00,14,00,14
  db 14,00,00,00,00,00,00,14
  db 14,00,00,00,00,00,00,14
  db 14,00,14,00,00,14,00,14
  db 14,00,14,14,14,14,00,14
  db 14,00,00,00,00,00,00,14
  db 14,14,00,00,00,00,14,14
  db 00,14,14,14,14,14,14,00
  db 00,00,00,14,14,00,00,00


dw 12, 8
  db 00,00,00,14,14,00,00,00     ; 'I'
  db 00,00,00,14,14,00,00,00
  db 00,00,00,14,14,00,00,00
  db 00,00,14,14,14,14,00,00
  db 00,00,14,14,14,14,00,00
  db 00,00,14,14,14,14,00,00
  db 00,00,14,14,14,14,00,00
  db 00,00,14,14,14,14,00,00
  db 00,00,14,14,14,14,00,00
  db 00,00,00,14,14,00,00,00
  db 00,00,00,14,14,00,00,00
  db 00,00,00,14,14,00,00,00


dw 12, 8
  db 00,00,00,00,00,02,00,00     ; 'J'
  db 00,00,00,00,02,10,02,00
  db 00,02,00,00,00,02,05,00
  db 02,10,02,00,00,05,05,05
  db 00,02,00,00,00,00,05,00
  db 00,05,00,00,00,00,02,00
  db 05,05,05,00,00,02,10,02
  db 00,05,02,00,00,00,02,00
  db 00,02,10,02,00,04,00,00
  db 00,00,02,00,04,04,04,00
  db 00,00,00,00,00,04,00,00
  db 00,00,00,00,00,00,00,00

dw 12, 8
  db 00,02,00,00,00,00,02,00     ; 'K'
  db 02,10,02,00,10,00,00,00
  db 00,02,00,10,15,10,02,00
  db 00,00,00,00,10,02,10,02
  db 00,00,02,00,00,00,02,00
  db 00,02,10,02,00,00,00,00
  db 00,00,02,00,00,00,00,15
  db 00,00,00,00,01,00,00,00
  db 00,00,00,01,01,01,00,02
  db 00,02,00,00,01,00,00,00
  db 00,00,00,00,00,00,00,00
  db 15,00,00,00,00,00,00,00


dw 12,8
  db 02,00,00,00,00,00,00,02     ; 'L'
  db 10,00,00,00,00,00,00,02
  db 02,00,00,00,00,00,00,02
  db 00,02,00,00,02,02,02,00
  db 00,00,02,02,02,02,00,00
  db 00,00,02,02,10,02,00,00
  db 00,00,02,02,02,02,00,00
  db 00,00,10,02,02,00,00,00
  db 00,02,02,00,00,02,00,00
  db 02,00,00,00,00,00,10,00
  db 02,00,00,00,00,00,00,02
  db 02,00,00,00,00,00,00,02

dw 12,8
  db 02,00,00,00,00,00,00,00     ; 'M'
  db 02,00,00,00,00,00,00,02
  db 02,02,00,00,00,00,00,10
  db 00,00,02,00,00,00,02,00
  db 00,00,00,02,02,02,00,00
  db 00,02,00,02,02,00,00,00
  db 02,10,02,02,02,00,00,02
  db 02,02,02,02,02,02,02,00
  db 02,00,00,02,00,00,00,00
  db 02,00,00,02,00,00,00,00
  db 02,00,00,00,10,00,00,00
  db 00,02,00,00,00,02,02,02

dw 12, 8
  db 02,00,00,00,00,00,02,02     ; 'N'
  db 02,00,00,00,00,10,00,00
  db 00,10,00,00,02,00,00,00
  db 00,00,02,00,02,00,02,02
  db 00,00,00,02,02,02,00,02
  db 00,00,02,02,02,00,00,02
  db 00,00,02,02,02,00,00,00
  db 00,00,02,02,10,02,00,00
  db 00,00,02,02,00,00,02,00
  db 00,02,00,00,00,00,02,00
  db 10,00,00,00,00,02,00,00
  db 02,00,00,00,02,00,00,00

dw 12,8
  db 00,00,00,00,00,00,00,00     ; 'O'
  db 00,00,00,00,02,02,02,00
  db 00,00,00,10,02,02,02,10
  db 00,00,00,00,02,10,02,00
  db 00,00,00,00,00,02,00,00
  db 00,00,02,00,00,00,00,00
  db 02,02,02,02,00,00,00,00
  db 02,02,02,02,02,00,00,00
  db 02,02,02,02,00,00,00,00
  db 10,02,02,02,00,00,00,00
  db 00,02,02,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'P'
  db 00,00,00,00,00,10,02,00
  db 00,00,00,00,00,02,02,02
  db 00,00,00,00,00,00,02,02
  db 00,00,02,02,00,00,10,00
  db 02,02,02,10,00,00,00,00
  db 02,10,02,02,02,00,00,00
  db 02,02,02,02,02,02,00,00
  db 02,02,02,02,02,02,00,00
  db 02,02,02,02,02,00,00,00
  db 00,10,02,02,00,00,00,00
  db 00,00,02,00,00,00,00,00


dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'Q'
  db 00,01,00,00,00,00,00,00
  db 09,01,01,00,00,00,00,00
  db 00,01,00,00,00,01,01,00
  db 00,00,00,00,01,01,01,09
  db 00,00,00,00,00,09,01,00
  db 00,00,00,00,00,01,00,00
  db 00,09,01,00,00,00,00,00
  db 09,01,01,01,00,00,00,00
  db 00,01,01,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

dw 12, 8
  db 00,01,00,00,00,00,00,00     ; 'R'
  db 09,01,00,00,00,00,00,00
  db 01,01,01,00,00,00,01,00
  db 01,01,00,00,00,01,01,01
  db 00,01,00,00,01,01,01,01
  db 00,00,00,00,00,09,01,09
  db 00,00,01,00,00,01,01,00
  db 00,01,01,09,00,00,00,00
  db 01,01,01,01,01,00,00,00
  db 00,09,01,01,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

dw 12, 8
  db 02,00,00,00,00,00,01,00     ; 'S'
  db 00,00,00,04,04,00,00,00
  db 00,00,04,04,15,04,00,00
  db 00,04,15,04,04,04,04,00
  db 00,04,04,04,15,04,15,00
  db 02,04,04,04,04,04,04,00
  db 00,04,15,04,04,04,04,00
  db 00,00,04,07,04,04,00,02
  db 00,00,00,07,07,00,00,00
  db 00,00,00,07,07,00,01,00
  db 01,00,00,07,07,00,00,00
  db 00,00,00,07,07,00,00,00


dw 12, 8
  db 00,00,00,00,00,02,00,01     ; 'T'
  db 01,00,00,04,04,00,00,00
  db 00,00,04,04,15,04,00,00
  db 00,04,15,04,04,04,04,00
  db 00,04,04,04,15,04,15,00
  db 00,04,04,04,04,04,04,00
  db 00,04,15,04,04,04,04,00
  db 00,00,04,07,04,04,00,00
  db 00,02,00,07,07,00,00,00
  db 01,00,00,07,07,00,00,01
  db 00,00,01,07,07,00,00,00
  db 00,00,00,07,07,00,00,00


dw 12, 8
  db 02,00,00,02,02,00,00,02     ; 'U'
  db 00,02,02,15,15,02,02,00
  db 00,00,02,15,15,02,00,00
  db 00,00,02,02,02,02,00,00
  db 00,02,02,02,02,10,02,00
  db 02,10,02,02,02,02,02,02
  db 02,02,02,02,02,02,02,02
  db 00,10,02,02,02,02,02,00
  db 00,00,02,02,02,10,00,00
  db 00,00,00,02,02,00,00,00
  db 00,00,00,02,02,00,00,00
  db 00,00,02,02,02,02,00,00


dw 12, 8
  db 00,00,00,02,10,00,00,00     ; 'V'
  db 00,02,02,15,15,02,02,00
  db 02,00,02,15,15,02,00,02
  db 00,00,02,02,02,02,00,00
  db 00,00,02,02,10,02,00,00
  db 00,02,02,02,02,02,02,00
  db 00,02,02,02,02,02,02,00
  db 00,00,02,02,02,02,00,00
  db 00,00,02,02,10,02,00,00
  db 00,00,00,02,02,00,00,00
  db 00,00,02,02,02,02,00,00
  db 00,00,00,00,00,00,00,00

dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'W'
  db 10,02,02,00,00,00,00,00
  db 00,02,00,10,00,00,00,00
  db 00,00,00,00,10,00,00,00
  db 00,00,00,00,00,02,00,00
  db 00,00,00,00,00,02,00,00
  db 00,00,00,00,00,02,00,00
  db 00,00,00,00,00,02,00,00
  db 00,00,02,00,02,00,00,00
  db 00,00,00,02,00,00,00,00
  db 00,00,02,00,02,00,00,00
  db 00,10,00,00,00,00,00,00



dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'X'
  db 10,00,10,00,00,02,00,00
  db 00,02,00,10,02,00,00,00
  db 02,00,00,00,02,00,00,00
  db 02,00,00,00,00,02,00,00
  db 00,02,00,00,00,00,02,00
  db 00,00,00,00,00,00,02,00
  db 00,00,00,00,00,02,00,00
  db 00,00,02,00,02,00,00,00
  db 00,00,00,02,00,00,00,00
  db 10,00,02,00,00,00,00,00
  db 00,02,00,00,00,00,00,00

dw 12, 8
  db 00,00,00,00,00,00,10,02     ; 'Y'
  db 00,00,00,00,00,02,00,00
  db 02,00,00,00,02,00,00,00
  db 00,02,00,10,00,00,00,00
  db 00,00,02,00,00,00,00,00
  db 00,02,00,00,00,00,00,00
  db 00,02,00,00,00,00,00,00
  db 00,02,00,00,00,02,00,00
  db 00,00,02,00,02,00,00,00
  db 00,00,00,02,00,00,00,00
  db 00,00,00,00,10,00,00,00
  db 00,00,00,00,00,02,10,02

dw 12, 8
  db 00,00,00,00,00,00,00,00     ; 'z'
  db 00,07,07,07,07,00,00,00
  db 00,07,02,02,02,07,07,00
  db 07,07,02,02,02,02,07,00
  db 07,03,02,02,05,05,07,00
  db 07,03,02,05,05,05,07,07
  db 07,03,03,05,05,01,01,07
  db 07,03,03,04,01,01,01,07
  db 07,04,04,04,01,01,01,07
  db 07,04,04,06,06,06,07,07
  db 07,07,06,06,06,07,07,00
  db 00,07,07,07,07,00,00,00


;  db 00,00,00,00,00,00,00,00     ; 'backup'
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00
;  db 00,00,00,00,00,00,00,00

 dw 12, 8
  db 06,06,00,00,00,00,06,06     ;[27] = 'a'
  db 06,06,06,06,06,06,06,06
  db 06,06,00,00,00,00,06,06
  db 06,06,00,00,00,00,06,06
  db 06,06,06,06,06,06,06,06
  db 06,06,00,00,00,00,06,06
  db 06,06,00,00,00,00,06,06
  db 06,06,06,06,06,06,06,06
  db 06,06,00,00,00,00,06,06
  db 06,06,00,00,00,00,06,06
  db 06,06,06,06,06,06,06,06
  db 06,06,00,00,00,00,06,06

 dw 12, 8
  db 00,09,09,09,09,09,09,00     ; 'b'
  db 09,00,09,00,09,00,00,09
  db 09,00,09,00,09,00,00,09
  db 09,09,00,09,00,09,09,09
  db 09,00,00,09,00,09,00,09
  db 09,09,09,00,00,09,00,09
  db 09,00,09,00,09,00,09,09
  db 09,00,09,09,09,00,00,09
  db 09,09,00,09,00,09,09,09
  db 09,00,00,09,00,09,00,09
  db 09,00,00,09,00,09,00,09
  db 00,09,09,09,09,09,09,00

 dw 12,8
  db 00,10,10,10,10,10,10,00     ; 'c'
  db 10,00,10,00,10,00,00,10
  db 10,00,10,00,10,00,00,10
  db 10,10,00,10,00,10,10,10
  db 10,00,00,10,00,10,00,10
  db 10,10,10,00,00,10,00,10
  db 10,00,10,00,10,00,10,10
  db 10,00,10,10,10,00,00,10
  db 10,10,00,10,00,10,10,10
  db 10,00,00,10,00,10,00,10
  db 10,00,00,10,00,10,00,10
  db 00,10,10,10,10,10,10,00

 dw 12, 8
  db 00,15,15,15,15,15,15,00     ; 'd'
  db 15,00,15,00,15,00,00,15
  db 15,00,15,00,15,00,00,15
  db 15,15,00,15,00,15,15,15
  db 15,00,00,15,00,15,00,15
  db 15,15,15,00,00,15,00,15
  db 15,00,15,00,15,00,15,15
  db 15,00,15,15,15,00,00,15
  db 15,15,00,15,00,15,15,15
  db 15,00,00,15,00,15,00,15
  db 15,00,00,15,00,15,00,15
  db 00,15,15,15,15,15,15,00

 dw 12, 8
  db 09,09,09,09,09,09,09,09     ; 'e'
  db 09,01,01,01,01,01,01,09
  db 09,01,15,01,15,01,01,09
  db 09,01,01,15,01,01,01,09
  db 09,01,15,01,15,01,01,09
  db 09,01,01,01,01,01,01,09
  db 09,01,01,01,01,01,01,09
  db 09,01,01,01,01,01,01,09
  db 09,01,01,01,01,01,01,09
  db 09,01,01,01,01,01,01,09
  db 09,01,01,01,01,01,01,09
  db 09,09,09,09,09,09,09,09


 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'f'
  db 15,00,00,00,00,00,00,15
  db 00,09,00,00,00,00,09,00
  db 00,00,09,00,00,09,00,00
  db 00,00,09,09,09,09,00,00
  db 00,09,09,15,15,09,09,00
  db 09,09,15,15,15,15,09,09
  db 09,09,09,09,09,09,09,09
  db 00,09,09,09,09,09,09,00
  db 00,00,09,09,09,09,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00


 dw 12,8
  db 00,00,15,00,00,15,00,00     ;'g'
  db 00,00,09,00,00,09,00,00
  db 00,00,09,00,00,09,00,00
  db 00,00,09,00,00,09,00,00
  db 00,00,09,09,09,09,00,00
  db 00,09,09,15,15,09,09,00
  db 09,09,15,15,15,15,09,09
  db 09,09,09,09,09,09,09,09
  db 00,09,09,09,09,09,09,00
  db 00,00,09,09,09,09,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

 dw 12,8
  db 00,00,00,05,05,00,00,00     ;'h'
  db 00,00,13,05,05,13,00,00
  db 00,05,05,05,05,05,05,00
  db 00,05,05,05,05,05,05,00
  db 00,00,05,05,05,13,00,00
  db 00,00,05,05,05,05,00,00
  db 00,05,13,05,05,05,05,00
  db 05,05,05,05,05,05,05,13
  db 13,05,05,05,05,05,05,05
  db 05,05,05,05,05,05,05,05
  db 00,05,05,05,05,05,05,00
  db 00,00,05,05,05,05,00,00

 dw 12, 8
  db 00,00,00,05,13,00,00,00     ;'i'
  db 00,00,05,13,05,05,00,00
  db 00,05,05,05,05,05,05,00
  db 00,05,13,05,05,05,05,00
  db 00,05,05,05,05,05,05,00
  db 00,00,05,05,05,13,00,00
  db 00,13,05,05,05,05,13,00
  db 00,05,05,05,05,05,05,00
  db 00,05,05,05,05,13,05,00
  db 00,05,05,05,05,05,05,00
  db 00,00,05,05,05,05,00,00
  db 00,00,00,00,00,00,00,00

 dw 12,8
  db 00,00,00,00,00,00,00,00     ;'j'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,07,07,00,00,00
  db 00,00,07,15,07,07,00,00
  db 00,00,07,07,12,07,00,00
  db 00,08,08,07,07,12,08,08
  db 08,07,07,08,08,07,07,08
  db 07,00,07,08,08,07,00,07
  db 07,00,07,08,08,07,00,07
  db 07,00,00,07,07,00,00,07
  db 00,00,07,07,07,07,00,00
  db 00,07,07,07,07,07,07,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'k'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,07,07,00,00,00
  db 07,00,07,15,07,07,00,07
  db 07,00,07,07,12,07,00,07
  db 07,00,00,07,07,12,00,07
  db 08,07,07,08,08,07,07,08
  db 00,08,07,08,08,07,08,00
  db 00,00,07,08,08,07,00,00
  db 00,00,00,07,07,00,00,00
  db 00,00,07,07,07,07,00,00
  db 00,07,07,07,07,07,07,00

 dw 12, 8
  db 05,00,00,00,05,00,00,00     ;'l'
  db 00,02,00,00,00,00,02,00
  db 00,00,00,01,03,00,00,00
  db 02,00,13,02,06,11,00,00
  db 00,00,03,04,05,10,00,00
  db 00,12,11,10,09,14,04,00
  db 00,00,13,01,12,05,02,00
  db 00,00,07,06,03,14,00,00
  db 05,00,15,07,15,01,00,00
  db 00,00,01,03,02,09,05,00
  db 02,00,00,02,04,00,00,00
  db 00,00,00,00,00,00,00,02

 dw 12, 8
  db 00,00,00,00,00,05,00,04     ;'m'
  db 01,00,00,00,00,00,00,00
  db 00,00,00,15,08,00,00,01
  db 05,00,05,03,10,06,00,00
  db 00,00,07,04,05,10,00,00
  db 00,14,13,10,11,14,08,00
  db 00,00,01,02,12,05,07,00
  db 00,00,10,06,03,14,00,00
  db 04,00,05,12,14,02,00,00
  db 00,00,01,04,15,09,00,05
  db 01,00,00,09,09,00,00,00
  db 00,00,00,00,00,00,00,01

 dw 12, 8
  db 00,00,01,01,01,00,00,00     ;'n'
  db 00,01,01,01,01,01,00,00
  db 00,09,01,01,01,09,00,00
  db 01,01,01,01,01,01,01,00
  db 00,01,01,01,01,09,00,00
  db 00,00,09,01,01,00,00,00
  db 00,00,01,01,01,00,00,00
  db 00,00,01,01,01,00,00,00
  db 00,09,01,01,01,01,00,00
  db 00,01,01,01,01,01,00,00
  db 00,00,01,01,01,00,00,00
  db 00,00,09,01,09,00,00,00

 dw 12, 8
  db 00,00,01,01,01,00,00,00     ;'o'
  db 00,01,01,01,01,01,00,00
  db 00,00,01,01,09,00,00,00
  db 00,00,01,01,01,00,00,00
  db 00,09,01,01,01,01,00,00
  db 01,01,01,01,09,01,01,00
  db 00,01,01,01,01,01,00,00
  db 00,00,01,01,09,00,00,00
  db 00,01,01,01,01,01,00,00
  db 01,01,01,01,01,01,01,00
  db 00,09,01,01,01,01,00,00
  db 00,00,09,01,01,00,00,00


 dw 12, 8
  db 00,00,02,02,02,00,00,00     ;'p'
  db 00,02,10,02,02,02,00,00
  db 02,14,06,02,02,02,02,00
  db 02,06,06,06,06,10,02,00
  db 00,02,06,06,06,02,00,00
  db 00,02,06,06,06,02,00,00
  db 00,02,02,06,02,02,02,00
  db 02,14,02,02,06,06,02,00
  db 02,14,02,02,06,06,06,02
  db 00,02,10,02,06,06,06,02
  db 00,00,02,02,14,06,02,00
  db 00,00,00,02,02,02,00,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'q'
  db 00,00,00,02,02,00,00,00
  db 00,00,02,02,02,02,00,00
  db 00,02,14,06,02,10,00,00
  db 00,02,02,06,10,02,00,00
  db 00,02,02,06,06,02,00,00
  db 00,00,02,06,06,10,02,00
  db 00,00,02,06,06,10,02,00
  db 00,02,10,06,06,10,02,00
  db 02,02,10,06,14,02,00,00
  db 02,02,02,02,06,02,00,00
  db 00,02,02,02,02,00,00,00

 dw 12, 8
  db 00,14,00,00,00,00,14,00    ;'r'
  db 00,14,00,00,00,00,00,00
  db 00,00,00,14,00,00,14,00
  db 00,00,00,14,00,00,00,00
  db 00,00,14,14,14,00,00,00
  db 00,14,01,04,04,14,00,00
  db 04,04,01,04,04,01,04,00
  db 01,04,01,09,04,01,04,00
  db 00,01,01,09,01,01,00,00
  db 00,01,09,09,09,01,00,00
  db 00,00,01,09,01,00,00,00
  db 00,00,00,09,00,00,00,00



 dw 12, 8
  db 00,00,14,00,00,00,00,00    ;'2'
  db 00,00,14,00,00,00,14,00
  db 14,00,00,00,00,00,04,00
  db 14,00,00,00,14,00,00,00
  db 00,00,00,14,14,00,00,00
  db 00,00,14,14,14,00,00,00
  db 00,14,04,04,04,14,00,00
  db 04,09,04,04,04,01,04,00
  db 01,01,04,01,04,01,01,00
  db 00,01,09,09,09,01,00,00
  db 00,01,09,09,09,01,00,00
  db 00,00,01,09,01,00,00,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'t'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'u'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'v'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'w'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00


 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'x'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;'y'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

 dw 12, 8
  db 00,00,00,00,00,00,00,00     ;[52]='z'
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00

dw 12, 8
  db 00,00,00,00,02,00,00,00     ; '?'
  db 01,00,07,07,07,07,00,01
  db 00,00,07,08,08,07,00,00
  db 07,00,07,00,00,07,00,07
  db 00,06,00,07,07,00,06,00
  db 00,00,02,06,06,06,00,00
  db 00,00,06,06,06,06,02,00
  db 00,02,06,06,06,06,00,00
  db 00,00,06,06,06,06,00,01
  db 01,00,07,00,00,07,00,00
  db 00,00,07,00,00,07,00,00
  db 00,07,07,00,00,07,07,00

 dw 12, 8
  db 05,00,00,05,00,00,04,00     ; '.' 54
  db 00,00,07,07,07,07,00,00
  db 00,00,07,08,08,07,00,00
  db 07,00,07,00,00,07,00,07
  db 00,06,00,07,07,00,06,00
  db 00,00,06,06,06,06,00,05
  db 05,00,06,05,06,06,00,00
  db 00,00,06,06,06,06,00,00
  db 04,00,06,06,06,06,00,00
  db 00,00,07,00,00,07,00,04
  db 00,00,07,00,04,07,00,00
  db 00,07,07,00,00,07,07,00

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  Array of 10 digit sprites
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  digit:

  dw 16, 16                                                           ; digit[0]
  db 10,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00
  db 02,02,00,00,00,00,00,00,00,00,00,00,02,02,02,00
  db 00,02,02,00,00,00,00,00,00,00,00,02,02,00,10,02
  db 00,00,02,02,00,00,00,00,00,00,02,10,00,00,00,10
  db 00,00,00,10,02,00,00,00,00,02,02,00,00,00,00,00
  db 00,00,00,00,10,02,00,00,02,02,00,00,00,00,00,00
  db 00,00,00,00,02,02,02,02,02,10,00,00,00,02,00,00
  db 00,00,00,00,00,02,02,10,02,02,00,00,00,00,02,02
  db 00,00,00,00,00,02,02,02,02,02,02,00,00,00,02,02
  db 00,00,00,00,02,10,02,02,00,00,10,02,00,00,02,10
  db 00,00,00,02,02,00,02,10,00,00,00,02,02,02,02,02
  db 00,00,02,02,00,00,02,02,00,00,00,00,02,02,02,00
  db 00,02,02,00,00,00,02,02,00,00,00,00,00,00,00,00
  db 02,02,00,00,00,00,10,02,00,00,00,00,00,00,00,00
  db 02,00,00,00,00,00,00,02,02,02,00,00,00,00,00,00
  db 10,00,00,00,00,00,00,00,02,02,02,00,00,00,00,00

  dw 16, 16                                                           ;digit[1]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,10,02,02,00,00
  db 00,00,02,10,00,00,00,00,00,00,02,02,02,02,02,00
  db 00,00,02,02,02,00,00,00,00,02,02,00,00,00,02,02
  db 00,10,02,00,02,02,00,00,00,02,00,00,00,00,02,10
  db 02,02,00,00,00,02,02,02,02,00,00,00,00,02,02,02
  db 10,02,00,00,00,10,02,10,02,00,00,00,00,10,02,00
  db 02,02,00,00,02,02,02,02,02,02,00,00,00,00,00,00
  db 02,00,00,00,02,02,02,10,10,02,02,00,00,00,00,00
  db 02,00,00,02,02,00,00,00,00,00,02,02,00,00,00,00
  db 02,00,00,02,02,00,00,00,00,00,00,02,10,00,00,00
  db 02,00,00,00,02,02,00,00,00,00,00,00,02,02,00,00
  db 02,00,00,00,02,10,02,02,02,00,00,00,00,02,02,00
  db 00,00,00,00,00,02,02,02,02,00,00,00,00,00,02,10
  db 00,00,00,00,00,00,00,00,10,02,00,00,00,00,00,02

  dw 16, 16                                                           ;digit[2]
  db 00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,02,02,02,00,00,00,00,00,00,00,00,00,00
  db 00,00,10,02,00,02,02,00,00,00,00,00,00,00,00,00
  db 00,02,02,00,00,00,02,02,00,00,00,00,00,02,10,00
  db 02,02,00,00,00,00,02,02,00,00,00,00,02,02,02,02
  db 02,02,00,00,00,10,02,02,00,02,10,02,02,00,02,02
  db 02,00,00,00,00,02,02,02,02,02,02,02,00,00,02,02
  db 02,00,00,00,00,10,02,10,02,02,02,00,00,00,02,02
  db 00,00,00,00,00,02,02,02,02,02,02,00,00,00,02,02
  db 00,00,00,02,02,02,02,10,10,02,02,00,00,00,02,02
  db 00,00,02,02,02,02,02,02,02,02,10,00,00,00,02,00
  db 00,10,02,00,00,00,00,00,02,02,00,00,00,02,00,00
  db 00,02,02,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,02,02,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,02,02,02,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,02,10,02,00,00,00,00,00,00,00,00,00,00

  dw 16, 16                                                           ;digit[3]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

  dw 16, 16                                                           ;digit[4]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

  dw 16, 16                                                           ;digit[5]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

  dw 16, 16                                                           ;digit[6]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

  dw 16, 16                                                           ;digit[7]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

  dw 16, 16                                                           ;digit[8]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

  dw 16, 16                                                           ;digit[9]
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
  db 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

;======================================================================

NewFont0:
        db      0,0
        db      00000000b     ;0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      01111110b     ;1
        db      10000001b
        db      10100101b
        db      10000001b
        db      10011001b
        db      10000001b
        db      10100101b
        db      10111101b
        db      10000001b
        db      01111110b
        db      0,0,0,0

        db      0,0
        db      01111110b     ;2
        db      10000001b
        db      10100101b
        db      10000001b
        db      10011001b
        db      10000001b
        db      10111101b
        db      10100101b
        db      10000001b
        db      01111110b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;3
        db      00110110b
        db      01111111b
        db      11001001b
        db      11000001b
        db      01100011b
        db      00110110b
        db      00011100b
        db      00001000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      11111111b     ;4
        db      10000001b
        db      10100001b
        db      10101001b
        db      10111101b
        db      10001001b
        db      10001001b
        db      10000001b
        db      10000001b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      11111111b    ;5
        db      10000001b
        db      10111101b
        db      10100001b
        db      10011101b
        db      10000101b
        db      10111101b
        db      10000001b
        db      10000001b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      11111111b     ;6
        db      10000001b
        db      10111101b
        db      10100001b
        db      10100001b
        db      10111101b
        db      10100101b
        db      10111101b
        db      10000001b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;7
        db      00000000b
        db      00000000b
        db      00000000b
        db      00111110b
        db      00111110b
        db      00111110b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0

        db      0,0
        db      00000000b   ;8
        db      00010000b
        db      00100000b
        db      01000000b
        db      11111111b
        db      01000000b
        db      00100000b
        db      00010000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;9
        db      00000000b
        db      11011011b
        db      11011011b
        db      11011011b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;10
        db      00000000b
        db      10001111b
        db      10001000b
        db      10001110b
        db      10001000b
        db      10001000b
        db      11101000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00001111b   ;11
        db      00000011b
        db      00000101b
        db      00001000b
        db      00010000b
        db      00110000b
        db      01001000b
        db      01001000b
        db      00110000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      11111111b  ;12
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      11101111b   ;13
        db      10001001b
        db      10001001b
        db      10001111b
        db      10001010b
        db      10001010b
        db      10001010b
        db      10001010b
        db      10001010b
        db      11101010b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;14
        db      00000000b
        db      00011111b
        db      00010001b
        db      00011111b
        db      00010001b
        db      00010001b
        db      00010111b
        db      01110111b
        db      01110000b
        db      0,0,0,0

        db      0,0
        db      00001000b  ;15
        db      00001000b
        db      00001000b
        db      01001001b
        db      00111110b
        db      01110111b
        db      00011100b
        db      00101010b
        db      01001001b
        db      00001000b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;16
        db      01001110b
        db      01001000b
        db      01001000b
        db      01001000b
        db      01001000b
        db      01001110b
        db      01001010b
        db      01001010b
        db      01001110b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;17
        db      01011110b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;18
        db      01001111b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001111b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001111b
        db      0,0,0,0

        db      0,0
        db      00000000b ;19
        db      01001111b
        db      01001001b
        db      01001001b
        db      01001111b
        db      01000001b
        db      01000001b
        db      01000001b
        db      01000001b
        db      01000001b
        db      0,0,0,0

        db      0,0
        db      01111111b ;20
        db      10001001b
        db      10001001b
        db      01111001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      0,0,0,0

        db      0,0
        db      00011110b ;21 
        db      00010001b
        db      00001000b
        db      00010100b
        db      00100010b
        db      00100100b
        db      00011000b
        db      00001000b
        db      01000100b
        db      00111000b
        db      0,0,0,0

        db      0,0
        db      00000000b ;22
        db      01110111b
        db      00010001b
        db      00010001b
        db      00010001b
        db      01110111b
        db      01000100b
        db      01000100b
        db      01000100b
        db      01110111b
        db      0,0,0,0

        db      0,0
        db      00000000b ;23
        db      01110111b
        db      00010001b
        db      00010001b
        db      00010001b
        db      01110111b
        db      01000001b
        db      01000001b
        db      01000001b
        db      01110111b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;24
        db      01110100b
        db      00010101b
        db      00010101b
        db      00010111b
        db      01110001b
        db      01000001b
        db      01000001b
        db      01000001b
        db      01110001b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;25
        db      01110111b
        db      00010100b
        db      00010100b
        db      00010100b
        db      01110010b
        db      01000001b
        db      01000001b
        db      01000010b
        db      01110110b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;26
        db      01110111b
        db      00010100b
        db      00010100b
        db      00010100b
        db      01110111b
        db      01000101b
        db      01000101b
        db      01000101b
        db      01110111b
        db      0,0,0,0


        db      0,0
        db      00000000b  ;27
        db      11011011b
        db      10010010b
        db      10010010b
        db      10010010b
        db      11011010b
        db      10001010b
        db      10001010b
        db      10001010b
        db      11011011b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;28
        db      00000000b
        db      10000000b
        db      11111111b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b ;29
        db      00100100b
        db      01100110b
        db      11111111b
        db      01100110b
        db      00100100b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00010000b  ;30
        db      00111000b
        db      01111100b
        db      11111110b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      11111110b  ;31
        db      01111100b
        db      00111000b
        db      00010000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;32
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00111000b  ;33!
        db      00111000b
        db      00111000b
        db      00111000b
        db      00111000b
        db      00111000b
        db      00111000b
        db      00000000b
        db      00111000b
        db      00111000b
        db      0,0,0,0

        db      0,0
        db      00001001b  ;34
        db      00010010b
        db      00100100b
        db      01001000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      01100110b  ;35
        db      01100110b
        db      11111111b
        db      11111111b
        db      01100110b
        db      01100110b
        db      11111111b
        db      11111111b
        db      01100110b
        db      01100110b
        db      0,0,0,0

        db      0,0
        db      00010010b   ;36
        db      00010010b
        db      00111111b
        db      00100000b
        db      00111111b
        db      00000001b
        db      00111111b
        db      00010010b
        db      00010010b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;37
        db      00000000b
        db      01100010b
        db      01100100b
        db      00001000b
        db      00010000b
        db      00100110b
        db      01000110b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;38
        db      00111000b
        db      01000100b
        db      01000100b
        db      00111000b
        db      00110000b
        db      01001010b
        db      10000100b
        db      10001010b
        db      01010001b
        db      0,0,0,0

        db      0,0
        db      00011000b   ;39
        db      00011000b
        db      00011000b
        db      01111000b
        db      01111000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00011100b   ;40
        db      00111110b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00111100b
        db      00011110b
        db      0,0,0,0

        db      0,0
        db      00111000b   ;41
        db      01111100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00111100b
        db      01111000b
        db      0,0,0,0

        db      0,0
        db      00001000b   ;42
        db      01001001b
        db      00101010b
        db      00011100b
        db      11111111b
        db      00011100b
        db      00101010b
        db      01001001b
        db      00001000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;43
        db      00011000b
        db      00011000b
        db      00011000b
        db      11111111b
        db      11111111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;44
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00011100b
        db      00011100b
        db      00011100b
        db      01111100b
        db      01111100b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;45
        db      00000000b
        db      00000000b
        db      00000000b
        db      11111111b
        db      11111111b
        db      11111111b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;46
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00111100b
        db      00111100b
        db      00111100b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;47
        db      00000000b
        db      00000011b
        db      00000111b
        db      00001110b
        db      00011100b
        db      00111000b
        db      01110000b
        db      11100000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      01111110b   ;48
        db      11111111b
        db      11000011b
        db      11000111b
        db      11001011b
        db      11010011b
        db      11100011b
        db      11000011b
        db      11111111b
        db      01111110b
        db      0,0,0,0

        db      0,0
        db      00011100b  ;49
        db      00111100b
        db      01101100b
        db      10001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      01111000b     ;50
        db      11111100b
        db      10000110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100000b
        db      01100000b
        db      01111110b
        db      01111111b
        db      0,0,0,0

        db      0,0
        db      11111111b   ;51
        db      01111111b
        db      00000011b
        db      00000011b
        db      00111111b
        db      00011111b
        db      00000001b
        db      00000001b
        db      01111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      00001110b   ;52
        db      00011110b
        db      00110110b
        db      01100110b
        db      01100110b
        db      11111111b
        db      11111111b
        db      00011100b
        db      00011100b
        db      00011100b
        db      0,0,0,0

        db      0,0
        db      01111111b   ;53
        db      01111111b
        db      01100000b
        db      01110000b
        db      00111110b
        db      00001111b
        db      00000011b
        db      11000011b
        db      01111110b
        db      00111110b
        db      0,0,0,0

        db      0,0
        db      00111110b   ;54
        db      01100011b
        db      11000001b
        db      11000000b
        db      11000000b
        db      11011100b
        db      11111110b
        db      11000011b
        db      11111111b
        db      01111110b
        db      0,0,0,0

        db      0,0
        db      11111111b   ;55
        db      11111111b
        db      10000011b
        db      00000110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100000b
        db      11000000b
        db      10000000b
        db      0,0,0,0

        db      0,0
        db      11111111b    ;56
        db      11000011b
        db      11000011b
        db      11000011b
        db      01111110b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      11111110b   ;57
        db      11000110b
        db      11000110b
        db      11111110b
        db      11111110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      0,0,0,0

        db      0,0
        db      00011100b   ;58
        db      00011100b
        db      00011100b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00011100b
        db      00011100b
        db      00011100b
        db      0,0,0,0

        db      0,0
        db      00011100b   ;59
        db      00011100b
        db      00011100b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00001110b
        db      00011100b
        db      00111000b
        db      0,0,0,0

        db      0,0
        db      00000001b   ;60
        db      00000011b
        db      00000110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      00011000b
        db      00001100b
        db      00000110b
        db      00000011b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;61
        db      00000000b
        db      00000000b
        db      11111111b
        db      11111111b
        db      00000000b
        db      11111111b
        db      11111111b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b ;62
        db      11000000b
        db      01100000b
        db      00110000b
        db      00011000b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100000b
        db      11000000b
        db      0,0,0,0

        db      0,0
        db      01111110b   ;63
        db      11111111b
        db      11000011b
        db      11000011b
        db      00000011b
        db      00000110b
        db      00001100b
        db      00000000b
        db      00011100b
        db      00011100b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;64
        db      11111111b
        db      10000001b
        db      10000001b
        db      10011101b
        db      10011101b
        db      10000101b
        db      11111101b
        db      00000001b
        db      00111111b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;65
        db      00001000b
        db      00011100b
        db      00110110b
        db      01100011b
        db      11000011b
        db      11111111b
        db      11111111b
        db      11000011b
        db      11000011b
        db      0,0,0,0

        db      0,0
        db      01111100b
        db      01111110b    ;66
        db      11000011b
        db      11000011b
        db      11001111b
        db      11001100b
        db      11001111b
        db      11000011b
        db      11000011b
        db      11111110b
        db      0,0,0,0

        db      0,0
        db      01111111b   ;67
        db      01111110b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11111110b
        db      00111111b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      11111100b   ;68
        db      11111110b
        db      11000111b
        db      11000111b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000111b
        db      11001111b
        db      11111110b
        db      0,0,0,0

        db      0,0
        db      11111111b    ;69
        db      11111111b
        db      11000000b
        db      11000000b
        db      11111100b
        db      11111100b
        db      11000000b
        db      11000000b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      00111111b     ;70
        db      00111111b
        db      00110000b
        db      00110000b
        db      00111110b
        db      00111110b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      0,0,0,0

        db      0,0
        db      00011100b    ;71
        db      00111110b
        db      01100011b
        db      11000000b
        db      11000000b
        db      11001111b
        db      11000111b
        db      11000101b
        db      01100100b
        db      00111100b
        db      0,0,0,0

        db      0,0
        db      10000001b     ;72
        db      11000011b
        db      11000011b
        db      11000011b
        db      11111111b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      10000001b
        db      0,0,0,0

        db      0,0
        db      11111111b    ;73
        db      11111111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      01111111b   ;74
        db      01111111b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      10001100b
        db      11001100b
        db      01111000b
        db      0,0,0,0

        db      0,0
        db      11000011b    ;75
        db      11000110b
        db      11001100b
        db      11011000b
        db      11110000b
        db      11011000b
        db      11001100b
        db      11000110b
        db      11000110b
        db      11000011b
        db      0,0,0,0

        db      0,0
        db      00100000b   ;76
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00111110b
        db      00111111b
        db      0,0,0,0

        db      0,0
        db      00000000b     ;77
        db      00000000b
        db      01100110b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;78
        db      00000000b
        db      11100001b
        db      11010011b
        db      11110011b
        db      11011011b
        db      11011011b
        db      11001111b
        db      11000111b
        db      11000011b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;79
        db      00111100b
        db      01111110b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11111110b
        db      01111110b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;80
        db      01111100b
        db      01111110b
        db      01100011b
        db      01100011b
        db      01111110b
        db      01111100b
        db      01100000b
        db      01100000b
        db      01100000b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;81
        db      01111110b
        db      11111111b
        db      11000011b
        db      11000011b
        db      11011011b
        db      11001011b
        db      11111111b
        db      01111110b
        db      00000001b
        db      0,0,0,0

        db      0,0
        db      00111000b     ;82
        db      01111100b
        db      11000011b
        db      11000110b
        db      11111100b
        db      11011000b
        db      11001100b
        db      11000110b
        db      11000011b
        db      11000001b
        db      0,0,0,0

        db      0,0
        db      00011111b   ;83
        db      00111111b
        db      01110000b
        db      00110000b
        db      00011110b
        db      00000111b
        db      00000110b
        db      00001100b
        db      11111000b
        db      11110000b
        db      0,0,0,0

        db      0,0
        db      11111111b    ;84
        db      10011001b
        db      10011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      0,0,0,0

        db      0,0
        db      11000011b    ;85
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11111111b
        db      01111110b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;86
        db      10000001b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      01100011b
        db      00110110b
        db      00011100b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;87
        db      11000001b
        db      11000001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      01111111b
        db      0,0,0,0

        db      0,0
        db      10000000b   ;88
        db      11000001b
        db      01100011b
        db      00110110b
        db      00011100b
        db      00011100b
        db      00110110b
        db      01100011b
        db      11000011b
        db      00000011b
        db      0,0,0,0

        db      0,0
        db      10000001b   ;89
        db      11000011b
        db      01110110b
        db      00111110b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      0,0,0,0

        db      0,0
        db      11111111b   ;90
        db      11111111b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100000b
        db      11111111b
        db      11111111b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00111111b    ;91
        db      00111111b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00111111b
        db      00111111b
        db      0,0,0,0

        db      0,0
        db      01100000b  ;92
        db      00110000b
        db      00011000b
        db      00001100b
        db      00000110b
        db      00000011b
        db      00000001b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      11111000b  ;93
        db      11111000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      11111000b
        db      11111000b
        db      0,0,0,0

        db      0,0
        db      00010000b  ;94
        db      00111000b
        db      01101100b
        db      11000110b
        db      10000010b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;95
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      11111111b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      11000000b     ;96
        db      11100000b
        db      01110000b
        db      00111000b
        db      00011000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;97
        db      00001000b
        db      00011100b
        db      00110110b
        db      01100011b
        db      11000001b
        db      11111111b
        db      11111111b
        db      11000001b
        db      11000001b
        db      0,0,0,0

        db      0,0
        db      11111100b      ;98
        db      11111110b
        db      11000011b
        db      11000111b
        db      11001100b
        db      11000110b
        db      11000011b
        db      11000011b
        db      11111111b
        db      11111110b
        db      0,0,0,0

        db      0,0
        db      00111111b   ;99
        db      01111111b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01111111b
        db      00111111b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000010b   ;100
        db      00000110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      01111110b
        db      11100110b
        db      11000110b
        db      11111100b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;101
        db      01111111b
        db      01111110b
        db      01100000b
        db      01100000b
        db      01111100b
        db      01111100b
        db      01100000b
        db      01111111b
        db      01111111b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;102
        db      00011111b
        db      00011111b
        db      00011000b
        db      00011000b
        db      00011111b
        db      00011111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;103
        db      11111111b
        db      11111111b
        db      11000000b
        db      11000000b
        db      11001111b
        db      11001111b
        db      11000011b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;104
        db      10000001b
        db      11000011b
        db      11000011b
        db      11111111b
        db      11111111b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      0,0,0,0

        db      0,0
        db      11111111b   ;105
        db      01111110b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      01111110b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      00001110b  ;106
        db      00001110b
        db      00000000b
        db      00000110b
        db      00000110b
        db      00000110b
        db      10000110b
        db      11000110b
        db      01100110b
        db      00111100b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;107
        db      01100000b
        db      01100001b
        db      01100011b
        db      01100110b
        db      01111100b
        db      01111000b
        db      01101100b
        db      01100110b
        db      01100110b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;108
        db      00000000b
        db      00000000b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01111111b
        db      01111111b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;109
        db      00000000b
        db      00000000b
        db      00110110b
        db      11011011b
        db      11011011b
        db      11011011b
        db      11011011b
        db      11011011b
        db      11011011b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;110
        db      10001100b
        db      11011110b
        db      11110011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      0,0,0,0

        db      0,0
        db      01111110b  ;111
        db      11111111b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11111111b
        db      01111110b
        db      0,0,0,0

        db      0,0
        db      00111100b   ;112
        db      01111110b
        db      11000011b
        db      11000110b
        db      11111100b
        db      11111000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      0,0,0,0

        db      0,0
        db      00111100b  ;113
        db      01111110b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11011011b
        db      11001111b
        db      01111110b
        db      00000011b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;114
        db      11000000b
        db      11011000b
        db      11111100b
        db      11100110b
        db      11000010b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;115
        db      00011111b
        db      00110000b
        db      00110000b
        db      00111110b
        db      00011111b
        db      00000011b
        db      00000011b
        db      00111111b
        db      01111110b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;116
        db      00000000b
        db      11111111b
        db      01111110b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;117
        db      00000000b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      01111110b
        db      00111100b
        db      0,0,0,0

        db      0,0
        db      10000001b    ;118
        db      10000001b
        db      10000011b
        db      11000011b
        db      01100011b
        db      00110110b
        db      00011100b
        db      00001000b
        db      00001000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      11000011b    ;87
        db      11000011b
        db      11000011b
        db      11011011b
        db      11011011b
        db      01111111b
        db      00110110b
        db      00110110b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b ;120
        db      10000001b
        db      11000011b
        db      01100110b
        db      00111100b
        db      00011000b
        db      00111100b
        db      01100110b
        db      11000011b
        db      11000001b
        db      0,0,0,0

        db      0,0
        db      00000000b ;121
        db      10000001b
        db      11000001b
        db      01100011b
        db      00110110b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      0,0,0,0

        db      0,0
        db      00000000b ;122
        db      11111110b
        db      11111110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01111111b
        db      11111111b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000111b ;123
        db      00001100b
        db      00011000b
        db      00011000b
        db      01111000b
        db      01111000b
        db      00011000b
        db      00011000b
        db      00001100b
        db      00000111b
        db      0,0,0,0

        db      0,0
        db      00011100b ;124
        db      00011100b
        db      00011100b
        db      00011100b
        db      00011100b
        db      00011100b
        db      00011100b
        db      00011100b
        db      00011100b
        db      00011100b
        db      0,0,0,0

        db      0,0
        db      11100000b ;125
        db      00110000b
        db      00011000b
        db      00011000b
        db      00011110b
        db      00011110b
        db      00011000b
        db      00011000b
        db      00110000b
        db      11100000b
        db      0,0,0,0

        db      0,0
        db      11000100b ;126
        db      01101110b
        db      00111011b
        db      00010001b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;127
        db      00001000b
        db      00011100b
        db      00110110b
        db      01100011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      00000000b     ;0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

;======================================================================
NewFont1  db      0,0
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00010000b
        db      00000000b
        db      00000000b
        db      00011000b
        db      00111100b
        db      00011000b
        db      0,0,0,0
        ;"
        db      0,0
        db      01100110b
        db      01100110b
        db      01100110b
        db      11001100b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;#
        db      0,0
        db      00100100b
        db      00100100b
        db      00100100b
        db      11111111b
        db      00100100b
        db      00100100b
        db      11111111b
        db      00100100b
        db      00100100b
        db      00100100b
        db      0,0,0,0
        ;$
        db      0,0
        db      00001000b
        db      00001000b
        db      00011111b
        db      00101000b
        db      00101000b
        db      00111100b
        db      00001010b
        db      00001001b
        db      01111110b
        db      00001000b
        db      00001000b
        db      0,0,0
        ;%
        db      0,0
        db      00000010b
        db      00000110b
        db      01000010b
        db      11100100b
        db      00001000b
        db      00010000b
        db      00100000b
        db      01001110b
        db      11000100b
        db      10000000b
        db      0,0,0,0
        ;&
        db      0,0
        db      01111000b
        db      10000100b
        db      10000100b
        db      01001000b
        db      00110000b
        db      00110001b
        db      01001010b
        db      10000100b
        db      10001010b
        db      01111001b
        db      0,0,0,0
        ;`
        db      0,0
        db      00111100b
        db      00011000b
        db      00110000b
        db      00100000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;(
        db      0,0
        db      00000110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      00100000b
        db      00100000b
        db      00110000b
        db      00011000b
        db      00001100b
        db      00000110b
        db      0,0,0,0
        ;)
        db      0,0
        db      11000000b
        db      01100000b
        db      00110000b
        db      00011000b
        db      00001000b
        db      00001000b
        db      00011000b
        db      00110000b
        db      01100000b
        db      11000000b
        db      0,0,0,0
        ;*
        db      0,0,0
        db      10001001b
        db      10001001b
        db      01001010b
        db      00101100b
        db      11111000b
        db      00011111b
        db      00110100b
        db      01010010b
        db      10010001b
        db      10010001b
        db      0,0,0
        ;+
        db      0,0
        db      00000000b
        db      00000000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      11111111b
        db      11111111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      0,0,0,0
        ;,
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000010b
        db      00011110b
        db      00001100b
        db      00011000b
        db      0,0,0
        ;-
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      11111111b
        db      11111111b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;.
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00001000b
        db      00111100b
        db      01111110b
        db      0,0,0,0
        ;/
        db      0,0
        db      00000011b
        db      00000111b
        db      00000011b
        db      00000110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100000b
        db      11100000b
        db      11000000b
        db      0,0,0,0
        ;0
        db      0,0
        db      01111100b
        db      11000110b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11010001b
        db      11010001b
        db      11100001b
        db      01100110b
        db      10111100b
        db      0,0,0,0
        ;1
        db      0,0
        db      00011000b
        db      00111100b
        db      01101100b
        db      10001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      11111111b
        db      0,0,0,0
        ;2
        db      0,0
        db      01111000b
        db      10001110b
        db      00000011b
        db      00000110b
        db      00011100b
        db      00110000b
        db      01100000b
        db      11000000b
        db      11000001b
        db      01111111b
        db      0,0,0,0
        ;3
        db      0,0
        db      11111110b
        db      10000110b
        db      00000110b
        db      00001100b
        db      00111000b
        db      00001100b
        db      00000111b
        db      00000011b
        db      11000111b
        db      01111100b
        db      0,0,0,0
        ;4
        db      0,0
        db      01000100b
        db      01000100b
        db      11001100b
        db      11001100b
        db      11001100b
        db      11111111b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00000100b
        db      0,0,0,0
        ;5
        db      0,0
        db      11111111b
        db      11111111b
        db      11000000b
        db      11000000b
        db      11111100b
        db      01111110b
        db      00000110b
        db      00000110b
        db      11111110b
        db      11111100b
        db      0,0,0,0
        ;6
        db      0,0
        db      00111110b
        db      01100010b
        db      11000000b
        db      11000000b
        db      11111100b
        db      11000110b
        db      10000011b
        db      10000011b
        db      11111111b
        db      01111110b
        db      0,0,0,0
        ;7
        db      0,0
        db      11111110b
        db      11111111b
        db      11000011b
        db      10000111b
        db      00001110b
        db      00011100b
        db      00111000b
        db      00111000b
        db      00111000b
        db      00111100b
        db      0,0,0,0
        ;8
        db      0,0
        db      01111100b
        db      11000110b
        db      11000110b
        db      01101100b
        db      00111000b
        db      00111100b
        db      01101110b
        db      11000111b
        db      11000111b
        db      01111110b
        db      0,0,0,0
        ;9
        db      0,0
        db      01111100b
        db      11000110b
        db      11000011b
        db      11000011b
        db      11100011b
        db      00111111b
        db      00000111b
        db      10001110b
        db      11111110b
        db      11111100b
        db      0,0,0,0
        ;:
        db      0,0
        db      00000000b
        db      00000000b
        db      00111110b
        db      00111110b
        db      00111110b
        db      00000000b
        db      00000000b
        db      00111110b
        db      00111110b
        db      00111110b
        db      0,0,0,0
        ;;
        db      0,0
        db      00000000b
        db      00000000b
        db      00011100b
        db      00011100b
        db      00011100b
        db      00000000b
        db      00000000b
        db      00011110b
        db      00011100b
        db      00111000b
        db      0,0,0,0
        ;<
        db      0,0
        db      00001111b
        db      00011100b
        db      00110000b
        db      01100000b
        db      11000000b
        db      11000000b
        db      01100000b
        db      00110000b
        db      00011100b
        db      00001111b
        db      0,0,0,0
        ;=
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      01111110b
        db      01111110b
        db      00000000b
        db      00000000b
        db      01111110b
        db      01111110b
        db      00000000b
        db      0,0,0,0
        ;>
        db      0,0
        db      11100000b
        db      01110000b
        db      00011000b
        db      00001100b
        db      00000110b
        db      00000110b
        db      00001100b
        db      00011000b
        db      01110000b
        db      11100000b
        db      0,0,0,0
        ;?
        db      0,0
        db      01111110b
        db      11110011b
        db      01100011b
        db      00000111b
        db      00001110b
        db      00011100b
        db      00000000b
        db      00011000b
        db      00111100b
        db      00011000b
        db      0,0,0,0
        ;@
        db      0,0
        db      00111100b
        db      01000011b
        db      10000001b
        db      10011000b
        db      10100110b
        db      10100011b
        db      10101011b
        db      10010011b
        db      11000011b
        db      01111110b
        db      0,0,0,0
        ;A
        db      0,0
        db      00011000b
        db      00111100b
        db      01100110b
        db      01100110b
        db      01100110b
        db      01111110b
        db      01111110b
        db      01111110b
        db      01100110b
        db      01100110b
        db      0,0,0,0
        ;B
        db      0,0
        db      11111100b
        db      11101110b
        db      11100111b
        db      11100011b
        db      11100110b
        db      11111110b
        db      11100111b
        db      11100011b
        db      11100111b
        db      11111110b
        db      0,0,0,0
        ;C
        db      0,0
        db      00111100b
        db      01100110b
        db      11100111b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11100111b
        db      01100110b
        db      00111100b
        db      0,0,0,0
        ;D
        db      0,0
        db      11100000b
        db      11111000b
        db      11111100b
        db      11101110b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11111110b
        db      11111100b
        db      0,0,0,0
        ;E
        db      0,0
        db      11111111b
        db      11111111b
        db      11000011b
        db      11000000b
        db      11111000b
        db      11111000b
        db      11000000b
        db      11000011b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;F
        db      0,0
        db      11111111b
        db      01111111b
        db      01100001b
        db      01100000b
        db      11111100b
        db      01111100b
        db      01100000b
        db      01100000b
        db      11110000b
        db      11110000b
        db      0,0,0,0
        ;G
        db      0,0
        db      00011110b
        db      00111111b
        db      01100011b
        db      11000000b
        db      11000000b
        db      11001110b
        db      11001111b
        db      11000011b
        db      01100011b
        db      00111110b
        db      0,0,0,0
        ;H
        db      0,0
        db      11100111b
        db      11100111b
        db      11100111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      0,0,0,0
        ;I
        db      0,0
        db      11111111b
        db      11111111b
        db      00111100b
        db      00111100b
        db      00111100b
        db      00111100b
        db      00111100b
        db      00111100b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;J
        db      0,0
        db      11111111b
        db      11111111b
        db      00001110b
        db      00001110b
        db      00001110b
        db      00001110b
        db      11001110b
        db      11001110b
        db      11001110b
        db      01111100b
        db      0,0,0,0
        ;K
        db      0,0
        db      11100011b
        db      11100111b
        db      11101110b
        db      11101110b
        db      11111100b
        db      11111100b
        db      11101110b
        db      11100110b
        db      11100111b
        db      11100011b
        db      0,0,0,0
        ;L
        db      0,0
        db      01110000b
        db      01110000b
        db      01110000b
        db      01110000b
        db      01110000b
        db      01110000b
        db      01110000b
        db      01111100b
        db      01111111b
        db      01111111b
        db      0,0,0,0
        ;M
        db      0,0
        db      10011001b
        db      11111111b
        db      11111111b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      0,0,0,0
        ;N
        db      0,0
        db      11000011b
        db      11000011b
        db      11100011b
        db      11100011b
        db      11111011b
        db      11011111b
        db      11000111b
        db      11000011b
        db      11000011b
        db      11000011b
        db      0,0,0,0
        ;O
        db      0,0
        db      01111100b
        db      11111110b
        db      11111111b
        db      11100111b
        db      11000011b
        db      11000011b
        db      11100111b
        db      11111111b
        db      11111110b
        db      01111100b
        db      0,0,0,0
        ;P
        db      0,0
        db      11111110b
        db      01100111b
        db      01100011b
        db      01100011b
        db      11100111b
        db      01111110b
        db      01100000b
        db      01100000b
        db      01100000b
        db      11110000b
        db      0,0,0,0
        ;Q
        db      0,0
        db      01111100b
        db      11000010b
        db      11000010b
        db      10000010b
        db      10000010b
        db      10110010b
        db      10111010b
        db      10001110b
        db      11000110b
        db      01111011b
        db      0,0,0,0
        ;R
        db      0,0
        db      11111100b
        db      01111110b
        db      01100111b
        db      01100111b
        db      11100110b
        db      01111100b
        db      01101100b
        db      01100110b
        db      01100111b
        db      11100111b
        db      0,0,0,0
        ;S
        db      0,0
        db      00111100b
        db      01111110b
        db      11100011b
        db      11100001b
        db      01101000b
        db      00111100b
        db      00001110b
        db      10000111b
        db      11111111b
        db      11111110b
        db      0,0,0,0
        ;T
        db      0,0
        db      11111111b
        db      11111111b
        db      10011001b
        db      10011001b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      01111110b
        db      0,0,0,0
        ;U
        db      0,0
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      01111110b
        db      00111100b
        db      0,0,0,0
        ;V
        db      0,0
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000111b
        db      11001110b
        db      11001100b
        db      11011000b
        db      11100000b
        db      0,0,0,0
        ;W
        db      0,0
        db      10000001b
        db      10000001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      11111111b
        db      10011001b
        db      0,0,0,0
        ;X
        db      0,0
        db      11000011b
        db      11100111b
        db      11100111b
        db      11100111b
        db      01111110b
        db      00111100b
        db      01111110b
        db      11110111b
        db      11100111b
        db      11000011b
        db      0,0,0,0
        ;Y
        db      0,0
        db      11000011b
        db      11100011b
        db      11100111b
        db      11100111b
        db      11100111b
        db      01111110b
        db      00011000b
        db      00011000b
        db      10011000b
        db      11110000b
        db      0,0,0,0
        ;Z
        db      0,0
        db      11111111b
        db      10000011b
        db      00000011b
        db      00000111b
        db      00001110b
        db      00011100b
        db      00111000b
        db      01110000b
        db      11110011b
        db      11111111b
        db      0,0,0,0
        ;[
        db      0,0
        db      01000000b
        db      11111111b
        db      01111111b
        db      01111111b
        db      01110000b
        db      01110000b
        db      01111111b
        db      01111111b
        db      11111111b
        db      01000000b
        db      0,0,0,0
        ;\
        db      0,0
        db      11100000b
        db      11110000b
        db      11100000b
        db      01110000b
        db      00111000b
        db      00011100b
        db      00001110b
        db      00000111b
        db      00000111b
        db      00000011b
        db      0,0,0,0
        ;]
        db      0,0
        db      00000100b
        db      11111110b
        db      11111100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      11111100b
        db      11111110b
        db      00000100b
        db      0,0,0,0
        ;
        db      0,0
        db      00101000b
        db      00111000b
        db      01101100b
        db      11000110b
        db      11000111b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;-
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      11111111b
        db      11111111b
        db      11111111b
        db      0,0,0
        ;`
        db      0,0
        db      00111000b
        db      00111000b
        db      00011100b
        db      00000100b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        ;A
        db      0,0
        db      00011000b
        db      00111100b
        db      01100110b
        db      01100110b
        db      01111110b
        db      01111110b
        db      01111110b
        db      01100110b
        db      01100110b
        db      01100110b
        db      0,0,0,0
        ;B
        db      0,0
        db      11111100b
        db      11101110b
        db      11000111b
        db      11000011b
        db      11000110b
        db      11111110b
        db      11000111b
        db      11000011b
        db      11000111b
        db      11111110b
        db      0,0,0,0
        ;C
        db      0,0
        db      00111100b
        db      01100110b
        db      11100111b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11100111b
        db      01100110b
        db      00111100b
        db      0,0,0,0
        ;D
        db      0,0
        db      11100000b
        db      11111000b
        db      11111100b
        db      11001110b
        db      11000111b
        db      11000111b
        db      11000111b
        db      11000111b
        db      11111110b
        db      11111100b
        db      0,0,0,0
        ;E
        db      0,0
        db      11111111b
        db      11111111b
        db      11000011b
        db      11000000b
        db      11111000b
        db      11111000b
        db      11000000b
        db      11000011b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;F
        db      0,0
        db      11111111b
        db      01111111b
        db      01100001b
        db      01100000b
        db      11111100b
        db      01111100b
        db      01100000b
        db      01100000b
        db      11110000b
        db      11110000b
        db      0,0,0,0
        ;G
        db      0,0
        db      00011110b
        db      00111111b
        db      01100011b
        db      11000000b
        db      11000000b
        db      11001110b
        db      11001111b
        db      11000011b
        db      01100011b
        db      00111110b
        db      0,0,0,0
        ;H
        db      0,0
        db      11100111b
        db      11100111b
        db      11100111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      0,0,0,0
        ;I
        db      0,0
        db      11111111b
        db      11111111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;J
        db      0,0
        db      11111111b
        db      11111111b
        db      00001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      11001100b
        db      11001100b
        db      11001100b
        db      01111100b
        db      0,0,0,0
        ;K
        db      0,0
        db      11000011b
        db      11000111b
        db      11001110b
        db      11001110b
        db      11111000b
        db      11111000b
        db      11011110b
        db      11001111b
        db      11000111b
        db      11000011b
        db      0,0,0,0
        ;L
        db      0,0
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110000b
        db      00110001b
        db      00111111b
        db      00111111b
        db      0,0,0,0
        ;M
        db      0,0
        db      10011001b
        db      11111111b
        db      11111111b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      0,0,0,0
        ;N
        db      0,0
        db      11000011b
        db      11000011b
        db      11100011b
        db      11100011b
        db      11111011b
        db      11011111b
        db      11000111b
        db      11000011b
        db      11000011b
        db      11000011b
        db      0,0,0,0
        ;O
        db      0,0
        db      01111100b
        db      11111110b
        db      11111111b
        db      11100111b
        db      11000011b
        db      11000011b
        db      11100011b
        db      11100111b
        db      11111110b
        db      01111100b
        db      0,0,0,0
        ;P
        db      0,0
        db      11111110b
        db      01100111b
        db      01100011b
        db      01100011b
        db      11100111b
        db      01111111b
        db      01111110b
        db      01100000b
        db      01100000b
        db      11110000b
        db      0,0,0,0
        ;Q
        db      0,0
        db      01111100b
        db      11000010b
        db      11000010b
        db      10000010b
        db      10000010b
        db      10110010b
        db      10111010b
        db      10001110b
        db      11000110b
        db      01111011b
        db      0,0,0,0
        ;R
        db      0,0
        db      11111100b
        db      01111110b
        db      01100111b
        db      01100111b
        db      11100110b
        db      01111100b
        db      01101100b
        db      01100110b
        db      01100111b
        db      11100111b
        db      0,0,0,0
        ;S
        db      0,0
        db      01111100b
        db      11111110b
        db      11100011b
        db      11100001b
        db      01101000b
        db      00111100b
        db      00001110b
        db      10000111b
        db      11111111b
        db      11111110b
        db      0,0,0,0
        ;T
        db      0,0
        db      11111111b
        db      11111111b
        db      11111111b
        db      10011001b
        db      10011001b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      01111110b
        db      0,0,0,0
        ;U
        db      0,0
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      01111110b
        db      00111100b
        db      0,0,0,0
        ;V
        db      0,0
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000111b
        db      11001111b
        db      11001110b
        db      11011100b
        db      01110000b
        db      0,0,0,0
        ;W
        db      0,0
        db      10000001b
        db      10000001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      10011001b
        db      11111111b
        db      10011001b
        db      0,0,0,0
        ;X
        db      0,0
        db      11000001b
        db      11100011b
        db      11100011b
        db      01100011b
        db      00111110b
        db      00111100b
        db      01111110b
        db      11101111b
        db      11100111b
        db      11000011b
        db      0,0,0,0
        ;Y
        db      0,0
        db      11000011b
        db      11100011b
        db      11100111b
        db      11100111b
        db      11100111b
        db      01111110b
        db      00011100b
        db      00011100b
        db      10011100b
        db      11111000b
        db      0,0,0,0
        ;Z
        db      0,0
        db      11111111b
        db      10000011b
        db      10000011b
        db      00000111b
        db      00001110b
        db      00011100b
        db      00111000b
        db      01110001b
        db      11110011b
        db      11111111b
        db      0,0,0,0


        ;{
        db      0,0
        db      00001100b
        db      00010000b
        db      00010000b
        db      00010000b
        db      01100000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00001100b
        db      0,0,0,0
        ;|
        db      0,0
        db      00000000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00000000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      0,0,0,0
        ;}
        db      0,0
        db      11000000b
        db      00100000b
        db      00100000b
        db      00100000b
        db      00011000b
        db      00100000b
        db      00100000b
        db      00100000b
        db      00100000b
        db      11000000b
        db      0,0,0,0
        ;~
        db      0,0
        db      01010100b
        db      10101010b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
;======================================================================
NewFont2  db      0,0
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00000000b
        db      00011100b
        db      00011100b
        db      00011100b
        db      0,0,0,0
        ;"
        db      0,0
        db      00100100b
        db      00100100b
        db      00100100b
        db      01001000b
        db      10010000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;#
        db      0,0
        db      00100100b
        db      00100100b
        db      00100100b
        db      11111111b
        db      00100100b
        db      00100100b
        db      11111111b
        db      00100100b
        db      00100100b
        db      00100100b
        db      0,0,0,0
        ;$
        db      0,0
        db      00010000b
        db      00111110b
        db      01010001b
        db      01010000b
        db      01010000b
        db      00111000b
        db      00010100b
        db      00010100b
        db      10010100b
        db      01111000b
        db      00010000b
        db      0,0,0
        ;%
        db      0,0
        db      00000011b
        db      00000110b
        db      01000010b
        db      11100100b
        db      01001000b
        db      00010000b
        db      00100100b
        db      01001110b
        db      11000100b
        db      10000000b
        db      0,0,0,0
        ;&
        db      0,0
        db      01111000b
        db      10000100b
        db      10000100b
        db      01001000b
        db      00110001b
        db      00110001b
        db      01001010b
        db      10000100b
        db      10001010b
        db      01111001b
        db      0,0,0,0
        ;`
        db      0,0
        db      00111000b
        db      00010000b
        db      00100000b
        db      01000000b
        db      10000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;(
        db      0,0
        db      00000111b
        db      00001000b
        db      00010000b
        db      00100000b
        db      01100000b
        db      01100000b
        db      00100000b
        db      00010000b
        db      00001000b
        db      00000111b
        db      0,0,0,0
        ;)
        db      0,0
        db      11000000b
        db      00100000b
        db      00010000b
        db      00001000b
        db      00001100b
        db      00001100b
        db      00001000b
        db      00010000b
        db      00100000b
        db      11000000b
        db      0,0,0,0
        ;*
        db      0,0,0
        db      10000010b
        db      01000100b
        db      00101000b
        db      00010000b
        db      11111110b
        db      00010000b
        db      00101000b
        db      01000100b
        db      10000010b
        db      00000000b
        db      0,0,0
        ;+
        db      0,0
        db      00000000b
        db      00000000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      11111110b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00000000b
        db      0,0,0,0
        ;,
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000100b
        db      00011100b
        db      00001000b
        db      00010000b
        db      0,0,0
        ;-
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      01111110b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;.
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00001000b
        db      00011000b
        db      00111100b
        db      0,0,0,0
        ;/
        db      0,0
        db      00000011b
        db      00000110b
        db      00000010b
        db      00000100b
        db      00001000b
        db      00010000b
        db      00100000b
        db      01000000b
        db      11000000b
        db      10000000b
        db      0,0,0,0
        ;0
        db      0,0
        db      00111010b
        db      01000100b
        db      10001010b
        db      10001010b
        db      10001010b
        db      10010010b
        db      10010010b
        db      10100010b
        db      01100100b
        db      10111000b
        db      0,0,0,0
        ;1
        db      0,0
        db      00010000b
        db      00101000b
        db      01001000b
        db      10001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      11111111b
        db      0,0,0,0
        ;2
        db      0,0
        db      01111000b
        db      10000100b
        db      10000010b
        db      00000100b
        db      00011000b
        db      00100000b
        db      01000000b
        db      10000000b
        db      10000000b
        db      11111111b
        db      0,0,0,0
        ;3
        db      0,0
        db      11111111b
        db      10000010b
        db      00000010b
        db      00000100b
        db      01111000b
        db      00000100b
        db      00000010b
        db      10000010b
        db      10000010b
        db      01111100b
        db      0,0,0,0
        ;4
        db      0,0
        db      10000000b
        db      10001000b
        db      01001000b
        db      01001000b
        db      01001000b
        db      11111111b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001100b
        db      0,0,0,0
        ;5
        db      0,0
        db      11111110b
        db      01000001b
        db      01000000b
        db      01000000b
        db      00111100b
        db      00000010b
        db      00000010b
        db      01000010b
        db      01000010b
        db      01111100b
        db      0,0,0,0
        ;6
        db      0,0
        db      00011110b
        db      00100000b
        db      01000000b
        db      10000000b
        db      10000000b
        db      10111100b
        db      11000010b
        db      10000010b
        db      01000100b
        db      00111000b
        db      0,0,0,0
        ;7
        db      0,0
        db      01111110b
        db      10000010b
        db      10000010b
        db      00000010b
        db      00000100b
        db      00001000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00011100b
        db      0,0,0,0
        ;8
        db      0,0
        db      01111100b
        db      10000010b
        db      01000100b
        db      00101000b
        db      00010000b
        db      00010000b
        db      00101000b
        db      01000100b
        db      10000010b
        db      01111100b
        db      0,0,0,0
        ;9
        db      0,0
        db      01111000b
        db      10000100b
        db      10000010b
        db      10000010b
        db      01111110b
        db      00000010b
        db      00000010b
        db      10000100b
        db      10000100b
        db      01111000b
        db      0,0,0,0
        ;:
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00011000b
        db      00011000b
        db      00000000b
        db      00000000b
        db      00011000b
        db      00011000b
        db      00000000b
        db      0,0,0,0
        ;;
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00011000b
        db      00011000b
        db      00000000b
        db      00000000b
        db      00011000b
        db      00010000b
        db      01100000b
        db      0,0,0,0
        ;<
        db      0,0
        db      00001111b
        db      00010000b
        db      00100000b
        db      01000000b
        db      10000000b
        db      10000000b
        db      01000000b
        db      00100000b
        db      00010000b
        db      00001111b
        db      0,0,0,0
        ;=
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      01111110b
        db      00000000b
        db      00000000b
        db      01111110b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;>
        db      0,0
        db      11100000b
        db      00010000b
        db      00001000b
        db      00000100b
        db      00000010b
        db      00000011b
        db      00000100b
        db      00001000b
        db      00010000b
        db      11100000b
        db      0,0,0,0
        ;?
        db      0,0
        db      01111100b
        db      10000010b
        db      01000010b
        db      01000100b
        db      00001000b
        db      00010000b
        db      00010000b
        db      00000000b
        db      00001000b
        db      00011000b
        db      0,0,0,0
        ;@
        db      0,0
        db      00111100b
        db      01000010b
        db      10000010b
        db      10011000b
        db      10100100b
        db      10100010b
        db      10101010b
        db      10010010b
        db      01000010b
        db      00111100b
        db      0,0,0,0
        ;A
        db      0,0
        db      01100000b
        db      01010000b
        db      01010000b
        db      01001000b
        db      01001000b
        db      11111110b
        db      01000100b
        db      01000100b
        db      01000010b
        db      01000010b
        db      0,0,0,0
        ;B
        db      0,0
        db      11110000b
        db      01001000b
        db      01000100b
        db      01000011b
        db      01000100b
        db      11111000b
        db      01000100b
        db      01000011b
        db      01000100b
        db      11111000b
        db      0,0,0,0
        ;C
        db      0,0
        db      00111000b
        db      01000100b
        db      10000010b
        db      10000010b
        db      10000000b
        db      10000000b
        db      10000000b
        db      10000010b
        db      01000100b
        db      00111000b
        db      0,0,0,0
        ;D
        db      0,0
        db      11100000b
        db      01010000b
        db      01001000b
        db      01000100b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000011b
        db      01000100b
        db      11111000b
        db      0,0,0,0
        ;E
        db      0,0
        db      11111111b
        db      01000001b
        db      01000001b
        db      01001000b
        db      01111000b
        db      01001000b
        db      01000000b
        db      01000001b
        db      01000001b
        db      11111111b
        db      0,0,0,0
        ;F
        db      0,0
        db      11111111b
        db      01000000b
        db      01000000b
        db      01000000b
        db      11111100b
        db      01000100b
        db      01000000b
        db      01000000b
        db      01000000b
        db      11100000b
        db      0,0,0,0
        ;G
        db      0,0
        db      00011100b
        db      00100010b
        db      01000000b
        db      10000000b
        db      10001110b
        db      10010010b
        db      10010010b
        db      10000010b
        db      01000010b
        db      00111100b
        db      0,0,0,0
        ;H
        db      0,0
        db      01100110b
        db      01000010b
        db      01000010b
        db      01000010b
        db      11111110b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01100111b
        db      0,0,0,0
        ;I
        db      0,0
        db      11111110b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      11111111b
        db      0,0,0,0
        ;J
        db      0,0
        db      11111111b
        db      00000101b
        db      00000100b
        db      00000100b
        db      00000100b
        db      10000100b
        db      10000100b
        db      10001000b
        db      01010000b
        db      00100000b
        db      0,0,0,0
        ;K
        db      0,0
        db      01000110b
        db      01000100b
        db      01001000b
        db      01001000b
        db      11110000b
        db      01001000b
        db      01001000b
        db      01000100b
        db      01000100b
        db      11100111b
        db      0,0,0,0
        ;L
        db      0,0
        db      11000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000111b
        db      11111000b
        db      0,0,0,0
        ;M
        db      0,0
        db      01001001b
        db      01111111b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01000001b
        db      11000001b
        db      0,0,0,0
        ;N
        db      0,0
        db      11000111b
        db      01000011b
        db      01100010b
        db      01100010b
        db      01010010b
        db      01010010b
        db      01001010b
        db      01001010b
        db      01000110b
        db      11000110b
        db      0,0,0,0
        ;O
        db      0,0
        db      00111100b
        db      01000010b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      01000010b
        db      00111100b
        db      0,0,0,0
        ;P
        db      0,0
        db      11111000b
        db      01000100b
        db      01000010b
        db      01000010b
        db      11000100b
        db      01111000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      11110000b
        db      0,0,0,0
        ;Q
        db      0,0
        db      00111000b
        db      01000100b
        db      10000010b
        db      10000010b
        db      10010010b
        db      10010010b
        db      10001010b
        db      10001010b
        db      01000100b
        db      00111011b
        db      0,0,0,0
        ;R
        db      0,0
        db      11111000b
        db      01000100b
        db      01000010b
        db      01000001b
        db      11111110b
        db      01010000b
        db      01001000b
        db      01000100b
        db      01000011b
        db      11100011b
        db      0,0,0,0
        ;S
        db      0,0
        db      00111000b
        db      01000100b
        db      10000100b
        db      10000100b
        db      01000000b
        db      00110000b
        db      00001100b
        db      10000010b
        db      10000010b
        db      11111100b
        db      0,0,0,0
        ;T
        db      0,0
        db      11111110b
        db      10010010b
        db      10010010b
        db      00010010b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00111000b
        db      0,0,0,0
        ;U
        db      0,0
        db      01000110b
        db      01000010b
        db      01000010b
        db      11000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01100110b
        db      00011000b
        db      0,0,0,0
        ;V
        db      0,0
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      01000010b
        db      01000010b
        db      00100100b
        db      00101000b
        db      00010000b
        db      0,0,0,0
        ;W
        db      0,0
        db      11000001b
        db      01000001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01111111b
        db      01001001b
        db      0,0,0,0
        ;X
        db      0,0
        db      10000001b
        db      01000001b
        db      00100001b
        db      00100010b
        db      00010100b
        db      00001000b
        db      00010100b
        db      00100010b
        db      01000001b
        db      11000001b
        db      0,0,0,0
        ;Y
        db      0,0
        db      11000111b
        db      01000100b
        db      01000100b
        db      01000100b
        db      01000100b
        db      00111100b
        db      00001000b
        db      00001000b
        db      00010000b
        db      11100000b
        db      0,0,0,0
        ;Z
        db      0,0
        db      11111110b
        db      10100010b
        db      00000010b
        db      00000100b
        db      00001000b
        db      00010000b
        db      00100000b
        db      01000010b
        db      10000010b
        db      11111110b
        db      0,0,0,0
        ;[
        db      0,0
        db      01000000b
        db      11111111b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      11111111b
        db      01000000b
        db      0,0,0,0
        ;\
        db      0,0
        db      10000000b
        db      11000000b
        db      10000000b
        db      01000000b
        db      00100000b
        db      00010000b
        db      00001000b
        db      00000100b
        db      00000110b
        db      00000011b
        db      0,0,0,0
        ;]
        db      0,0
        db      00000100b
        db      11111111b
        db      00000100b
        db      00000100b
        db      00000100b
        db      00000100b
        db      00000100b
        db      00000100b
        db      11111111b
        db      00000100b
        db      0,0,0,0
        ;
        db      0,0
        db      00101000b
        db      00010000b
        db      00101000b
        db      01000100b
        db      11000110b
        db      10000010b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;-
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000001b
        db      11111111b
        db      0,0,0
        ;`
        db      0,0
        db      00111000b
        db      00010000b
        db      00001000b
        db      00000100b
        db      00000010b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;A
        db      0,0
        db      01100000b
        db      01010000b
        db      01010000b
        db      01001000b
        db      01001000b
        db      11111110b
        db      01000100b
        db      01000100b
        db      01000010b
        db      01000010b
        db      0,0,0,0
        ;B
        db      0,0
        db      11110000b
        db      01001000b
        db      01000100b
        db      01000011b
        db      01000100b
        db      11111000b
        db      01000100b
        db      01000011b
        db      01000100b
        db      11111000b
        db      0,0,0,0
        ;C
        db      0,0
        db      00111000b
        db      01000100b
        db      10000010b
        db      10000000b
        db      10000000b
        db      10000000b
        db      10000010b
        db      10000010b
        db      01000100b
        db      00111000b
        db      0,0,0,0
        ;D
        db      0,0
        db      11100000b
        db      01010000b
        db      01001000b
        db      01000100b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000100b
        db      11111000b
        db      0,0,0,0
        ;E
        db      0,0
        db      11111111b
        db      01000001b
        db      01000001b
        db      01001000b
        db      01111000b
        db      01001000b
        db      01000000b
        db      01000001b
        db      01000001b
        db      11111111b
        db      0,0,0,0
        ;F
        db      0,0
        db      11111100b
        db      01000011b
        db      01000000b
        db      01000000b
        db      11111100b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      11000000b
        db      0,0,0,0
        ;G
        db      0,0
        db      00011100b
        db      00100011b
        db      01000000b
        db      10000000b
        db      10001110b
        db      10010010b
        db      10010010b
        db      10000010b
        db      01000010b
        db      00111100b
        db      0,0,0,0
        ;H
        db      0,0
        db      01100110b
        db      01000010b
        db      01000010b
        db      01000010b
        db      11111110b
        db      01000110b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01100111b
        db      0,0,0,0
        ;I
        db      0,0
        db      11111111b
        db      10010001b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      10010001b
        db      11111111b
        db      0,0,0,0
        ;J
        db      0,0
        db      11111111b
        db      10000100b
        db      00000100b
        db      00000100b
        db      00000100b
        db      10000100b
        db      10000100b
        db      10001000b
        db      01010000b
        db      00100000b
        db      0,0,0,0
        ;K
        db      0,0
        db      01000110b
        db      01000100b
        db      01001000b
        db      01001000b
        db      11110000b
        db      01001000b
        db      01001000b
        db      01000100b
        db      01000100b
        db      11100111b
        db      0,0,0,0
        ;L
        db      0,0
        db      11000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      01000111b
        db      11111100b
        db      0,0,0,0
        ;M
        db      0,0
        db      11001001b
        db      01111111b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01000001b
        db      11000001b
        db      0,0,0,0
        ;N
        db      0,0
        db      11000111b
        db      01000010b
        db      01100010b
        db      01100010b
        db      01010010b
        db      01010010b
        db      01001010b
        db      01001010b
        db      01000110b
        db      11000110b
        db      0,0,0,0
        ;O
        db      0,0
        db      00111000b
        db      01000100b
        db      10000010b
        db      10000010b
        db      10101010b
        db      10000010b
        db      10000010b
        db      10000010b
        db      01000100b
        db      00111000b
        db      0,0,0,0
        ;P
        db      0,0
        db      11111000b
        db      01000100b
        db      01000010b
        db      01000010b
        db      11000100b
        db      01111000b
        db      01000000b
        db      01000000b
        db      01000000b
        db      11100000b
        db      0,0,0,0
        ;Q
        db      0,0
        db      00111000b
        db      01000100b
        db      10000010b
        db      10000010b
        db      10010010b
        db      10010010b
        db      10001010b
        db      10001010b
        db      01000100b
        db      00111010b
        db      0,0,0,0
        ;R
        db      0,0
        db      11111000b
        db      01000100b
        db      01000010b
        db      01000010b
        db      11111100b
        db      01010000b
        db      01001000b
        db      01000100b
        db      01000010b
        db      11100011b
        db      0,0,0,0
        ;S
        db      0,0
        db      00111000b
        db      01000100b
        db      10000100b
        db      10000100b
        db      01000000b
        db      00110000b
        db      00001100b
        db      10000010b
        db      10000010b
        db      11111100b
        db      0,0,0,0
        ;T
        db      0,0
        db      11111110b
        db      10010010b
        db      10010010b
        db      00010010b
        db      00010010b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00111000b
        db      0,0,0,0
        ;U
        db      0,0
        db      01000110b
        db      01000010b
        db      01000010b
        db      11000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01000010b
        db      01100110b
        db      00011000b
        db      0,0,0,0
        ;V
        db      0,0
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      01000010b
        db      01000010b
        db      00100100b
        db      00101000b
        db      00010000b
        db      0,0,0,0
        ;W
        db      0,0
        db      11000001b
        db      01000001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01001001b
        db      01111111b
        db      01001001b
        db      0,0,0,0
        ;X
        db      0,0
        db      10000001b
        db      01000001b
        db      00100001b
        db      00100010b
        db      00010100b
        db      00001000b
        db      00010100b
        db      00100010b
        db      01000001b
        db      11000001b
        db      0,0,0,0
        ;Y
        db      0,0
        db      11000111b
        db      01000100b
        db      01000100b
        db      01000100b
        db      01000100b
        db      00111100b
        db      00001000b
        db      00001000b
        db      00010000b
        db      11100000b
        db      0,0,0,0
        ;Z
        db      0,0
        db      11111110b
        db      10100010b
        db      00000010b
        db      00000100b
        db      00001000b
        db      00010000b
        db      00100000b
        db      01000010b
        db      10000010b
        db      11111110b
        db      0,0,0,0

        ;{
        db      0,0
        db      00001110b
        db      00010000b
        db      00010000b
        db      00010000b
        db      11100000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00010000b
        db      00001110b
        db      0,0,0,0
        ;|
        db      0,0
        db      00000000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00000000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001100b
        db      0,0,0,0
        ;}
        db      0,0
        db      11000000b
        db      00100000b
        db      00100000b
        db      00100000b
        db      00011100b
        db      00100000b
        db      00100000b
        db      00100000b
        db      00100000b
        db      11000000b
        db      0,0,0,0
        ;~
        db      0,0
        db      01010100b
        db      10101010b
        db      10001001b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

NewFont3  db      0,0
        db      00000000b     ;0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b     ;2
        db      00000000b
        db      00011110b
        db      01100011b
        db      10010101b
        db      11111101b
        db      00100011b
        db      00111110b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      01111110b     ;1
        db      10000001b
        db      10100101b
        db      10000001b
        db      10011001b
        db      10000001b
        db      10100101b
        db      10111101b
        db      10000001b
        db      01111110b
        db      0,0,0,0

        db      0,0
        db      10001000b    ;3
        db      01001001b
        db      00101010b
        db      00011100b
        db      11111111b
        db      00011100b
        db      00101010b
        db      01001001b
        db      10001000b
        db      00001000b
        db      0,0,0,0

        db      0,0
        db      00000100b     ;4
        db      00000010b
        db      11111111b
        db      10000010b
        db      10000100b
        db      10000000b
        db      10000000b
        db      10000000b
        db      10000000b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;5
        db      11111100b
        db      10000100b
        db      10000100b
        db      10000100b
        db      10000100b
        db      10000100b
        db      10010101b
        db      10001110b
        db      10000100b
        db      0,0,0,0

        db      0,0
        db      00100001b    ;6
        db      01110001b
        db      10101001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00111111b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;7
        db      00000000b
        db      00000000b
        db      00000000b
        db      00111110b
        db      00111110b
        db      00111110b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0

        db      0,0
        db      00000000b   ;8
        db      00010000b
        db      00100000b
        db      01000000b
        db      11111111b
        db      01000000b
        db      00100000b
        db      00010000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;9
        db      00000000b
        db      11011011b
        db      11011011b
        db      11011011b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;10
        db      00000000b
        db      10001111b
        db      10001000b
        db      10001110b
        db      10001000b
        db      10001000b
        db      11101000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00001111b   ;11
        db      00000011b
        db      00000101b
        db      00001000b
        db      00010000b
        db      00110000b
        db      01001000b
        db      01001000b
        db      00110000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      11111111b  ;12
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      10000001b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      11101111b   ;13
        db      10001001b
        db      10001001b
        db      10001111b
        db      10001010b
        db      10001010b
        db      10001010b
        db      10001010b
        db      10001010b
        db      11101010b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;14
        db      00000000b
        db      00011111b
        db      00010001b
        db      00011111b
        db      00010001b
        db      00010001b
        db      00010111b
        db      01110111b
        db      01110000b
        db      0,0,0,0

        db      0,0
        db      10001001b  ;15
        db      10001001b
        db      10001001b
        db      01001001b
        db      00110110b
        db      11100011b
        db      00010100b
        db      00101010b
        db      01001001b
        db      10001001b
        db      0,0,0,0

        db      0,0
        db      00000100b     ;16
        db      00000010b
        db      01111111b
        db      10000010b
        db      10000100b
        db      10000000b
        db      10000000b
        db      10000001b
        db      01000001b
        db      00111110b
        db      0,0,0,0

        db      0,0
        db      00000000b    ;17
        db      01111000b
        db      10000100b
        db      10000100b
        db      10000100b
        db      10000100b
        db      10000100b
        db      10010101b
        db      10001110b
        db      01000100b
        db      0,0,0,0

        db      0,0
        db      00100010b    ;18
        db      01110001b
        db      10101001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00100001b
        db      00011110b
        db      0,0,0,0

        db      0,0
        db      00000000b ;19
        db      01001111b
        db      01001001b
        db      01001001b
        db      01001111b
        db      01000001b
        db      01000001b
        db      01000001b
        db      01000001b
        db      01000001b
        db      0,0,0,0

        db      0,0
        db      01111111b ;20
        db      10001001b
        db      10001001b
        db      01111001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      00001001b
        db      0,0,0,0

        db      0,0
        db      00011110b ;21 
        db      00010001b
        db      00001000b
        db      00010100b
        db      00100010b
        db      00100100b
        db      00011000b
        db      00001000b
        db      01000100b
        db      00111000b
        db      0,0,0,0

        db      0,0
        db      00000000b ;22
        db      01110111b
        db      00010001b
        db      00010001b
        db      00010001b
        db      01110111b
        db      01000100b
        db      01000100b
        db      01000100b
        db      01110111b
        db      0,0,0,0

        db      0,0
        db      00000000b ;23
        db      01110111b
        db      00010001b
        db      00010001b
        db      00010001b
        db      01110111b
        db      01000001b
        db      01000001b
        db      01000001b
        db      01110111b
        db      0,0,0,0

        db      0,0
        db      00000000b   ;24
        db      00001000b
        db      00000100b
        db      00000010b
        db      11111111b
        db      00000010b
        db      00000100b
        db      00001000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00001000b  ;25
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      01001001b
        db      00101010b
        db      00011100b
        db      00001000b
        db      0,0,0,0

        db      0,0
        db      00001000b  ;26
        db      00011100b
        db      00101010b
        db      01001001b
        db      10001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      00001000b
        db      0,0,0,0


        db      0,0
        db      00000000b  ;27
        db      00010000b
        db      00100000b
        db      01000000b
        db      11111111b
        db      01000000b
        db      00100000b
        db      00010000b
        db      00001000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;28
        db      00000000b
        db      10000000b
        db      11111111b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00100000b ;29
        db      00100000b
        db      01110001b
        db      11111011b
        db      11111111b
        db      11111111b
        db      11011111b
        db      10001110b
        db      00000100b
        db      00000100b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;30
        db      00000100b
        db      00000100b
        db      10001110b
        db      11011111b
        db      11111111b
        db      11111111b
        db      11111011b
        db      01110001b
        db      00100000b
        db      0,0,0,0

        db      0,0
        db      00010000b  ;31
        db      00111000b
        db      01111100b
        db      11111111b
        db      11111111b
        db      11100111b
        db      11000011b
        db      11000011b
        db      00000001b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;32
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00000000b
        db      00000000b
        db      00111110b
        db      00111110b
        db      0,0,0,0
        ;"
        db      0,0
        db      01100110b
        db      01100110b
        db      01100110b
        db      11001100b
        db      10011000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;#
        db      0,0
        db      01100110b
        db      01100110b
        db      11111111b
        db      11111111b
        db      01100110b
        db      01100110b
        db      11111111b
        db      11111111b
        db      01100110b
        db      01100110b
        db      0,0,0,0
        ;$
        db      0,0
        db      00001000b
        db      00001000b
        db      00111111b
        db      00101000b
        db      00101000b
        db      00111110b
        db      00001010b
        db      00001010b
        db      00001010b
        db      01111110b
        db      00001000b
        db      0,0,0
        ;%
        db      0,0
        db      00000011b
        db      00000110b
        db      01000010b
        db      10100100b
        db      01001000b
        db      00010000b
        db      00100100b
        db      01001010b
        db      11000100b
        db      10000000b
        db      0,0,0,0
        ;&
        db      0,0
        db      01111000b
        db      11000110b
        db      11000110b
        db      01001000b
        db      00110001b
        db      00110001b
        db      01001010b
        db      11000100b
        db      11001010b
        db      01111001b
        db      0,0,0,0
        ;`
        db      0,0
        db      00111100b
        db      00111100b
        db      00110000b
        db      01100000b
        db      11000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;(
        db      0,0
        db      00000111b
        db      00001110b
        db      00011000b
        db      00110000b
        db      01110000b
        db      01110000b
        db      00110000b
        db      00011000b
        db      00001111b
        db      00000111b
        db      0,0,0,0
        ;)
        db      0,0
        db      11000000b
        db      11100000b
        db      00110000b
        db      00011000b
        db      00011100b
        db      00011100b
        db      00011000b
        db      00110000b
        db      11100000b
        db      11000000b
        db      0,0,0,0
        ;*
        db      0,0,0
        db      10010010b
        db      01010100b
        db      00111000b
        db      00010000b
        db      11111111b
        db      00010000b
        db      00111000b
        db      01010100b
        db      10010010b
        db      00010001b
        db      0,0,0
        ;+
        db      0,0
        db      00000000b
        db      00000000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      11111111b
        db      11111111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      0,0,0,0
        ;,
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000110b
        db      00111110b
        db      00001100b
        db      00011000b
        db      0,0,0
        ;-
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      01111110b
        db      01111110b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;.
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00001000b
        db      00011100b
        db      00111100b
        db      01111110b
        db      0,0,0,0
        ;/
        db      0,0
        db      00000011b
        db      00000111b
        db      00000011b
        db      00000110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100000b
        db      11100000b
        db      11000000b
        db      0,0,0,0
        ;0
        db      0,0
        db      00111100b
        db      01000110b
        db      10001001b
        db      10001001b
        db      10001001b
        db      10010001b
        db      10010001b
        db      10100001b
        db      01100001b
        db      10111110b
        db      0,0,0,0
        ;1
        db      0,0
        db      00011100b
        db      00111100b
        db      01101100b
        db      11001100b
        db      10001100b
        db      00001100b
        db      00001100b
        db      00001100b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;2
        db      0,0
        db      01111000b
        db      11111100b
        db      11000110b
        db      00000110b
        db      00011100b
        db      00111000b
        db      01100000b
        db      11000000b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;3
        db      0,0
        db      11111111b
        db      11111110b
        db      00000011b
        db      00000110b
        db      01111100b
        db      01111100b
        db      00000011b
        db      10000011b
        db      11111111b
        db      01111100b
        db      0,0,0,0
        ;4
        db      0,0
        db      10000000b
        db      10001100b
        db      11001100b
        db      11001100b
        db      11001100b
        db      11111111b
        db      11111111b
        db      00001100b
        db      00001100b
        db      00001110b
        db      0,0,0,0
        ;5
        db      0,0
        db      11111110b
        db      01111111b
        db      01100000b
        db      01100000b
        db      00111100b
        db      00111110b
        db      00000110b
        db      01000110b
        db      01111110b
        db      01111100b
        db      0,0,0,0
        ;6
        db      0,0
        db      00011110b
        db      00111111b
        db      01000001b
        db      11000000b
        db      10000000b
        db      10111100b
        db      11000010b
        db      10000010b
        db      01111100b
        db      00111000b
        db      0,0,0,0
        ;7
        db      0,0
        db      01111111b
        db      11111111b
        db      11000011b
        db      10000011b
        db      00000110b
        db      00001100b
        db      00011000b
        db      00011000b
        db      00011100b
        db      00011110b
        db      0,0,0,0
        ;8
        db      0,0
        db      01111100b
        db      10000010b
        db      10000010b
        db      01000100b
        db      00111000b
        db      00111000b
        db      01000100b
        db      01000100b
        db      10000010b
        db      01111100b
        db      0,0,0,0
        ;9
        db      0,0
        db      01111000b
        db      11111100b
        db      10000110b
        db      10000110b
        db      01111110b
        db      00000110b
        db      00000110b
        db      10001100b
        db      11111100b
        db      01111000b
        db      0,0,0,0
        ;:
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00011100b
        db      00011100b
        db      00000000b
        db      00000000b
        db      00011100b
        db      00011100b
        db      00000000b
        db      0,0,0,0
        ;;
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00011100b
        db      00011100b
        db      00000000b
        db      00000000b
        db      00011100b
        db      00011000b
        db      01110000b
        db      0,0,0,0
        ;<
        db      0,0
        db      00001111b
        db      00011111b
        db      00110000b
        db      01100000b
        db      11000000b
        db      11000000b
        db      01100000b
        db      00110000b
        db      00011111b
        db      00001111b
        db      0,0,0,0
        ;=
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      01111110b
        db      01111110b
        db      00000000b
        db      00000000b
        db      01111110b
        db      01111110b
        db      00000000b
        db      0,0,0,0
        ;>
        db      0,0
        db      11100000b
        db      11110000b
        db      00011000b
        db      00001100b
        db      00000110b
        db      00000111b
        db      00001100b
        db      00011000b
        db      11110000b
        db      11100000b
        db      0,0,0,0
        ;?
        db      0,0
        db      01111101b
        db      11111111b
        db      11000011b
        db      01000110b
        db      00001100b
        db      00011000b
        db      00011000b
        db      00000000b
        db      00111100b
        db      00111000b
        db      0,0,0,0
        ;@
        db      0,0
        db      00111100b
        db      01000110b
        db      10000010b
        db      10011000b
        db      10100100b
        db      10100010b
        db      10101010b
        db      10010010b
        db      01000010b
        db      00111100b
        db      0,0,0,0
        ;A
        db      0,0
        db      01110000b
        db      11011000b
        db      11011000b
        db      11001100b
        db      11001100b
        db      11111110b
        db      11111110b
        db      11000110b
        db      11000011b
        db      11000011b
        db      0,0,0,0
        ;B
        db      0,0
        db      11111100b
        db      11000010b
        db      11000001b
        db      11000001b
        db      11111110b
        db      11111000b
        db      11111110b
        db      11000001b
        db      11000001b
        db      11111110b
        db      0,0,0,0
        ;C
        db      0,0
        db      00111000b
        db      01111100b
        db      11000110b
        db      11000110b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000110b
        db      01111100b
        db      00111000b
        db      0,0,0,0
        ;D
        db      0,0
        db      11110000b
        db      01111000b
        db      01101100b
        db      01100110b
        db      01100011b
        db      01100011b
        db      01100011b
        db      01100011b
        db      01100110b
        db      11111100b
        db      0,0,0,0
        ;E
        db      0,0
        db      11111111b
        db      01111111b
        db      01100001b
        db      01101001b
        db      01111000b
        db      01101000b
        db      01100001b
        db      01100001b
        db      01111111b
        db      11111111b
        db      0,0,0,0
        ;F
        db      0,0
        db      11111111b
        db      01111111b
        db      01100000b
        db      01100000b
        db      01111110b
        db      01111100b
        db      01100000b
        db      01100000b
        db      01100000b
        db      11110000b
        db      0,0,0,0
        ;G
        db      0,0
        db      00111110b
        db      01100001b
        db      11000000b
        db      10000000b
        db      10011111b
        db      10010011b
        db      10010011b
        db      10000011b
        db      01000011b
        db      00111110b
        db      0,0,0,0
        ;H
        db      0,0
        db      01100011b
        db      01100011b
        db      01100011b
        db      01100011b
        db      11111111b
        db      01100011b
        db      01100011b
        db      01100011b
        db      01100011b
        db      11100011b
        db      0,0,0,0
        ;I
        db      0,0
        db      11111111b
        db      11111111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;J
        db      0,0
        db      11111111b
        db      11111101b
        db      00001100b
        db      00001100b
        db      00001100b
        db      10001100b
        db      11001100b
        db      11001100b
        db      11011000b
        db      01110000b
        db      0,0,0,0
        ;K
        db      0,0
        db      11000111b
        db      11000110b
        db      11001100b
        db      11001100b
        db      11110000b
        db      11111100b
        db      11001100b
        db      11000110b
        db      11000111b
        db      11100111b
        db      0,0,0,0
        ;L
        db      0,0
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000001b
        db      11111111b
        db      0,0,0,0
        ;M
        db      0,0
        db      01001001b
        db      11111111b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11000001b
        db      11000001b
        db      0,0,0,0
        ;N
        db      0,0
        db      11000111b
        db      11100011b
        db      11100011b
        db      11110011b
        db      11011011b
        db      11011011b
        db      11001111b
        db      11001111b
        db      11000111b
        db      11000111b
        db      0,0,0,0
        ;O
        db      0,0
        db      00111100b
        db      01111110b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      01111110b
        db      00111100b
        db      0,0,0,0
        ;P
        db      0,0
        db      11111100b
        db      11000110b
        db      11000011b
        db      11000011b
        db      11000110b
        db      11111100b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11100000b
        db      0,0,0,0
        ;Q
        db      0,0
        db      00111100b
        db      01000010b
        db      10000001b
        db      10000001b
        db      10010001b
        db      10010001b
        db      10001001b
        db      10001001b
        db      01000110b
        db      00111011b
        db      0,0,0,0
        ;R
        db      0,0
        db      11111000b
        db      01111110b
        db      01100011b
        db      01100001b
        db      11111110b
        db      01111000b
        db      01101100b
        db      01100110b
        db      01100011b
        db      11100011b
        db      0,0,0,0
        ;S
        db      0,0
        db      00111100b
        db      01000010b
        db      11000001b
        db      11000001b
        db      01000000b
        db      00110000b
        db      00001110b
        db      11000011b
        db      11000011b
        db      01111110b
        db      0,0,0,0
        ;T
        db      0,0
        db      11111111b
        db      11111111b
        db      10011001b
        db      00011001b
        db      00011001b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      01111100b
        db      0,0,0,0
        ;U
        db      0,0
        db      11000011b
        db      11000011b
        db      11100011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11100111b
        db      00111100b
        db      0,0,0,0
        ;V
        db      0,0
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      01100110b
        db      01101100b
        db      00010000b
        db      0,0,0,0
        ;W
        db      0,0
        db      11000001b
        db      11000001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      01111111b
        db      01001001b
        db      0,0,0,0
        ;X
        db      0,0
        db      10000001b
        db      11000001b
        db      01100001b
        db      01100011b
        db      00110110b
        db      00011100b
        db      00011100b
        db      00110110b
        db      01100011b
        db      11000011b
        db      0,0,0,0
        ;Y
        db      0,0
        db      11100111b
        db      01100110b
        db      01100110b
        db      01100110b
        db      01100110b
        db      00111110b
        db      00001100b
        db      00001100b
        db      11111000b
        db      11111000b
        db      0,0,0,0
        ;Z
        db      0,0
        db      11111110b
        db      11111110b
        db      10000110b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100000b
        db      11000001b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;[
        db      0,0
        db      01000000b
        db      11111111b
        db      01111110b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01100000b
        db      01111110b
        db      11111111b
        db      01000000b
        db      0,0,0,0
        ;\
        db      0,0
        db      11000000b
        db      11100000b
        db      11000000b
        db      01100000b
        db      00110000b
        db      00011000b
        db      00001100b
        db      00000110b
        db      00000111b
        db      00000011b
        db      0,0,0,0
        ;]
        db      0,0
        db      11111110b
        db      01111111b
        db      00000110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      00000110b
        db      01111111b
        db      11111110b
        db      0,0,0,0
        ;
        db      0,0
        db      00101000b
        db      00011000b
        db      00111100b
        db      01100110b
        db      11100111b
        db      11000010b
        db      10000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0
        ;-
        db      0,0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000001b
        db      11111111b
        db      11111111b
        db      0,0,0
        ;`
        db      0,0
        db      01111100b
        db      00110000b
        db      00011000b
        db      00001100b
        db      00000110b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        ;A
        db      0,0
        db      01110000b
        db      11011000b
        db      11001100b
        db      11000110b
        db      11000110b
        db      11111111b
        db      11111111b
        db      11000011b
        db      11000011b
        db      10000001b
        db      0,0,0,0
        ;B
        db      0,0
        db      11111100b
        db      11000010b
        db      11000001b
        db      11000001b
        db      11000011b
        db      11111100b
        db      11000011b
        db      11000001b
        db      11000001b
        db      11111110b
        db      0,0,0,0
        ;C
        db      0,0
        db      00111000b
        db      01111100b
        db      11000110b
        db      11000010b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000010b
        db      01111100b
        db      00111000b
        db      0,0,0,0
        ;D
        db      0,0
        db      00000000b
        db      11111000b
        db      11001100b
        db      11000110b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000110b
        db      11111100b
        db      0,0,0,0
        ;E
        db      0,0
        db      11111111b
        db      01111111b
        db      01100001b
        db      01101001b
        db      01111000b
        db      01101000b
        db      01100001b
        db      01100001b
        db      01111111b
        db      11111111b
        db      0,0,0,0
        ;F
        db      0,0
        db      11111111b
        db      01111110b
        db      01100000b
        db      01100000b
        db      01111110b
        db      01111000b
        db      01100000b
        db      01100000b
        db      01100000b
        db      11110000b
        db      0,0,0,0
        ;G
        db      0,0
        db      00111110b
        db      01100001b
        db      11000000b
        db      10000000b
        db      10000000b
        db      10011111b
        db      10011111b
        db      10000011b
        db      01000011b
        db      00111110b
        db      0,0,0,0
        ;H
        db      0,0
        db      01000001b
        db      01100011b
        db      01100011b
        db      01100011b
        db      11111111b
        db      01100011b
        db      01100011b
        db      01100011b
        db      01100011b
        db      11000001b
        db      0,0,0,0
        ;I
        db      0,0
        db      11111111b
        db      11111111b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00111000b
        db      00011000b
        db      00011000b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;J
        db      0,0
        db      11111111b
        db      01111111b
        db      00001101b
        db      00001100b
        db      00001100b
        db      10001100b
        db      10001100b
        db      11001100b
        db      11011000b
        db      01110000b
        db      0,0,0,0
        ;K
        db      0,0
        db      10000111b
        db      11000110b
        db      11001100b
        db      11001100b
        db      11010000b
        db      11111100b
        db      11001100b
        db      11000110b
        db      11000111b
        db      11100001b
        db      0,0,0,0
        ;L
        db      0,0
        db      10000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11000011b
        db      11111111b
        db      11111111b
        db      0,0,0,0
        ;M
        db      0,0
        db      01001001b
        db      11111111b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11000001b
        db      10000001b
        db      0,0,0,0
        ;N
        db      0,0
        db      10000001b
        db      11000011b
        db      11000111b
        db      11001111b
        db      11011011b
        db      11110011b
        db      11100011b
        db      11000011b
        db      11000011b
        db      10000001b
        db      0,0,0,0
        ;O
        db      0,0
        db      00111100b
        db      01100110b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      01100110b
        db      00111100b
        db      0,0,0,0
        ;P
        db      0,0
        db      01111100b
        db      11000110b
        db      11000011b
        db      11000011b
        db      11000110b
        db      11111100b
        db      11000000b
        db      11000000b
        db      11000000b
        db      11110000b
        db      0,0,0,0
        ;Q
        db      0,0
        db      00111100b
        db      01000010b
        db      10000001b
        db      10000001b
        db      10010001b
        db      10010001b
        db      10011001b
        db      10001101b
        db      01000110b
        db      00111011b
        db      0,0,0,0
        ;R
        db      0,0
        db      11111000b
        db      01111110b
        db      01100011b
        db      01100001b
        db      11111110b
        db      01111000b
        db      01101100b
        db      01100110b
        db      01100011b
        db      11000001b
        db      0,0,0,0
        ;S
        db      0,0
        db      00111100b
        db      01111110b
        db      11000011b
        db      11000011b
        db      01000000b
        db      00110000b
        db      00001110b
        db      11000011b
        db      11000011b
        db      01111110b
        db      0,0,0,0
        ;T
        db      0,0
        db      11111111b
        db      11111111b
        db      10011001b
        db      10011000b
        db      10011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00111111b
        db      0,0,0,0
        ;U
        db      0,0
        db      10000001b
        db      11000011b
        db      11000111b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11100111b
        db      00111100b
        db      0,0,0,0
        ;V
        db      0,0
        db      10000001b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      11000011b
        db      01100110b
        db      01101100b
        db      00010000b
        db      0,0,0,0
        ;W
        db      0,0
        db      10000001b
        db      11000001b
        db      11000001b
        db      11000001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      11001001b
        db      01111111b
        db      11001001b
        db      0,0,0,0
        ;X
        db      0,0
        db      10000001b
        db      11000011b
        db      01100011b
        db      01100011b
        db      00110110b
        db      00011100b
        db      00011100b
        db      00110110b
        db      01100011b
        db      11000011b
        db      0,0,0,0
        ;Y
        db      0,0
        db      11000011b
        db      01100110b
        db      01100110b
        db      01100110b
        db      01100110b
        db      00111110b
        db      00001100b
        db      00001100b
        db      10011000b
        db      11111000b
        db      0,0,0,0
        ;Z
        db      0,0
        db      11111111b
        db      11111111b
        db      10000111b
        db      00001100b
        db      00011000b
        db      00110000b
        db      01100001b
        db      11000001b
        db      11111111b
        db      11111111b
        db      0,0,0,0


        ;{
        db      0,0
        db      00001110b
        db      00011110b
        db      00011000b
        db      00011000b
        db      11110000b
        db      00011000b
        db      00011000b
        db      00011000b
        db      00011110b
        db      00001110b
        db      0,0,0,0

        db      0,0
        db      00100000b ;124
        db      00100001b
        db      01110001b
        db      11111011b
        db      11111111b
        db      11111111b
        db      11011111b
        db      10001110b
        db      10000100b
        db      00000100b
        db      0,0,0,0

        db      0,0
        db      00000000b  ;125
        db      10000100b
        db      10000100b
        db      10001110b
        db      11011111b
        db      11111111b
        db      11111111b
        db      11111011b
        db      01110001b
        db      00100001b
        db      0,0,0,0

        db      0,0
        db      00010000b  ;126
        db      00111001b
        db      01111101b
        db      11111111b
        db      11111111b
        db      11100111b
        db      11000011b
        db      11000011b
        db      10000001b
        db      10000000b
        db      0,0,0,0

        db      0,0
        db      01111110b
        db      10000001b
        db      10011001b
        db      10100101b
        db      10100101b
        db      10101101b
        db      10100001b
        db      10011110b
        db      10000000b
        db      01111111b
        db      0,0,0,0

        db      0,0
        db      00000000b     ;128
        db      00001000b
        db      00010100b
        db      11011110b
        db      10100001b
        db      10110001b
        db      11001110b
        db      00110000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        db      0,0
        db      00000000b     ;129
        db      00100000b
        db      01000010b
        db      00100100b
        db      00011000b
        db      00011000b
        db      00100101b
        db      01000010b
        db      00100000b
        db      00000000b
        db      0,0,0,0


        db      0,0
        db      00011001b     ;130
        db      00100001b
        db      01000010b
        db      00100100b
        db      00011000b
        db      00011001b
        db      00100101b
        db      01000010b
        db      00100000b
        db      00010000b
        db      0,0,0,0

        db      0,0
        db      10011000b     ;132
        db      10000100b
        db      01000010b
        db      00100100b
        db      00011000b
        db      10011000b
        db      10100100b
        db      01000010b
        db      00000100b
        db      00011000b
        db      0,0,0,0

        db      0,0
        db      00001110b     ;131
        db      00010000b
        db      00100010b
        db      00100101b
        db      00011001b
        db      11111000b
        db      00100100b
        db      00100010b
        db      00010001b
        db      00001001b
        db      0,0,0,0

        db      0,0
        db      00000000b     ;0
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      00000000b
        db      0,0,0,0

        ;{
        db      0,0
        db      11110001b
        db      11100001b
        db      11100111b
        db      11100111b
        db      00001111b
        db      11100111b
        db      11100111b
        db      11100111b
        db      11100001b
        db      11110001b
        db      0,0,0,0

        db      0,0
        db      11011111b ;014
        db      11011110b
        db      10001110b
        db      00000100b
        db      00000000b
        db      00000000b
        db      00100000b
        db      01110001b
        db      01111011b
        db      11111011b
        db      0,0,0,0

        db      0,0
        db      11111111b  ;015
        db      01111011b
        db      01111011b
        db      01110001b
        db      00100000b
        db      00000000b
        db      00000000b
        db      00000100b
        db      10001110b
        db      11011110b
        db      0,0,0,0

        db      0,0
        db      11101111b  ;016
        db      11000110b
        db      10000010b
        db      00000000b
        db      00000000b
        db      00011000b
        db      00111100b
        db      00111100b
        db      01111110b
        db      01111111b
        db      0,0,0,0

        db      0,0
        db      10000001b
        db      01111110b
        db      01100110b
        db      01011010b
        db      01011010b
        db      01010010b
        db      01011110b
        db      01100001b
        db      01111111b
        db      10000000b
        db      0,0,0,0

        db      0,0
        db      11111111b     ;018
        db      11110111b
        db      11101011b
        db      00100001b
        db      01011110b
        db      01001110b
        db      00110001b
        db      11001111b
        db      11111111b
        db      11111111b
        db      0,0,0,0

        db      0,0
        db      11111111b     ;019
        db      11011111b
        db      10111101b
        db      11011011b
        db      11100111b
        db      11100111b
        db      11011010b
        db      10111101b
        db      11011111b
        db      11111111b
        db      0,0,0,0


        db      0,0
        db      11100110b     ;031
        db      11011110b
        db      10111101b
        db      11011011b
        db      11100111b
        db      11100110b
        db      11011010b
        db      10111101b
        db      11011111b
        db      11101111b
        db      0,0,0,0

        db      0,0
        db      01100111b     ;031
        db      01111011b
        db      10111101b
        db      11011011b
        db      11100111b
        db      01100111b
        db      01011011b
        db      10111101b
        db      11111011b
        db      11100111b
        db      0,0,0,0

        db      0,0
        db      11110001b     ;030
        db      11101111b
        db      11011101b
        db      11011010b
        db      11100110b
        db      00000111b
        db      11011011b
        db      11011101b
        db      11101110b
        db      11110110b
        db      0,0,0,0

        db      0,0
        db      11111111b     ;1
        db      11111111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      11111111b
        db      0,0,0,0
NewFont3End:
;======================================================================
  notes         dw      0
                dw      18356
                dw      17292
                dw      16344
                dw      15495
                dw      14550
                dw      13714
                dw      12969
                dw      12175
                dw      11472
                dw      10847
                dw      10198
                dw       9700
                dw       9108
                dw       8584
                dw       8116
                dw       7648
                dw       7231
                dw       6818
                dw       6449

                dw       6087
                dw       5736
                dw       5423
                dw       5120
                dw       4830
                dw       4554
                dw       4307
                dw       4058
                dw       3836
                dw       3615
                dw       3418
                dw       3224
                dw       3043
                dw       2875
                dw       2711
                dw       2560
                dw       2415
                dw       2281
                dw       2153
                dw       2032
                dw       1918
                dw       1810
                dw       1709
                dw       1612
                dw       1521
                dw       1435
                dw       1355
                dw       1280
                dw       1207
                dw       1140
                dw       1075
                dw       1015
                dw        959
                dw        898
                dw       1709
                dw        854
                dw        806
                dw        760
                dw      65535   ;Caps Lock,
                dw        718
                dw        677
                dw        639
                dw        604
                dw        570
                dw        538
                dw        507
                dw        479
                dw        452
                dw        427
                dw        403
                dw        380
                dw        359
                dw        338
                dw        319
                dw        301
                dw        285
                dw        268
                dw        253
                dw        239
                dw        225
                dw        213
                dw        201
                dw        189
                dw        179
                dw        169
                dw        160
                dw        151
                dw        403
                dw        380
  ax_           dw      ?
  bx_           dw      ?
  scancode      db      ?
  toggle        db      0       ;turns chirping on or off. 1 = on.
;======================================================================
CrLf            db 0x0D,0x0A,0
StartPatch:
;============================================================================
Intro           db 13,10,"%04 SAMUEL OS V1.0 BY ATOMIC_BIOS"
                db 13,10,"%04 type 'help' for command list",13,10
                rb Intro + 100h - $
err1            db 13,10,"%04 ERROR 1: I LOOKED BUT I CANT FIND YOUR FILE!",13,10
                rb err1 + 100h - $
err2            db 13,10,"%04 ERROR 2: I RAN INTO A SECTOR I/O DISK ERROR!",13,10
                rb err2 + 100h - $
err3            db 13,10,"%04 ERROR 3: UNRECOGNIZED COMMAND!",13,10
                rb err3 + 100h - $
err4            db 13,10,"%04 ERROR 4: THE INT 18H FUNCTION USED DOES NOT EXIST...",13,10
                rb err4 + 100h - $
msg1            db 13,10,"%04 I AM LOADING YOUR ROOT DIRECTORY TABLES...",13,10
                rb msg1 + 100h - $
msg2            db 13,10,"%04 SCANNING THE ROOT DIR FOR YOUR FILE...",13,10
                rb msg2 + 100h - $
msg3            db 13,10,"%04 I AM LOADING YOUR YOUR DISKS FAT TABLES...",13,10
                rb msg3 + 100h - $
msg4            db 13,10,"%04 NOW I AM READING YOUR FILE CLUSTERS...",13,10
                rb msg4 + 100h - $
msg5            db 13,10,"%04 NOW I AM TRYING TO RUN YOUR PROGRAM...",13,10
                rb msg5 + 100h - $
msg6            db 13,10,"%04 NOW I AM WRITING DATA TO YOUR FILE...",13,10
                rb msg6 + 100h - $
iload           db 13,10,"%04 STRIKE ANY KEY TO BYPASS THE MAIN MENU..."
                db 13,10,"%04 PLEASE WAIT...",0
                rb iload + 100h - $
ipause          db 13,10,"%04 YOU CAN PRESS ANY KEY TO CONTINUE...",13,10
                rb ipause + 100h - $
;============================================================================
filer           db 13,10,"%04 Enter the filename you wish to read from?",0
                rb filer + 100h - $
filew           db 13,10,"%04 WARNING: THIS WILL WRITE TO DISK"
                db 13,10,"%04 Enter the filename to write to?",0
                rb filew + 100h - $
;============================================================================
dbg             db 13,10,"%04 The test interrupt has been invoked!$",13,10,0
                rb dbg + 100h - $
dbg2            db 13,10,"%04 Interrupt 6 - I ran into an invalid instruction$",13,10,0
                rb dbg2 + 100h - $
;============================================================================
nmion           db 13,10,"%04 The NMI is Now Active",13,10,0
                rb nmion + 100h - $
nmioff          db 13,10,"%04 The NMI is Shut Off",13,10,0
                rb nmioff + 100h - $
;============================================================================
Prompt          db "%04 -",16,0
                rb Prompt + 100h - $
;============================================================================
Thought1        db " atomic nuclear core     ",0
                rb Thought1 + 100h - $
Thought2        db " endless toggle switches ",0
                rb Thought2 + 100h - $
Thought3        db " super battery energy    ",0
                rb Thought3 + 100h - $
Thought4        db " frequency wave blaster  ",0
                rb Thought4 + 100h - $
Thought5        db " energy force varieties  ",0
                rb Thought5 + 100h - $
Thought6        db " strobe signal converter ",0
                rb Thought6 + 100h - $
Thought7        db " symbol warp analizer    ",0
                rb Thought7 + 100h - $
;============================================================================
EndPatch:
                rb 100h
;======================================================================
SysHelp:        db 13,10
                db "run,filename - run a program",13,10
                db "list - list all files on current drive",13,10
                db "shell - launch the main menu",13,10
                db "hex,# # ... - execute hex",13,10
                db "wh - load the gorf wormhole",13,10
                db "nmi - Toggle Int2h NMI on/off",13,10
                db "cmds - list available commands",13,10
                db "screen,# - set screen mode",13,10
                db "color,# - set color to # 1 to 4 ",13,10
                db "stay - stay at command prompt",13,10
                db "go - use delay prompt for menu",13,10
                db "patch - OS skins with .cfg files",13,10
                db "vect,int#,seg,off - set int vector",13,10
                db "kill,int# - kill an interrupt",13,10
                db "test,int# - declare a test interrupt",13,10
                db "help - show this help list",13,10
                db "exit or q - return to ms-dos",13,10
                db 0
FileNotFound    db 13,10,"File not found (a)bort or (r)etry?",0
Commands:
cmdRun          db "run",0
                rb 12
cmdList         db "list",0
                rb 12
cmdShell        db "shell",0
                rb 12
cmdHex          db "hex",0
                rb 12
cmdWh           db "wh",0
                rb 12
cmdNMI          db "nmi",0
                rb 12
cmdCmds         db "cmds",0
                rb 12
cmdScreen       db "screen",0
                rb 12
cmdColor        db "color",0
                rb 12
cmdStay         db "stay",0
                rb 12
cmdGo           db "go",0
                rb 12
cmdPatch        db "patch",0
                rb 12
cmdVect         db "vect",0
                rb 12
cmdKill         db "kill",0
                rb 12
cmdTest         db "test",0
                rb 12
cmdHelp         db "help",0
                rb 12
cmdExit         db "exit",0
                rb 12
cmdQ            db "q",0
                rb 12
EOC:            rb 32
;======================================================================
menu            db "MENU",0
                rb 12
wormhole        db "GORF.COM",0
                rb 12
junk            db "JUNK",0
                rb 12
;======================================================================
FPnum           dq 1000000000000000000
FR1             dd 0
FR2             dq 0
BCD             dq 0
X               dt 10.0
ControlWord     dw  ?
version         db 0x01
country         db 0x01
colors          db 0x00
NmiX            db 0x00
ansi            db 0x00
think           db 0x00
whip            db 0x00
aSprite         db 0x00
pjmp            db 0x00
vortex          db 00
                db 0xff
int1_flag       dw 0x0000
TheCS           dw 0x0000
TheIP           dw 0x0000
vector          db 0x00
seed            db 0,0
                rb 13
rw_fname        rb 16
oldpos          db 0
old05s          dw 0x0000
old05o          dw 0x0000
old10s          dw 0x0000
old10o          dw 0x0000
old13s          dw 0x0000
old13o          dw 0x0000
old1as          dw 0x0000
old1ao          dw 0x0000
old27s          dw 0x0000
old27o          dw 0x0000
old1cs          dw 0x0000
old1co          dw 0x0000
old21s          dw 0x0000
old21o          dw 0x0000
old22s          dw 0x0000
old22o          dw 0x0000
Silent          db 0
Pause1          db 0
Delay1          db 1
UseInt          db 0x45
cont            db "þ",0
;======================================================================
SimpleStart     db 0xC3
                rb 129
SimpleEnd       db 0xC3
                rb 129
SimpleMid       db 0xC3
                rb 129
;======================================================================
TheBuffer       rb 64
gmsg            rb 80
FP              rb 28
floatbuff       rb 84
floatbuff2      rb 84
fix             rb 84
Toggle          rb 256
Simple          rb 129
ImageName       rb 80
Buffer          rb 128
OldVect         rb 4 * 256
MainBuffer      rb 512 * 0x12
Sprites         rb 0x3000
AnyBuff:
;======================================================================

                db 1






