|
Системные программы - Расширение функций оператора PRINT.
|
СИСТЕМНЫЕ ПРОГРАММЫ
Расширение функций оператора PRINT.
© 1994 Куковякин С.В., п. Залесье, Ивановской область
Предлагаю программу в машинных кодах, расширяющую возможности оператора PRINT в ПЗУ. Новые функции включаются "печатанием" соответствующих управляющих кодов, которые Вы можете изменить по собственному вкусу:
•S переключение на русский и английский FONT'bi; •S печать шрифтом высотой 8 и шириной от 3 до 7 пикселов; •S печать шрифтом высотой 16 и шириной 8 пикселов; •S печать 2-х типов меню с тенью или без неё; •S печать собственных или системных токенов ключевых слов. Сюда также входит подпрограмма, выдающая номер выбранной опции из меню и подпрограмма, похожая на ПЗУ-шную 203CH, только требующая для своей работы в регистре A -номер печатаемого стринга и в ОЗУ - таблицу начальных адресов этих стрингов.
А теперь перехожу к описанию самой программы. Список новых управляющих кодов:
128 - включает английский FONT.
129 - включает русский FONT.
130 - включает печать шрифтом шириной от 3 до 7 пикселов (ширина символов задается в операторе TAB, например, PRINT TAB 5 установит ширину символов в 5 пикселов).
131 - включает печать шрифтом шириной 8 и высотой 16 пикселов.
132 - включает стандартную печать.
133 - печатает меню 1 типа.
134 - печатает меню 2 типа.
Коды 133 и 134 требуют после себя наличия 6-ти байтов в таком порядке: 1 байт - цвет PAPER, 1 байт - цвет INK, 2 байта - координаты верхнего левого угла меню (как в операторе AT), 1 байт - высота меню в знакоместах, 1 байт - ширина в знакоместах.
135 - последнее напечатанное меню окаймляется тенью. Листинг процедуры, при помощи ассемблера ZEUS: набранный
00010 |
ORG |
45000 |
00250 |
|
EX |
DE, HL |
00020 |
ENT |
|
00260 |
|
JP |
(HL) |
00030 GENERAL |
PUSH |
AF |
00270 |
TABLE |
DW |
FONT1 |
00040 |
LD |
A,(CONTROL) |
00280 |
|
DW |
CODE130 |
00050 |
LD |
B, A |
00290 |
|
DW |
CODE131 |
00060 |
POP |
AF |
00300 |
|
DW |
CODE132 |
00070 |
DEC |
B |
00310 |
|
DW |
MENU1 |
00080 |
JR |
Z,PRINT |
00320 |
|
DW |
MENU2 |
00090 |
CP |
128 |
00330 |
|
DW |
DARK |
00100 |
JR |
C,PRINT |
00340 |
|
|
|
00110 |
JR |
Z,FONT0 |
00350 |
PRINT |
PUSH |
BC |
00120 |
CP |
165 |
00360 |
|
PUSH |
DE |
00130 |
JP |
NC,TOKEN |
00370 |
|
PUSH |
HL |
00140 |
CP |
136 |
00380 |
|
LD |
HL,(ADRESS) |
00150 |
JR |
NC,PRINT |
00390 |
|
CALL |
111 |
00160 |
LD |
HL,TABLE |
00400 |
|
LD |
HL, (23633) |
00170 |
SUB |
129 |
00410 |
|
LD |
BC,GENERAL |
00180 |
SLA |
A |
00420 |
|
LD |
E,(HL) |
00190 |
LD |
D, 0 |
00430 |
|
LD |
(HL) ,C |
00200 |
LD |
E, A |
00440 |
|
INC |
HL |
00210 |
ADD |
HL, DE |
00450 |
|
LD |
D,(HL) |
00220 |
LD |
E,(HL) |
00460 |
|
LD |
(HL),B |
00230 |
INC |
HL |
00470 |
|
LD |
A, B |
00240 |
LD |
D, (HL) |
00480 |
|
CP |
D |
00490 |
|
JR |
NZ,CHNG |
01040 |
Change1 |
LD |
C,146 |
00500 |
|
LD |
A, C |
01050 |
LOOP1 |
LD |
A,(WINDOW) |
00510 |
|
CP |
E |
01060 |
|
DEC |
A |
00520 |
|
JR |
Z,EXIT |
01070 |
|
LD |
(WINDOW) , A |
00530 |
CHNG |
LD |
(ADRESS),DE |
01080 |
|
JR |
NZ,NLINE |
00540 |
EXIT |
POP |
HL |
01090 |
|
LD |
C,153 |
00550 |
|
POP |
DE |
01100 |
|
CALL |
PRAT |
00560 |
|
POP |
BC |
01110 |
|
LD |
C, 149 |
00570 |
|
RET |
|
01120 |
|
JR |
NOINCR |
00580 |
|
|
|
01130 |
NLINE |
DEC |
C |
00590 |
F0NT0 |
LD |
HL,15360 |
01140 |
|
DEC |
C |
00600 |
|
LD |
BC,CUTER1-32 |
01150 |
|
CALL |
PRAT |
00610 |
|
JR |
FONT1+6 |
01160 |
|
LD |
A, D |
00620 |
FONT1 |
LD |
HL,FNT1-256 |
01170 |
|
CP |
E |
00630 |
|
LD |
BC,CUTER2-32 |
01180 |
|
JR |
Z,INCR |
00640 |
|
LD |
(23606) , HL |
01190 |
|
CP |
2 |
00650 |
|
LD |
(Cuter+1) , BC |
01200 |
|
JR |
Z,INCR |
00660 |
|
RET |
|
01210 |
|
JR |
NOINCR |
00670 |
CODE130 |
LD |
HL,PRTPIX |
01220 |
INCR |
INC |
C |
00680 |
|
JR |
CODE132+3 |
01230 |
|
INC |
C |
00690 |
CODE131 |
LD |
HL,PRT16 |
01240 |
|
INC |
C |
00700 |
|
JR |
CODE132+3 |
01250 |
NOINCR |
DEC |
D |
00710 |
CODE132 |
LD |
HL,2548 |
01260 |
|
JR |
NZ,LOOP1 |
00720 |
|
LD |
(ADRESS),HL |
01270 |
|
LD |
(ROW) , HL |
00730 |
|
RET |
|
01280 |
|
RET |
|
00740 |
|
|
|
01290 |
PRAT |
CALL |
PRTHLC |
00750 |
MENU1 |
CALL |
MENUSET |
01300 |
|
LD |
A, (WIDTH) |
00760 |
|
LD |
B, 6 |
01310 |
|
DEC |
A |
00770 |
|
SUB |
B |
01320 |
|
DEC |
A |
00780 |
|
LD |
(TIME),A |
01330 |
|
LD |
B, A |
00790 |
|
LD |
A, 146 |
01340 |
|
INC |
C |
00800 |
|
LD |
(Change1+1) ,A |
01350 |
LOOP2 |
CALL |
PRTC |
00810 |
|
LD |
A,4 |
01360 |
|
DJNZ |
LOOP2 |
00820 |
|
LD |
(WINDOW) , A |
01370 |
|
INC |
C |
00830 |
|
JR |
MENU |
01380 |
|
INC |
L |
00840 |
MENU2 |
CALL |
MENUSET |
01390 |
|
JR |
PRTC |
00850 |
|
LD |
B, 3 |
01400 |
PRTHLC |
LD |
A,22 |
00860 |
|
SUB |
B |
01410 |
|
CALL |
PRINT |
00870 |
|
LD |
(TIME),A |
01420 |
|
LD |
A, L |
00880 |
|
LD |
A,158 |
01430 |
|
CALL |
PRINT |
00890 |
|
LD |
(Change1+1),A |
01440 |
|
LD |
A, H |
00900 |
|
LD |
(WINDOW) , A |
01450 |
|
CALL |
PRINT |
00910 |
MENU |
CALL |
CODE132 |
01460 |
PRTC |
LD |
A,C |
00920 |
|
LD |
A, 17 |
01470 |
|
CALL |
PRINT |
00930 |
|
RST |
16 |
01480 |
|
RET |
|
00940 |
|
LD |
A, (PAPER) |
01490 |
MENUSET |
LD |
DE,PAPER |
00950 |
|
RST |
16 |
01500 |
|
LD |
HL,(TEMPDE) |
00960 |
|
LD |
A, 16 |
01510 |
|
INC |
HL |
00970 |
|
RST |
16 |
01520 |
|
LD |
BC, 6 |
00980 |
|
LD |
A, (INK) |
01530 |
|
LDIR |
|
00990 |
|
RST |
16 |
01540 |
|
DEC |
HL |
01000 |
|
LD |
HL,(ROW) |
01550 |
|
LD |
(TEMPDE) , HL |
01010 |
|
LD |
A, (HIGH) |
01560 |
|
LD |
HL,(TEMPBC) |
01020 |
|
LD |
D, A |
01570 |
|
LD |
BC, 6 |
01030 |
|
LD |
E, A |
01580 |
|
SBC |
HL, BC |
01590 |
|
LD |
(TEMPBC),HL |
02140 |
|
RET |
C |
01600 |
|
LD |
HL,(POS) |
02150 |
; |
|
|
01610 |
|
LD |
(ROW),HL |
02160 |
|
LD |
B, 0 |
01620 |
|
LD |
A,(TIME) |
02170 |
|
LD |
C,A |
01630 |
|
LD |
(HIGH) , A |
02180 |
Cuter |
LD |
HL,CUTER1-32 |
01640 |
|
PUSH |
AF |
02190 |
|
ADD |
HL, BC |
01650 |
|
ADD |
A, L |
02200 |
|
LD |
E,(HL) |
01660 |
|
DEC |
A |
02210 |
|
LD |
BC,(23606) |
01670 |
|
LD |
(POS),A |
02220 |
|
LD |
H, 0 |
01680 |
|
POP |
AF |
02230 |
|
LD |
L, A |
01690 |
|
RET |
|
02240 |
|
ADD |
HL, HL |
01700 |
|
|
|
02250 |
|
ADD |
HL, HL |
01710 |
DARK |
LD |
HL,(ROW) |
02260 |
|
ADD |
HL, HL |
01720 |
|
INC |
H |
02270 |
|
ADD |
HL, BC |
01730 |
|
LD |
C,143 |
02280 |
|
LD |
C, 8;high |
01740 |
|
CALL |
PRTHLC |
02290 |
|
LD |
A,(SIZE) |
01750 |
|
LD |
A, (WIDTH) |
02300 |
|
ADD |
A,247 |
01760 |
|
DEC |
A |
02310 |
|
LD |
D,A;skolko cut |
01770 |
|
LD |
B, A |
02320 |
NBYTE |
PUSH |
DE |
01780 |
LOOP3 |
CALL |
PRTC |
02330 |
|
LD |
A, D |
01790 |
|
INC |
H |
02340 |
|
SUB |
247 |
01800 |
|
DJNZ |
LOOP3 |
02350 |
|
LD |
B, A |
01810 |
|
LD |
A, (HIGH) |
02360 |
|
LD |
A,(HL) |
01820 |
|
LD |
B, A |
02370 |
NBIT |
INC |
D |
01830 |
LOOP4 |
CALL |
PRTHLC |
02380 |
|
CALL |
NZ,CUT |
01840 |
|
DEC |
L |
02390 |
|
DEC |
D |
01850 |
|
DJNZ |
LOOP4 |
02400 |
|
RLA |
|
01860 |
|
RET |
|
02410 |
|
CALL |
C,PLOT |
01870 |
|
|
|
02420 |
|
PUSH |
AF |
01880 |
TOKEN |
SUB |
165 |
02430 |
|
LD |
A,(COORDX) |
01890 |
|
LD |
DE,TOKENS |
02440 |
|
INC |
A |
01900 |
|
JP |
#0C0A |
02450 |
|
LD |
(COORDX),A |
01910 |
; |
|
|
02460 |
|
POP |
AF |
01920 |
FNT1 |
EQU |
40000 |
02470 |
|
DJNZ |
NBIT |
01930 |
ADRESS |
DW |
2548 |
02480 |
; |
|
|
01940 |
ROW |
DB |
0 |
02490 |
|
INC |
HL |
01950 |
COL |
DB |
0 |
02500 |
|
PUSH |
HL |
01960 |
HIGH |
DB |
10 |
02510 |
|
LD |
HL,(COORDX) |
01970 |
WINDOW |
DB |
3 |
02520 |
|
DEC |
H |
01980 |
; |
|
|
02530 |
|
LD |
A, (SIZE) |
01990 |
TOKENS |
DB |
255 |
02540 |
|
SUB |
L |
02000 |
|
DM |
/RN/ |
02550 |
|
NEG |
|
02010 |
|
DB |
196 |
02560 |
|
LD |
L, A |
02020 |
|
DM |
/INKEY/ |
02570 |
|
LD |
(COORDX),HL |
02030 |
|
DB |
164 |
02580 |
|
POP |
HL |
02040 |
|
|
|
02590 |
|
POP |
DE |
02050 |
,'PRINT |
WIDTH |
3-8 PIXELS |
02600 |
|
DEC |
C |
02060 |
; |
|
|
02610 |
|
JR |
NZ,NBYTE |
02070 |
PRTPIX |
CP |
13 |
02620 |
; |
|
|
02080 |
|
JP |
Z,ENTER1 |
02630 |
CHECK1 |
LD |
HL,(COORDX) |
02090 |
|
CP |
22 |
02640 |
|
LD |
A, (SIZE) |
02100 |
|
JP |
Z, ATT1 |
02650 |
|
LD |
B, A |
02110 |
|
CP |
23 |
02660 |
|
ADD |
A, A |
02120 |
|
JP |
Z, TAB |
02670 |
|
DEC |
A |
02130 |
|
CP |
32 |
02680 |
|
ADD |
A, L |
02690 |
|
JR |
C,NEWROW |
03240 |
AT i—1 |
LD |
DE,AT2 |
02700 |
|
LD |
A, B |
03250 |
|
JP |
#0A7D |
02710 |
|
ADD |
A, L |
03260 |
AT2 |
LD |
DE,(ATCLOSE) |
02720 |
|
LD |
L, A |
03270 |
|
CALL |
#0A70 |
02730 |
|
LD |
A, 8 |
03280 |
|
LD |
HL, (23566) |
02740 |
|
ADD |
A, H |
03290 |
|
LD |
(COORDX),HL |
02750 |
|
LD |
H, A |
03300 |
|
XOR |
A |
02760 |
|
JR |
SETXY |
03310 |
|
LD |
(CONTROL) ,A |
02770 |
NEWROW |
INC |
H |
03320 |
|
RET |
|
02780 |
|
JR |
Z,SET00 |
03330 |
; |
|
|
02790 |
|
DEC |
H |
03340 |
TAB |
LD |
DE,TAB1 |
02800 |
|
LD |
A, 6 |
03350 |
|
JP |
#0A80 |
02810 |
|
CP |
H |
03360 |
TAB1 |
LD |
DE,PRTPIX |
02820 |
|
JR |
NC,SET00 |
03370 |
|
CALL |
#0A7D |
02830 |
|
LD |
L, 0 |
03380 |
|
LD |
A, (23566) |
02840 |
|
JR |
SETXY |
03390 |
|
LD |
(SIZE),A |
02850 |
SET00 |
LD |
HL,#AF00 |
03400 |
|
RET |
|
02860 |
|
CALL |
WAITCLS |
03410 |
; |
|
|
02870 |
SETXY |
LD |
(COORDX),HL |
03420 |
WAITCLS |
PUSH |
BC |
02880 |
|
RET |
|
03430 |
|
PUSH |
HL |
02890 |
; |
|
|
03440 |
|
LD |
BC, 0 |
02900 |
CUT |
SLA |
E |
03450 |
|
CALL |
7997 |
02910 |
|
RET |
NC |
03460 |
|
CALL |
8020 |
02920 |
|
RLA |
|
03470 |
|
JR |
NC,BREAK |
02930 |
|
INC |
D |
03480 |
|
LD |
DE,16385 |
02940 |
|
RET |
Z |
03490 |
|
LD |
HL,16384 |
02950 |
|
JR |
CUT |
03500 |
|
LD |
BC,6143 |
02960 |
; |
|
|
03510 |
|
LD |
(HL) ,0 |
02970 |
PLOT |
PUSH |
AF |
03520 |
|
LDIR |
|
02980 |
|
PUSH |
BC |
03530 |
|
POP |
HL |
02990 |
|
PUSH |
DE |
03540 |
|
POP |
BC |
03000 |
|
PUSH |
HL |
03550 |
|
RET |
|
03010 |
|
LD |
BC,(COORDX) |
03560 |
; |
|
|
03020 |
|
CALL |
8933 |
03570 |
BREAK |
POP |
HL |
03030 |
|
POP |
HL |
03580 |
|
POP |
HL |
03040 |
|
POP |
DE |
03590 |
|
POP |
HL |
03050 |
|
POP |
BC |
03600 |
|
JP |
7035 |
03060 |
|
POP |
AF |
03610 |
; |
|
|
03070 |
|
RET |
|
03620 |
CONTROL |
DB |
0 |
03080 |
; |
|
|
03630 |
ATCLOSE |
DW |
2548 |
03090 |
ENTER1 |
LD |
HL,(COORDX) |
03640 |
COORDX |
EQU |
23728 |
03100 |
|
LD |
A, 8 |
03650 |
COORDY |
EQU |
23729 |
03110 |
|
SUB |
H |
03660 |
SIZE |
EQU |
23681 |
03120 |
|
NEG |
|
03670 |
CUTER1 |
EQU |
40768 |
03130 |
|
LD |
H, A |
03680 |
CUTER2 |
EQU |
40864 |
03140 |
|
LD |
L,255 |
03690 |
|
|
|
03150 |
|
JR |
CHECK1+3 |
03700 |
;PRINT BY SIZE 8,16 |
03160 |
; |
|
|
03710 |
; |
|
|
03170 |
ATT1 |
LD |
HL,PRTPIX |
03720 |
PRT16 |
CP |
13 |
03180 |
; |
|
|
03730 |
|
JR |
Z,ENTER2 |
03190 |
AT |
LD |
(ATCLOSE),HL |
03740 |
|
CP |
22 |
03200 |
|
LD |
DE, AT1 |
03750 |
|
JR |
Z, ATT2 |
03210 |
|
LD |
A,1 |
03760 |
|
CP |
32 |
03220 |
|
LD |
(CONTROL) ,A |
03770 |
|
RET |
C |
03230 |
|
JP |
#0A80 |
03780 |
|
LD |
DE, (23606) |
03790 |
|
LD |
L, A 04340 DJNZ LOOP8 |
03800 |
|
LD |
H, 0 04350 INC DE |
03810 |
|
ADD |
HL,HL 04360 DEC C |
03820 |
|
ADD |
HL, HL 04370 JR NZ,LOOP7 |
03830 |
|
ADD |
HL, HL 04380 POP HL |
03840 |
|
ADD |
HL,DE 04390 RET |
03850 |
|
EX |
DE,HL 04400 ; |
03860 |
|
LD |
BC, (COORDX) 04410 ENTER2 LD HL, (COORDX) |
03870 |
|
LD |
A, C 04420 LD H, 32 |
03880 |
|
AND |
#18 04430 JR CHECK2 |
03890 |
|
OR |
#40 04440 ; |
03900 |
|
LD |
H, A 04450 ATT2 LD HL,PRT16 |
03910 |
|
LD |
A, C 044 60 JP AT |
03920 |
|
AND |
7 04470 ;........................ |
03930 |
|
OR |
A 04480 NUMBER PUSH AF |
03940 |
|
RRA |
04490 LD A, 2 |
03950 |
|
RRA |
04500 CALL #1601 |
03960 |
|
RRA |
04510 POP AF |
03970 |
|
RRA |
04520 LD HL,CHART-2 |
03980 |
|
ADD |
A, B 04530 LD BC,2 |
03990 |
|
LD |
L, A 04540 LOOP9 ADD HL,BC |
04000 |
|
PUSH |
BC 04550 DEC A |
04010 |
|
CALL |
PRTHALF 04560 JR NZ,LOOP9 |
04020 |
|
LD |
A, 32 04570 LD E, (HL) |
04030 |
|
ADD |
A, L 04580 INC HL |
04040 |
|
LD |
L,A 04590 LD D,(HL) |
04050 |
|
JR |
NC,NOSEGM 04 600 INC HL |
04060 |
|
LD |
A, 8 04610 LD C, (HL) |
04070 |
|
ADD |
A, H 04 620 INC HL |
04080 |
|
LD |
H, A 04630 LD B, (HL) |
04090 |
NOSEGM |
CALL |
PRTHALF 04640 LD L, C |
04100 |
|
POP |
HL 04650 LD H, B |
04110 |
; |
|
04660 AND A |
04120 |
CHECK2 |
INC |
H 04670 SBC HL, DE |
04130 |
|
LD |
A, 31 04680 LD C, L |
04140 |
|
CP |
H 04690 LD B, H |
04150 |
|
JP |
NC,SETXY 04700 LOOP10 LD A,B |
04160 |
|
INC |
L 04710 OR C |
04170 |
|
INC |
L 04720 DEC BC |
04180 |
|
LD |
H,0 04730 RET Z |
04190 |
|
LD |
A,22 04740 LD A, (DE) |
04200 |
|
CP |
L 04750 LD (TEMPBC),BC |
04210 |
|
JP |
NC,SETXY 04760 LD (TEMPDE),DE |
04220 |
|
LD |
L, 0 04770 CALL GENERAL |
04230 |
|
JP |
SET00+3 04780 LD BC,(TEMPBC) |
04240 |
; |
|
04790 LD DE,(TEMPDE) |
04250 |
PRTHALF |
PUSH |
HL 04800 INC DE |
04260 |
|
LD |
C, 4 04810 JR LOOP10 |
04270 |
LOOP7 |
LD |
B,2 04820 TEMPDE DW 0 |
04280 |
LOOP8 |
LD |
A,(DE) 04830 TEMPBC DW 0 |
04290 |
|
LD |
(HL) ,A 04840 CHART EQU 40960 |
04300 |
|
SRL |
A 04850 ;........................ |
04310 |
|
OR |
(HL) 04860 ;MENU LINE |
04320 |
|
LD |
(HL) ,A 04870 ; |
04330 |
|
INC |
H 04880 LINE1 LD HL,35000-6 |
04890 |
|
LD |
BC, 6 |
05440 |
|
NEG |
|
04900 |
LOOP11 |
ADD |
HL,BC |
05450 |
|
LD |
L,A |
04910 |
|
DEC |
A |
05460 |
|
LD |
(POS),HL |
04920 |
|
JR |
NZ,LOOP11 |
05470 |
|
RET |
|
04930 |
|
LD |
DE,PAPER |
05480 |
END |
LD |
A,(TIME) |
04940 |
|
LDIR |
|
05490 |
|
LD |
(TIME1),A |
04950 |
|
|
|
05500 |
|
LD |
HL,(POS) |
04960 |
LINE2 |
CALL |
BEGIN |
05510 |
|
ADD |
A, L |
04970 |
|
CALL |
NEWLINE |
05520 |
|
LD |
L,A |
04980 |
INKEYS |
LD |
BC,33 |
05530 |
|
LD |
(POS),HL |
04990 |
|
CALL |
7997 |
05540 |
|
RET |
|
05000 |
|
LD |
A, (23556) |
05550 |
NEWLINE |
LD |
A,(INK) |
05010 |
|
CP |
65 |
05560 |
|
SLA |
A |
05020 |
|
JR |
Z, DOWN |
05570 |
|
SLA |
A |
05030 |
|
CP |
81 |
05580 |
|
SLA |
A |
05040 |
|
JR |
Z, UP |
05590 |
|
LD |
B, A |
05050 |
|
CP |
13 |
05600 |
|
LD |
A,(PAPER) |
05060 |
|
JR |
NZ,INKEYS |
05610 |
|
ADD |
A, B |
05070 |
QUIT |
LD |
BC,(TIME1) |
05620 |
FILL |
PUSH |
AF |
05080 |
|
LD |
B, 0 |
05630 |
|
LD |
DE, (POS) |
05090 |
|
RET |
|
05640 |
|
CALL |
ATribut |
05100 |
DOWN |
LD |
BC,#2C3C |
05650 |
|
LD |
A, (WIDTH) |
05110 |
|
JR |
UP+3 |
05660 |
|
LD |
B, A |
05120 |
UP |
LD |
BC,#2D3D |
05670 |
|
POP |
AF |
05130 |
|
LD |
HL,Change2 |
05680 |
LOOP12 |
LD |
(HL),A |
05140 |
|
LD |
(HL) ,C |
05690 |
|
INC |
HL |
05150 |
|
LD |
HL,Change3 |
05700 |
|
DJNZ |
LOOP12 |
05160 |
|
LD |
(HL),B |
05710 |
|
RET |
|
05170 |
|
LD |
A, (PAPER) |
05720 |
ATribut |
LD |
A,E |
05180 |
|
SLA |
A |
05730 |
|
AND |
#18 |
05190 |
|
SLA |
A |
05740 |
|
SRL |
A |
05200 |
|
SLA |
A |
05750 |
|
SRL |
A |
05210 |
|
LD |
B, A |
05760 |
|
SRL |
A |
05220 |
|
LD |
A, (INK) |
05770 |
|
OR |
#58 |
05230 |
|
ADD |
A, B |
05780 |
|
LD |
H, A |
05240 |
|
CALL |
FILL |
05790 |
|
LD |
A, E |
05250 |
|
LD |
A,(TIME1) |
05800 |
|
AND |
7 |
05260 |
Change2 |
INC |
A |
05810 |
|
OR |
A |
05270 |
|
LD |
(TIME1),A |
05820 |
|
RRA |
|
05280 |
|
LD |
B, A |
05830 |
|
RRA |
|
05290 |
|
LD |
A,(TIME) |
05840 |
|
RRA |
|
05300 |
|
CP |
B |
05850 |
|
RRA |
|
05310 |
|
CALL |
C,BEGIN |
05860 |
|
ADD |
A, D |
05320 |
|
DEC |
B |
05870 |
|
LD |
L,A |
05330 |
|
CALL |
M, END |
05880 |
|
RET |
|
05340 |
|
LD |
HL,(POS) |
05890 |
PAPER |
DB |
5 |
05350 |
Change3 |
INC |
L |
05900 |
INK |
DB |
1 |
05360 |
|
LD |
(POS),HL |
05910 |
POS |
DW |
#0003 |
05370 |
|
CALL |
NEWLINE |
05920 |
TIME |
DB |
21 |
05380 |
|
JR |
INKEYS |
05930 |
WIDTH |
DB |
5 |
05390 |
BEGIN |
LD |
A,1 |
05940 |
TIME1 |
DB |
21 |
05400 |
|
LD |
(TIME1),A |
05950 |
|
|
|
05410 |
|
LD |
HL,(POS) |
05960 |
N1 |
DB |
133,5,1,1 |
05420 |
|
LD |
A,(TIME) |
05970 |
|
DB |
15, 10 |
05430 |
|
SUB |
L |
05980 |
|
DB |
131,22,2, |
05990 |
DM |
/FILENAME/ |
06270 |
DM |
/MOVE/ |
06000 |
DB |
130,23,5 |
06280 |
DB |
22,4,21 |
06010 |
DB |
22,16,127 |
06290 |
DM |
/DELETE/ |
06020 |
DM |
/Mega BASIC/ |
06300 |
DB |
22,5,21 |
06030 |
DB |
22,16,119 |
06310 |
DM |
/RENAME/ |
06040 |
DM |
/Beta BASIC/ |
06320 N3 |
DB |
134,0,7,9,20 |
06050 |
DB |
22,16,111 |
06330 |
DB |
7,9, 129 |
06060 |
DM |
/LOGO/ |
06340 |
DB |
21,1,130,23 |
06070 |
DB |
22,16,103 |
06350 |
DB |
5,22,184,103 |
06080 |
DM |
/PASCAL/ |
06360 |
DM |
/FAJL/ |
06090 |
DB |
22,16,95 |
06370 |
DB |
22,165,87 |
06100 |
DM |
/PROLOG/ |
06380 |
DM |
/KOPIROWATX/ |
06110 |
DB |
22,16,87 |
06390 |
DB |
22,165,79 |
06120 |
DM |
/ZEUS/ |
06400 |
DM |
/POAISTITX/ |
06130 |
DB |
22,16,79 |
06410 |
DB |
22,165,71 |
06140 |
DM |
/GENS 4D/ |
06420 |
DM |
/UDALITX/ |
06150 |
DB |
22,16,71 |
06430 |
DB |
22,165,63 |
06160 |
DM |
/MONS 4D/ |
06440 |
DM |
/PEREIMENOWATX/ |
06170 |
DB |
22,16,63 |
06450 |
DB |
128,132 |
06180 |
DM |
/boot/ |
06460 N4 |
DB |
0 |
06190 |
DB |
132,16,0,135 |
06470 ; |
|
|
06200 N2 |
DB |
134,2,7,0,20 |
06480 |
ORG |
CHART |
06210 |
DB |
7,8 |
06490 |
ENT |
|
06220 |
DB |
20,1,22,0,22 |
06500 |
DW |
N1,N2,N3,N4 |
06230 |
DM |
/FILE/ |
06510 ; |
|
|
06240 |
DB |
20,0,22,2,21 |
06520 |
ENT |
|
06250 |
DM |
/COPY/ |
06530 START |
LD |
A,1 |
06260 |
DB |
22,3,21 |
06540 |
JP |
NUMBER |
Итак, |
в строках |
30-260 происходит обработка поступающего |
на печать символа. Строки 30- |
80 нужны для нормальной работы оператора AT при печати узкими символами. Если переменная CONTROL равна 1, а в это состояние она устанавливается после поступившего кода с номером 22, то сразу следует переход на процедуру PRINT. Туда же идет переход, если код символа менее 128 или лежит в диапазоне от 136 до 164. Если код больше 164, то это токен, и его печатью займется процедура TOKEN. Теперь остались только новые управляющие коды, за исключением 128-го (переход на его обработку был сделан, когда код поступившего символа проверялся, что он меньше 128). В регистр HL загружается начало таблицы, содержащей адреса процедур, обрабатывающих соответствующий код. Регистр A уменьшается на 129 и умножается на 2 так как адреса 2-хбайтные. Потом A загружается в DE и DE складывается с HL. Теперь HL указывает на место в памяти, в котором содержится адрес нужной процедуры. Этот адрес загружается в DE, происходит обмен между DE и HL и следует переход на этот адрес.
PRINT. Эта подпрограмма аналогична подпрограмме, напечатанной в ZX-РЕВЮ № 5,6 1992 на стр. 112.
FONT0. В HL загружается адрес набора символов в ПЗУ минус 256, в ВС - адрес таблицы, данные которой показывают, какие столбцы в символе вырезать (это нужно при печати узкими символами; об этом позже в PRTPIX) и HL загружается в CHARS (23606), а содержимое ВС подставляется после кода операции LD HL,NN в подпрограмме PRTPIX. Можно было бы завести еще одну переменную, например, CUTER и сделать так: LD (CUTER),BC LD HL,(CUTER).
FONT1. Все, как и в FONT0, только другой адрес набора символов и таблицы "вырезки".
CODE130. Установка печати узкими символами.
CODE131. Установка печати символами 8 на 16.
CODE132. Установка печати стандартными символами.
Дальше начинается подпрограмма печати меню. Данные для меню передаются из машинного кода (хотя желающие могут легко доработать программу, чтобы данные передавались из BASICS, например, через функцию DEF FN) от подпрограммы NUMBER. Сейчас нам нужно знать только то, что она хранит в переменной TEMPDE, где находится текст, и в ТЕМРВС - длину этого текста. Подпрограмма MENU передает параметры для DARK (тень от меню) и MENU LINE (выбор опции из меню). Меню строится с помощью символов UDG. Их расположение строго определенное (см. рис.1).
Рис.1. Символы UDG.
Печатью обоих меню занимается подпрограмма MENU. Разница состоит только в подготовительных операциях.
MENU1. Сразу вызывается подпрограмма MENUSET - данные для меню переносятся на место переменных подпрограммы MENU LINE. Затем, чтобы нормально работала подпрограмма NUMBER, TEMPDE увеличивается на 5 (откуда берется текст), а ТЕМРВС уменьшается на 6 (длина этого текста). Потом координаты левого верхнего угла меню копируются в переменной ROW и COL (эти переменные однобайтные и должны располагаться - сначала ROW, затем COL); высота меню копируется в переменную HIGH. Затем к строке, с которой начинается меню, прибавляется высота-1 и запоминается в POS, которая хранит координаты линии меню. Затем продолжает работу MENU1. На выходе из MENUSET в регистре A содержится высота меню. И для подпрограммы MENU LINE корректируется, из скольких пунктов (или опций) состоит меню. В данном случае 1 верхняя и 1 нижняя строка, плюс название, высотой 2 строки и 2 строки, чтобы отделить название от пунктов меню, - итого 6 строк. И в переменную TIME заносится скорректированное количество пунктов. Затем в А загружается символ UDG, определяющий правый верхний угол и подставляется на место Change1+1 (в последующем этот код будет загружаться в регистр C). Дальше в переменную WINDOW заносится число 4, которое определяет высоту "шапки" (или окна) меню, в котором печатается его название (эта переменная введена исключительно для печати 1-го меню; чтобы обойти ее действие при печати 2-го меню, ей достаточно присвоить значение большее чем 21) и следует переход на общую подпрограмму MENU. Здесь вызывается подпрограмма CODE132, включающая обычную печать (если Вы, например, до этого печатали нестандартным шрифтом), устанавливается цвет PAPER и INK, в HL загружаются начальная строка и столбец, в регистры D и E заносится высота меню и D становится счётчиком по которому определяется все ли меню напечатано, а по E определяется, что надо переходить на новый ряд из 3-х символов UDG (Тут даже можно было бы сделать проще: сравнивать D с HIGH, a E использовать как WINDOW). В общем, принцип печати такой: берётся первый ряд из трёх символов UDG, печатается 1-й символ, затем 2-й символ печатается в цикле WIDTH-2 раз, потом печатается 3-й символ. Если это первая или последняя строка, то берётся следующий ряд из трёх символов, иначе печатается этот же ряд с новой строки. По завершении печати координаты строки и столбца, находящиеся в HL, сохраняются для того, чтобы программа рисования тени знала, где рисовать.
DARK. С помощью этой подпрограммы последнее напечатанное меню "отбросит" тень. Тень печатается символом блочной графики с кодом 143. Работа подпрограммы достаточно понятна и без описания.
TOKEN. Здесь печатаются токены ключевых слов. Вы можете задать собственные токены, например, слоги слов - если Вы пишете текстовую программу, то можете сэкономить не один килобайт. Если же Вы хотите оставить стандартные токены, то строку 130 надо переписать так: JP NC,2548. А подпрограмму TOKEN можно стереть.
Прежде чем приступать к описанию подпрограммы печати узкими символами, хочу сначала рассказать о принципе печати символов, шириной меньше чем 8 пикселов, на примере буквы А. Стандартное изображение символа представляет собой шаблон размером 8x8 пикселов и задается с помощью 8-ми байт (см. рис.2).
Каждая строка шаблона - это один байт, состоящий из 8-ми битов. Чтобы напечатать букву
A шириной 5 "вырезать" по 3 бита, т.е. "вырезать" в шаблоне 3 столбца. Пусть это будут столбцы 7,5 и 4. Тогда буква А примет вид как на рис.3,4.
БИТЫ БИТЫ БИТЫ
Рис.2. Шаблон. Рис.3. "Урезание" буквы. Рис.4. "Урезанная" буква.
"Вырезание" столбцов в программе выполняется просто пропуском ненужных битов. Чтобы программа знала, какие столбцы в каждой букве можно вырезать, создаются 2 таблицы (для английского и русского шрифтов), каждая длиной 96 байт (символьный набор состоит из 96 символов). Включенные в байте биты показывают, какие столбцы можно "вырезать". Вообще-то, для каждого шрифта желательно иметь 2 такие таблицы: для режимов - 6-7 пикселов ширина и 3-5 пикселов так как с одной таблицей изображение некоторых букв в режиме 6 пикселов получается не очень хорошее (например, T,V,X,Y). Но иметь 2 таблицы из-за нескольких букв - большая роскошь. Можно сделать так, чтобы программа смотрела - если ширина печати равна 6, и печатаемая буква одна из вышеуказанных, то для неё устанавливается новый байт, показывающий, какие столбцы "вырезать". В программе на эти 2 таблицы указывают переменные CUTER1 (для английского шрифта) и CUTER2 (для русского). Создавать таблицы удобнее из BASICS таким образом:
10 DATA BIN 11110000," "
330 DATA BIN 10111000,"A" 340 DATA BIN 10111000,"B"
И с помощью следующей программки занести в память: 2 LET CUTER=407 68: REM адрес расположения таблицы в памяти 4 FOR X=0 TO 95: READ A,A$: POKE CUTER+X,A: NEXT X
Да, ещё насчёт экономии памяти: символы с кодами от 32 до 63 одинаковы в обоих шрифтах, поэтому для русского шрифта можно хранить в памяти только изображение букв, а для печати символов, с кодом меньшим 64, использовать символьный набор ПЗУ (и сделать это довольно просто, а экономия приблизительно равна 200 байтам - (64-32)*8=256 и минус примерно байт 40 на доработку программы).
PRTPIX. В строках 2070-2140 идёт обработка управляющих кодов ENTER, AT (формат данных для AT, как в операторе PLOT) и TAB (установка ширины символов). Другие управляющие коды просто игнорируются. Далее начинаются подготовительные операции для печати символа, суть которых сводится к установке регистров следующим образом: HL содержит адрес шаблона символа, E - какие биты вырезать, D - сколько этих битов вырезать, C - высота символа. Символ печатается слева направо и сверху вниз по точкам (включенный бит показывает, что надо напечатать точку на экране). Программа похожа на программу, печатавшуюся на страницах ZX-РЕВЮ, поэтому остановлюсь только на нескольких моментах. В строках 2320-2610 печатается весь символ; в 2370-2470 печатается один байт (строка) бит за битом слева направо. Далее горизонтальная координата печати увеличивается на ширину символа и, если выходит за пределы экрана, устанавливается в начало строки, а строка увеличивается на 1 (точнее сказать номер строки, так как вертикальная координата уменьшается на 8 пикселов - высоту символа). Если же новая строка не помещается на экране, то происходит инициализация координат в подпрограмме SET00 (забыл упомянуть, что начало координат - это точка с координатами 0,175), причём происходит обращение к подпрограмме WAITCLS, в которой ожидается нажатие любой клавиши и затем очищается экран. WAITCLS в общем-то не нужна тем кто программирует только в кодах и заранее расписывает где, как и что будет печататься на экране, но понадобится тому, кто даст из BASICS команду LIST при включенном новом режиме печати.
Подпрограмма CUT занимается "вырезкой" ненужных битов из байта (при входе в неё в A -печатаемый байт, в D - сколько битов надо "вырезать", в E - какие биты "вырезать"). Делает она это следующим образом. Регистр E сдвигается влево, при этом 7-ой бит поступает в CARRY-флаг, и если бит не включен (CARRY-флаг не включен), то и "вырезать" ничего не надо, поэтому сразу выход (RET NC) . Дальше из изображения символа "вырезается" 1 бит (RLA) и, если хватит "вырезать", то выход из подпрограммы, иначе пытается "вырезать" следующий бит (у, какая кровожадная!).
PLOT вводит координаты точки и строит её на экране при помощи подпрограммы ПЗУ. ENTER1 обрабатывает поступивший код 13. Все, что нужно для этого сделать - установить в HL текущие координаты, горизонтальную координату сделать максимальной и перейти на подпрограмму, проверяющую строку на выход за пределы экрана.
AT занимается обработкой кода 22. Так как эта подпрограмма общая для PRTPIX и PRT16, то на входе в неё в HL содержится адрес программы печати, устанавливаемой после принятия 2-ой координаты. Программа аналогична подпрограмме, находящейся в ПЗУ, но вначале заносит в переменную CONTROL единицу (так как координаты могут быть в диапазоне 0-255 и 0-175), чтобы, например, если код равен 170, программа не "подумала", что это код токена и не печатала его. Когда обе координаты приняты, CONTROL сбрасывается, а координаты, находящиеся сейчас в системной переменной TV_DATA, переносятся в переменную COORDX и COORDY.
TAB обрабатывает код 23 (как Вы помните, этим кодом управляется ширина печатаемых букв). Принимает следующий за 23-м код и загружает его в SIZE.
PRT16 - это программа печати символами 8 на 16 пикселей. Координаты задаются в стандартных знакоместах, как в операторе PRINT. В строках 3720-3770 происходят переходы на обработку управляющих кодов, или сразу выход из программы, если это не управляющий код, печатный символ или токен. Затем по коду символа в символьном наборе ищется изображение символа (строки 3780-3840), и теперь оно хранится в DE. Далее (строки 3860-3990) по координатам знакоместа рассчитывается адрес в дисплейном файле (см. "Элементарная графика", ИНФОРКОМ).
В подпрограмме PRTHALF символ как бы "вытягивается" в высоту, то есть берутся первые 4 байта изображения символа и каждый байт заносится в дисплейный файл по два раза. Потом для печати нижней половины символа к адресу дисплейного файла надо прибавить 32, если при этом включился флаг переноса, то значит нужно перейти к следующему сегменту. После того, как была напечатана и нижняя половина, горизонтальная координата увеличивается и, если не выходит за пределы, то переход к следующей строке (так как здесь строка высотой 2 знакоместа, то и увеличивается она на 2). Если строка не помещается на экране, то в HL устанавливаются начальные координаты и следует переход на SET00+3 (+3 - для того, чтобы пропустить установку начальных координат для программы печати узкими символами; о SET00 см. выше). Кстати, в подпрограмме PRTHALF в строках 4300-4320 печатаемый символ делается толще (эти строки лучше удалить, если Вы много будете печатать по-русски, так как такие буквы как "ш", "ю" и т.п. сливаются в сплошное пятно на экране).
NUMBER - эта подпрограмма служит для печати текстовых сообщений. На входе в неё в регистре A должен быть номер текстового сообщения, и в памяти должна находится таблица из 2-байтных адресов, указывающих на начало каждого текстового сообщения. Сообщения, как и адреса, указывающие на эти сообщения, должны располагаться в памяти строго друг за другом. На начало этих адресов указывает метка CHART. Программа NUMBER сама рассчитает длину печатаемого текста (как разницу между началами следующего и печатаемого в данный момент сообщения), и распечатает его с помощью LOOP10 (в DE - адрес, где находится текст, BC - длина текста). Пример, показывающий работу этой программы, приведен в строках 5960-6540.
MENU_LINE - эта программа предназначена для выбора пункта из меню. Входить в неё можно в двух точках: LINE2 - обычная точка входа после того, как Вы напечатали какое-либо меню (перед печатью меню подготавливаются данные для этой программы - см. MENUSET), и LINE1 -если Вас по какой-либо причине не устраивает первая (например, несколько меню уже напечатаны). Если вход в программу через LINE1, то Вам нужно подготовить где-то в памяти (адрес минус 6 загружается в HL см. строку 4 880) данные в таком виде: 1-й байт - цвет PAPER курсора, 2-й байт - цвет INK, 3-й и 4-й - координата самого нижнего пункта меню, 5-й - сколько пунктов в меню и 6-й - ширина меню. На входе в LINE1 в регистре A содержится номер меню.
В строках 4960-4970 выделяется 1-ый пункт цветом, инвертированным к цвету меню (т.е. PAPER становится INK и наоборот). Далее в 4980-4990 выдерживается пауза и в строках 5000-5060 опрашиваются клавиши: Q-вверх, А-вниз, ENTER - подтверждение выбора.
QUIT - сюда мы попадаем, если нажата клавиша ENTER. В регистр BC вводится номер текущего пункта и осуществляется выход из программы (т.е. можно из BASICS дать команду LET A=USR LINE2, где LINE2 - адрес программы LINE2, полученный в результате ассемблирования, и в переменной A Вы получите номер пункта меню).
Если нажаты клавиши вниз или вверх, то попадаем на подпрограмму DOWN или UP соответственно. Подпрограммы передвижения курсора вниз и вверх отличаются только тем, что при движении курсора вниз, вертикальная координата курсора и текущий номер пункта увеличиваются, а при движении вверх все происходит наоборот. Поэтому в этих подпрограммах происходит только настройка общей программы (подменяются операции в строках, помеченных как Change2 и Change3: для подпрограммы DOWN - это INC A (код #3C) и INC L (код #2C); для UP - DEC A (код #3D) и DEC L (код #2D)). Затем курсор передвигается на следующий пункт таким образом: текущий курсор закрашивается цветом меню (в строках 5170-5230 вычисляется байт для закраски, для этого цвет PAPER умножается на 8 и к нему прибавляется цвет INK, и подпрограмма FILL, рассчитав с помощью ATribut по координатам адрес в файле атрибутов, сотрёт текущий курсор. Потом номер текущего пункта, хранящегося в TIME1, увеличивается или уменьшается на единицу (в зависимости от того, куда перемещается курсор - вниз или вверх) и проверяется, что курсор не вышел за пределы меню. Если курсор находился на последнем пункте и при этом была нажата клавиша вниз, то курсор перепрыгнет на первый пункт меню (установка курсора с последнего пункта на первый выполняется подпрограмма BEGIN). Если курсор находился на первом пункте меню и при этом была нажата клавиша вверх, то курсор перепрыгнет на последний пункт (подпрограмма END). В завершение выделяется новый пункт и переход на опрос клавиатуры.
Включение новых функций для оператора PRINT выполняется открытием нового пользовательского канала (как в ZX-РЕВЮ № 5,6 1992):
5 LET START=PEEK 23635+256*PEEK 23636-1
10 LET L=START-256*INT (START/256) : LET H=INT (START/256)
15 FOR X=23296 TO 23304: READ A: POKE X,A: NEXT X
16 RANDOMIZE USR 23296
20 FOR X=START TO START+5: READ A: POKE X,A: NEXT X
21 POKE 23578,21
25 DATA 1,5,0,33,L,H, 195, 85,22 30 DATA L,H,196,21,83
В строках 25-30 L и Н - младший и старший адрес программы в кодах.
И ещё несколько слов в заключение. Программа не проверяет вводимые координаты на допустимые пределы, но это не трудно сделать тем, кто захочет.
Подпрограмма печати узкими символами не сможет напечатать в двух нижних строках, так как использует процедуру ПЗУ для печати точек. Чтобы устранить этот недостаток, Вы можете воспользоваться программой печати точек, напечатанной в "Элементарной графике" ИНФОРКОМа. Если Вы хотите уменьшить и высоту символов до 7 пикселов, то надо только заменить число 8 (сейчас высота 8 пикселов) на 7. Если же до 6, то тут придется немного труднее (создать ещё одну таблицу, указывающую какую горизонтальную строку можно выкинуть, и дополнить саму программу).
Программу печати меню можно сократить почти вдвое, если не использовать символы UDG, а печатать меню пробелом и окантовывать его при помощи PLOT-DRAW. Но преимущество UDG в том, что вид меню можно сделать разнообразным.
Для демонстрации работы новой процедуры печати предназначена демонстрационная Бейсик-программа, фрагменты работы которой Вы видите на рис. 5,6:
В приводимых ниже листингах Бейсик-программ подчеркнутые символы в скобках вводятся в графическом режиме. Так, например, выражение (g8) означает, что сначала надо включить графический регистр (CAPS SHIFT+9), затем нажать клавишу "8" (будет напечатан символ псевдографики с кодом 128). Для набора (q1) надо в графическом регистре нажать "1" (код 129) и т.д.
Рис. 5.
1 BORDER BIN : PAPER BIN : INK 7: CLEAR 29999
2 RANDOMIZE USR 15619: REM : LOAD "UDG MENU"CODE 65368
3 RANDOMIZE USR 15619: REM : LOAD "DEMO"CODE
5 POKE 23562,NOT BIN
10 DATA 1,5, 0,33,58, 93,195, 85,22
11 DATA 40,160,196,21,83
12 RESTORE 10: FOR n=23296 TO 23304: READ a: POKE n,a: NEXT n: RANDOMIZE USR 23296: FOR n=23866 TO 23870: READ a: POKE n,a: NEXT n: POKE 23578,21: POKE 23633,58: POKE 23634,93
20 PRINT "(g8)(g3)";AT 10,13;"D E M O": PAUSE 65: RANDOMIZE USR 42250
25 PRINT "(g2)(g1)";TAB 7;AT BIN ,175;" Напечатав оператором (g8)PRINT (д1)код 130Вы включите печать мелким шрифтом. Оператором (g8)ТАВ
(g1)можно управлять ши-риной шрифта (от 3 до 8 пикселей)."
30 PRINT '" Код 128 включает (g8)english(g1), а код 129-русский шрифт."
35 PRINT '" Шрифт высотой 16 и шириной 8 пик-селей включается кодом 131."
40 PRINT '" Переключиться на стандартную пе-чать можно, включив в оператор (g8) PRINT(g1)код 132."
45 PRINT '" Эта программа позволяет также пе-чатать 2 типа меню (коды 133 и 134) с тенью(код 135) или без нее и выби-рать из этих меню опции(номер опции содержится в регистровой паре (g8)BC)(g1)."
50 GO SUB 9000
55 PRINT AT 0,100;" Передвижение курсора клавишами:"''" (g8)Q(g1)-вверх, ^^^^-вниз, (g8) ENTER (g1) -ввод."
60 GO SUB 9000
65 PRINT "(g8)": POKE 40969,1: RANDOMIZE USR 40968: LET a=USR 41822
70 POKE 40969,2: RANDOMIZE USR 40968: LET a=USR 41822
75 POKE 40969,3: RANDOMIZE USR 40968: PRINT INK 1;CHR$ 135: LET a=USR 41822
80 PRINT #BIN ;AT NOT BIN ,BIN;"© 1994 Amateur Software System": PAUSE BIN : CLS
100 PRINT CHR$ 130;AT 0,175: FOR x=3 TO 7: PRINT TAB x: LIST 60 : PRINT ''': BEEP .05,30: NEXT x : PAUSE BIN : BEEP .1,BIN : CLS
110 PRINT CHR$ 131;AT BIN ,BIN ;: LIST 60
200 GO TO 20
9000 PRINT CHR$ 131;AT 22,5;"Нажмите любую клавишу";CHR$ 130;: PAUSE BIN : RANDOMIZE USR 42250: RETURN
Для переключения режимов управляющие символы можно непосредственно вставлять в оператор PRINT (строки 20, 25, 30, 40, 45, 55, 65), но можно и "печатать" при помощи CHR$ (строка 9000).
Ниже приводится шестнадцатеричный дамп файлов, необходимых программе.
Файл "DEMO" CODE 40000,2291.
9C40 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
DC |
9C48 |
00 |
10 |
10 |
10 |
10 |
00 |
10 |
00 |
34 |
9C50 |
00 |
28 |
28 |
00 |
00 |
00 |
00 |
00 |
3C |
9C58 |
00 |
28 |
7C |
28 |
28 |
7C |
28 |
00 |
8C |
9C60 |
00 |
10 |
7C |
50 |
7C |
14 |
7C |
10 |
F4 |
9C68 |
00 |
44 |
08 |
10 |
20 |
44 |
00 |
00 |
C4 |
9C70 |
00 |
20 |
50 |
20 |
54 |
48 |
34 |
00 |
6C |
9C78 |
00 |
08 |
10 |
00 |
00 |
00 |
00 |
00 |
2C |
9C80 |
00 |
04 |
08 |
08 |
08 |
08 |
04 |
00 |
44 |
9C88 |
00 |
40 |
20 |
20 |
20 |
20 |
40 |
00 |
24 |
9C90 |
00 |
00 |
28 |
10 |
7C |
10 |
28 |
00 |
18 |
9C98 |
00 |
00 |
10 |
10 |
7C |
10 |
10 |
00 |
F0 |
9CA0 |
00 |
00 |
00 |
00 |
00 |
00 |
10 |
20 |
6C |
9CA8 |
00 |
00 |
00 |
00 |
7C |
00 |
00 |
00 |
C0 |
9CB0 |
00 |
00 |
00 |
00 |
00 |
00 |
10 |
00 |
5C |
9CB8 |
00 |
00 |
04 |
08 |
10 |
20 |
40 |
00 |
D0 |
9CC0 |
00 |
7C |
44 |
44 |
44 |
44 |
7C |
00 |
64 |
9CC8 |
00 |
10 |
30 |
10 |
10 |
10 |
7C |
00 |
50 |
9CD0 |
00 |
7C |
04 |
04 |
7C |
40 |
7C |
00 |
28 |
9CD8 |
00 |
7C |
04 |
1C |
04 |
04 |
7C |
00 |
94 |
9CE0 |
00 |
44 |
44 |
44 |
7C |
04 |
04 |
00 |
CC |
9CE8 |
00 |
7C |
40 |
7C |
04 |
04 |
7C |
00 |
40 |
9CF0 |
00 |
7C |
40 |
7C |
44 |
44 |
7C |
00 |
C8 |
9CF8 |
00 |
7C |
04 |
04 |
08 |
10 |
10 |
00 |
40 |
9D00 |
00 |
7C |
44 |
7C |
44 |
44 |
7C |
00 |
DD |
9D08 |
00 |
7C |
44 |
44 |
7C |
04 |
7C |
00 |
A5 |
9D10 |
00 |
00 |
00 |
10 |
00 |
00 |
10 |
00 |
CD |
9D18 |
00 |
00 |
00 |
10 |
00 |
00 |
10 |
20 |
F5 |
9D20 |
00 |
00 |
08 |
10 |
20 |
10 |
08 |
00 |
0D |
9D28 |
00 |
00 |
00 |
7C |
00 |
7C |
00 |
00 |
BD |
9D30 |
00 |
00 |
20 |
10 |
08 |
10 |
20 |
00 |
35 |
9D38 |
00 |
7C |
44 |
04 |
1C |
00 |
10 |
00 |
C5 |
9D40 |
00 |
5C |
54 |
74 |
54 |
54 |
5C |
00 |
05 |
9D48 |
00 |
7C |
44 |
44 |
7C |
44 |
44 |
00 |
ED |
9D50 |
00 |
7C |
40 |
7C |
44 |
44 |
7C |
00 |
29 |
9D58 |
00 |
44 |
44 |
44 |
44 |
44 |
7C |
04 |
C9 |
9D60 |
00 |
3C |
24 |
24 |
24 |
24 |
7C |
44 |
89 |
9D68 |
00 |
7C |
40 |
70 |
40 |
40 |
7C |
00 |
2D |
9D70 |
00 |
7C |
54 |
54 |
54 |
7C |
10 |
00 |
11 |
9D78 |
00 |
7C |
40 |
40 |
40 |
40 |
40 |
00 |
D1 |
9D80 |
00 |
44 |
28 |
10 |
28 |
44 |
44 |
00 |
49 |
9D88 |
00 |
44 |
44 |
4C |
54 |
64 |
44 |
00 |
F5 |
9D90 |
10 |
44 |
44 |
4C |
54 |
64 |
44 |
00 |
0D |
9D98 |
00 |
44 |
48 |
70 |
48 |
44 |
44 |
00 |
01 |
9DA0 |
00 |
3C |
44 |
44 |
44 |
44 |
44 |
00 |
CD |
9DA8 |
00 |
44 |
6C |
54 |
44 |
44 |
44 |
00 |
15 |
9DB0 |
00 |
44 |
44 |
7C |
44 |
44 |
44 |
00 |
1D |
9DB8 |
00 |
7C |
44 |
44 |
44 |
44 |
7C |
00 |
5D |
9DC0 |
00 |
7C |
44 |
44 |
44 |
44 |
44 |
00 |
2D |
9DC8 |
00 |
7C |
44 |
44 |
7C |
24 |
44 |
00 |
4D |
9DD0 |
00 |
7C |
44 |
44 |
7C |
40 |
40 |
00 |
6D |
9DD8 |
00 |
7C |
40 |
40 |
40 |
40 |
7C |
00 |
6D |
9DE0 |
00 |
7C |
10 |
10 |
10 |
10 |
10 |
00 |
49 |
9DE8 |
00 |
44 |
44 |
44 |
7C |
04 |
7C |
00 |
4D |
9DF0 |
00 |
54 |
54 |
38 |
54 |
54 |
54 |
00 |
69 |
9DF8 |
00 |
7C |
44 |
78 |
44 |
44 |
7C |
00 |
D1 |
9E00 |
00 |
40 |
40 |
7C |
44 |
44 |
7C |
00 |
9E |
9E08 |
00 |
44 |
44 |
74 |
54 |
54 |
74 |
00 |
BE |
9E10 |
00 |
7C |
04 |
18 |
04 |
04 |
7C |
00 |
CA |
9E18 |
00 |
44 |
54 |
54 |
54 |
54 |
7C |
00 |
C6 |
9E20 |
00 |
7C |
04 |
1C |
04 |
04 |
7C |
00 |
DE |
9E28 |
00 |
44 |
54 |
54 |
54 |
54 |
7C |
04 |
DA |
9E30 |
00 |
44 |
44 |
44 |
7C |
04 |
04 |
00 |
1E |
9E38 |
00 |
1C |
20 |
38 |
20 |
20 |
7C |
00 |
06 |
9E40 |
00 |
00 |
5C |
54 |
74 |
54 |
5C |
00 |
B2 |
9E48 |
00 |
00 |
3C |
04 |
7C |
44 |
7C |
00 |
62 |
9E50 |
00 |
00 |
78 |
40 |
7C |
44 |
7C |
00 |
E2 |
9E58 |
00 |
00 |
44 |
44 |
44 |
44 |
7C |
04 |
86 |
9E60 |
00 |
00 |
3C |
24 |
24 |
24 |
7C |
44 |
66 |
9E68 |
00 |
00 |
7C |
44 |
7C |
40 |
7C |
00 |
FE |
9E70 |
00 |
00 |
7C |
54 |
54 |
7C |
10 |
00 |
BE |
9E78 |
00 |
00 |
7C |
40 |
40 |
40 |
40 |
00 |
92 |
9E80 |
00 |
00 |
44 |
28 |
10 |
28 |
44 |
00 |
06 |
9E88 |
00 |
00 |
44 |
4C |
54 |
64 |
44 |
00 |
B2 |
9E90 |
00 |
10 |
44 |
4C |
54 |
64 |
44 |
00 |
CA |
9E98 |
00 |
00 |
44 |
48 |
70 |
48 |
44 |
00 |
BE |
9EA0 |
00 |
00 |
3C |
44 |
44 |
44 |
44 |
00 |
8A |
9EA8 |
00 |
00 |
44 |
6C |
54 |
44 |
44 |
00 |
D2 |
9EB0 |
00 |
00 |
44 |
44 |
7C |
44 |
44 |
00 |
DA |
9EB8 |
00 |
00 |
7C |
44 |
44 |
44 |
7C |
00 |
1A |
9EC0 |
00 |
00 |
7C |
44 |
44 |
44 |
44 |
00 |
EA |
9EC8 |
00 |
00 |
7C |
44 |
7C |
14 |
64 |
00 |
1A |
9ED0 |
00 |
00 |
7C |
44 |
44 |
7C |
40 |
00 |
2E |
9ED8 |
00 |
00 |
7C |
40 |
40 |
40 |
7C |
00 |
2E |
9EE0 |
00 |
00 |
7C |
10 |
10 |
10 |
10 |
00 |
3A |
9EE8 |
00 |
00 |
44 |
44 |
7C |
04 |
7C |
00 |
0A |
9EF0 |
00 |
00 |
54 |
54 |
38 |
54 |
54 |
00 |
16 |
9EF8 |
00 |
00 |
7C |
44 |
78 |
44 |
7C |
00 |
8E |
9F00 |
00 |
00 |
40 |
40 |
7C |
44 |
7C |
00 |
5B |
9F08 |
00 |
00 |
44 |
44 |
74 |
54 |
74 |
00 |
6B |
9F10 |
00 |
00 |
7C |
04 |
18 |
04 |
7C |
00 |
C7 |
9F18 |
00 |
00 |
44 |
54 |
54 |
54 |
7C |
00 |
73 |
9F20 |
00 |
00 |
7C |
04 |
1C |
04 |
7C |
00 |
DB |
9F28 |
00 |
00 |
44 |
54 |
54 |
54 |
7C |
04 |
87 |
9F30 |
00 |
00 |
44 |
44 |
7C |
04 |
04 |
00 |
DB |
9F38 |
00 |
00 |
60 |
20 |
3C |
24 |
3C |
00 |
F3 |
9F40 |
F0 |
E1 |
CA |
8B |
C3 |
C3 |
A5 |
C3 |
F3 |
9F48 |
E1 |
87 |
E2 |
E2 |
C3 |
C3 |
C3 |
E2 |
3E |
9F50 |
B8 |
E2 |
B8 |
F0 |
A6 |
B8 |
B8 |
E4 |
2B |
9F58 |
B8 |
B8 |
C6 |
C6 |
E2 |
F0 |
E1 |
F0 |
96 |
9F60 |
9C |
B8 |
B8 |
B8 |
B8 |
B8 |
B8 |
B8 |
A3 |
9F68 |
B8 |
E2 |
B8 |
B2 |
B8 |
9C |
B4 |
B8 |
CB |
9F70 |
B8 |
B4 |
B8 |
B8 |
C6 |
B8 |
9C |
AC |
B1 |
9F78 |
9C |
AA |
D2 |
E2 |
C6 |
CC |
C6 |
F0 |
59 |
9F80 |
C6 |
B2 |
D8 |
C6 |
B2 |
B2 |
E2 |
B2 |
2D |
9F88 |
B2 |
C6 |
E2 |
D2 |
E2 |
AA |
B2 |
9A |
2B |
9F90 |
B2 |
B1 |
C6 |
B2 |
C6 |
B2 |
C6 |
AA |
F2 |
9F98 |
C6 |
B2 |
93 |
E2 |
E2 |
C6 |
E2 |
0F |
BD |
9FA0 |
F0 |
E1 |
C6 |
47 |
8B |
93 |
8E |
C3 |
8C |
9FA8 |
E1 |
87 |
C6 |
C6 |
C3 |
C3 |
C3 |
E2 |
66 |
9FB0 |
B2 |
C6 |
B2 |
E2 |
B2 |
B2 |
9A |
E2 |
3B |
9FB8 |
B2 |
B2 |
C6 |
C6 |
C6 |
F0 |
C6 |
E2 |
A5 |
9FC0 |
CA |
B2 |
B2 |
B2 |
9A |
96 |
AA |
B2 |
CB |
9FC8 |
B2 |
8B |
AA |
B2 |
B2 |
9A |
B2 |
B2 |
B0 |
9FD0 |
B2 |
9A |
B2 |
B2 |
C6 |
B2 |
AA |
AA |
EB |
9FD8 |
9A |
AA |
D2 |
AA |
E2 |
AA |
B2 |
8E |
03 |
9FE0 |
CA |
B2 |
9A |
B2 |
9A |
B2 |
AA |
B2 |
EF |
9FE8 |
B2 |
9A |
9A |
B2 |
B2 |
9A |
B2 |
9A |
B7 |
9FF0 |
B2 |
9A |
B2 |
B2 |
C6 |
B2 |
AA |
AA |
0B |
9FF8 |
B2 |
AA |
D2 |
AA |
E2 |
AA |
B2 |
9A |
47 |
A000 |
20 |
A4 |
8F |
A4 |
C1 |
A4 |
0A |
A5 |
AB |
A008 |
3E |
01 |
C3 |
11 |
A3 |
00 |
00 |
00 |
5E |
A010 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
B0 |
A018 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
B8 |
A020 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
C0 |
A028 |
F5 |
3A |
9A |
A2 |
47 |
F1 |
05 |
28 |
98 |
A030 |
2D |
FE |
80 |
38 |
29 |
28 |
4B |
FE |
4D |
A038 |
A5 |
D2 |
F4 |
09 |
FE |
88 |
30 |
1E |
20 |
A040 |
21 |
50 |
A0 |
D6 |
81 |
CB |
27 |
16 |
50 |
A048 |
00 |
5F |
19 |
5E |
23 |
56 |
EB |
E9 |
0B |
A050 |
8A |
A0 |
98 |
A0 |
9D |
A0 |
A2 |
A0 |
D1 |
A058 |
A9 |
A0 |
BE |
A0 |
69 |
A1 |
C5 |
D5 |
43 |
A060 |
E5 |
2A |
88 |
A1 |
CD |
6F |
00 |
2A |
9E |
A068 |
51 |
5C |
01 |
28 |
A0 |
5E |
71 |
23 |
70 |
A070 |
56 |
70 |
78 |
BA |
20 |
04 |
79 |
BB |
60 |
A078 |
28 |
04 |
ED |
53 |
88 |
A1 |
E1 |
D1 |
5F |
A080 |
C1 |
C9 |
21 |
00 |
3C |
01 |
20 |
9F |
C7 |
A088 |
18 |
06 |
21 |
40 |
9B |
01 |
80 |
9F |
62 |
A090 |
22 |
36 |
5C |
ED |
43 |
A4 |
A1 |
C9 |
22 |
A098 |
21 |
8E |
A1 |
18 |
08 |
21 |
9D |
A2 |
08 |
A0A0 |
18 |
03 |
21 |
F4 |
09 |
22 |
88 |
A1 |
C4 |
A0A8 |
C9 |
CD |
3A |
A1 |
06 |
06 |
90 |
32 |
87 |
A0B0 |
1D |
A4 |
3E |
92 |
32 |
E9 |
A0 |
3E |
DA |
A0B8 |
04 |
32 |
8D |
A1 |
18 |
11 |
CD |
3A |
EC |
A0C0 |
A1 |
06 |
03 |
90 |
32 |
1D |
A4 |
3E |
CB |
A0C8 |
9E |
32 |
E9 |
A0 |
32 |
8D |
A1 |
CD |
EE |
A0D0 |
A2 |
A0 |
3E |
11 |
D7 |
3A |
19 |
A4 |
CF |
A0D8 |
D7 |
3E |
10 |
D7 |
3A |
1A |
A4 |
D7 |
43 |
A0E0 |
2A |
8A |
A1 |
3A |
8C |
A1 |
57 |
5F |
F2 |
A0E8 |
0E |
92 |
3A |
8D |
A1 |
3D |
32 |
8D |
8C |
A0F0 |
A1 |
20 |
09 |
0E |
99 |
CD |
15 |
A1 |
84 |
A0F8 |
0E |
95 |
18 |
12 |
0D |
0D |
CD |
15 |
61 |
A100 |
A1 |
7A |
BB |
28 |
06 |
FE |
02 |
28 |
CD |
A108 |
02 |
18 |
03 |
0C |
0C |
0C |
15 |
20 |
1F |
A110 |
D9 |
22 |
8A |
A1 |
C9 |
CD |
28 |
A1 |
36 |
A118 |
3A |
1E |
A4 |
3D |
3D |
47 |
0C |
CD |
4F |
A120 |
35 |
A1 |
10 |
FB |
0C |
2C |
18 |
0D |
FF |
A128 |
3E |
16 |
CD |
5E |
A0 |
7D |
CD |
5E |
90 |
A130 |
A0 |
7C |
CD |
5E |
A0 |
79 |
CD |
5E |
5C |
A138 |
A0 |
C9 |
11 |
19 |
A4 |
2A |
4B |
A3 |
28 |
A140 |
23 |
01 |
06 |
00 |
ED |
B0 |
2B |
22 |
F5 |
A148 |
4B |
A3 |
2A |
4D |
A3 |
01 |
06 |
00 |
F8 |
A150 |
ED |
42 |
22 |
4D |
A3 |
2A |
1B |
A4 |
1B |
A158 |
22 |
8A |
A1 |
3A |
1D |
A4 |
32 |
8C |
FF |
A160 |
A1 |
F5 |
85 |
3D |
32 |
1B |
A4 |
F1 |
3B |
A168 |
C9 |
2A |
8A |
A1 |
24 |
0E |
8F |
CD |
B5 |
A170 |
28 |
A1 |
3A |
1E |
A4 |
3D |
47 |
CD |
27 |
A178 |
35 |
A1 |
24 |
10 |
FA |
3A |
8C |
A1 |
84 |
A180 |
47 |
CD |
28 |
A1 |
2D |
10 |
FA |
C9 |
FE |
A188 |
F4 |
09 |
00 |
00 |
0A |
03 |
FE |
0D |
3E |
A190 |
CA |
2E |
A2 |
FE |
16 |
CA |
3B |
A2 |
86 |
A198 |
FE |
17 |
CA |
64 |
A2 |
FE |
20 |
D8 |
14 |
A1A0 |
06 |
00 |
4F |
21 |
20 |
9F |
09 |
5E |
DD |
A1A8 |
ED |
4B |
36 |
5C |
26 |
00 |
6F |
29 |
D1 |
A1B0 |
29 |
29 |
09 |
0E |
08 |
3A |
81 |
5C |
D9 |
A1B8 |
C6 |
F7 |
57 |
D5 |
7A |
D6 |
F7 |
47 |
D0 |
A1C0 |
7E |
14 |
C4 |
16 |
A2 |
15 |
17 |
DC |
77 |
A1C8 |
1E |
A2 |
F5 |
3A |
B0 |
5C |
3C |
32 |
D2 |
A1D0 |
B0 |
5C |
F1 |
10 |
EC |
23 |
E5 |
2A |
9C |
A1D8 |
B0 |
5C |
25 |
3A |
81 |
5C |
95 |
ED |
43 |
A1E0 |
44 |
6F |
22 |
B0 |
5C |
E1 |
D1 |
0D |
21 |
A1E8 |
20 |
D1 |
2A |
B0 |
5C |
3A |
81 |
5C |
C7 |
A1F0 |
47 |
87 |
3D |
85 |
38 |
09 |
78 |
85 |
5F |
A1F8 |
6F |
3E |
08 |
84 |
67 |
18 |
13 |
24 |
88 |
A200 |
28 |
0A |
25 |
3E |
06 |
BC |
30 |
04 |
2D |
A208 |
2E |
00 |
18 |
06 |
21 |
00 |
AF |
CD |
93 |
A210 |
77 |
A2 |
22 |
B0 |
5C |
C9 |
CB |
23 |
B0 |
A218 |
D0 |
17 |
14 |
C8 |
18 |
F8 |
F5 |
C5 |
47 |
A220 |
D5 |
E5 |
ED |
4B |
B0 |
5C |
CD |
E5 |
72 |
A228 |
22 |
E1 |
D1 |
C1 |
F1 |
C9 |
2A |
B0 |
F3 |
A230 |
5C |
3E |
08 |
94 |
ED |
44 |
67 |
2E |
CE |
A238 |
FF |
18 |
B2 |
21 |
8E |
A1 |
22 |
9B |
B0 |
A240 |
A2 |
11 |
4C |
A2 |
3E |
01 |
32 |
9A |
8E |
A248 |
A2 |
C3 |
80 |
0A |
11 |
52 |
A2 |
C3 |
A1 |
A250 |
7D |
0A |
ED |
5B |
9B |
A2 |
CD |
70 |
3B |
A258 |
0A |
2A |
0E |
5C |
22 |
B0 |
5C |
AF |
75 |
A260 |
32 |
9A |
A2 |
C9 |
11 |
6A |
A2 |
C3 |
19 |
A268 |
80 |
0A |
11 |
8E |
A1 |
CD |
7D |
0A |
28 |
A270 |
3A |
0E |
5C |
32 |
81 |
5C |
C9 |
C5 |
53 |
A278 |
E5 |
01 |
00 |
00 |
CD |
3D |
1F |
CD |
F6 |
A280 |
54 |
1F |
30 |
10 |
11 |
01 |
40 |
21 |
48 |
A288 |
00 |
40 |
01 |
FF |
17 |
36 |
00 |
ED |
A4 |
A290 |
B0 |
E1 |
C1 |
C9 |
E1 |
E1 |
E1 |
C3 |
B3 |
A298 |
7B |
1B |
00 |
9D |
A2 |
FE |
0D |
28 |
42 |
A2A0 |
63 |
FE |
16 |
28 |
66 |
FE |
20 |
D8 |
3D |
A2A8 |
ED |
5B |
36 |
5C |
6F |
26 |
00 |
29 |
E2 |
A2B0 |
29 |
29 |
19 |
EB |
ED |
4B |
B0 |
5C |
EC |
A2B8 |
79 |
E6 |
18 |
F6 |
40 |
67 |
79 |
E6 |
CD |
A2C0 |
07 |
B7 |
1F |
1F |
1F |
1F |
80 |
6F |
8B |
A2C8 |
C5 |
CD |
F0 |
A2 |
3E |
20 |
85 |
6F |
E0 |
A2D0 |
30 |
04 |
3E |
08 |
84 |
67 |
CD |
F0 |
94 |
A2D8 |
A2 |
E1 |
24 |
3E |
1F |
BC |
D2 |
12 |
1E |
A2E0 |
A2 |
2C |
2C |
26 |
00 |
3E |
16 |
BD |
B3 |
A2E8 |
D2 |
12 |
A2 |
2E |
00 |
C3 |
0F |
A2 |
B2 |
A2F0 |
E5 |
0E |
04 |
06 |
02 |
1A |
77 |
CB |
ED |
A2F8 |
3F |
B6 |
77 |
24 |
10 |
F7 |
13 |
0D |
51 |
A300 |
20 |
F1 |
E1 |
C9 |
2A |
B0 |
5C |
26 |
BA |
A308 |
20 |
18 |
CF |
21 |
9D |
A2 |
C3 |
3E |
13 |
A310 |
A2 |
F5 |
3E |
02 |
CD |
01 |
16 |
F1 |
5F |
A318 |
21 |
FE |
9F |
01 |
02 |
00 |
09 |
3D |
C2 |
A320 |
20 |
FC |
5E |
23 |
56 |
23 |
4E |
23 |
4A |
A328 |
46 |
69 |
60 |
A7 |
ED |
52 |
4D |
44 |
51 |
A330 |
78 |
B1 |
0B |
C8 |
1A |
ED |
43 |
4D |
66 |
A338 |
A3 |
ED |
53 |
4B |
A3 |
CD |
28 |
A0 |
41 |
A340 |
ED |
4B |
4D |
A3 |
ED |
5B |
4B |
A3 |
41 |
A348 |
13 |
18 |
E5 |
00 |
00 |
00 |
00 |
21 |
1C |
A350 |
B2 |
88 |
01 |
06 |
00 |
09 |
3D |
20 |
9A |
A358 |
FC |
11 |
19 |
A4 |
ED |
B0 |
CD |
C0 |
EF |
A360 |
A3 |
CD |
E2 |
A3 |
01 |
21 |
00 |
CD |
E7 |
A368 |
3D |
1F |
3A |
04 |
5C |
FE |
41 |
28 |
68 |
A370 |
0F |
FE |
51 |
28 |
10 |
FE |
0D |
20 |
D4 |
A378 |
EB |
ED |
4B |
1F |
A4 |
06 |
00 |
C9 |
D0 |
A380 |
01 |
3C |
2C |
18 |
03 |
01 |
3D |
2D |
12 |
A388 |
21 |
A4 |
A3 |
71 |
21 |
B7 |
A3 |
70 |
EF |
A390 |
3A |
19 |
A4 |
CB |
27 |
CB |
27 |
CB |
D9 |
A398 |
27 |
47 |
3A |
1A |
A4 |
80 |
CD |
F0 |
DE |
A3A0 |
A3 |
3A |
1F |
A4 |
3C |
32 |
1F |
A4 |
14 |
A3A8 |
47 |
3A |
1D |
A4 |
B8 |
DC |
C0 |
A3 |
84 |
A3B0 |
05 |
FC |
D3 |
A3 |
2A |
1B |
A4 |
2C |
DF |
A3B8 |
22 |
1B |
A4 |
CD |
E2 |
A3 |
18 |
A4 |
4A |
A3C0 |
3E |
01 |
32 |
1F |
A4 |
2A |
1B |
A4 |
80 |
A3C8 |
3A |
1D |
A4 |
95 |
ED |
44 |
6F |
22 |
BD |
A3D0 |
1B |
A4 |
C9 |
3A |
1D |
A4 |
32 |
1F |
47 |
A3D8 |
A4 |
2A |
1B |
A4 |
85 |
6F |
22 |
1B |
39 |
A3E0 |
A4 |
C9 |
3A |
1A |
A4 |
CB |
27 |
CB |
A5 |
A3E8 |
27 |
CB |
27 |
47 |
3A |
19 |
A4 |
80 |
62 |
A3F0 |
F5 |
ED |
5B |
1B |
A4 |
CD |
02 |
A4 |
02 |
A3F8 |
3A |
1E |
A4 |
47 |
F1 |
77 |
23 |
10 |
79 |
A400 |
FC |
C9 |
7B |
E6 |
18 |
CB |
3F |
CB |
B7 |
A408 |
3F |
CB |
3F |
F6 |
58 |
67 |
7B |
E6 |
0B |
A410 |
07 |
B7 |
1F |
1F |
1F |
1F |
82 |
6F |
DF |
A418 |
C9 |
05 |
01 |
03 |
00 |
15 |
05 |
15 |
BD |
A420 |
85 |
05 |
01 |
01 |
01 |
0F |
0A |
83 |
ED |
A428 |
16 |
02 |
02 |
46 |
49 |
4C |
45 |
4E |
54 |
A430 |
41 |
4D |
45 |
82 |
17 |
05 |
16 |
10 |
6B |
A438 |
7F |
4D |
65 |
67 |
61 |
20 |
42 |
41 |
78 |
A440 |
53 |
49 |
43 |
16 |
10 |
77 |
42 |
65 |
07 |
A448 |
74 |
61 |
20 |
42 |
41 |
53 |
49 |
43 |
43 |
A450 |
16 |
10 |
6F |
4C |
4F |
47 |
4F |
16 |
D0 |
A458 |
10 |
67 |
50 |
41 |
53 |
43 |
41 |
4C |
27 |
A4 60 |
16 |
10 |
5F |
50 |
52 |
4F |
4C |
4F |
15 |
A4 68 |
47 |
16 |
10 |
57 |
5A |
45 |
55 |
53 |
17 |
A470 |
16 |
10 |
4F |
47 |
45 |
4E |
53 |
20 |
D6 |
A478 |
34 |
44 |
16 |
10 |
47 |
4D |
4F |
4E |
EB |
A480 |
53 |
20 |
34 |
44 |
16 |
10 |
3F |
62 |
D6 |
A488 |
6F |
6F |
74 |
84 |
10 |
02 |
87 |
86 |
21 |
A490 |
02 |
07 |
00 |
14 |
07 |
08 |
14 |
01 |
75 |
A498 |
16 |
00 |
16 |
46 |
49 |
4C |
45 |
14 |
9C |
A4A0 |
00 |
16 |
02 |
15 |
43 |
4F |
50 |
59 |
AC |
A4A8 |
16 |
03 |
15 |
4D |
4F |
56 |
45 |
16 |
C7 |
A4B0 |
04 |
15 |
44 |
45 |
4C |
45 |
54 |
45 |
20 |
A4B8 |
16 |
05 |
15 |
52 |
45 |
4E |
41 |
4D |
FF |
A4C0 |
45 |
86 |
00 |
07 |
09 |
14 |
07 |
09 |
63 |
A4C8 |
81 |
15 |
01 |
82 |
17 |
05 |
16 |
B8 |
6F |
A4D0 |
67 |
46 |
41 |
4A |
4C |
16 |
A5 |
57 |
0A |
A4D8 |
4B |
4F |
50 |
49 |
52 |
4F |
57 |
41 |
E8 |
A4E0 |
54 |
58 |
16 |
A5 |
4F |
50 |
4F |
5E |
37 |
A4E8 |
49 |
53 |
54 |
49 |
54 |
58 |
16 |
A5 |
2C |
A4F0 |
47 |
55 |
44 |
41 |
4C |
49 |
54 |
58 |
F6 |
A4F8 |
16 |
A5 |
3F |
50 |
45 |
52 |
45 |
49 |
0B |
A500 |
4D |
45 |
4E |
4F |
57 |
41 |
54 |
58 |
18 |
A508 |
80 |
84 |
11 |
E8 |
03 |
AF |
08 |
21 |
85 |
A510 |
00 |
40 |
01 |
00 |
18 |
AF |
BE |
28 |
A3 |
A518 |
0F |
08 |
3E |
01 |
08 |
1B |
7A |
B3 |
63 |
A520 |
20 |
03 |
11 |
E8 |
03 |
1A |
A6 |
77 |
1B |
A528 |
23 |
0B |
78 |
B1 |
20 |
E7 |
08 |
3D |
70 |
A530 |
28 |
DB |
C9 |
00 |
00 |
00 |
00 |
00 |
A1 |
|
Дамп |
файла |
"UDG MENU" CODE 65368,168. |
|
FF58 |
00 |
7F |
7F |
60 |
6F |
68 |
68 |
68 |
5C |
FF60 |
00 |
FF |
FF |
00 |
FF |
00 |
00 |
00 |
5C |
FF68 |
00 |
FE |
FE |
06 |
F6 |
16 |
16 |
16 |
A1 |
FF70 |
68 |
68 |
68 |
68 |
68 |
68 |
68 |
68 |
AF |
FF78 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
77 |
FF80 |
16 |
16 |
16 |
16 |
16 |
16 |
16 |
16 |
2F |
FF88 |
68 |
68 |
68 |
6F |
60 |
7F |
7F |
00 |
8C |
FF90 |
00 |
00 |
00 |
FF |
00 |
FF |
FF |
00 |
8C |
FF98 |
16 |
16 |
16 |
F6 |
06 |
FE |
FE |
00 |
D1 |
FFA0 |
68 |
68 |
68 |
68 |
6F |
68 |
68 |
68 |
E6 |
FFA8 |
00 |
00 |
00 |
00 |
FF |
00 |
00 |
00 |
A6 |
FFB0 |
16 |
16 |
16 |
16 |
F6 |
16 |
16 |
16 |
3F |
FFB8 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
AF |
FFC0 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
B7 |
FFC8 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
BF |
FFD0 |
80 |
80 |
80 |
80 |
80 |
80 |
80 |
80 |
CF |
FFD8 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
D7 |
FFE0 |
01 |
01 |
01 |
01 |
01 |
01 |
01 |
01 |
E7 |
FFE8 |
80 |
80 |
80 |
80 |
80 |
80 |
80 |
FF |
66 |
FFF0 00 00 00 |
00 00 00 00 FF EE |
FFF8 | 01 01 01 |
01 01 01 01 FF | FD |
96-байтная таблица для |
"вырезки" английских символов. |
5 LET P=40768: RESTORE 10: FOR I=1 |
TO 96: READ A$,A: POKE P+I-1,A: NEXT I |
STOP |
|
|
|
10 |
DATA ' |
II |
BIN |
11110000 |
20 |
DATA ' |
• , |
BIN |
11100001 |
30 |
DATA ' |
kawyAki |
',BIN 110 |
40 |
DATA ' |
|
BIN |
10001011 |
50 |
DATA ' |
$", |
BIN |
11000011 |
60 |
DATA ' |
O. П
о , |
BIN |
11000011 |
70 |
DATA ' |
&", |
BIN |
10100101 |
80 |
DATA ' |
T II |
BIN |
11000011 |
90 |
DATA ' |
|
BIN |
11100001 |
100 |
DATA |
|
,BIN |
10000111 |
110 |
DATA |
|
,BIN |
11100010 |
120 |
DATA |
|
,BIN |
11100010 |
130 |
DATA |
П ! |
,BIN |
11000011 |
140 |
DATA |
|
,BIN |
11000011 |
150 |
DATA |
П ! |
,BIN |
11000011 |
155 |
DATA |
|
,BIN |
11100010 |
160 |
DATA |
"0" |
,BIN |
10111000 |
170 |
DATA |
"1" |
,BIN |
11100010 |
180 |
DATA |
"2" |
,BIN |
10111000 |
190 |
DATA |
"3" |
,BIN |
11110000 |
200 |
DATA |
"4" |
,BIN |
10100110 |
210 |
DATA |
"5" |
,BIN |
10111000 |
220 |
DATA |
"6" |
,BIN |
10111000 |
230 |
DATA |
"7" |
,BIN |
11100100 |
240 |
DATA |
"8" |
,BIN |
10111000 |
250 |
DATA |
"9" |
,BIN |
10111000 |
260 |
DATA |
|
,BIN |
11000110 |
270 |
DATA |
|
,BIN |
11000110 |
280 |
DATA |
|
,BIN |
11100010 |
290 |
DATA |
"=" |
,BIN |
11110000 |
300 |
DATA |
|
,BIN |
11100001 |
310 |
DATA |
11 ! |
,BIN |
11110000 |
320 |
DATA |
|
,BIN |
10011100 |
330 |
DATA |
"A" |
,BIN |
10111000 |
340 |
DATA |
"B" |
,BIN |
10111000 |
350 |
DATA |
"C" |
,BIN |
10111000 |
360 |
DATA |
"D" |
,BIN |
10111000 |
370 |
DATA |
"E" |
,BIN |
10111000 |
380 |
DATA |
"F" |
,BIN |
10111000 |
390 |
DATA |
"G' |
,BIN |
10111000 |
400 |
DATA |
"H" |
,BIN |
10111000 |
410 |
DATA |
"I" |
,BIN |
11100010 |
420 |
DATA |
"J" |
,BIN |
10111000 |
430 |
DATA |
"K" |
,BIN |
10110010 |
440 |
DATA |
"L" |
,BIN |
10111000 |
450 |
DATA |
"M" |
,BIN |
10011100 |
460 |
DATA |
"N" |
,BIN |
10110100 |
470 |
DATA |
"O" |
,BIN |
10111000 |
480 |
DATA |
"P" |
,BIN |
10111000 |
490 |
DATA |
"Q" |
,BIN |
10110100 |
500 |
DATA |
"R" |
,BIN |
10111000 |
510 |
DATA |
"S" |
,BIN |
10111000 |
520 |
DATA |
"T" |
,BIN |
11000110 |
530 |
DATA |
"U" |
,BIN |
10111000 |
540 |
DATA |
"V" |
,BIN |
10011100 |
550 |
DATA |
"W" |
,BIN |
10101100 |
560 |
DATA |
"X" |
,BIN |
10011100: REM BIN 10101100 |
570 |
DATA |
"Y" |
,BIN |
10101010 |
580 |
DATA |
"Z" |
,BIN |
11010010 |
590 |
DATA |
|
,BIN |
11100010 |
600 |
DATA |
|
,BIN |
11000110 |
610 |
DATA |
|
,BIN |
11001100 |
620 |
DATA |
II л II |
,BIN |
11000110 |
630 |
DATA |
II II |
,BIN |
11110000 |
640 |
DATA |
II s II |
,BIN |
11000110 |
650 |
DATA |
"a" |
,BIN |
10110010 |
660 |
DATA |
"b" |
,BIN |
11011000 |
670 |
DATA |
"c" |
,BIN |
11000110 |
680 |
DATA |
"d" |
,BIN |
10110010 |
690 |
DATA |
"e" |
,BIN |
10110010 |
700 |
DATA |
"f" |
,BIN |
11100010 |
710 |
DATA |
"g" |
,BIN |
10110010 |
720 |
DATA |
"h" |
,BIN |
10110010 |
730 |
DATA |
"i" |
,BIN |
11000110 |
740 |
DATA |
"j" |
,BIN |
11100010 |
750 |
DATA |
"k" |
,BIN |
11010010 |
760 |
DATA |
"l" |
,BIN |
11100010 |
770 |
DATA |
"m" |
,BIN |
10101010 |
780 |
DATA |
"n" |
,BIN |
10110010 |
790 |
DATA |
"o" |
,BIN |
10011010 |
800 |
DATA |
"p" |
,BIN |
10110010 |
810 |
DATA |
"q" |
,BIN |
10110001 |
820 |
DATA |
|
,BIN |
11000110 |
830 |
DATA |
"s" |
,BIN |
10110010 |
840 |
DATA |
"t" |
,BIN |
11000110 |
850 |
DATA |
"u" |
,BIN |
10110010 |
860 |
DATA |
"v" |
,BIN |
11000110 |
870 |
DATA |
"w" |
,BIN |
10101010 |
880 |
DATA |
"x" |
,BIN |
11000110 |
890 |
DATA |
"y" |
,BIN |
10110010 |
900 |
DATA |
"z" |
,BIN |
10010011 |
910 |
DATA |
|
,BIN |
11100010 |
920 |
DATA |
|
,BIN |
11100010 |
930 |
DATA |
|
,BIN |
11000110 |
940 |
DATA |
|
,BIN |
11100010 |
950 |
DATA |
|
,BIN |
00001111
96-байтная таблица для "вырезки" русских символов |
5 LET P=40864: RESTORE 10: FOR I=1 TO 96: READ A$,A: POKE P+I-1,A: NEXT I:
STOP
6 POKE 23606,80: POKE 23607,194: STOP 10 DATA " ",BIN 11110000
20 DATA "!",BIN 11100001 30 DATA "kawyAki",BIN 11000110 40 DATA "#",BIN 1000111 50 DATA "$",BIN 10001011
60 70 80 90 100 |
DATA " DATA " DATA " DATA " DATA |
an
О , &",
T II |
BIN 1 BIN 1 BIN 1 BIN 1 ,BIN |
_0010011 _0001110 _1000011 _1100001 10000111 |
110 |
DATA |
|
,BIN |
11000110 |
120 |
DATA |
|
,BIN |
11000110 |
130 |
DATA |
П П , |
,BIN |
11000011 |
140 |
DATA |
П _ П |
,BIN |
11000011 |
150 |
DATA |
П П |
,BIN |
11000011 |
155 |
DATA |
|
,BIN |
11100010 |
160 |
DATA |
"0" |
,BIN |
10110010 |
170 |
DATA |
"1" |
,BIN |
11000110 |
180 |
DATA |
"2" |
,BIN |
10110010 |
190 |
DATA |
"3" |
,BIN |
11100010 |
200 |
DATA |
"4" |
,BIN |
10110010 |
210 |
DATA |
"5" |
,BIN |
10110010 |
220 |
DATA |
"6" |
,BIN |
10011010 |
230 |
DATA |
"7" |
,BIN |
11100010 |
240 |
DATA |
"8" |
,BIN |
10110010 |
250 |
DATA |
"9" |
,BIN |
10110010 |
260 |
DATA |
|
,BIN |
11000110 |
270 |
DATA |
|
,BIN |
11000110 |
280 |
DATA |
|
,BIN |
11000110 |
290 |
DATA |
|
,BIN |
11110000 |
300 |
DATA |
|
,BIN |
11000110 |
310 |
DATA |
|
,BIN |
11100010 |
320 |
DATA |
|
,BIN |
11001010 |
330 |
DATA |
"A" |
,BIN |
10110010 |
340 |
DATA |
"B" |
,BIN |
10110010 |
350 |
DATA |
"C" |
,BIN |
10110010 |
360 |
DATA |
"D" |
,BIN |
10011010 |
370 |
DATA |
"E" |
,BIN |
10010110 |
380 |
DATA |
"F" |
,BIN |
10101010 |
390 |
DATA |
"G" |
,BIN |
10110010 |
400 |
DATA |
"H" |
,BIN |
10110010 |
410 |
DATA |
"I" |
,BIN |
10001011 |
420 |
DATA |
"J" |
,BIN |
10101010 |
430 |
DATA |
"K" |
,BIN |
10110010 |
440 |
DATA |
"L" |
,BIN |
10110010 |
450 |
DATA |
"M" |
,BIN |
10011010 |
460 |
DATA |
"N" |
,BIN |
10110010 |
470 |
DATA |
"O" |
,BIN |
10110010 |
480 |
DATA |
"P" |
,BIN |
10110010 |
490 |
DATA |
"Q" |
,BIN |
10011010 |
500 |
DATA |
"R" |
,BIN |
10110010 |
510 |
DATA |
"S" |
,BIN |
10110010 |
520 |
DATA |
"T" |
,BIN |
11000110 |
530 |
DATA |
"U" |
,BIN |
10110010 |
540 |
DATA |
"V" |
,BIN |
10101010 |
550 |
DATA |
"W" |
,BIN |
10101010 |
560 |
DATA |
"X" |
,BIN |
10011010: REM BIN 10101100 |
570 |
DATA |
"Y" |
,BIN |
10101010 |
580 |
DATA |
"Z" |
,BIN |
11010010 |
590 |
DATA |
|
,BIN |
10101010 |
600 |
DATA |
"" |
,BIN |
11100010 |
610 |
DATA |
"]" |
,BIN |
10101010 |
620 |
DATA |
II Л II |
,BIN |
10110010 |
630 |
DATA |
II II |
,BIN |
10001110 |
640 |
DATA |
II s II |
,BIN |
11001010 |
650 |
DATA |
"a" |
,BIN |
10110010 |
660 |
DATA |
"b" |
,BIN |
10011010 |
670 |
DATA |
"c" |
,BIN |
10110010 |
680 |
DATA |
"d" |
,BIN |
10011010 |
690 |
DATA |
"e" |
,BIN |
10110010 |
700 |
DATA |
"f" |
,BIN |
10101010 |
710 |
DATA |
"g" |
,BIN |
10110010 |
720 |
DATA |
"h" |
,BIN |
10110010 |
730 |
DATA |
"i" |
,BIN |
10011010 |
740 |
DATA |
"j" |
,BIN |
10011010 |
750 |
DATA |
"k" |
,BIN |
10110010 |
760 |
DATA |
"l" |
,BIN |
10110010 |
770 |
DATA |
"m" |
,BIN |
10011010 |
780 |
DATA |
"n" |
,BIN |
10110010 |
790 |
DATA |
"o" |
,BIN |
10011010 |
800 |
DATA |
"p" |
,BIN |
10110010 |
810 |
DATA |
"q" |
,BIN |
10011010 |
820 |
DATA |
|
,BIN |
10110010 |
830 |
DATA |
"s" |
,BIN |
10110010 |
840 |
DATA |
"t" |
,BIN |
11000110 |
850 |
DATA |
"u" |
,BIN |
10110010 |
860 |
DATA |
"v" |
,BIN |
10101010 |
870 |
DATA |
"w" |
,BIN |
10101010 |
880 |
DATA |
"x" |
,BIN |
10110010 |
890 |
DATA |
"y" |
,BIN |
10101010 |
900 |
DATA |
"z" |
,BIN |
11010010 |
910 |
DATA |
"{" |
,BIN |
10101010 |
920 |
DATA |
"|" |
,BIN |
11100010 |
930 |
DATA |
"}" |
,BIN |
10101010 |
940 |
DATA |
|
,BIN |
10110010 |
950 |
DATA |
|
,BIN |
10011010 |
|
|