-
Notifications
You must be signed in to change notification settings - Fork 0
/
Altair_BASIC.asm
3768 lines (3491 loc) · 273 KB
/
Altair_BASIC.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
PAGE 0 ; suppress page headings in ASW listing file
;*******************************************************************************
;* *
;* 4K, 8K and 16K Altair BASIC for 8080 and 8085 SBCs *
;* Portions Copyright © 2021 by Jim Loos *
;* *
;* On the Altair, the "sense switches" are used by BASIC to select the type of *
;* serial card and the the number of stop bits; in this case, an 88-2SIO card *
;* at addresses 10H and 11H (octal 20 and 21) with 2 stop bits. These BASIC *
;* images have been hacked to eliminate the requirement for sense switches. *
;* *
;* Configure Teraterm for 7 data bits, odd parity, 2 stop bits. *
;* For the 8080 SBC use 115200 bps. For the 8085 SBC, use 19200 bps. *
;* *
;* When using Teraterm's "Send File" function to send an Intel hex file or *
;* BASIC source file to the Altair BASIC interpreter, set Teraterm's serial *
;* port options for 1 msec/char and 50 msec/line transmit delay. *
;* *
;*******************************************************************************
cpu 8085
; memory addresses
ram_start: equ 0000H ; ram (0000-7FFF) starts here
ram_end: equ 7FFFH
cpu_type: equ ram_end ; 0 for 8080, 5 for 8085
delay_value: equ ram_end-1 ; 117 for 8080, 199 for 8085 (for the millisecond delay subroutine)
esc_count: equ ram_end-2 ; number of times escape key pressed stored here
stack_top: equ ram_end-16 ; top of stack
; i/o port addresses
acia_status: equ 10H ; MC6850 ACIA status port address (88-2SIO serial card at MITS standard address of 10H (octal 20)
acia_data: equ 11H ; MC6850 ACIA data port address (88-2SIO serial card at MITS standard address of 11H (octal 21)
cwr: equ 0FFH ; 8255 PPI control word register
portA: equ 0FEH ; 8255 PPI port A
portB: equ 0FDH ; 8255 PPI port B
portC: equ 0FCH ; 8255 PPI port C
led_port: equ 0FDH ; the same on both 8080 and 8085 SBCs
cr equ 0DH ; carriage return
lf equ 0AH ; line feed
org 8000H ; EPROM located 8000H-FFFFH
start: di
jmp eprom
eprom: lxi sp,stack_top ; set Stack Pointer to top of ram
mvi a,00000011b
out acia_status ; reset the ACIA and reset the startup flip-flop
mvi a,00000101b ; 7 data bits, odd parity, 2 stop bits, divide clock by 16, no interrupts
out acia_status ; configure the ACIA
mvi a,117 ; for the 8080 SBC using a 1.843 MHz clock...
sta delay_value ; for the millisecond delay subroutine
xra a
sta cpu_type ; 0 for 8080 CPU
; detect either 8080 or 8085 CPU
mvi a,00011111b
sim ; set 7.5, 6.5 and 5.5 interrupt masks (8085 only)
xra a ; clear the accumulator
rim ; read interrupt masks (8085 only)
ani 00000111B ; mask everything except interrupt masks
jz clear ; all zeros means an 8080 CPU
;8085 CPU detected
mvi a,199 ; for the 8085 SBC using a 3.072 MHz clock...
sta delay_value ; for the millisecond delay subroutine
mvi a,5
sta cpu_type ; 5 for 8085 CPU
clear: mvi a,99H
out cwr ; program 8255 port B as output, ports A and C as inputs
xra a
out led_port ; turn off all LEDs
sta esc_count ; clear escape key count
lxi h,signon_txt1 ; address of the initial part of the sign on message
call puts ; print "Mini-Altair 808..."
lda cpu_type ; "0" for 8080 CPU or "5" for 8085 CPU
call outhexnibble ; print "0" for 8080 CPU or "5" for 8085 CPU
lxi h,signon_txt2
call puts ; print the remainder of the sign on message
showmenu: lxi h,menu_txt
call puts ; print the menu
prompt: lxi h,prompt_txt
call puts ; print the prompt
getinput: call cin ; get a character from input
cpi ':' ; is it the start-of-record character for a hex download?
jnz testfor1
jmp startfound ; start of record detected, jump into Intel hex file download routine
testfor1: cpi '1' ; load 4K BASIC?
jnz testfor2
lxi h,basic4k ; address of start of Altair 4K BASIC image
lxi b,basic4kend-basic4k ; 4096 bytes to copy
jmp loadBASIC ; load 4K BASIC image into RAM
testfor2: cpi '2' ; load 8K BASIC?
jnz testfor3
lxi h,basic8k ; address of start of Altair 8K BASIC image
lxi b,basic8kend-basic8k ; 8192 bytes to copy
jmp loadBASIC ; load 8K BASIC image into RAM
testfor3: cpi '3' ; load ROM BASIC?
jnz testfor4
jmp basic16k ; jump to 16K BASIC in ROM
testfor4: cpi '4' ; BASIC warm start?
jnz testfor5
call newline
lxi B,basic16kbytes
lxi H,ram_start+0040H
lxi D,8
call block_compare ; check if 16K BASIC has been previously loaded
jc 0C0A1H ; yes, jump to 16K BASIC warm start address
lxi B,basic4kbytes
lxi H,ram_start
lxi D,8
call block_compare ; check if 4K BASIC has been previously loaded
jc ram_start ; yes, jump to 4K BASIC warm start address
lxi B,basic8kbytes
lxi H,ram_start
lxi D,8
call block_compare ; check if 8K BASIC has been previously loaded
jc ram_start ; yes, jump to 8K BASIC warm start address
noBASIC: lxi h,notloaded_txt ; no, display "BASIC not loaded"
call puts
jmp prompt
testfor5: cpi '5' ; system monitor?
jnz testfor6
jmp monitor ; execute the monitor program
testfor6: cpi '6' ; hex file download?
jnz testforESC
jmp download ; Intel Hex file download
; pressing 'Escape' three times followed by '?' displays the copyright message
testforESC: cpi 1BH ; is it the escape key?
jnz testforQMark ; no, next test
lda esc_count
inr a ; increment count each time the escape key is received
sta esc_count
jmp getinput ; go back for another character
testforQMark: cpi '?' ; is it '?'
jnz resetcount ; jump if not
lda esc_count
cpi 3 ; were the previous three keys 'escape'?
jnz resetcount ; jump if not
lxi h,signon_txt1 ; address of the initial part of the sign on message
call puts ; print "Mini-Altair 808..."
lda cpu_type
call outhexnibble ; print the CPU type "0" or "5" depending on CPU
lxi h,signon_txt2
call puts ; print the remainder of the sign on message
lxi h,copyright_txt
call puts ; print the copyright message
xra a
sta esc_count ; reset count back to start
jmp prompt ; prompt for another character
resetcount: xra a
sta esc_count ; reset count back to start
jmp showmenu ; display the menu and get another character
; -----------------------------------------------------------------------------------------
; compare two blocks of memory. HL contains the starting address of the first block.
; BC contains the starting address of the second block. DE contains the byte count.
; return with carry set if the blocks match.
; -----------------------------------------------------------------------------------------
block_compare: ldax B ;fetch byte from the first block
cmp M ;compare it to the byte from the second block
jz block_comp1 ;jump if they match
stc ;else, return with carry clear in no match
cmc
ret
block_comp1: inx B ;next byte from the first block
inx H ;next byte from the second block
dcx D ;decrement the count
mov A,D
ora E ;has the count reached zero?
jnz block_compare ;loop back if more bytes to compare
stc ;else, return with carry set if both blocks match
ret
; bytes loaded into RAM by 4K, 8K and 16K BASIC respectively
; used to test if BASIC has been loaded.
basic4kbytes: db 0F3H,0C3H,001H,002H,09EH,004H,007H,008H
basic8kbytes: db 0F3H,0C3H,0F7H,002H,038H,007H,0E5H,00DH
basic16kbytes: db 0C3H,0A1H,0C0H,0C3H,090H,000H,0C3H,098H
; -----------------------------------------------------------------------------------------
; Download a file in Intel hex format. Jump to entry address when the download is finished.
; A hard reset will be required if a checksum error is encountered durning the download.
; -----------------------------------------------------------------------------------------
download: lxi h,waiting_txt ; address of the download message
call puts ; print "Waiting for hex download..."
; wait for the start of record character ':'
getstart: call cin ; get the first character
ani 01111111B ; mask off MSB
cpi 1BH ; escape?
jz showmenu
cpi 03H ; control C?
jz showmenu
call cout ; echo the character
cpi ':' ; test for start of record
jnz getstart ; go back if not start of record
; the start of record character ":" has been received
startfound: call getrecord ; get the next Intel hex record
jc getstart ; loop back for more records until finished
; the last record has been received. the entry address is in HL
push h ; push the entry address on the stack
push h ; push it again
lxi h,signoff_txt ; print sign off message
call puts
pop h ; pop the entry address
call outhexword ; print the entry address
call newline ; start on a new line
lxi b,500
call delay ; 500 mSec delay
pop h ; pop the entry address
pchl ; jump to entry address
; loads a record in Intel hex format. returns with carry cleared when the last record was received.
getrecord: call getbyte ; start of record received, get length of record (1 byte)
ana a ; test for zero (zero length means last record)
jnz continue ; jump if this is not the last record
; receive the last record
call getword ; get address (2 bytes) of last record
call getbyte ; get record type (1 byte) of last record
call getbyte ; get checksum (1 byte) of last record
call cin ; get the carriage return at the end of the line
stc
cmc ; clear carry to indicate last record received
ret ; return when last record is received
continue: mov c,a ; save the length in C as the checksum
mov b,a ; B is the counter for the number of data bytes to receive
call getword ; get the address (2 bytes)
mov a,c ; get the checksum from C
add h ; add high byte of address to the checksum
add l ; add low byte of address to the checksum
mov c,a ; save the checksum in C
call getbyte ; get the next byte as type (1 byte)
add c ; add the type byte to the checksum
mov c,a ; save checksum in C
nextbyte: call getbyte ; type received, get the data (1 byte)
mov m,a ; save the data byte in memory
inx h ; point to next memory location
add c ; add the data byte to the checksum
mov c,a ; save the checksum in c
dcr b ; reduce count of remaining data bytes
jnz nextbyte ; get the next byte in the record
call getbyte ; all data bytes received, get the checksum (1 byte)
add c ; add to computed checksum
jnz checksumerror ; jump if not ok
stc ; set carry to indicate more records to follow
ret
checksumerror: lxi h,chksumerr_txt
call puts ; print "Checksum error! Press RESET."
hlt ; stay here until hard reset
; gets four ascii characters - a 16 bit value into HL, return with carry set if everything is ok
getword: call getbyte ; get first byte
rnc ; if bad checksum return immediately, don't wait for second byte
mov h,a ; save the high byte of the address in H
call getbyte ; get second byte
mov l,a ; save the low byte of the address in L
ret
; gets two ascii characters (1 byte), from the terminal, returns with the byte in the accumulator. cy=0 if fails
getbyte: push b ; save BC pair
call getnibble ; get first nibble
jnc exitgb ; if bad checksum return immediately, don't wait for second nibble
rlc ; shift into...
rlc ; upper nibble...
rlc ; of result.
rlc ; so we can insert lower nibble
mov b,a ; keep high digit in b
call getnibble ; get second digit
jnc exitgb ; exit immediately if bad checksum
ora b ; insert high digit
stc ; set carry flag to indicate success
exitgb: pop b ; restore BC pair
ret
; gets an ACSII character from the terminal which represents a nibble of the data byte
getnibble: call cin ; get a character
ani 01111111B ; mask off MSB
cpi ' ' ; test for blank (abort1)
rz ; if so, return indicating bad (cy=0)
cpi 0DH ; test for <cr> (abort2)
rz ; if so, return indicating bad
cpi '0' ; test for invalid (ASCII code less than '0')
jc getnibble ; if invalid, go back for another nibble
cpi 'G' ; test for invalid (ASCII code greater than 'F')
jnc getnibble ; if invalid, go back for another nibble
call cout ; valid digit, display the character
cpi 3AH ; test for invalid
jc number ; if ok, we are in
cpi 'A' ; test for invalid
jc getnibble ; if bad, ignore
sui 7 ; convert to digit
number: sui 30H ; convert to binary
stc ; indicate success
ret
; -----------------------------------------------------------------------------------------
; Copy the Altair BASIC image from ROM to RAM. Jump to the start of BASIC at 0000H
; after the image is loaded.
; -----------------------------------------------------------------------------------------
loadBASIC: lxi d,ram_start ; beginning of ram
call blockcopy ; copy the 8192 bytes of the Altair 8K BASIC image from ROM to RAM
call newline
lxi b,500
call delay ; 500 mSec delay
jmp ram_start ; jump to start of BASIC interpreter code at address 0000
; ------------------------------------------------------------------------------------
; copy a block of BC bytes from address pointed to by HL to address pointed to by DE.
; HL contains the source address of the block to be copied
; DE contains the destination address of the block to be copied
; BC contains the number of bytes to be copied.
; ------------------------------------------------------------------------------------
blockcopy: mov a,m ; retrieve the source byte pointed to by HL
stax d ; store it at the destination pointed to by DE
inx h ; next source address
inx d ; next destination address
dcx b ; decrement count
mov a,c
cpi 00H ; end of page?
jnz blockcopy
mov a,b
cpi 00H ; last page
jnz blockcopy
ret
; ------------------------------------------------------------------------------------
; wait for a character from the serial port, return character in A
; ------------------------------------------------------------------------------------
cin: in acia_status
rrc
jnc cin ; go back and try again if the receive register is empty
in acia_data ; input the character from the receive register
ret
; ------------------------------------------------------------------------------------
; type a carriage return and line feed to start a new line on the terminal
; (falls through to the cout function below)
; ------------------------------------------------------------------------------------
newline: mvi a,cr
call cout
mvi a,lf
; ------------------------------------------------------------------------------------
; type the character in A to the serial port
; ------------------------------------------------------------------------------------
cout: push psw
cout1: in acia_status
rrc
rrc
jnc cout1
pop psw
out acia_data ; output the character to the transmit register
ret
; ------------------------------------------------------------------------------------
; type a string pointed to by HL terminated by zero to the serial port
; ------------------------------------------------------------------------------------
puts: mov a,m ; retrieve the character
ora a
rz ; return if end of string
call cout ; send the character out to the console
inx h ; next address
jmp puts
; ------------------------------------------------------------------------------------
; type the word in HL as four hex digits
; ------------------------------------------------------------------------------------
outhexword: push psw ; save psw
mov a,h ; get high byte
call outhexbyte ; and type it
mov a,l ; get low byte
call outhexbyte ; and type it
pop psw ; restore psw
ret ; and return
; ------------------------------------------------------------------------------------
; type the byte in A as two hex digits
; ------------------------------------------------------------------------------------
outhexbyte: push psw ;save PSW
rrc ; shift
rrc ; to
rrc ; left
rrc ; nibble
call outhexnibble ; type hex nibble
pop psw ; restore data
call outhexnibble ; type right nibble
ret ; and exit
; ------------------------------------------------------------------------------------
; type the 4 bit nibble in A as a hex digit
; ------------------------------------------------------------------------------------
outhexnibble: push psw ; save PSW
ani 0FH ; isolate nibble b3>b0
cpi 10 ; see if >9
jc $+5 ; nibble <=9
adi 7 ; adjust alpha char
adi '0' ; add in ascii 0
call cout ; type nibble
pop psw
ret
;*********************************************************
; delay 1 millisecond times the value in BC.
; "delay_value" has been set previously depending on the CPU type.
; (117 for 8080, 199 for 8085)
;*********************************************************
delay: push psw
push d
push b
lda delay_value
mov e,a
d1: mov d,e
d2: dcr d
jnz d2
dcx b
mov a,b
ora c
jnz d1
pop b
pop d
pop psw
ret
signon_txt1: db cr,lf,lf,"Mini-Altair 808",0
signon_txt2: db " Version assembled ",DATE," at ",TIME,cr,lf,0
copyright_txt: db "Portions Copyright 2021 by Jim Loos",cr,lf,lf,0
menu_txt: db cr,lf,lf
db "1 - Altair 4K BASIC cold start",cr,lf
db "2 - Altair 8K BASIC cold start",cr,lf
db "3 - Altair ROM BASIC cold start",cr,lf
db "4 - Altair BASIC warm start",cr,lf
db "5 - System Monitor",cr,lf
db "6 - Intel Hex file download",cr,lf,lf,0
prompt_txt: db ">>",0
signoff_txt: db cr,lf,"Jumping to entry address ",0
waiting_txt: db cr,lf,"Waiting for hex download...",cr,lf,lf,0
chksumerr_txt: db cr,lf,"Checksum error! Press RESET.",cr,lf,0
notloaded_txt: db cr,lf,"BASIC has not yet been loaded!",cr,lf,lf,0
org 8470H
; in the BASIC images, all instances of 0DBH,0FFH (IN 0FFH) have been replaced with 03EH,000H (MVI A,00)
; to eliminate the requirement for the Altair's "sense switches".
; Altair 4K BASIC 4.0 image
basic4k: db 0F3H,0C3H,0E6H,00DH,09EH,004H,007H,008H,07EH,0E3H,0BEH,023H,0E3H,0C2H,0D6H,001H,023H,07EH,0FEH,03AH,0D0H,0C3H,06CH,004H,0F5H,03AH,027H,000H,0C3H,07BH,003H,000H
db 07CH,092H,0C0H,07DH,093H,0C9H,001H,00DH,03AH,07AH,001H,0B7H,0C2H,0E8H,009H,0C9H,0E3H,022H,041H,000H,0E1H,0C3H,03BH,000H,0C9H,054H,001H,04EH,023H,046H,023H,0C5H
db 0C3H,040H,000H,0F2H,009H,0B0H,00AH,006H,00AH,0A6H,004H,02FH,00CH,06DH,00CH,0A0H,00CH,0C5H,04EH,044H,0C6H,04FH,052H,0CEH,045H,058H,054H,0C4H,041H,054H,041H,0C9H
db 04EH,050H,055H,054H,0C4H,049H,04DH,0D2H,045H,041H,044H,0CCH,045H,054H,0C7H,04FH,054H,04FH,0D2H,055H,04EH,0C9H,046H,0D2H,045H,053H,054H,04FH,052H,045H,0C7H,04FH
db 053H,055H,042H,0D2H,045H,054H,055H,052H,04EH,0D2H,045H,04DH,0D3H,054H,04FH,050H,0D0H,052H,049H,04EH,054H,0CCH,049H,053H,054H,0C3H,04CH,045H,041H,052H,0CEH,045H
db 057H,0D4H,041H,042H,028H,0D4H,04FH,0D4H,048H,045H,04EH,0D3H,054H,045H,050H,0ABH,0ADH,0AAH,0AFH,0BEH,0BDH,0BCH,0D3H,047H,04EH,0C9H,04EH,054H,0C1H,042H,053H,0D5H
db 053H,052H,0D3H,051H,052H,0D2H,04EH,044H,0D3H,049H,04EH,080H,0FDH,001H,0E3H,003H,057H,006H,003H,005H,0F2H,005H,024H,007H,004H,006H,010H,005H,0DDH,004H,0A9H,002H
db 024H,005H,077H,004H,0CCH,004H,0EDH,004H,005H,005H,0FDH,001H,065H,005H,09FH,003H,0AEH,002H,09DH,002H,079H,01EH,008H,079H,018H,008H,07CH,0F1H,008H,07CH,03DH,009H
db 04EH,046H,053H,04EH,052H,047H,04FH,044H,046H,043H,04FH,056H,04FH,04DH,055H,04CH,042H,053H,044H,044H,02FH,030H,049H,044H,040H,00FH,0FFH,0FFH,041H,00FH,02CH,000H
db 000H,000H,000H,000H,000H,000H,000H,020H,042H,059H,054H,045H,053H,020H,046H,052H,045H,045H,00DH,034H,04BH,020H,042H,041H,053H,049H,043H,020H,034H,02EH,030H,00DH
db 043H,04FH,050H,059H,052H,049H,047H,048H,054H,020H,04DH,049H,054H,053H,020H,031H,039H,037H,036H,000H,093H,003H,084H,003H,081H,004H,000H,000H,069H,00DH,092H,00DH
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,020H,045H,052H,052H,04FH,052H,000H,020H,049H,04EH,020H,000H,00DH,04FH,04BH,00DH,000H,021H,004H,000H,039H,07EH,023H
db 0FEH,081H,0C0H,0F7H,0E3H,0E7H,001H,00DH,000H,0E1H,0C8H,009H,0C3H,09EH,001H,0CDH,0C7H,001H,0C5H,0E3H,0C1H,0E7H,07EH,002H,0C8H,00BH,02BH,0C3H,0B5H,001H,0E5H,02AH
db 073H,001H,006H,000H,009H,009H,03EH,0E5H,03EH,0DEH,095H,06FH,03EH,0FFH,09CH,067H,039H,0E1H,0D8H,01EH,00CH,001H,01EH,002H,001H,01EH,014H,0CDH,0BDH,002H,0CDH,098H
db 005H,021H,000H,001H,057H,03EH,03FH,0DFH,019H,07EH,0DFH,0D7H,0DFH,021H,089H,001H,0CDH,0B1H,005H,02AH,01AH,001H,07CH,0A5H,03CH,0C4H,03DH,00BH,001H,0C0H,0C1H,03EH
db 0C1H,021H,095H,001H,0CDH,0E6H,00DH,021H,0FFH,0FFH,022H,01AH,001H,0CDH,049H,003H,0D7H,03CH,03DH,0CAH,007H,002H,0F5H,0CDH,0ABH,004H,0D5H,0CDH,0D4H,002H,047H,0D1H
db 0F1H,0D2H,04CH,004H,0D5H,0C5H,0D7H,0B7H,0F5H,0CDH,085H,002H,0C5H,0D2H,041H,002H,0EBH,02AH,06FH,001H,01AH,002H,003H,013H,0E7H,0C2H,034H,002H,060H,069H,022H,06FH
db 001H,0D1H,0F1H,0CAH,068H,002H,02AH,06FH,001H,0E3H,0C1H,009H,0E5H,0CDH,0AFH,001H,0E1H,022H,06FH,001H,0EBH,074H,0D1H,023H,023H,073H,023H,072H,023H,011H,01FH,001H
db 01AH,077H,023H,013H,0B7H,0C2H,060H,002H,0CDH,0AAH,002H,023H,0EBH,062H,06BH,07EH,023H,0B6H,0CAH,007H,002H,023H,023H,023H,0AFH,0BEH,023H,0C2H,079H,002H,0EBH,073H
db 023H,072H,0C3H,06DH,002H,02AH,01CH,001H,044H,04DH,07EH,023H,0B6H,02BH,0C8H,0C5H,0F7H,0F7H,0E1H,0E7H,0E1H,0C1H,03FH,0C8H,03FH,0D0H,0C3H,088H,002H,0C0H,02AH,01CH
db 001H,0AFH,077H,023H,077H,023H,022H,06FH,001H,0C0H,02AH,01CH,001H,02BH,022H,06BH,001H,0CDH,077H,004H,02AH,06FH,001H,022H,071H,001H,022H,073H,001H,0C1H,02AH,018H
db 001H,0F9H,0AFH,06FH,0E5H,0C5H,02AH,06BH,001H,0C9H,03EH,03FH,0DFH,03EH,020H,0DFH,0CDH,049H,003H,023H,00EH,005H,011H,01FH,001H,07EH,0FEH,020H,0CAH,01CH,003H,047H
db 0FEH,022H,0CAH,02FH,003H,0B7H,0CAH,036H,003H,0D5H,011H,050H,000H,0C5H,006H,07FH,04EH,04EH,0EBH,023H,0B6H,0F2H,0F3H,002H,004H,07EH,0E6H,07FH,0CAH,018H,003H,0B9H
db 0C2H,0F3H,002H,0EBH,0E5H,013H,01AH,0B7H,0FAH,015H,003H,04FH,0D7H,0B9H,0CAH,005H,003H,0E1H,0C3H,0F0H,002H,048H,0F1H,0EBH,0EBH,079H,0C1H,0D1H,023H,012H,013H,00CH
db 0D6H,08EH,0C2H,0D9H,002H,047H,07EH,0B7H,0CAH,036H,003H,0B8H,0CAH,01CH,003H,023H,012H,00CH,013H,0C3H,026H,003H,021H,01EH,001H,012H,013H,012H,013H,012H,0C9H,005H
db 02BH,0DFH,0C2H,04EH,003H,0DFH,0CDH,098H,005H,021H,01FH,001H,006H,001H,0CDH,093H,003H,04FH,0FEH,00DH,0CAH,093H,005H,0FEH,040H,0CAH,045H,003H,0FEH,05FH,0CAH,03FH
db 003H,0FEH,020H,0DAH,04EH,003H,0FEH,07DH,0D2H,04EH,003H,078H,0FEH,048H,03EH,007H,0D2H,077H,003H,079H,071H,023H,004H,0DFH,0C3H,04EH,003H,0FEH,048H,0CCH,098H,005H
db 03CH,032H,027H,000H,0DBH,010H,0E6H,002H,0CAH,084H,003H,0F1H,0D3H,011H,0F5H,000H,000H,0F1H,0C9H,0DBH,010H,0E6H,001H,0CAH,093H,003H,0DBH,011H,0E6H,07FH,0C9H,0CDH
db 0ABH,004H,0C0H,0C1H,0CDH,085H,002H,0C5H,0E1H,0F7H,0C1H,078H,0B1H,0CAH,001H,002H,0CDH,081H,004H,0C5H,0CDH,098H,005H,0F7H,0E3H,0CDH,045H,00BH,03EH,020H,0E1H,0DFH
db 07EH,0B7H,023H,0CAH,0A8H,003H,0F2H,0BFH,003H,0D6H,07FH,04FH,011H,051H,000H,01AH,013H,0B7H,0F2H,0CFH,003H,00DH,0C2H,0CFH,003H,0DFH,01AH,013H,0B7H,0F2H,0D9H,003H
db 0C3H,0C0H,003H,0CDH,010H,005H,0E3H,0CDH,09AH,001H,0D1H,0C2H,0F0H,003H,009H,0F9H,0EBH,00EH,008H,0CDH,0BEH,001H,0E5H,0CDH,003H,005H,0E3H,0E5H,02AH,01AH,001H,0E3H
db 0CFH,095H,0CDH,09AH,006H,0E5H,0CDH,02BH,00AH,0E1H,0C5H,0D5H,001H,000H,081H,051H,05AH,07EH,0FEH,097H,03EH,001H,0C2H,022H,004H,0CDH,09BH,006H,0E5H,0CDH,02BH,00AH
db 0EFH,0E1H,0C5H,0D5H,0F5H,033H,0E5H,02AH,06BH,001H,0E3H,006H,081H,0C5H,033H,0CDH,081H,004H,07EH,0FEH,03AH,0CAH,04CH,004H,0B7H,0C2H,0D6H,001H,023H,07EH,023H,0B6H
db 0CAH,0FFH,001H,023H,05EH,023H,056H,0EBH,022H,01AH,001H,0EBH,0D7H,011H,02FH,004H,0D5H,0C8H,0D6H,080H,0DAH,010H,005H,0FEH,014H,0D2H,0D6H,001H,007H,04FH,006H,000H
db 0EBH,021H,0CCH,000H,009H,04EH,023H,046H,0C5H,0EBH,0D7H,0C9H,0FEH,020H,0CAH,010H,000H,0FEH,030H,03FH,03CH,03DH,0C9H,0EBH,02AH,01CH,001H,02BH,022H,075H,001H,0EBH
db 0C9H,0DBH,010H,0E6H,001H,0C8H,0CDH,093H,003H,0FEH,003H,0CAH,0FDH,001H,07EH,0FEH,041H,0D8H,0FEH,05BH,03FH,0C9H,0D7H,0CDH,09AH,006H,0EFH,0FAH,0A6H,004H,03AH,07AH
db 001H,0FEH,090H,0DAH,085H,00AH,01EH,008H,0C3H,0DBH,001H,02BH,011H,000H,000H,0D7H,0D0H,0E5H,0F5H,021H,098H,019H,0E7H,0DAH,0D6H,001H,062H,06BH,019H,029H,019H,029H
db 0F1H,0D6H,030H,05FH,016H,000H,019H,0EBH,0E1H,0C3H,0AFH,004H,00EH,003H,0CDH,0BEH,001H,0C1H,0E5H,0E5H,02AH,01AH,001H,0E3H,03EH,08CH,0F5H,033H,0C5H,0CDH,0ABH,004H
db 0C0H,0CDH,085H,002H,060H,069H,02BH,0D8H,01EH,00EH,0C3H,0DBH,001H,0C0H,016H,0FFH,0CDH,09AH,001H,0F9H,0FEH,08CH,01EH,004H,0C2H,0DBH,001H,0E1H,022H,01AH,001H,021H
db 02FH,004H,0E3H,001H,03AH,00EH,000H,07EH,0B7H,0C8H,0B9H,0C8H,023H,0C3H,007H,005H,0CDH,029H,007H,0CFH,09DH,0D5H,0CDH,09AH,006H,0E3H,022H,06BH,001H,0E5H,0CDH,037H
db 00AH,0D1H,0E1H,0C9H,0CDH,09AH,006H,07EH,0CDH,010H,00AH,016H,000H,0D6H,09CH,0DAH,040H,005H,0FEH,003H,0D2H,040H,005H,0FEH,001H,017H,0B2H,057H,0D7H,0C3H,02DH,005H
db 07AH,0B7H,0CAH,0D6H,001H,0F5H,0CDH,09AH,006H,0CFH,096H,02BH,0F1H,0C1H,0D1H,0E5H,0F5H,0CDH,05AH,00AH,03CH,017H,0C1H,0A0H,0E1H,0CAH,005H,005H,0D7H,0DAH,0DDH,004H
db 0C3H,051H,004H,02BH,0D7H,0CAH,098H,005H,0C8H,0FEH,022H,0CCH,0B0H,005H,0CAH,063H,005H,0FEH,094H,0CAH,0D5H,005H,0E5H,0FEH,02CH,0CAH,0C1H,005H,0FEH,03BH,0CAH,0EDH
db 005H,0C1H,0CDH,09AH,006H,0E5H,0CDH,050H,00BH,0CDH,0B1H,005H,03EH,020H,0DFH,0E1H,0C3H,063H,005H,036H,000H,021H,01EH,001H,03EH,00DH,032H,027H,000H,0DFH,03EH,00AH
db 0DFH,03AH,026H,000H,03DH,032H,027H,000H,0C8H,0F5H,0AFH,0DFH,0F1H,0C3H,0A4H,005H,023H,07EH,0B7H,0C8H,023H,0FEH,022H,0C8H,0DFH,0FEH,00DH,0CCH,098H,005H,0C3H,0B1H
db 005H,03AH,027H,000H,0FEH,038H,0D4H,098H,005H,0D2H,0EDH,005H,0D6H,00EH,0D2H,0CCH,005H,02FH,0C3H,0E4H,005H,0CDH,096H,004H,0CFH,029H,02BH,0E5H,03AH,027H,000H,02FH
db 083H,0D2H,0EDH,005H,03CH,047H,03EH,020H,0DFH,005H,0C2H,0E8H,005H,0E1H,0D7H,0C3H,068H,005H,0E5H,02AH,01AH,001H,01EH,016H,023H,07DH,0B4H,0CAH,0DBH,001H,0CDH,0CAH
db 002H,0C3H,009H,006H,0E5H,02AH,075H,001H,0F6H,0AFH,032H,06AH,001H,0E3H,001H,0CFH,02CH,0CDH,029H,007H,0E3H,0D5H,07EH,0FEH,02CH,0CAH,02EH,006H,0B7H,0C2H,0D6H,001H
db 03AH,06AH,001H,0B7H,023H,0C2H,044H,006H,03EH,03FH,0DFH,0CDH,0CAH,002H,0D1H,023H,0CDH,015H,005H,0E3H,02BH,0D7H,0C2H,00FH,006H,0D1H,03AH,06AH,001H,0B7H,0C8H,0EBH
db 0C2H,07CH,004H,0E1H,0F7H,079H,0B0H,01EH,006H,0CAH,0DBH,001H,023H,0D7H,0FEH,083H,0C2H,043H,006H,0C1H,0C3H,02EH,006H,0CDH,029H,007H,022H,06BH,001H,0CDH,09AH,001H
db 0F9H,0D5H,07EH,023H,0F5H,0D5H,01EH,000H,0C2H,0DBH,001H,0CDH,01DH,00AH,0E3H,0E5H,0CDH,012H,008H,0E1H,0CDH,037H,00AH,0E1H,0CDH,02EH,00AH,0E5H,0CDH,05AH,00AH,0E1H
db 0C1H,090H,0CDH,02EH,00AH,0CAH,091H,006H,0EBH,022H,01AH,001H,069H,060H,0C3H,02BH,004H,0F9H,02AH,06BH,001H,0C3H,02FH,004H,0CFH,028H,02BH,016H,000H,0D5H,00EH,001H
db 0CDH,0BEH,001H,0CDH,0D4H,006H,022H,06DH,001H,02AH,06DH,001H,0C1H,07EH,016H,000H,0D6H,098H,0D8H,0FEH,004H,0D0H,05FH,007H,083H,05FH,021H,0F4H,000H,019H,078H,056H
db 0BAH,0D0H,023H,0C5H,001H,0A9H,006H,0C5H,04AH,0CDH,010H,00AH,051H,0F7H,02AH,06DH,001H,0C3H,09DH,006H,0D7H,0DAH,0C1H,00AH,0CDH,08EH,004H,0D2H,001H,007H,0FEH,098H
db 0CAH,0D4H,006H,0FEH,02EH,0CAH,0C1H,00AH,0FEH,099H,0CAH,0F8H,006H,0D6H,09FH,0D2H,00BH,007H,0CDH,098H,006H,0CFH,029H,0C9H,0CDH,0D4H,006H,0E5H,0CDH,008H,00AH,0E1H
db 0C9H,0CDH,029H,007H,0E5H,0EBH,0CDH,01DH,00AH,0E1H,0C9H,006H,000H,007H,04FH,0C5H,0D7H,0CDH,0F2H,006H,0E3H,011H,0FFH,006H,0D5H,001H,043H,000H,009H,0F7H,0C9H,02BH
db 0D7H,0C8H,0CFH,02CH,001H,01FH,007H,0C5H,0F6H,0AFH,032H,069H,001H,046H,0CDH,08EH,004H,0DAH,0D6H,001H,0AFH,04FH,0D7H,0D2H,03CH,007H,04FH,0D7H,0D6H,028H,0CAH,098H
db 007H,0E5H,02AH,071H,001H,0EBH,02AH,06FH,001H,0E7H,0CAH,060H,007H,079H,096H,023H,0C2H,055H,007H,078H,096H,023H,0CAH,090H,007H,023H,023H,023H,023H,0C3H,049H,007H
db 0E1H,0E3H,0D5H,011H,004H,007H,0E7H,0D1H,0CAH,093H,007H,0E3H,0E5H,0C5H,001H,006H,000H,02AH,073H,001H,0E5H,009H,0C1H,0E5H,0CDH,0AFH,001H,0E1H,022H,073H,001H,060H
db 069H,022H,071H,001H,02BH,036H,000H,0E7H,0C2H,084H,007H,0D1H,073H,023H,072H,023H,0EBH,0E1H,0C9H,032H,07AH,001H,0E1H,0C9H,0C5H,03AH,069H,001H,0F5H,0CDH,096H,004H
db 0CFH,029H,0F1H,032H,069H,001H,0E3H,0EBH,029H,029H,0E5H,02AH,071H,001H,001H,0C1H,009H,0EBH,0E5H,02AH,073H,001H,0E7H,0EBH,0D1H,0CAH,0DBH,007H,0F7H,0E3H,0E7H,0E1H
db 0F7H,0C2H,0AFH,007H,03AH,069H,001H,0B7H,01EH,012H,0C2H,0DBH,001H,0D1H,01BH,0E3H,0E7H,01EH,010H,0D2H,0DBH,001H,0D1H,019H,0D1H,0EBH,0C9H,073H,023H,072H,023H,011H
db 02CH,000H,03AH,069H,001H,0B7H,0CAH,0EFH,007H,0D1H,0D5H,013H,013H,013H,013H,0D5H,073H,023H,072H,023H,0E5H,019H,0CDH,0C7H,001H,022H,073H,001H,0D1H,02BH,036H,000H
db 0E7H,0C2H,0FDH,007H,0C3H,0CDH,007H,050H,01EH,000H,006H,090H,0C3H,0F8H,009H,021H,019H,00CH,0CDH,02EH,00AH,0C3H,020H,008H,0C1H,0D1H,0CDH,008H,00AH,021H,0C1H,0D1H
db 078H,0B7H,0C8H,03AH,07AH,001H,0B7H,0CAH,020H,00AH,090H,0D2H,03AH,008H,02FH,03CH,0EBH,0CDH,010H,00AH,0EBH,0CDH,020H,00AH,0C1H,0D1H,0F5H,0CDH,045H,00AH,067H,0F1H
db 0CDH,0D7H,008H,0B4H,021H,077H,001H,0F2H,05BH,008H,0CDH,0B7H,008H,0D2H,08CH,008H,023H,034H,0CAH,0B2H,008H,0CDH,0E4H,008H,0C3H,08CH,008H,0AFH,090H,047H,07EH,09BH
db 05FH,023H,07EH,09AH,057H,023H,07EH,099H,04FH,0DCH,0C3H,008H,026H,000H,079H,0B7H,0FAH,08CH,008H,0FEH,0E0H,0CAH,0CCH,009H,025H,078H,087H,047H,0CDH,09EH,008H,07CH
db 0F2H,073H,008H,021H,07AH,001H,086H,077H,0D2H,0CCH,009H,0C8H,078H,021H,07AH,001H,0B7H,0FCH,0A8H,008H,046H,023H,07EH,0E6H,080H,0A9H,04FH,0C3H,020H,00AH,07BH,017H
db 05FH,07AH,017H,057H,079H,08FH,04FH,0C9H,01CH,0C0H,014H,0C0H,00CH,0C0H,00EH,080H,034H,0C0H,01EH,00AH,0C3H,0DBH,001H,07EH,083H,05FH,023H,07EH,08AH,057H,023H,07EH
db 089H,04FH,0C9H,021H,07BH,001H,07EH,02FH,077H,0AFH,06FH,090H,047H,07DH,09BH,05FH,07DH,09AH,057H,07DH,099H,04FH,0C9H,006H,000H,03CH,06FH,0AFH,02DH,0C8H,0CDH,0E4H
db 008H,0C3H,0DBH,008H,079H,01FH,04FH,07AH,01FH,057H,07BH,01FH,05FH,078H,01FH,047H,0C9H,0C1H,0D1H,0EFH,0C8H,02EH,000H,0CDH,0A9H,009H,079H,032H,025H,009H,0EBH,022H
db 020H,009H,001H,000H,000H,050H,058H,021H,06CH,008H,0E5H,021H,013H,009H,0E5H,0E5H,021H,077H,001H,07EH,023H,0E5H,02EH,008H,01FH,067H,079H,0D2H,027H,009H,0E5H,021H
db 000H,000H,019H,0D1H,0CEH,000H,0EBH,0CDH,0E5H,008H,02DH,07CH,0C2H,018H,009H,0E1H,0C9H,0CDH,010H,00AH,001H,020H,084H,011H,000H,000H,0CDH,020H,00AH,0C1H,0D1H,0EFH
db 0CAH,0D9H,001H,02EH,0FFH,0CDH,0A9H,009H,034H,034H,02BH,07EH,032H,06EH,009H,02BH,07EH,032H,06AH,009H,02BH,07EH,032H,066H,009H,041H,0EBH,0AFH,04FH,057H,05FH,032H
db 071H,009H,0E5H,0C5H,07DH,0D6H,000H,06FH,07CH,0DEH,000H,067H,078H,0DEH,000H,047H,03EH,000H,0DEH,000H,03FH,0D2H,07FH,009H,032H,071H,009H,0F1H,0F1H,037H,0D2H,0C1H
db 0E1H,079H,03CH,03DH,01FH,0FAH,08DH,008H,017H,0CDH,09EH,008H,029H,078H,017H,047H,03AH,071H,009H,017H,032H,071H,009H,079H,0B2H,0B3H,0C2H,062H,009H,0E5H,021H,07AH
db 001H,035H,0E1H,0C2H,062H,009H,0C3H,0B2H,008H,078H,0B7H,0CAH,0C8H,009H,07DH,021H,07AH,001H,0AEH,080H,047H,01FH,0A8H,078H,0F2H,0C7H,009H,0C6H,080H,077H,0CAH,02FH
db 009H,0CDH,045H,00AH,077H,02BH,0C9H,0B7H,0E1H,0FAH,0B2H,008H,0AFH,032H,07AH,001H,0C9H,0CDH,02BH,00AH,078H,0B7H,0C8H,0C6H,002H,0DAH,0B2H,008H,047H,0CDH,020H,008H
db 021H,07AH,001H,034H,0C0H,0C3H,0B2H,008H,03AH,079H,001H,0FEH,02FH,017H,09FH,0C0H,03CH,0C9H,0EFH,006H,088H,011H,000H,000H,021H,07AH,001H,04FH,070H,006H,000H,023H
db 036H,080H,017H,0C3H,069H,008H,0EFH,0F0H,021H,079H,001H,07EH,0EEH,080H,077H,0C9H,0EBH,02AH,077H,001H,0E3H,0E5H,02AH,079H,001H,0E3H,0E5H,0EBH,0C9H,0CDH,02EH,00AH
db 0EBH,022H,077H,001H,060H,069H,022H,079H,001H,0EBH,0C9H,021H,077H,001H,05EH,023H,056H,023H,04EH,023H,046H,023H,0C9H,011H,077H,001H,006H,004H,01AH,077H,013H,023H
db 005H,0C2H,03CH,00AH,0C9H,021H,079H,001H,07EH,007H,037H,01FH,077H,03FH,01FH,023H,023H,077H,079H,007H,037H,01FH,04FH,01FH,0AEH,0C9H,078H,0B7H,0CAH,028H,000H,021H
db 0ECH,009H,0E5H,0EFH,079H,0C8H,021H,079H,001H,0AEH,079H,0F8H,0CDH,072H,00AH,01FH,0A9H,0C9H,023H,078H,0BEH,0C0H,02BH,079H,0BEH,0C0H,02BH,07AH,0BEH,0C0H,02BH,07BH
db 096H,0C0H,0E1H,0E1H,0C9H,047H,04FH,057H,05FH,0B7H,0C8H,0E5H,0CDH,02BH,00AH,0CDH,045H,00AH,0AEH,067H,0FCH,0A9H,00AH,03EH,098H,090H,0CDH,0D7H,008H,07CH,017H,0DCH
db 0A8H,008H,006H,000H,0DCH,0C3H,008H,0E1H,0C9H,01BH,07AH,0A3H,03CH,0C0H,00BH,0C9H,021H,07AH,001H,07EH,0FEH,098H,0D0H,0CDH,085H,00AH,036H,098H,079H,017H,0C3H,069H
db 008H,02BH,0CDH,0CCH,009H,047H,057H,05FH,02FH,04FH,0D7H,0DAH,012H,00BH,0FEH,02EH,0CAH,0F2H,00AH,0FEH,045H,0C2H,0F6H,00AH,0D7H,015H,0FEH,099H,0CAH,0E6H,00AH,014H
db 0FEH,098H,0CAH,0E6H,00AH,02BH,0D7H,0DAH,031H,00BH,014H,0C2H,0F6H,00AH,0AFH,093H,05FH,00CH,00CH,0CAH,0CAH,00AH,0E5H,07BH,090H,0F4H,00AH,00BH,0F2H,005H,00BH,0F5H
db 0CDH,031H,009H,0F1H,03CH,0C2H,0F9H,00AH,0E1H,0C9H,0C8H,0F5H,0CDH,0D1H,009H,0F1H,03DH,0C9H,0D5H,057H,078H,089H,047H,0C5H,0E5H,0D5H,0CDH,0D1H,009H,0F1H,0D6H,030H
db 0CDH,010H,00AH,0CDH,0F3H,009H,0C1H,0D1H,0CDH,020H,008H,0E1H,0C1H,0D1H,0C3H,0CAH,00AH,07BH,007H,007H,083H,007H,086H,0D6H,030H,05FH,0C3H,0E6H,00AH,0E5H,021H,090H
db 001H,0CDH,0B1H,005H,0E1H,0EBH,0AFH,006H,098H,0CDH,0F8H,009H,021H,0B0H,005H,0E5H,021H,07CH,001H,0E5H,0EFH,036H,020H,0F2H,05CH,00BH,036H,02DH,023H,036H,030H,0CAH
db 005H,00CH,0E5H,0FCH,008H,00AH,0AFH,0F5H,0CDH,00BH,00CH,001H,043H,091H,011H,0F8H,04FH,0CDH,05AH,00AH,0E2H,088H,00BH,0F1H,0CDH,00BH,00BH,0F5H,0C3H,06BH,00BH,0CDH
db 031H,009H,0F1H,03CH,0F5H,0CDH,00BH,00CH,0CDH,00FH,008H,03CH,0CDH,085H,00AH,0CDH,020H,00AH,001H,006H,002H,0F1H,081H,0FAH,0A3H,00BH,0FEH,007H,0D2H,0A3H,00BH,03CH
db 047H,03EH,001H,03DH,0E1H,0F5H,011H,01DH,00CH,005H,036H,02EH,0CCH,035H,00AH,0C5H,0E5H,0D5H,0CDH,02BH,00AH,0E1H,006H,02FH,004H,07BH,096H,05FH,023H,07AH,09EH,057H
db 023H,079H,09EH,04FH,02BH,02BH,0D2H,0B8H,00BH,0CDH,0B7H,008H,023H,0CDH,020H,00AH,0EBH,0E1H,070H,023H,0C1H,00DH,0C2H,0A9H,00BH,005H,0CAH,0E9H,00BH,02BH,07EH,0FEH
db 030H,0CAH,0DDH,00BH,0FEH,02EH,0C4H,035H,00AH,0F1H,0CAH,008H,00CH,036H,045H,023H,036H,02BH,0F2H,0F9H,00BH,036H,02DH,02FH,03CH,006H,02FH,004H,0D6H,00AH,0D2H,0FBH
db 00BH,0C6H,03AH,023H,070H,023H,077H,023H,071H,0E1H,0C9H,001H,074H,094H,011H,0F7H,023H,0CDH,05AH,00AH,0E1H,0E2H,07FH,00BH,0E9H,000H,000H,000H,080H,0A0H,086H,001H
db 010H,027H,000H,0E8H,003H,000H,064H,000H,000H,00AH,000H,000H,001H,000H,000H,0EFH,0FAH,0A6H,004H,0C8H,021H,07AH,001H,07EH,01FH,0F5H,0E5H,03EH,040H,017H,077H,021H
db 07CH,001H,0CDH,037H,00AH,03EH,004H,0F5H,0CDH,010H,00AH,021H,07CH,001H,0CDH,02EH,00AH,0CDH,03FH,009H,0C1H,0D1H,0CDH,020H,008H,001H,000H,080H,051H,059H,0CDH,0F3H
db 008H,0F1H,03DH,0C2H,047H,00CH,0E1H,0F1H,0C6H,0C0H,086H,077H,0C9H,0EFH,021H,09CH,00CH,0CDH,01DH,00AH,0C8H,001H,035H,098H,011H,07AH,044H,0CDH,0F3H,008H,001H,028H
db 068H,011H,046H,0B1H,0CDH,020H,008H,0CDH,02BH,00AH,07BH,059H,04FH,036H,080H,02BH,046H,036H,080H,0CDH,06CH,008H,021H,09CH,00CH,0C3H,037H,00AH,052H,0C7H,04FH,080H
db 0CDH,010H,00AH,001H,049H,083H,011H,0DBH,00FH,0CDH,020H,00AH,0C1H,0D1H,0CDH,03FH,009H,0CDH,010H,00AH,0CDH,0B0H,00AH,0C1H,0D1H,0CDH,01AH,008H,001H,000H,07FH,051H
db 059H,0CDH,01AH,008H,0EFH,037H,0F2H,0CEH,00CH,0CDH,00FH,008H,0EFH,0B7H,0F5H,0F4H,008H,00AH,001H,000H,07FH,051H,059H,0CDH,020H,008H,0F1H,0D4H,008H,00AH,0CDH,010H
db 00AH,0CDH,02BH,00AH,0CDH,0F3H,008H,0CDH,010H,00AH,021H,00EH,00DH,0CDH,01DH,00AH,0C1H,0D1H,03EH,004H,0F5H,0D5H,0C5H,0E5H,0CDH,0F3H,008H,0E1H,0CDH,02EH,00AH,0E5H
db 0CDH,020H,008H,0E1H,0C1H,0D1H,0F1H,03DH,0C2H,0F4H,00CH,0C3H,0F1H,008H,0BAH,0D7H,01EH,086H,064H,026H,099H,087H,058H,034H,023H,087H,0E0H,05DH,0A5H,086H,0DAH,00FH
; db 049H,083H,000H,000H,0DBH,0FFH,0E6H,0F0H,00FH,00FH,0FEH,03CH,0C8H,0FEH,038H,037H,0C2H,03DH,00DH,021H,0FFH,00FH,04EH,02BH,07EH,0E6H,0F0H,00FH,00FH,0F5H,06FH,026H
db 049H,083H,000H,000H,03EH,000H,0E6H,0F0H,00FH,00FH,0FEH,03CH,0C8H,0FEH,038H,037H,0C2H,03DH,00DH,021H,0FFH,00FH,04EH,02BH,07EH,0E6H,0F0H,00FH,00FH,0F5H,06FH,026H
; ^^^^ ^^^^
db 000H,011H,0A2H,00DH,019H,07EH,023H,056H,023H,046H,023H,05EH,067H,0F1H,0F5H,07CH,0DAH,054H,00DH,079H,032H,0A0H,00DH,0F1H,021H,0BEH,00DH,0E5H,00EH,0FFH,0FEH,010H
db 021H,000H,000H,022H,08FH,003H,0CAH,078H,00DH,0FEH,008H,0D0H,0C6H,011H,0F5H,03EH,003H,0CDH,09FH,00DH,0F1H,0C3H,09FH,00DH,0AFH,0CDH,09FH,00DH,0CDH,09BH,00DH,0CDH
db 09BH,00DH,02FH,00EH,001H,0CDH,09BH,00DH,0E5H,02AH,09FH,00DH,02EH,0DBH,022H,08FH,003H,0E1H,03EH,02CH,035H,0CDH,09FH,00DH,035H,035H,035H,021H,0A0H,00DH,034H,0D3H
db 010H,0C9H,010H,0CAH,001H,002H,010H,0CAH,001H,002H,000H,0C2H,001H,080H,006H,0C2H,001H,080H,020H,0CAH,080H,080H,004H,0CAH,002H,001H,024H,0CAH,040H,040H,062H,068H
db 022H,096H,003H,07CH,0E6H,0C8H,067H,022H,084H,004H,0EBH,022H,087H,003H,03AH,0A0H,00DH,032H,094H,003H,032H,082H,004H,03CH,032H,09BH,003H,081H,032H,085H,003H,03CH
db 032H,08DH,003H,0C9H,000H,000H,021H,040H,00FH,0F9H,022H,018H,001H,0CDH,024H,00DH,021H,0FFH,0FFH,022H,01AH,001H,0CDH,098H,005H,021H,0EEH,00EH,0CDH,0B1H,005H,0CDH
db 0CAH,002H,0DAH,0F9H,00DH,0D7H,0B7H,0C2H,01DH,00EH,021H,0FAH,00EH,023H,07CH,0B5H,0CAH,029H,00EH,07EH,02FH,077H,0BEH,0CAH,00DH,00EH,0C3H,029H,00EH,021H,01FH,001H
db 0CDH,0ABH,004H,07EH,0B7H,0C2H,0D6H,001H,0EBH,02BH,0E5H,021H,0DFH,00EH,0CDH,0B1H,005H,0CDH,0CAH,002H,0DAH,02BH,00EH,0D7H,0B7H,03EH,048H,05FH,0CAH,048H,00EH,0CDH
db 0ABH,004H,07BH,0FEH,00FH,0DAH,02BH,00EH,032H,07CH,003H,0D6H,00EH,0D2H,04BH,00EH,0C6H,01CH,02FH,03CH,083H,032H,0C5H,005H,021H,0BFH,00EH,0F7H,011H,0D3H,00EH,0E7H
db 0CAH,06FH,00EH,0F7H,0E3H,0CDH,0B1H,005H,0CDH,0CAH,002H,0D7H,0E1H,0FEH,059H,0D1H,0CAH,084H,00EH,0FEH,04EH,0C2H,058H,00EH,0F7H,0E3H,011H,0A6H,004H,073H,023H,072H
db 0E1H,0C3H,05BH,00EH,0EBH,036H,000H,023H,022H,01CH,001H,0E3H,011H,040H,00FH,0E7H,0DAH,0D3H,001H,0D1H,0F9H,022H,018H,001H,0EBH,0CDH,0C7H,001H,07BH,095H,06FH,07AH
db 09CH,067H,001H,0F0H,0FFH,009H,0CDH,045H,00BH,021H,027H,001H,0CDH,0B1H,005H,021H,0B1H,005H,022H,005H,002H,0CDH,09EH,002H,021H,001H,002H,022H,002H,000H,0E9H,022H
db 00DH,0D3H,00EH,04FH,000H,0A0H,00CH,0D7H,00EH,04DH,000H,06DH,00CH,0DBH,00EH,04BH,000H,02FH,00CH,053H,049H,04EH,000H,052H,04EH,044H,000H,053H,051H,052H,000H,054H
db 045H,052H,04DH,049H,04EH,041H,04CH,020H,057H,049H,044H,054H,048H,000H,04DH,045H,04DH,04FH,052H,059H,020H,053H,049H,05AH,045H,000H,000H,000H,000H,000H,000H,000H
; db 0F3H,0AFH,0D3H,022H,02FH,0D3H,023H,03EH,02CH,0D3H,022H,03EH,003H,0D3H,010H,0DBH,0FFH,0E6H,010H,00FH,00FH,0C6H,011H,0D3H,010H,031H,000H,010H,0DBH,0FFH,0E6H,00FH
db 0F3H,0AFH,0D3H,022H,02FH,0D3H,023H,03EH,02CH,0D3H,022H,03EH,003H,0D3H,010H,03EH,000H,0E6H,010H,00FH,00FH,0C6H,011H,0D3H,010H,031H,000H,010H,03EH,000H,0E6H,00FH
; ^^^^ ^^^^ ^^^^ ^^^^
db 0FEH,007H,0F2H,08AH,00FH,021H,0ACH,00FH,006H,000H,04FH,087H,081H,04FH,009H,07EH,032H,0A6H,00FH,03DH,032H,09FH,00FH,023H,074H,00DH,051H,003H,0D3H,002H,002H,00EH
db 00FH,0CDH,09EH,00FH,0FEH,03CH,0CAH,058H,00FH,0FEH,078H,0C2H,041H,00FH,0CDH,09EH,00FH,04FH,0CDH,09EH,00FH,069H,067H,0E9H,0CDH,09EH,00FH,04FH,006H,000H,0CDH,09EH
db 00FH,05FH,0CDH,09EH,00FH,057H,07AH,0FEH,00FH,03EH,04FH,0CAH,08CH,00FH,0CDH,09EH,00FH,0EBH,077H,0BEH,03EH,04DH,0C2H,08CH,00FH,023H,0EBH,00DH,0C2H,066H,00FH,048H
db 0CDH,09EH,00FH,0B9H,0CAH,041H,00FH,03EH,043H,001H,03EH,049H,032H,000H,000H,022H,001H,000H,0FBH,0D3H,001H,0D3H,011H,0D3H,005H,0D3H,023H,0C3H,093H,00FH,0DBH,010H
db 0E6H,001H,0CAH,09EH,00FH,0DBH,011H,0F5H,080H,047H,0F1H,0C9H,011H,0CAH,001H,011H,0CAH,001H,001H,0C2H,001H,007H,0C2H,001H,021H,0CAH,080H,005H,0CAH,002H,025H,0CAH
db 040H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,002H,000H,055H,00FH
basic4kend:
;Altair 8K BASIC 4.0 image
basic8k: db 0F3H,0C3H,00BH,01AH,038H,007H,0E5H,00DH,07EH,0E3H,0BEH,023H,0E3H,0C2H,0C6H,002H,023H,07EH,0FEH,03AH,0D0H,0C3H,053H,006H,0F5H,03AH,0D1H,001H,0B7H,0C3H,02DH,005H
db 07CH,092H,0C0H,07DH,093H,0C9H,001H,000H,03AH,056H,002H,0B7H,0C2H,069H,014H,0C9H,000H,000H,000H,000H,000H,000H,000H,000H,0C9H,00EH,002H,00DH,00AH,042H,052H,045H
db 041H,04BH,000H,073H,014H,031H,015H,087H,014H,04DH,007H,0C3H,00DH,0FAH,010H,0F1H,00DH,0FFH,016H,0DCH,017H,01DH,013H,04BH,017H,076H,018H,07CH,018H,0D9H,018H,0EEH
db 018H,0F9H,011H,041H,010H,06FH,00EH,0D2H,010H,050H,010H,061H,010H,071H,010H,0A1H,010H,0ABH,010H,0C5H,04EH,044H,0C6H,04FH,052H,0CEH,045H,058H,054H,0C4H,041H,054H
db 041H,0C9H,04EH,050H,055H,054H,0C4H,049H,04DH,0D2H,045H,041H,044H,0CCH,045H,054H,0C7H,04FH,054H,04FH,0D2H,055H,04EH,0C9H,046H,0D2H,045H,053H,054H,04FH,052H,045H
db 0C7H,04FH,053H,055H,042H,0D2H,045H,054H,055H,052H,04EH,0D2H,045H,04DH,0D3H,054H,04FH,050H,0CFH,055H,054H,0CFH,04EH,0CEH,055H,04CH,04CH,0D7H,041H,049H,054H,0C4H
db 045H,046H,0D0H,04FH,04BH,045H,0D0H,052H,049H,04EH,054H,0C3H,04FH,04EH,054H,0CCH,049H,053H,054H,0C3H,04CH,045H,041H,052H,0C3H,04CH,04FH,041H,044H,0C3H,053H,041H
db 056H,045H,0CEH,045H,057H,0D4H,041H,042H,028H,0D4H,04FH,0C6H,04EH,0D3H,050H,043H,028H,0D4H,048H,045H,04EH,0CEH,04FH,054H,0D3H,054H,045H,050H,0ABH,0ADH,0AAH,0AFH
db 0DEH,0C1H,04EH,044H,0CFH,052H,0BEH,0BDH,0BCH,0D3H,047H,04EH,0C9H,04EH,054H,0C1H,042H,053H,0D5H,053H,052H,0C6H,052H,045H,0C9H,04EH,050H,0D0H,04FH,053H,0D3H,051H
db 052H,0D2H,04EH,044H,0CCH,04FH,047H,0C5H,058H,050H,0C3H,04FH,053H,0D3H,049H,04EH,0D4H,041H,04EH,0C1H,054H,04EH,0D0H,045H,045H,04BH,0CCH,045H,04EH,0D3H,054H,052H
db 024H,0D6H,041H,04CH,0C1H,053H,043H,0C3H,048H,052H,024H,0CCH,045H,046H,054H,024H,0D2H,049H,047H,048H,054H,024H,0CDH,049H,044H,024H,080H,081H,006H,0B7H,005H,03AH
db 00AH,0FAH,007H,05EH,009H,03FH,00CH,088H,009H,011H,008H,0B9H,007H,09CH,007H,07FH,008H,05EH,006H,0A8H,007H,0D5H,007H,0FCH,007H,07FH,006H,005H,011H,063H,008H,0C0H
db 006H,00BH,011H,0F9H,00DH,000H,012H,09BH,008H,0ADH,006H,06DH,005H,073H,007H,085H,011H,059H,011H,0B0H,003H,079H,0EBH,015H,079H,01CH,012H,07CH,059H,013H,07CH,0B7H
db 013H,07FH,008H,017H,050H,09CH,00BH,046H,09BH,00BH,04EH,046H,053H,04EH,052H,047H,04FH,044H,046H,043H,04FH,056H,04FH,04DH,055H,04CH,042H,053H,044H,044H,02FH,030H
db 049H,044H,054H,04DH,04FH,053H,04CH,053H,053H,054H,043H,04EH,055H,046H,04DH,04FH,000H,000H,073H,01CH,0FEH,0FFH,010H,01CH,02CH,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,056H,005H,047H,005H,068H,006H,00CH,006H,07FH,019H,0A8H,019H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,020H,045H,052H,052H,04FH,052H,000H,020H,049H,04EH,020H,000H,04FH,04BH,00DH,00AH,000H,021H,004H,000H,039H,07EH,023H,0FEH,081H,0C0H,04EH
db 023H,046H,023H,0E5H,069H,060H,07AH,0B3H,0EBH,0CAH,08EH,002H,0EBH,0E7H,001H,00DH,000H,0E1H,0C8H,009H,0C3H,07AH,002H,0CDH,0AFH,002H,0C5H,0E3H,0C1H,0E7H,07EH,002H
db 0C8H,00BH,02BH,0C3H,09DH,002H,0E5H,02AH,04FH,002H,006H,000H,009H,009H,03EH,0E5H,03EH,0D4H,095H,06FH,03EH,0FFH,09CH,067H,039H,0E1H,0D8H,01EH,00CH,0C3H,0D1H,002H
db 02AH,03EH,002H,022H,0D4H,001H,01EH,002H,001H,01EH,014H,001H,01EH,000H,001H,01EH,012H,0CDH,0D5H,003H,032H,0D1H,001H,0CDH,0E0H,008H,021H,0AAH,001H,057H,03EH,03FH
db 0DFH,019H,07EH,0DFH,0D7H,0DFH,021H,065H,002H,0CDH,0E3H,00EH,02AH,0D4H,001H,07CH,0A5H,03CH,0C4H,0FCH,015H,03EH,0C1H,0AFH,032H,0D1H,001H,0CDH,0E0H,008H,021H,071H
db 002H,0CDH,00BH,01AH,021H,0FFH,0FFH,022H,0D4H,001H,0CDH,0D4H,004H,0DAH,004H,003H,0AFH,032H,041H,002H,0D7H,03CH,03DH,0CAH,004H,003H,0F5H,0CDH,052H,007H,0D5H,0CDH
db 0F8H,003H,047H,0D1H,0F1H,0D2H,030H,006H,0D5H,0C5H,0D7H,0B7H,0F5H,0CDH,092H,003H,0DAH,039H,003H,0F1H,0F5H,0CAH,0D0H,007H,0B7H,0C5H,0D2H,04EH,003H,0EBH,02AH,04BH
db 002H,01AH,002H,003H,013H,0E7H,0C2H,041H,003H,060H,069H,022H,04BH,002H,0D1H,0F1H,0CAH,075H,003H,02AH,04BH,002H,0E3H,0C1H,009H,0E5H,0CDH,097H,002H,0E1H,022H,04BH
db 002H,0EBH,074H,0D1H,023H,023H,073H,023H,072H,023H,011H,0D9H,001H,01AH,077H,023H,013H,0B7H,0C2H,06DH,003H,0CDH,0BCH,003H,023H,0EBH,062H,06BH,07EH,023H,0B6H,0CAH
db 004H,003H,023H,023H,023H,0AFH,0BEH,023H,0C2H,086H,003H,0EBH,073H,023H,072H,0C3H,07AH,003H,02AH,0D6H,001H,044H,04DH,07EH,023H,0B6H,02BH,0C8H,023H,023H,07EH,023H
db 066H,06FH,0E7H,060H,069H,07EH,023H,066H,06FH,03FH,0C8H,03FH,0D0H,0C3H,095H,003H,0C0H,02AH,0D6H,001H,0AFH,077H,023H,077H,023H,022H,04BH,002H,02AH,0D6H,001H,02BH
db 022H,043H,002H,02AH,026H,002H,022H,03AH,002H,0CDH,05EH,006H,02AH,04BH,002H,022H,04DH,002H,022H,04FH,002H,0C1H,02AH,0D2H,001H,0F9H,021H,02AH,002H,022H,028H,002H
db 0AFH,06FH,067H,022H,049H,002H,032H,040H,002H,0E5H,0C5H,02AH,043H,002H,0C9H,03EH,03FH,0DFH,03EH,020H,0DFH,0C3H,0D4H,004H,0AFH,032H,025H,002H,00EH,005H,011H,0D9H
db 001H,07EH,0FEH,020H,0CAH,07EH,004H,047H,0FEH,022H,0CAH,09EH,004H,0B7H,0CAH,0A5H,004H,03AH,025H,002H,0B7H,07EH,0C2H,07EH,004H,0FEH,03FH,03EH,096H,0CAH,07EH,004H
db 07EH,0FEH,030H,0DAH,02BH,004H,0FEH,03CH,0DAH,07EH,004H,0D5H,011H,072H,000H,0C5H,001H,07AH,004H,0C5H,006H,07FH,07EH,0FEH,061H,0DAH,044H,004H,0FEH,07BH,0D2H,044H
db 004H,0E6H,05FH,077H,04EH,0EBH,023H,0B6H,0F2H,046H,004H,004H,07EH,0E6H,07FH,0C8H,0B9H,0C2H,046H,004H,0EBH,0E5H,013H,01AH,0B7H,0FAH,076H,004H,04FH,078H,0FEH,088H
db 0C2H,065H,004H,0D7H,02BH,023H,07EH,0FEH,061H,0DAH,06EH,004H,0E6H,05FH,0B9H,0CAH,056H,004H,0E1H,0C3H,044H,004H,048H,0F1H,0EBH,0C9H,0EBH,079H,0C1H,0D1H,023H,012H
db 013H,00CH,0D6H,03AH,0CAH,08CH,004H,0FEH,049H,0C2H,08FH,004H,032H,025H,002H,0D6H,054H,0C2H,001H,004H,047H,07EH,0B7H,0CAH,0A5H,004H,0B8H,0CAH,07EH,004H,023H,012H
db 00CH,013H,0C3H,095H,004H,021H,0D8H,001H,012H,013H,012H,013H,012H,0C9H,03AH,0D0H,001H,0B7H,03EH,05CH,032H,0D0H,001H,0C2H,0C0H,004H,005H,0CAH,0D4H,004H,0DFH,03EH
db 005H,02BH,0CAH,0D0H,004H,07EH,0DFH,0C3H,0DDH,004H,005H,02BH,0DFH,0C2H,0DDH,004H,0DFH,0CDH,0EDH,008H,021H,0D9H,001H,006H,001H,0AFH,032H,0D0H,001H,0CDH,056H,005H
db 04FH,0FEH,07FH,0CAH,0AEH,004H,03AH,0D0H,001H,0B7H,0CAH,0F4H,004H,03EH,05CH,0DFH,0AFH,032H,0D0H,001H,079H,0FEH,007H,0CAH,01AH,005H,0FEH,003H,0CCH,0EDH,008H,037H
db 0C8H,0FEH,00DH,0CAH,0E8H,008H,0FEH,015H,0CAH,0D0H,004H,0FEH,040H,0CAH,0D0H,004H,0FEH,05FH,0CAH,0CAH,004H,0FEH,020H,0DAH,0DDH,004H,078H,0FEH,048H,03EH,007H,0D2H
db 029H,005H,079H,071H,032H,041H,002H,023H,004H,0DFH,0C3H,0DDH,004H,03AH,0D1H,001H,0B7H,0C2H,014H,00FH,0F1H,0F5H,0FEH,020H,0DAH,047H,005H,03AH,027H,000H,0FEH,048H
db 0CCH,0EDH,008H,03CH,032H,027H,000H,0DBH,000H,0E6H,0C8H,0C2H,047H,005H,0F1H,0D3H,001H,0F5H,0DBH,013H,0F1H,0C9H,0DBH,000H,0E6H,001H,0C2H,056H,005H,0DBH,001H,0E6H
db 07FH,0FEH,00FH,0C0H,03AH,0D1H,001H,02FH,032H,0D1H,001H,0AFH,0C9H,0CDH,052H,007H,0C0H,0C1H,0CDH,092H,003H,0C5H,0E1H,04EH,023H,046H,023H,078H,0B1H,0CAH,0F7H,002H
db 0CDH,068H,006H,0C5H,0CDH,0EDH,008H,05EH,023H,056H,023H,0E5H,0EBH,0CDH,004H,016H,03EH,020H,0E1H,0DFH,07EH,0B7H,023H,0CAH,076H,005H,0F2H,093H,005H,0D6H,07FH,04FH
db 011H,073H,000H,01AH,013H,0B7H,0F2H,0A3H,005H,00DH,0C2H,0A3H,005H,0DFH,01AH,013H,0B7H,0F2H,0ADH,005H,0C3H,094H,005H,03EH,064H,032H,040H,002H,0CDH,011H,008H,0E3H
db 0CDH,076H,002H,0D1H,0C2H,0C9H,005H,009H,0F9H,0EBH,00EH,008H,0CDH,0A6H,002H,0E5H,0CDH,0FAH,007H,0E3H,0E5H,02AH,0D4H,001H,0E3H,0CDH,086H,00AH,0CFH,09EH,0CDH,083H
db 00AH,0E5H,0CDH,0ACH,014H,0E1H,0C5H,0D5H,001H,000H,081H,051H,05AH,07EH,0FEH,0A3H,03EH,001H,0C2H,0FFH,005H,0D7H,0CDH,083H,00AH,0E5H,0CDH,0ACH,014H,0EFH,0E1H,0C5H
db 0D5H,0F5H,033H,0E5H,02AH,043H,002H,0E3H,006H,081H,0C5H,033H,0DBH,000H,0E6H,001H,0CCH,06DH,006H,022H,043H,002H,07EH,0FEH,03AH,0CAH,030H,006H,0B7H,0C2H,0C6H,002H
db 023H,07EH,023H,0B6H,0CAH,089H,006H,023H,05EH,023H,056H,0EBH,022H,0D4H,001H,0EBH,0D7H,011H,00CH,006H,0D5H,0C8H,0D6H,080H,0DAH,011H,008H,0FEH,01DH,0D2H,0C6H,002H
db 007H,04FH,006H,000H,0EBH,021H,05BH,001H,009H,04EH,023H,046H,0C5H,0EBH,023H,07EH,0FEH,03AH,0D0H,0FEH,020H,0CAH,04EH,006H,0FEH,030H,03FH,03CH,03DH,0C9H,0EBH,02AH
db 0D6H,001H,02BH,022H,051H,002H,0EBH,0C9H,0DBH,000H,0E6H,001H,0C0H,0CDH,056H,005H,0FEH,003H,0CAH,07FH,006H,0FEH,011H,0CAH,068H,006H,0FEH,013H,0CAH,06DH,006H,0C0H
db 0F6H,0C0H,022H,043H,002H,021H,0F6H,0FFH,0C1H,02AH,0D4H,001H,0F5H,07DH,0A4H,03CH,0CAH,09CH,006H,022H,047H,002H,02AH,043H,002H,022H,049H,002H,0AFH,032H,0D1H,001H
db 0CDH,0E0H,008H,0F1H,021H,03BH,000H,0C2H,0E9H,002H,0C3H,0F7H,002H,02AH,049H,002H,07CH,0B5H,01EH,020H,0CAH,0D1H,002H,0EBH,02AH,047H,002H,022H,0D4H,001H,0EBH,0C9H
db 0CDH,031H,011H,0C0H,03CH,0FEH,048H,0D2H,04DH,007H,032H,026H,000H,0C9H,006H,0FFH,0D7H,078H,032H,043H,002H,03EH,001H,032H,040H,002H,0C3H,044H,00CH,032H,040H,002H
db 044H,04DH,00BH,00BH,00BH,00BH,03AH,043H,002H,0B7H,0F5H,0EBH,019H,0EBH,04EH,006H,000H,009H,009H,023H,006H,0D2H,0FAH,003H,007H,078H,0CDH,04AH,011H,0CDH,04AH,011H
db 0C3H,010H,007H,00EH,004H,0CDH,040H,011H,0B8H,0C2H,003H,007H,00DH,0C2H,005H,007H,0CDH,086H,00AH,0E7H,0CAH,025H,007H,0F1H,0F5H,07EH,0F4H,04DH,011H,0FCH,040H,011H
db 077H,023H,0C3H,013H,007H,0F1H,0E1H,0C9H,07EH,0FEH,041H,0D8H,0FEH,05BH,03FH,0C9H,0D7H,0CDH,083H,00AH,0EFH,0FAH,04DH,007H,03AH,056H,002H,0FEH,090H,0DAH,006H,015H
db 001H,080H,090H,011H,000H,000H,0E5H,0CDH,0DBH,014H,0E1H,051H,0C8H,01EH,008H,0C3H,0D1H,002H,02BH,011H,000H,000H,0D7H,0D0H,0E5H,0F5H,021H,098H,019H,0E7H,0DAH,0C6H
db 002H,062H,06BH,019H,029H,019H,029H,0F1H,0D6H,030H,05FH,016H,000H,019H,0EBH,0E1H,0C3H,056H,007H,0CAH,0C0H,003H,0CDH,031H,007H,02BH,0D7H,0C0H,0E5H,02AH,026H,002H
db 07DH,093H,05FH,07CH,09AH,057H,0DAH,0BBH,002H,02AH,04BH,002H,001H,028H,000H,009H,0E7H,0D2H,0BBH,002H,0EBH,022H,0D2H,001H,0E1H,0C3H,0C0H,003H,0CAH,0BCH,003H,0CDH
db 0C0H,003H,001H,00CH,006H,0C3H,0B8H,007H,00EH,003H,0CDH,0A6H,002H,0C1H,0E5H,0E5H,02AH,0D4H,001H,0E3H,03EH,08CH,0F5H,033H,0C5H,0CDH,052H,007H,0CDH,0FCH,007H,0E5H
db 02AH,0D4H,001H,0E7H,0E1H,023H,0DCH,095H,003H,0D4H,092H,003H,060H,069H,02BH,0D8H,01EH,00EH,0C3H,0D1H,002H,0C0H,016H,0FFH,0CDH,076H,002H,0F9H,0FEH,08CH,01EH,004H
db 0C2H,0D1H,002H,0E1H,022H,0D4H,001H,023H,07CH,0B5H,0C2H,0F4H,007H,03AH,041H,002H,0B7H,0C2H,0F6H,002H,021H,00CH,006H,0E3H,03EH,0E1H,001H,03AH,00EH,000H,006H,000H
db 079H,048H,047H,07EH,0B7H,0C8H,0B8H,0C8H,023H,0FEH,022H,0CAH,000H,008H,0C3H,003H,008H,0CDH,044H,00CH,0CFH,0ACH,0D5H,03AH,024H,002H,0F5H,0CDH,094H,00AH,0F1H,0E3H
db 022H,043H,002H,01FH,0CDH,088H,00AH,0CAH,05CH,008H,0E5H,02AH,053H,002H,0E5H,023H,023H,05EH,023H,056H,02AH,0D6H,001H,0E7H,0D2H,04BH,008H,02AH,0D2H,001H,0E7H,0D1H
db 0D2H,053H,008H,02AH,04BH,002H,0E7H,0D2H,053H,008H,03EH,0D1H,0CDH,032H,010H,0EBH,0CDH,07FH,00EH,0CDH,032H,010H,0E1H,0CDH,0BBH,014H,0E1H,0C9H,0E5H,0CDH,0B8H,014H
db 0D1H,0E1H,0C9H,0CDH,031H,011H,07EH,047H,0FEH,08CH,0CAH,070H,008H,0CFH,088H,02BH,04BH,00DH,078H,0CAH,036H,006H,0CDH,053H,007H,0FEH,02CH,0C0H,0C3H,071H,008H,0CDH
db 094H,00AH,07EH,0FEH,088H,0CAH,08AH,008H,0CFH,0A1H,02BH,0CDH,086H,00AH,0EFH,0CAH,0FCH,007H,0D7H,0DAH,0B9H,007H,0C3H,035H,006H,02BH,0D7H,0CAH,0EDH,008H,0C8H,0FEH
db 09DH,0CAH,016H,009H,0FEH,0A0H,0CAH,016H,009H,0E5H,0FEH,02CH,0CAH,002H,009H,0FEH,03BH,0CAH,035H,009H,0C1H,0CDH,094H,00AH,0E5H,03AH,024H,002H,0B7H,0C2H,0D9H,008H
db 0CDH,00FH,016H,0CDH,0A3H,00EH,02AH,053H,002H,03AH,027H,000H,086H,0FEH,048H,0D4H,0EDH,008H,0CDH,0E6H,00EH,03EH,020H,0DFH,0AFH,0C4H,0E6H,00EH,0E1H,0C3H,099H,008H
db 03AH,027H,000H,0B7H,0C8H,0C3H,0EDH,008H,036H,000H,021H,0D8H,001H,03EH,00DH,0DFH,03EH,00AH,0DFH,03AH,026H,000H,03DH,032H,027H,000H,0C8H,0F5H,0AFH,0DFH,0F1H,0C3H
db 0F6H,008H,03AH,027H,000H,0FEH,038H,0D4H,0EDH,008H,0D2H,035H,009H,0D6H,00EH,0D2H,00DH,009H,02FH,0C3H,02CH,009H,0F5H,0CDH,030H,011H,0CFH,029H,02BH,0F1H,0D6H,0A0H
db 0E5H,0CAH,027H,009H,03AH,027H,000H,02FH,083H,0D2H,035H,009H,03CH,047H,03EH,020H,0DFH,005H,0C2H,030H,009H,0E1H,0D7H,0C3H,09EH,008H,03FH,052H,045H,044H,04FH,020H
db 046H,052H,04FH,04DH,020H,053H,054H,041H,052H,054H,00DH,00AH,000H,03AH,042H,002H,0B7H,0C2H,0C0H,002H,0C1H,021H,03AH,009H,0CDH,0E3H,00EH,0C3H,0EBH,003H,0FEH,022H
db 03EH,000H,032H,0D1H,001H,0C2H,072H,009H,0CDH,0A4H,00EH,0CFH,03BH,0E5H,0CDH,0E6H,00EH,03EH,0E5H,0CDH,052H,00EH,0CDH,0EFH,003H,0C1H,0DAH,086H,006H,023H,07EH,0B7H
db 02BH,0C5H,0CAH,0F9H,007H,0C3H,08DH,009H,0E5H,02AH,051H,002H,0F6H,0AFH,032H,042H,002H,0E3H,001H,0CFH,02CH,0CDH,044H,00CH,0E3H,0D5H,07EH,0FEH,02CH,0CAH,0BBH,009H
db 03AH,042H,002H,0B7H,0C2H,018H,00AH,03EH,03FH,0DFH,0CDH,0EFH,003H,0D1H,0C1H,0DAH,086H,006H,023H,07EH,0B7H,02BH,0C5H,0CAH,0F9H,007H,0D5H,03AH,024H,002H,0B7H,0CAH
db 0DBH,009H,0D7H,057H,047H,0FEH,022H,0CAH,0CFH,009H,016H,03AH,006H,02CH,02BH,0CDH,0A7H,00EH,0EBH,021H,0E4H,009H,0E3H,0D5H,0C3H,02AH,008H,0D7H,0CDH,065H,015H,0E3H
db 0CDH,0B8H,014H,0E1H,02BH,0D7H,0CAH,0EEH,009H,0FEH,02CH,0C2H,04DH,009H,0E3H,02BH,0D7H,0C2H,093H,009H,0D1H,03AH,042H,002H,0B7H,0EBH,0C2H,063H,006H,0D5H,0B6H,021H
db 007H,00AH,0C4H,0E3H,00EH,0E1H,0C9H,03FH,045H,058H,054H,052H,041H,020H,049H,047H,04EH,04FH,052H,045H,044H,00DH,00AH,000H,0CDH,0FAH,007H,0B7H,0C2H,031H,00AH,023H
db 07EH,023H,0B6H,01EH,006H,0CAH,0D1H,002H,023H,05EH,023H,056H,0EBH,022H,03EH,002H,0EBH,0D7H,0FEH,083H,0C2H,018H,00AH,0C3H,0BBH,009H,011H,000H,000H,0C4H,044H,00CH
db 022H,043H,002H,0CDH,076H,002H,0C2H,0CCH,002H,0F9H,0D5H,07EH,023H,0F5H,0D5H,0CDH,09EH,014H,0E3H,0E5H,0CDH,012H,012H,0E1H,0CDH,0B8H,014H,0E1H,0CDH,0AFH,014H,0E5H
db 0CDH,0DBH,014H,0E1H,0C1H,090H,0CDH,0AFH,014H,0CAH,075H,00AH,0EBH,022H,0D4H,001H,069H,060H,0C3H,008H,006H,0F9H,02AH,043H,002H,07EH,0FEH,02CH,0C2H,00CH,006H,0D7H
db 0CDH,03DH,00AH,0CDH,094H,00AH,0F6H,037H,03AH,024H,002H,08FH,0E8H,01EH,018H,0C3H,0D1H,002H,0CFH,028H,02BH,016H,000H,0D5H,00EH,001H,0CDH,0A6H,002H,0CDH,009H,00BH
db 022H,045H,002H,02AH,045H,002H,0C1H,078H,0FEH,078H,0D4H,086H,00AH,07EH,016H,000H,0D6H,0ABH,0DAH,0CAH,00AH,0FEH,003H,0D2H,0CAH,00AH,0FEH,001H,017H,0AAH,0BAH,057H
db 0DAH,0C6H,002H,022H,03CH,002H,0D7H,0C3H,0B0H,00AH,07AH,0B7H,0C2H,0C3H,00BH,07EH,022H,03CH,002H,0D6H,0A4H,0D8H,0FEH,007H,0D0H,05FH,03AH,024H,002H,03DH,0B3H,07BH
db 0CAH,0C9H,00FH,007H,083H,05FH,021H,095H,001H,019H,078H,056H,0BAH,0D0H,023H,0CDH,086H,00AH,0C5H,001H,0A3H,00AH,0C5H,043H,04AH,0CDH,091H,014H,058H,051H,04EH,023H
db 046H,023H,0C5H,02AH,03CH,002H,0C3H,097H,00AH,0AFH,032H,024H,002H,0D7H,01EH,024H,0CAH,0D1H,002H,0DAH,065H,015H,0CDH,028H,007H,0D2H,056H,00BH,0FEH,0A4H,0CAH,009H
db 00BH,0FEH,02EH,0CAH,065H,015H,0FEH,0A5H,0CAH,045H,00BH,0FEH,022H,0CAH,0A4H,00EH,0FEH,0A2H,0CAH,023H,00CH,0FEH,09FH,0CAH,016H,00EH,0D6H,0AEH,0D2H,067H,00BH,0CDH
db 092H,00AH,0CFH,029H,0C9H,016H,07DH,0CDH,097H,00AH,02AH,045H,002H,0E5H,0CDH,089H,014H,0CDH,086H,00AH,0E1H,0C9H,0CDH,044H,00CH,0E5H,0EBH,022H,053H,002H,03AH,024H
db 002H,0B7H,0CCH,09EH,014H,0E1H,0C9H,006H,000H,007H,04FH,0C5H,0D7H,079H,0FEH,029H,0DAH,08AH,00BH,0CDH,092H,00AH,0CFH,02CH,0CDH,087H,00AH,0EBH,02AH,053H,002H,0E3H
db 0E5H,0EBH,0CDH,031H,011H,0EBH,0E3H,0C3H,092H,00BH,0CDH,03FH,00BH,0E3H,011H,051H,00BH,0D5H,001H,043H,000H,009H,04EH,023H,066H,069H,0E9H,0F6H,0AFH,0F5H,0CDH,086H
db 00AH,0CDH,038H,007H,0F1H,0EBH,0C1H,0E3H,0EBH,0CDH,0A1H,014H,0F5H,0CDH,038H,007H,0F1H,0C1H,079H,021H,0E4H,00DH,0C2H,0BEH,00BH,0A3H,04FH,078H,0A2H,0E9H,0B3H,04FH
db 078H,0B2H,0E9H,021H,0D5H,00BH,03AH,024H,002H,01FH,07AH,017H,05FH,016H,064H,078H,0BAH,0D0H,0C3H,0F2H,00AH,0D7H,00BH,079H,0B7H,01FH,0C1H,0D1H,0F5H,0CDH,088H,00AH
db 021H,019H,00CH,0E5H,0CAH,0DBH,014H,0AFH,032H,024H,002H,0D5H,0CDH,016H,010H,07EH,023H,023H,04EH,023H,046H,0D1H,0C5H,0F5H,0CDH,01AH,010H,0CDH,0AFH,014H,0F1H,057H
db 0E1H,07BH,0B2H,0C8H,07AH,0D6H,001H,0D8H,0AFH,0BBH,03CH,0D0H,015H,01DH,00AH,0BEH,023H,003H,0CAH,001H,00CH,03FH,0C3H,06FH,014H,03CH,08FH,0C1H,0A0H,0C6H,0FFH,09FH
db 0C3H,074H,014H,016H,05AH,0CDH,097H,00AH,0CDH,086H,00AH,0CDH,038H,007H,07BH,02FH,04FH,07AH,02FH,0CDH,0E4H,00DH,0C1H,0C3H,0A3H,00AH,02BH,0D7H,0C8H,0CFH,02CH,001H
db 03AH,00CH,0C5H,0F6H,0AFH,032H,023H,002H,046H,0CDH,028H,007H,0DAH,0C6H,002H,0AFH,04FH,032H,024H,002H,0D7H,0DAH,05EH,00CH,0CDH,028H,007H,0DAH,069H,00CH,04FH,0D7H
db 0DAH,05FH,00CH,0CDH,028H,007H,0D2H,05FH,00CH,0D6H,024H,0C2H,076H,00CH,03CH,032H,024H,002H,00FH,081H,04FH,0D7H,03AH,040H,002H,03DH,0CAH,00DH,00DH,0F2H,086H,00CH
db 07EH,0D6H,028H,0CAH,0E7H,00CH,0AFH,032H,040H,002H,0E5H,02AH,04DH,002H,0EBH,02AH,04BH,002H,0E7H,0CAH,0A9H,00CH,079H,096H,023H,0C2H,09EH,00CH,078H,096H,023H,0CAH
db 0D9H,00CH,023H,023H,023H,023H,0C3H,092H,00CH,0E1H,0E3H,0D5H,011H,059H,00BH,0E7H,0D1H,0CAH,0DCH,00CH,0E3H,0E5H,0C5H,001H,006H,000H,02AH,04FH,002H,0E5H,009H,0C1H
db 0E5H,0CDH,097H,002H,0E1H,022H,04FH,002H,060H,069H,022H,04DH,002H,02BH,036H,000H,0E7H,0C2H,0CDH,00CH,0D1H,073H,023H,072H,023H,0EBH,0E1H,0C9H,032H,056H,002H,021H
db 070H,002H,022H,053H,002H,0E1H,0C9H,0E5H,02AH,023H,002H,0E3H,057H,0D5H,0C5H,0CDH,030H,007H,0C1H,0F1H,0EBH,0E3H,0E5H,0EBH,03CH,057H,07EH,0FEH,02CH,0CAH,0EDH,00CH
db 0CFH,029H,022H,045H,002H,0E1H,022H,023H,002H,01EH,000H,0D5H,011H,0E5H,0F5H,02AH,04DH,002H,03EH,019H,0EBH,02AH,04FH,002H,0EBH,0E7H,0CAH,041H,00DH,07EH,0B9H,023H
db 0C2H,025H,00DH,07EH,0B8H,023H,05EH,023H,056H,023H,0C2H,013H,00DH,03AH,023H,002H,0B7H,0C2H,0CFH,002H,0F1H,0CAH,0DDH,006H,096H,0CAH,09DH,00DH,01EH,010H,0C3H,0D1H
db 002H,011H,004H,000H,0F1H,0CAH,04DH,007H,071H,023H,070H,023H,04FH,0CDH,0A6H,002H,023H,023H,022H,03CH,002H,071H,023H,03AH,023H,002H,017H,079H,001H,00BH,000H,0D2H
db 064H,00DH,0C1H,003H,071H,023H,070H,023H,0F5H,0E5H,0CDH,04AH,015H,0EBH,0E1H,0F1H,03DH,0C2H,05CH,00DH,0F5H,042H,04BH,0EBH,019H,0DAH,03CH,00DH,0CDH,0AFH,002H,022H
db 04FH,002H,02BH,036H,000H,0E7H,0C2H,082H,00DH,003H,057H,02AH,03CH,002H,05EH,0EBH,029H,009H,0EBH,02BH,02BH,073H,023H,072H,023H,0F1H,0DAH,0BFH,00DH,047H,04FH,07EH
db 023H,016H,0E1H,05EH,023H,056H,023H,0E3H,0F5H,0E7H,0D2H,03CH,00DH,0E5H,0CDH,04AH,015H,0D1H,019H,0F1H,03DH,044H,04DH,0C2H,0A2H,00DH,029H,029H,0C1H,009H,0EBH,02AH
db 045H,002H,0C9H,02AH,04FH,002H,0EBH,021H,000H,000H,039H,03AH,024H,002H,0B7H,0CAH,0DFH,00DH,0CDH,016H,010H,0CDH,022H,00FH,02AH,0D2H,001H,0EBH,02AH,03AH,002H,07DH
db 093H,04FH,07CH,09AH,041H,050H,01EH,000H,021H,024H,002H,073H,006H,090H,0C3H,079H,014H,03AH,027H,000H,047H,0AFH,0C3H,0E5H,00DH,0CDH,060H,00EH,0CDH,052H,00EH,001H
db 0FAH,007H,0C5H,0D5H,0CFH,028H,0CDH,044H,00CH,0CDH,086H,00AH,0CFH,029H,0CFH,0ACH,044H,04DH,0E3H,0C3H,04CH,00EH,0CDH,060H,00EH,0D5H,0CDH,03FH,00BH,0CDH,086H,00AH
db 0E3H,05EH,023H,056H,023H,07EH,023H,066H,06FH,04EH,023H,046H,023H,0C5H,04EH,023H,046H,0C5H,02BH,02BH,02BH,0E5H,0E7H,0D5H,01EH,022H,0CAH,0D1H,002H,0CDH,0B8H,014H
db 0E1H,0CDH,083H,00AH,02BH,0D7H,0C2H,0C6H,002H,0E1H,0D1H,0C1H,071H,023H,070H,0C3H,09DH,00EH,0E5H,02AH,0D4H,001H,023H,07CH,0B5H,0E1H,0C0H,01EH,016H,0C3H,0D1H,002H
db 0CFH,09FH,03EH,080H,032H,040H,002H,0B6H,047H,0CDH,049H,00CH,0C3H,086H,00AH,0CDH,086H,00AH,0CDH,00FH,016H,0CDH,0A3H,00EH,0CDH,016H,010H,001H,06DH,010H,0C5H,07EH
db 023H,023H,0E5H,0CDH,0FAH,00EH,0E1H,04EH,023H,046H,0CDH,097H,00EH,0E5H,06FH,0CDH,009H,010H,0D1H,0C9H,0CDH,0FAH,00EH,021H,036H,002H,0E5H,077H,023H,023H,073H,023H
db 072H,0E1H,0C9H,02BH,006H,022H,050H,0E5H,00EH,0FFH,023H,07EH,00CH,0B7H,0CAH,0B9H,00EH,0BAH,0CAH,0B9H,00EH,0B8H,0C2H,0AAH,00EH,0FEH,022H,0CCH,04EH,006H,0E3H,023H
db 0EBH,079H,0CDH,097H,00EH,011H,036H,002H,02AH,028H,002H,022H,053H,002H,03EH,001H,032H,024H,002H,0CDH,0BBH,014H,0E7H,022H,028H,002H,0E1H,07EH,0C0H,01EH,01EH,0C3H
db 0D1H,002H,023H,0CDH,0A3H,00EH,0CDH,016H,010H,0CDH,0AFH,014H,01CH,01DH,0C8H,00AH,0DFH,0FEH,00DH,0CCH,0F3H,008H,003H,0C3H,0EDH,00EH,0B7H,00EH,0F1H,0F5H,02AH,0D2H
db 001H,0EBH,02AH,03AH,002H,02FH,04FH,006H,0FFH,009H,023H,0E7H,0DAH,016H,00FH,022H,03AH,002H,023H,0EBH,0F1H,0C9H,0F1H,01EH,01AH,0CAH,0D1H,002H,0BFH,0F5H,001H,0FCH
db 00EH,0C5H,02AH,026H,002H,022H,03AH,002H,021H,000H,000H,0E5H,02AH,0D2H,001H,0E5H,021H,02AH,002H,0EBH,02AH,028H,002H,0EBH,0E7H,001H,033H,00FH,0C2H,07FH,00FH,02AH
db 04BH,002H,0EBH,02AH,04DH,002H,0EBH,0E7H,0CAH,056H,00FH,07EH,023H,023H,0B7H,0CDH,082H,00FH,0C3H,042H,00FH,0C1H,0EBH,02AH,04FH,002H,0EBH,0E7H,0CAH,0A4H,00FH,0CDH
db 0AFH,014H,07BH,0E5H,009H,0B7H,0F2H,055H,00FH,022H,03CH,002H,0E1H,04EH,006H,000H,009H,009H,023H,0EBH,02AH,03CH,002H,0EBH,0E7H,0CAH,056H,00FH,001H,073H,00FH,0C5H
db 0F6H,080H,07EH,023H,023H,05EH,023H,056H,023H,0F0H,0B7H,0C8H,044H,04DH,02AH,03AH,002H,0E7H,060H,069H,0D8H,0E1H,0E3H,0E7H,0E3H,0E5H,060H,069H,0D0H,0C1H,0F1H,0F1H
db 0E5H,0D5H,0C5H,0C9H,0D1H,0E1H,07DH,0B4H,0C8H,02BH,046H,02BH,04EH,0E5H,02BH,02BH,06EH,026H,000H,009H,050H,059H,02BH,044H,04DH,02AH,03AH,002H,0CDH,09AH,002H,0E1H
db 071H,023H,070H,069H,060H,02BH,0C3H,025H,00FH,0C5H,0E5H,02AH,053H,002H,0E3H,0CDH,009H,00BH,0E3H,0CDH,087H,00AH,07EH,0E5H,02AH,053H,002H,0E5H,086H,01EH,01CH,0DAH
db 0D1H,002H,0CDH,094H,00EH,0D1H,0CDH,01AH,010H,0E3H,0CDH,019H,010H,0E5H,02AH,038H,002H,0EBH,0CDH,000H,010H,0CDH,000H,010H,021H,0A6H,00AH,0E3H,0E5H,0C3H,0C5H,00EH
db 0E1H,0E3H,07EH,023H,023H,04EH,023H,046H,06FH,02CH,02DH,0C8H,00AH,012H,003H,013H,0C3H,00AH,010H,0CDH,087H,00AH,02AH,053H,002H,0EBH,0CDH,032H,010H,0EBH,0C0H,0D5H
db 050H,059H,01BH,04EH,02AH,03AH,002H,0E7H,0C2H,030H,010H,047H,009H,022H,03AH,002H,0E1H,0C9H,02AH,028H,002H,02BH,046H,02BH,04EH,02BH,02BH,0E7H,0C0H,022H,028H,002H
db 0C9H,001H,0F4H,00DH,0C5H,0CDH,013H,010H,0AFH,057H,032H,024H,002H,07EH,0B7H,0C9H,001H,0F4H,00DH,0C5H,0CDH,045H,010H,0CAH,04DH,007H,023H,023H,05EH,023H,056H,01AH
db 0C9H,03EH,001H,0CDH,094H,00EH,0CDH,034H,011H,02AH,038H,002H,073H,0C1H,0C3H,0C5H,00EH,0CDH,0EDH,010H,0AFH,0E3H,04FH,0E5H,07EH,0B8H,0DAH,07FH,010H,078H,011H,00EH
db 000H,0C5H,0CDH,0FAH,00EH,0C1H,0E1H,0E5H,023H,023H,046H,023H,066H,068H,006H,000H,009H,044H,04DH,0CDH,097H,00EH,06FH,0CDH,009H,010H,0D1H,0CDH,01AH,010H,0C3H,0C5H
db 00EH,0CDH,0EDH,010H,0D1H,0D5H,01AH,090H,0C3H,075H,010H,0EBH,07EH,0CDH,0F0H,010H,0C5H,01EH,0FFH,0FEH,029H,0CAH,0BDH,010H,0CFH,02CH,0CDH,031H,011H,0CFH,029H,0F1H
db 0E3H,001H,077H,010H,0C5H,03DH,0BEH,006H,000H,0D0H,04FH,07EH,091H,0BBH,047H,0D8H,043H,0C9H,0CDH,045H,010H,0CAH,087H,012H,05FH,023H,023H,07EH,023H,066H,06FH,0E5H
db 019H,046H,072H,0E3H,0C5H,07EH,0CDH,065H,015H,0C1H,0E1H,070H,0C9H,0EBH,0CFH,029H,0C1H,0D1H,0C5H,043H,004H,005H,0C0H,0C3H,04DH,007H,0CDH,034H,011H,032H,001H,011H
db 0DBH,000H,0C3H,0F4H,00DH,0CDH,024H,011H,0D3H,000H,0C9H,0CDH,024H,011H,0F5H,01EH,000H,02BH,0D7H,0CAH,01BH,011H,0CFH,02CH,0CDH,031H,011H,0C1H,0DBH,000H,0ABH,0A0H
db 0CAH,01CH,011H,0C9H,0CDH,031H,011H,032H,01DH,011H,032H,009H,011H,0CFH,02CH,006H,0D7H,0CDH,083H,00AH,0CDH,034H,007H,07AH,0B7H,0C2H,04DH,007H,02BH,0D7H,07BH,0C9H
db 0DBH,006H,0E6H,001H,0C2H,040H,011H,0DBH,007H,0C9H,0CDH,04DH,011H,0F5H,0DBH,006H,0E6H,080H,0C2H,04EH,011H,0F1H,0D3H,007H,0C9H,006H,001H,0FEH,0A6H,0CAH,0D0H,006H
db 0CDH,094H,00AH,0E5H,0CDH,054H,010H,03EH,0D3H,0CDH,04DH,011H,0CDH,04AH,011H,01AH,0CDH,04DH,011H,02AH,0D6H,001H,0EBH,02AH,04BH,002H,01AH,013H,0CDH,04DH,011H,0E7H
db 0C2H,07AH,011H,0E1H,0C9H,0FEH,0A6H,0CAH,0CEH,006H,0D6H,096H,0CAH,091H,011H,0AFH,001H,02FH,023H,0F5H,0CDH,094H,00AH,0CDH,054H,010H,01AH,06FH,0F1H,0B7H,067H,022H
db 053H,002H,0CCH,0B1H,003H,02AH,053H,002H,0EBH,006H,003H,0CDH,040H,011H,0D6H,0D3H,0C2H,0A9H,011H,005H,0C2H,0ABH,011H,0CDH,040H,011H,093H,0C2H,0A9H,011H,02AH,0D6H
db 001H,006H,003H,0CDH,040H,011H,05FH,096H,0A2H,0C2H,0E6H,011H,073H,0CDH,0AFH,002H,07EH,0B7H,023H,0C2H,0C1H,011H,005H,0C2H,0C3H,011H,022H,04BH,002H,021H,071H,002H
db 0CDH,0E3H,00EH,0C3H,075H,003H,021H,0EFH,011H,0CDH,0E3H,00EH,0C3H,0F6H,002H,04EH,04FH,020H,047H,04FH,04FH,044H,00DH,00AH,000H,0CDH,038H,007H,01AH,0C3H,0F4H,00DH
db 0CDH,083H,00AH,0CDH,038H,007H,0D5H,0CFH,02CH,0CDH,031H,011H,0D1H,012H,0C9H,021H,0E4H,016H,0CDH,0AFH,014H,0C3H,021H,012H,0CDH,0AFH,014H,021H,0C1H,0D1H,0CDH,089H
db 014H,078H,0B7H,0C8H,03AH,056H,002H,0B7H,0CAH,0A1H,014H,090H,0D2H,03BH,012H,02FH,03CH,0EBH,0CDH,091H,014H,0EBH,0CDH,0A1H,014H,0C1H,0D1H,0FEH,019H,0D0H,0F5H,0CDH
db 0C6H,014H,067H,0F1H,0CDH,0E8H,012H,0B4H,021H,053H,002H,0F2H,061H,012H,0CDH,0C8H,012H,0D2H,0A7H,012H,023H,034H,0CAH,0C3H,012H,02EH,001H,0CDH,0FEH,012H,0C3H,0A7H
db 012H,0AFH,090H,047H,07EH,09BH,05FH,023H,07EH,09AH,057H,023H,07EH,099H,04FH,0DCH,0D4H,012H,068H,063H,0AFH,047H,079H,0B7H,0C2H,094H,012H,04AH,054H,065H,06FH,078H
db 0D6H,008H,0FEH,0E0H,0C2H,075H,012H,0AFH,032H,056H,002H,0C9H,005H,029H,07AH,017H,057H,079H,08FH,04FH,0F2H,08CH,012H,078H,05CH,045H,0B7H,0CAH,0A7H,012H,021H,056H
db 002H,086H,077H,0D2H,087H,012H,0C8H,078H,021H,056H,002H,0B7H,0FCH,0B9H,012H,046H,023H,07EH,0E6H,080H,0A9H,04FH,0C3H,0A1H,014H,01CH,0C0H,014H,0C0H,00CH,0C0H,00EH
db 080H,034H,0C0H,01EH,00AH,0C3H,0D1H,002H,07EH,083H,05FH,023H,07EH,08AH,057H,023H,07EH,089H,04FH,0C9H,021H,057H,002H,07EH,02FH,077H,0AFH,06FH,090H,047H,07DH,09BH
db 05FH,07DH,09AH,057H,07DH,099H,04FH,0C9H,006H,000H,0D6H,008H,0DAH,0F7H,012H,043H,05AH,051H,00EH,000H,0C3H,0EAH,012H,0C6H,009H,06FH,0AFH,02DH,0C8H,079H,01FH,04FH
db 07AH,01FH,057H,07BH,01FH,05FH,078H,01FH,047H,0C3H,0FAH,012H,000H,000H,000H,081H,003H,0AAH,056H,019H,080H,0F1H,022H,076H,080H,045H,0AAH,038H,082H,0EFH,0EAH,04DH
db 007H,021H,056H,002H,07EH,001H,035H,080H,011H,0F3H,004H,090H,0F5H,070H,0D5H,0C5H,0CDH,021H,012H,0C1H,0D1H,004H,0CDH,0B9H,013H,021H,00CH,013H,0CDH,018H,012H,021H
db 010H,013H,0CDH,0ACH,017H,001H,080H,080H,011H,000H,000H,0CDH,021H,012H,0F1H,0CDH,0E5H,015H,001H,031H,080H,011H,018H,072H,021H,0C1H,0D1H,0EFH,0C8H,02EH,000H,0CDH
db 029H,014H,079H,032H,092H,013H,0EBH,022H,08DH,013H,001H,000H,000H,050H,058H,021H,072H,012H,0E5H,021H,07BH,013H,0E5H,0E5H,021H,053H,002H,07EH,023H,0B7H,0CAH,0A6H
db 013H,0E5H,0EBH,01EH,008H,01FH,057H,079H,0D2H,093H,013H,0D5H,011H,000H,000H,019H,0D1H,0CEH,000H,01FH,04FH,07CH,01FH,067H,07DH,01FH,06FH,078H,01FH,047H,01DH,07AH
db 0C2H,085H,013H,0EBH,0E1H,0C9H,043H,05AH,051H,04FH,0C9H,0CDH,091H,014H,001H,020H,084H,011H,000H,000H,0CDH,0A1H,014H,0C1H,0D1H,0EFH,0CAH,0C9H,002H,02EH,0FFH,0CDH
db 029H,014H,034H,034H,02BH,07EH,032H,0E8H,013H,02BH,07EH,032H,0E4H,013H,02BH,07EH,032H,0E0H,013H,041H,0EBH,0AFH,04FH,057H,05FH,032H,0EBH,013H,0E5H,0C5H,07DH,0D6H
db 000H,06FH,07CH,0DEH,000H,067H,078H,0DEH,000H,047H,03EH,000H,0DEH,000H,03FH,0D2H,0F9H,013H,032H,0EBH,013H,0F1H,0F1H,037H,0D2H,0C1H,0E1H,079H,03CH,03DH,01FH,0FAH
db 0A8H,012H,017H,07BH,017H,05FH,07AH,017H,057H,079H,017H,04FH,029H,078H,017H,047H,03AH,0EBH,013H,017H,032H,0EBH,013H,079H,0B2H,0B3H,0C2H,0DCH,013H,0E5H,021H,056H
db 002H,035H,0E1H,0C2H,0DCH,013H,0C3H,0C3H,012H,078H,0B7H,0CAH,04BH,014H,07DH,021H,056H,002H,0AEH,080H,047H,01FH,0A8H,078H,0F2H,04AH,014H,0C6H,080H,077H,0CAH,0A4H
db 013H,0CDH,0C6H,014H,077H,02BH,0C9H,0EFH,02FH,0E1H,0B7H,0E1H,0F2H,087H,012H,0C3H,0C3H,012H,0CDH,0ACH,014H,078H,0B7H,0C8H,0C6H,002H,0DAH,0C3H,012H,047H,0CDH,021H
db 012H,021H,056H,002H,034H,0C0H,0C3H,0C3H,012H,03AH,055H,002H,0FEH,02FH,017H,09FH,0C0H,03CH,0C9H,0EFH,006H,088H,011H,000H,000H,021H,056H,002H,04FH,070H,006H,000H
db 023H,036H,080H,017H,0C3H,06FH,012H,0EFH,0F0H,021H,055H,002H,07EH,0EEH,080H,077H,0C9H,0EBH,02AH,053H,002H,0E3H,0E5H,02AH,055H,002H,0E3H,0E5H,0EBH,0C9H,0CDH,0AFH
db 014H,0EBH,022H,053H,002H,060H,069H,022H,055H,002H,0EBH,0C9H,021H,053H,002H,05EH,023H,056H,023H,04EH,023H,046H,023H,0C9H,011H,053H,002H,006H,004H,01AH,077H,013H
db 023H,005H,0C2H,0BDH,014H,0C9H,021H,055H,002H,07EH,007H,037H,01FH,077H,03FH,01FH,023H,023H,077H,079H,007H,037H,01FH,04FH,01FH,0AEH,0C9H,078H,0B7H,0CAH,028H,000H
db 021H,06DH,014H,0E5H,0EFH,079H,0C8H,021H,055H,002H,0AEH,079H,0F8H,0CDH,0F3H,014H,01FH,0A9H,0C9H,023H,078H,0BEH,0C0H,02BH,079H,0BEH,0C0H,02BH,07AH,0BEH,0C0H,02BH
db 07BH,096H,0C0H,0E1H,0E1H,0C9H,047H,04FH,057H,05FH,0B7H,0C8H,0E5H,0CDH,0ACH,014H,0CDH,0C6H,014H,0AEH,067H,0FCH,02AH,015H,03EH,098H,090H,0CDH,0E8H,012H,07CH,017H
db 0DCH,0B9H,012H,006H,000H,0DCH,0D4H,012H,0E1H,0C9H,01BH,07AH,0A3H,03CH,0C0H,00BH,0C9H,021H,056H,002H,07EH,0FEH,098H,03AH,053H,002H,0D0H,07EH,0CDH,006H,015H,036H
db 098H,07BH,0F5H,079H,017H,0CDH,06FH,012H,0F1H,0C9H,021H,000H,000H,078H,0B1H,0C8H,03EH,010H,029H,0DAH,03CH,00DH,0EBH,029H,0EBH,0D2H,060H,015H,009H,0DAH,03CH,00DH
db 03DH,0C2H,052H,015H,0C9H,0FEH,02DH,0F5H,0CAH,071H,015H,0FEH,02BH,0CAH,071H,015H,02BH,0CDH,087H,012H,047H,057H,05FH,02FH,04FH,0D7H,0DAH,0CEH,015H,0FEH,02EH,0CAH
db 0A9H,015H,0FEH,045H,0C2H,0ADH,015H,0D7H,0E5H,021H,09DH,015H,0E3H,015H,0FEH,0A5H,0C8H,0FEH,02DH,0C8H,014H,0FEH,02BH,0C8H,0FEH,0A4H,0C8H,0F1H,02BH,0D7H,0DAH,0F0H
db 015H,014H,0C2H,0ADH,015H,0AFH,093H,05FH,00CH,00CH,0CAH,079H,015H,0E5H,07BH,090H,0F4H,0C6H,015H,0F2H,0BCH,015H,0F5H,0CDH,0ABH,013H,0F1H,03CH,0C2H,0B0H,015H,0D1H
db 0F1H,0CCH,089H,014H,0EBH,0C9H,0C8H,0F5H,0CDH,052H,014H,0F1H,03DH,0C9H,0D5H,057H,078H,089H,047H,0C5H,0E5H,0D5H,0CDH,052H,014H,0F1H,0D6H,030H,0CDH,0E5H,015H,0E1H
db 0C1H,0D1H,0C3H,079H,015H,0CDH,091H,014H,0CDH,074H,014H,0C1H,0D1H,0C3H,021H,012H,07BH,007H,007H,083H,007H,086H,0D6H,030H,05FH,0C3H,09DH,015H,0E5H,021H,06CH,002H
db 0CDH,0E3H,00EH,0E1H,0EBH,0AFH,006H,098H,0CDH,079H,014H,021H,0E2H,00EH,0E5H,021H,058H,002H,0E5H,0EFH,036H,020H,0F2H,01BH,016H,036H,02DH,023H,036H,030H,0CAH,0D0H
db 016H,0E5H,0FCH,089H,014H,0AFH,0F5H,0CDH,0D6H,016H,001H,043H,091H,011H,0F8H,04FH,0CDH,0DBH,014H,0E2H,047H,016H,0F1H,0CDH,0C7H,015H,0F5H,0C3H,02AH,016H,0CDH,0ABH
db 013H,0F1H,03CH,0F5H,0CDH,0D6H,016H,0CDH,00FH,012H,03CH,0CDH,006H,015H,0CDH,0A1H,014H,001H,006H,003H,0F1H,081H,03CH,0FAH,063H,016H,0FEH,008H,0D2H,063H,016H,03CH
db 047H,03EH,002H,03DH,03DH,0E1H,0F5H,011H,0E8H,016H,005H,0C2H,074H,016H,036H,02EH,023H,036H,030H,023H,005H,036H,02EH,0CCH,0B6H,014H,0C5H,0E5H,0D5H,0CDH,0ACH,014H
db 0E1H,006H,02FH,004H,07BH,096H,05FH,023H,07AH,09EH,057H,023H,079H,09EH,04FH,02BH,02BH,0D2H,083H,016H,0CDH,0C8H,012H,023H,0CDH,0A1H,014H,0EBH,0E1H,070H,023H,0C1H
db 00DH,0C2H,074H,016H,005H,0CAH,0B4H,016H,02BH,07EH,0FEH,030H,0CAH,0A8H,016H,0FEH,02EH,0C4H,0B6H,014H,0F1H,0CAH,0D3H,016H,036H,045H,023H,036H,02BH,0F2H,0C4H,016H
db 036H,02DH,02FH,03CH,006H,02FH,004H,0D6H,00AH,0D2H,0C6H,016H,0C6H,03AH,023H,070H,023H,077H,023H,071H,0E1H,0C9H,001H,074H,094H,011H,0F7H,023H,0CDH,0DBH,014H,0E1H
db 0E2H,03EH,016H,0E9H,000H,000H,000H,080H,0A0H,086H,001H,010H,027H,000H,0E8H,003H,000H,064H,000H,000H,00AH,000H,000H,001H,000H,000H,021H,089H,014H,0E3H,0E9H,0CDH
db 091H,014H,021H,0E4H,016H,0CDH,09EH,014H,0C1H,0D1H,0EFH,078H,0CAH,04BH,017H,0F2H,016H,017H,0B7H,0CAH,0C9H,002H,0B7H,0CAH,088H,012H,0D5H,0C5H,079H,0F6H,07FH,0CDH
db 0ACH,014H,0F2H,033H,017H,0D5H,0C5H,0CDH,031H,015H,0C1H,0D1H,0F5H,0CDH,0DBH,014H,0E1H,07CH,01FH,0E1H,022H,055H,002H,0E1H,022H,053H,002H,0DCH,0FAH,016H,0CCH,089H
db 014H,0D5H,0C5H,0CDH,01DH,013H,0C1H,0D1H,0CDH,05BH,013H,0CDH,091H,014H,001H,038H,081H,011H,03BH,0AAH,0CDH,05BH,013H,03AH,056H,002H,0FEH,088H,0D2H,047H,014H,0CDH
db 031H,015H,0C6H,080H,0C6H,002H,0DAH,047H,014H,0F5H,021H,00CH,013H,0CDH,012H,012H,0CDH,052H,013H,0F1H,0C1H,0D1H,0F5H,0CDH,01EH,012H,0CDH,089H,014H,021H,08BH,017H
db 0CDH,0BBH,017H,011H,000H,000H,0C1H,04AH,0C3H,05BH,013H,008H,040H,02EH,094H,074H,070H,04FH,02EH,077H,06EH,002H,088H,07AH,0E6H,0A0H,02AH,07CH,050H,0AAH,0AAH,07EH
db 0FFH,0FFH,07FH,07FH,000H,000H,080H,081H,000H,000H,000H,081H,0CDH,091H,014H,011H,059H,013H,0D5H,0E5H,0CDH,0ACH,014H,0CDH,05BH,013H,0E1H,0CDH,091H,014H,07EH,023H
db 0CDH,09EH,014H,006H,0F1H,0C1H,0D1H,03DH,0C8H,0D5H,0C5H,0F5H,0E5H,0CDH,05BH,013H,0E1H,0CDH,0AFH,014H,0E5H,0CDH,021H,012H,0E1H,0C3H,0C4H,017H,0EFH,021H,045H,018H
db 0FAH,03BH,018H,021H,066H,018H,0CDH,09EH,014H,021H,045H,018H,0C8H,086H,0E6H,007H,006H,000H,077H,023H,087H,087H,04FH,009H,0CDH,0AFH,014H,0CDH,05BH,013H,03AH,044H
db 018H,03CH,0E6H,003H,006H,000H,0FEH,001H,088H,032H,044H,018H,021H,066H,018H,087H,087H,04FH,009H,0CDH,012H,012H,0CDH,0ACH,014H,07BH,059H,0EEH,04FH,04FH,036H,080H
db 02BH,046H,036H,080H,021H,043H,018H,034H,07EH,0D6H,0ABH,0C2H,032H,018H,077H,00CH,015H,01CH,0CDH,072H,012H,021H,066H,018H,0C3H,0B8H,014H,077H,02BH,077H,02BH,077H
db 0C3H,016H,018H,000H,000H,000H,035H,04AH,0CAH,099H,039H,01CH,076H,098H,022H,095H,0B3H,098H,00AH,0DDH,047H,098H,053H,0D1H,099H,099H,00AH,01AH,09FH,098H,065H,0BCH
db 0CDH,098H,0D6H,077H,03EH,098H,052H,0C7H,04FH,080H,068H,0B1H,046H,068H,099H,0E9H,092H,069H,010H,0D1H,075H,068H,021H,0BCH,018H,0CDH,012H,012H,0CDH,091H,014H,001H
db 049H,083H,011H,0DBH,00FH,0CDH,0A1H,014H,0C1H,0D1H,0CDH,0B9H,013H,0CDH,091H,014H,0CDH,031H,015H,0C1H,0D1H,0CDH,01EH,012H,021H,0C0H,018H,0CDH,018H,012H,0EFH,037H
db 0F2H,0A8H,018H,0CDH,00FH,012H,0EFH,0B7H,0F5H,0F4H,089H,014H,021H,0C0H,018H,0CDH,012H,012H,0F1H,0D4H,089H,014H,021H,0C4H,018H,0C3H,0ACH,017H,0DBH,00FH,049H,081H
db 000H,000H,000H,07FH,005H,0BAH,0D7H,01EH,086H,064H,026H,099H,087H,058H,034H,023H,087H,0E0H,05DH,0A5H,086H,0DAH,00FH,049H,083H,0CDH,091H,014H,0CDH,07CH,018H,0C1H
db 0E1H,0CDH,091H,014H,0EBH,0CDH,0A1H,014H,0CDH,076H,018H,0C3H,0B7H,013H,0EFH,0FCH,0FAH,016H,0FCH,089H,014H,03AH,056H,002H,0FEH,081H,0DAH,009H,019H,001H,000H,081H
db 051H,059H,0CDH,0B9H,013H,021H,018H,012H,0E5H,021H,013H,019H,0CDH,0ACH,017H,021H,0BCH,018H,0C9H,009H,04AH,0D7H,03BH,078H,002H,06EH,084H,07BH,0FEH,0C1H,02FH,07CH
; db 074H,031H,09AH,07DH,084H,03DH,05AH,07DH,0C8H,07FH,091H,07EH,0E4H,0BBH,04CH,07EH,06CH,0AAH,0AAH,07FH,000H,000H,000H,081H,000H,000H,0DBH,0FFH,0E6H,0F0H,00FH,00FH
db 074H,031H,09AH,07DH,084H,03DH,05AH,07DH,0C8H,07FH,091H,07EH,0E4H,0BBH,04CH,07EH,06CH,0AAH,0AAH,07FH,000H,000H,000H,081H,000H,000H,03EH,000H,0E6H,0F0H,00FH,00FH
; ^^^^ ^^^^
db 0FEH,03CH,0C8H,0FEH,038H,037H,0C2H,053H,019H,021H,0FFH,01FH,04EH,02BH,07EH,0E6H,0F0H,00FH,00FH,0F5H,06FH,026H,000H,011H,0B8H,019H,019H,07EH,023H,056H,023H,046H
db 023H,05EH,067H,0F1H,0F5H,07CH,0DAH,06AH,019H,079H,032H,0B6H,019H,0F1H,021H,0D4H,019H,0E5H,00EH,0FFH,0FEH,010H,021H,000H,000H,022H,052H,005H,0CAH,08EH,019H,0FEH
db 008H,0D0H,0C6H,011H,0F5H,03EH,003H,0CDH,0B5H,019H,0F1H,0C3H,0B5H,019H,0AFH,0CDH,0B5H,019H,0CDH,0B1H,019H,0CDH,0B1H,019H,02FH,00EH,001H,0CDH,0B1H,019H,0E5H,02AH
db 0B5H,019H,02EH,0DBH,022H,052H,005H,0E1H,03EH,02CH,035H,0CDH,0B5H,019H,035H,035H,035H,021H,0B6H,019H,034H,0D3H,010H,0C9H,010H,0CAH,001H,002H,010H,0CAH,001H,002H
db 000H,0C2H,001H,080H,006H,0C2H,001H,080H,020H,0CAH,080H,080H,004H,0CAH,002H,001H,024H,0CAH,040H,040H,062H,068H,022H,059H,005H,07CH,0E6H,0C8H,067H,022H,06BH,006H
db 0EEH,00CH,067H,022H,00FH,006H,0EBH,022H,04AH,005H,03AH,0B6H,019H,032H,057H,005H,032H,069H,006H,032H,00DH,006H,03CH,032H,05EH,005H,081H,032H,048H,005H,03CH,032H
db 050H,005H,0C9H,000H,000H,021H,030H,01BH,0CDH,0E3H,00EH,021H,00FH,01CH,0F9H,022H,0D2H,001H,0CDH,03AH,019H,021H,0FFH,0FFH,022H,0D4H,001H,0AFH,032H,0D1H,001H,0CDH
db 0EDH,008H,021H,02AH,002H,022H,028H,002H,021H,068H,01BH,0CDH,0E3H,00EH,0CDH,0EFH,003H,0DAH,028H,01AH,0D7H,0FEH,041H,0CAH,005H,01AH,0B7H,0C2H,051H,01AH,021H,0C9H
db 01BH,023H,07CH,0B5H,0CAH,05DH,01AH,07EH,02FH,077H,0BEH,0CAH,041H,01AH,0C3H,05DH,01AH,021H,0D9H,001H,0CDH,052H,007H,07EH,0B7H,0C2H,0C6H,002H,0EBH,02BH,0E5H,021H
db 059H,01BH,0CDH,0E3H,00EH,0CDH,0EFH,003H,0DAH,05FH,01AH,0D7H,0B7H,03EH,048H,05FH,0CAH,081H,01AH,0CDH,052H,007H,07AH,0B7H,0C2H,05FH,01AH,07BH,0FEH,00FH,0DAH,05FH
db 01AH,032H,03FH,005H,032H,0C6H,006H,032H,0CEH,008H,0D6H,00EH,0D2H,08AH,01AH,0C6H,01CH,02FH,03CH,083H,032H,006H,009H,011H,0CFH,0FFH,0E1H,022H,026H,002H,019H,0D2H
db 0BBH,002H,02BH,0E5H,021H,01BH,01BH,0CDH,0E3H,00EH,0CDH,0EFH,003H,0DAH,0A4H,01AH,0D7H,021H,04DH,007H,0FEH,059H,011H,038H,019H,0CAH,0DDH,01AH,0FEH,041H,0CAH,0C6H
db 01AH,0FEH,04EH,0C2H,0A4H,01AH,011H,0EEH,018H,022H,05FH,000H,0FEH,041H,0CAH,0DDH,01AH,022H,059H,000H,022H,05DH,000H,022H,05BH,000H,011H,076H,018H,0EBH,036H,000H
db 023H,022H,0D6H,001H,0E3H,011H,00FH,01CH,0E7H,0DAH,0BBH,002H,0D1H,0F9H,022H,0D2H,001H,0EBH,0CDH,0AFH,002H,07BH,095H,06FH,07AH,09CH,067H,001H,0F0H,0FFH,009H,0CDH
db 0EDH,008H,0CDH,004H,016H,021H,074H,01BH,0CDH,0E3H,00EH,021H,0E3H,00EH,022H,002H,003H,0CDH,0B1H,003H,021H,0F7H,002H,022H,002H,000H,0E9H,057H,041H,04EH,054H,020H
db 053H,049H,04EH,02DH,043H,04FH,053H,02DH,054H,041H,04EH,02DH,041H,054H,04EH,000H,00DH,00AH,00AH,057H,052H,049H,054H,054H,045H,04EH,020H,046H,04FH,052H,020H,052H
db 04FH,059H,041H,04CH,054H,049H,045H,053H,020H,042H,059H,020H,04DH,049H,043H,052H,04FH,02DH,053H,04FH,046H,054H,00DH,00AH,000H,054H,045H,052H,04DH,049H,04EH,041H
db 04CH,020H,057H,049H,044H,054H,048H,000H,04DH,045H,04DH,04FH,052H,059H,020H,053H,049H,05AH,045H,000H,020H,042H,059H,054H,045H,053H,020H,046H,052H,045H,045H,00DH
db 00AH,041H,04CH,054H,041H,049H,052H,020H,042H,041H,053H,049H,043H,020H,052H,045H,056H,02EH,020H,034H,02EH,030H,00DH,00AH,05BH,045H,049H,047H,048H,054H,02DH,04BH
db 020H,056H,045H,052H,053H,049H,04FH,04EH,05DH,00DH,00AH,043H,04FH,050H,059H,052H,049H,047H,048H,054H,020H,031H,039H,037H,036H,020H,042H,059H,020H,04DH,049H,054H
db 053H,020H,049H,04EH,043H,02EH,00DH,00AH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
db 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
basic8kend:
;*********************************************************
;* *
;* 8085 system monitor *
;* *
;*********************************************************
core equ 07FEFH ;top of utility ram
pcloc equ core-2
stack equ core-28 ;(core-1CH) stack location
ram equ stack-256 ;requires 256 bytes of ram
;*********************************************************
;* *
;* global constants *
;* *
;*********************************************************
comma equ ',' ;comma
ctrlc equ 3 ;control c abort
ctrlh equ 8 ;video terminal backspace
ctrlo equ 15 ;control o suppress output
ctrlq equ 17 ;continue output command
ctrls equ 19 ;stop output command
ctrlz equ 26 ;end of ascii char. in 'asc' psuedo op
; program entry point...
; initialize everything
monitor:
; locate the stack at the top of specified ram memory, set
; the user register save area and exit template
lxi h,core-2 ;place debug entrance and exit template
mvi b,endx-exitc ;in RAM, B has length of template
lxi d,endx ;point to template end
bg1: dcx d ;move pointer down
ldax d ;load a with data
dcx h ;move memory pointer down
mov m,a ;write data
dcr b ;end of template?
jnz bg1 ;loop till done
; type sign-on message
xra a ;zero a
sta lstsupflag ;clear list suppression flag
lxi h,m0 ;type entry
call crlfmg ;message
jmp reset ;continue elsewhere
;*********************************************************
;* next monitor command *
;* *
;* this is the re-entry point after each command has *
;* been executed *
;*********************************************************
next: lxi sp,stack ;restore stack pointer
call crlf ;turn up a new line
mvi a,'-' ;send the prompt
call type ;type it
mvi a,'>' ;get other half
call chrspc ;type it and a space
nxt1: call chin ;get command char
mov b,a ;and save command
; check for some legal non-alpha commands
cpi '-' ;examine previous location
jz lstlc ;
cpi '.' ;examine current location
jz locat ;
cpi lf ;examine next location
jz nxloc
cpi '?'
jz srch4
; ignore non-alpha characters
sui 41H ;at least an 'A'
jc nxt1 ;jump if <A
cpi 1BH ;and not greater than 'Z'
jnc nxt1 ;jump if >Z
; search operation table for command
srch4: lxi h,optab ;fetch table vector
srch5: mov a,m ;get table command byte
cpi 0FFH ;check for end of table
jz illeg ;must be illegal input
cmp b ;compair to input
jz fnd5 ;found command
inx h ;bump to
inx h ;next
inx h ;command
inx h ;
inx h ;
jmp srch5 ;and continue
; undefined command, type error message
illeg: lxi h,m2 ;undefined
illeg1: call msg ;message
jmp reset ;clean up and try again
; found command, now fetch address and execute command
fnd3: inx h ;bump to low address byte
mov e,m ;get addr vector
inx h
mov d,m
xchg ;msg ptr to HL
pchl ;goto command processor
fnd5: inx h ;bump to low address byte
call ilodm ;get vector to BC, msg to DE
xchg ;msg ptr to HL
call msg ;send the message
mov h,b ;vector to HL
mov l,c
pchl ;goto command processor
;*************************************************
;* *
;* operation decode/dispatch *
;* *
;*************************************************
optab: db '?' ;command
dw help ;display help (hints, really)
dw m75
db 'A' ;command
dw getad ;to get address
dw m32
db 'D' ;command
dw dumper ;to dump memory
dw m27
db 'F' ;command
dw fill ;to fill memory
dw m30
db 'H' ;command
dw help ;display help (hints, really)
dw m70
db 'I' ;command
dw inport ;get input from port
dw m72
db 'J' ;command
dw jump ;to jump to memory location
dw m27
db 'L' ;command
dw load ;load memory
dw m14
db 'M' ;command
dw move ;to move area of memory
dw m29
db 'O' ; command
dw outport ;output to port
dw m73
db 'P' ;command
dw pcmd ;to punch intel hex tape