В ней искаропки :) есть обе процедуры
turbo_loader: ; #B7EE
turbo_saver: ; #BACD
...
#BB85
достать можно сразу после загрузки игры. После запуска в это место пишется буфер экрана, так что место затирается.
Спасибо goodboy, но Вы понимаете, что это не СОВСЕМ то что Я спрашивал? Тема счётчика вообще заглохла!!! Вот текст этой программы в упрощенном виде:
10 PAPER 0: INK 7: BORDER 0: CLEAR 39999
20 LET a=22528: LET b=55000
30 LOAD "" SCREEN$
40 LET a$=INKEY$
50 LET a=a-(a$="6" AND a>22528)+(a$="7" AND a<23295)-32*(a$="9" AND a>22559)+32*(a$="8" AND a< 23264)
60 LET at=PEEK a: POKE a,0: PAUSE 5: POKE a,127: PAUSE 5: POKE a,at
70 IF a$="0" THEN GO TO 200
80 IF a$=" " THEN LET b=b-11: POKE a,at: BEEP 1,0
90 IF a$="1" THEN GO TO 300
100 GO TO 40
200 BEEP .1,30: LET ad=a-2 5 60-17 92*(a<2 3040)-1792*(a<22784)
210 LET ah=INT (ad/256): LET al=ad-256*ah
220 POKE b,al: POKE (b+l),ah
230 FOR n=0 TO 7: POKE (b+n+2), PEEK (ad+256*n): NEXT n
240 POKE b+10,at: LET b=b+11: LET at=at
250 POKE a,0: GO TO 40
300 INPUT "Filename : ";a$
310 SAVE a$ CODE 55000, (b-55000)
Назначение переменных в программе:
а - адрес атрибута текущего знакоместа;
b - первый свободный адрес создаваемого файла;
at - значение атрибута текущего знакоместа;
ad - адрес первой линии текущего знакоместа;
al, ah - младший и старший байты адреса верхней пиксельной линии знакоместа;
atl - значение атрибута текущего знакоместа для временного хранения.
Текст взят http://zxpress.ru/book_articles.php?id=481 из журнала ZX-Ревю 1994 №6 статья Нестандартные загрузчики!
alex8418, тебе sjasm файл что-ли готовый прислать? Тут все есть про счетчик, и даже работает если набрать.
https://zx-pk.ru/threads/9187-origin...l=1#post175264
Последняя прога в файле под названием ARTBRUSH.
в алькатразе (в отличии от бегающего квадратика) совсем другая логика работы.
в квадратике (при кодировании) адреса сохраняются на ленту, а в алькатразе они уже внутри загрузчика,
там похоже перед загрузкой строится карта на основании заданных участков экрана.
на WoS есть загрузочный комплект/исходники
http://www.worldofspectrum.org/pub/s...Cartridges.gif
...
я в своих дисковых версиях делал эмуляцию проявления таких экранов.
вот нашёл/вспомнил для примера
https://vtrd.in/gamez/s/SIDEARMZ.ZIP
Пытался я уже из ZX-Ревю 1995 №1 набирать программу, есть подозрение, что набирать надо не в Gens-е 4-ом, как вводить строки #FE81 и #FEAC в Gens-е не понятно?
Вот набрал в Gens-е 4 программу загрузчика всё из того же журнала ZX-Ревю 1994 №6 статья Нестандартные загрузчики:
10<<SP>><<SP>>ORG<<SP>>40000
20<<SP>>ENT
30<<SP>><<SP>>CALL<<SP>>BEGIN
40<<SP>><<SP>>EI
50<<SP>><<SP>>RET
60<<SP>>BEGIN<<SP>>DI
70<<SP>><<SP>>LD<<SP>>A,#0F
80<<SP>><<SP>>OUT<<SP>>(#FE),A
90<<SP>><<SP>>IN<<SP>>A,(#FE)
100<<SP>><<SP>>RRA
110<<SP>><<SP>>AND<<SP>>#20
120<<SP>><<SP>>OR<<SP>>#02
130<<SP>><<SP>>LD<<SP>>C,A
140<<SP>><<SP>>CP<<SP>>A
150<<SP>>BREAK<<SP>>RET<<SP>>NZ
160<<SP>>START<<SP>>CALL<<SP>>EDGE1
170<<SP>><<SP>>JR<<SP>>NC,BREAK
180<<SP>><<SP>>LD<<SP>>HL,#0415
190<<SP>>WAIT<<SP>>DJNZ<<SP>>WAIT
200<<SP>><<SP>>DEC<<SP>>HL
210<<SP>><<SP>>LD<<SP>>A,H
220<<SP>><<SP>>OR<<SP>>L
230<<SP>><<SP>>JR<<SP>>NZ,WAIT
240<<SP>><<SP>>CALL<<SP>>EDGE2
250<<SP>><<SP>>JR<<SP>>NC,BREAK
260<<SP>>LEADER<<SP>>LD<<SP>>B,#9C
270<<SP>><<SP>>CALL<<SP>>EDGE2
280<<SP>><<SP>>JR<<SP>>NC,BREAK
290<<SP>><<SP>>LD<<SP>>A,#C6
300<<SP>><<SP>>CP<<SP>>B
310<<SP>><<SP>>JR<<SP>>NC,START
320<<SP>><<SP>>INC<<SP>>H
330<<SP>><<SP>>JR<<SP>>NZ,LEADER
340<<SP>>SYNC<<SP>>LD<<SP>>B,#C9
350<<SP>><<SP>>CALL<<SP>>EDGE1
360<<SP>><<SP>>JR<<SP>>NC,BREAK
370<<SP>><<SP>>LD<<SP>>A,B
380<<SP>><<SP>>CP<<SP>>#D4
390<<SP>><<SP>>JR<<SP>>NC,SYNC
400<<SP>><<SP>>CALL<<SP>>EDGE1
410<<SP>><<SP>>RET<<SP>>NC
420<<SP>><<SP>>LD<<SP>>A,C
430<<SP>><<SP>>XOR<<SP>>#03
440<<SP>><<SP>>LD<<SP>>C,A
450<<SP>><<SP>>LD<<SP>>B,#B0
460<<SP>><<SP>>CALL<<SP>>MARKER
470<<SP>>LOOP<<SP>>CALL<<SP>>PLACE
480<<SP>><<SP>>RET<<SP>>NC
490<<SP>><<SP>>JR<<SP>>LOOP
500<<SP>>PLACE<<SP>>LD<<SP>>B,#B0
510<<SP>><<SP>>CALL<<SP>>MARKER
520<<SP>><<SP>>LD<<SP>>L,E
530<<SP>><<SP>>LD<<SP>>B,#B0
540<<SP>><<SP>>CALL<<SP>>MARKER
550<<SP>><<SP>>RET<<SP>>NC
560<<SP>><<SP>>LD<<SP>>H,E
570<<SP>><<SP>>LD<<SP>>D,#08
580<<SP>><<SP>>LD<<SP>>B,#B0
590<<SP>>GRAF<<SP>>CALL<<SP>>MARKER
600<<SP>><<SP>>RET<<SP>>NC
610<<SP>><<SP>>LD<<SP>>(HL),E
620<<SP>><<SP>>INC<<SP>>H
630<<SP>><<SP>>DEC<<SP>>D
640<<SP>><<SP>>LD<<SP>>B,#B1
650<<SP>><<SP>>JR<<SP>>NZ,GRAF
660<<SP>><<SP>>LD<<SP>>A,H
670<<SP>><<SP>>SUB<<SP>>#08
680<<SP>><<SP>>RRA
690<<SP>><<SP>>RRA
700<<SP>><<SP>>RRA
710<<SP>><<SP>>AND<<SP>>#03
720<<SP>><<SP>>OR<<SP>>#58
730<<SP>><<SP>>LD<<SP>>H,A
740<<SP>><<SP>>LD<<SP>>B,#B2
750<<SP>><<SP>>CALL<<SP>>MARKER
760<<SP>><<SP>>LD<<SP>>(HL),E
770<<SP>><<SP>>RET
780<<SP>>MARKER<<SP>>LD<<SP>>E,#01
790<<SP>>LD8BIT<<SP>>CALL<<SP>>EDGE2
800<<SP>><<SP>>RET<<SP>>NC
810<<SP>><<SP>>LD<<SP>>A,#CB
820<<SP>><<SP>>CP<<SP>>B
830<<SP>><<SP>>RL<<SP>>E
840<<SP>><<SP>>LD<<SP>>B,#B0
850<<SP>><<SP>>JR<<SP>>NC,LD8BIT
860<<SP>><<SP>>RET
870<<SP>>EDGE2<<SP>>CALL<<SP>>EDGE1
880<<SP>><<SP>>RET<<SP>>NC
890<<SP>>EDGE1<<SP>>LD<<SP>>A,#16
900<<SP>>DELAY<<SP>>DEC<<SP>>A
910<<SP>><<SP>>JR<<SP>>NZ,DELAY
920<<SP>><<SP>>AND<<SP>>A
930<<SP>>SAMPLE<<SP>>INC<<SP>>B
940<<SP>><<SP>>RET<<SP>>Z
950<<SP>><<SP>>LD<<SP>>A,#7F
960<<SP>><<SP>>IN<<SP>>A,(#FE)
970<<SP>><<SP>>RRA
980<<SP>><<SP>>RET<<SP>>NC
990<<SP>><<SP>>XOR<<SP>>C
1000<<SP>><<SP>>AND<<SP>>#20
1010<<SP>><<SP>>JR<<SP>>Z,SAMPLE
1020<<SP>><<SP>>LD<<SP>>A,C
1030<<SP>><<SP>>CPL
1040<<SP>><<SP>>LD<<SP>>C,A
1050<<SP>><<SP>>AND<<SP>>#07
1060<<SP>><<SP>>OR<<SP>>#08
1070<<SP>><<SP>>OUT<<SP>>(#FE),A
1080<<SP>><<SP>>SCF
1090<<SP>><<SP>>RET
Символом <<SP>> отметил количество пробелов для тех, кто надумает набирать, так в Gens-е правильно работает, теперь программа, без символа <<SP>>:
10 ORG 40000
20 ENT
30 CALL BEGIN
40 EI
50 RET
60 BEGIN DI
70 LD A,#0F
80 OUT (#FE),A
90 IN A,(#FE)
100 RRA
110 AND #20
120 OR #02
130 LD C,A
140 CP A
150 BREAK RET NZ
160 START CALL EDGE1
170 JR NC,BREAK
180 LD HL,#0415
190 WAIT DJNZ WAIT
200 DEC HL
210 LD A,H
220 OR L
230 JR NZ,WAIT
240 CALL EDGE2
250 JR NC,BREAK
260 LEADER LD B,#9C
270 CALL EDGE2
280 JR NC,BREAK
290 LD A,#C6
300 CP B
310 JR NC,START
320 INC H
330 JR NZ,LEADER
340 SYNC LD B,#C9
350 CALL EDGE1
360 JR NC,BREAK
370 LD A,B
380 CP #D4
390 JR NC,SYNC
400 CALL EDGE1
410 RET NC
420 LD A,C
430 XOR #03
440 LD C,A
450 LD B,#B0
460 CALL MARKER
470 LOOP CALL PLACE
480 RET NC
490 JR LOOP
500 PLACE LD B,#B0
510 CALL MARKER
520 LD L,E
530 LD B,#B0
540 CALL MARKER
550 RET NC
560 LD H,E
570 LD D,#08
580 LD B,#B0
590 GRAF CALL MARKER
600 RET NC
610 LD (HL),E
620 INC H
630 DEC D
640 LD B,#B1
650 JR NZ,GRAF
660 LD A,H
670 SUB #08
680 RRA
690 RRA
700 RRA
710 AND #03
720 OR #58
730 LD H,A
740 LD B,#B2
750 CALL MARKER
760 LD (HL),E
770 RET
780 MARKER LD E,#01
790 LD8BIT CALL EDGE2
800 RET NC
810 LD A,#CB
820 CP B
830 RL E
840 LD B,#B0
850 JR NC,LD8BIT
860 RET
870 EDGE2 CALL EDGE1
880 RET NC
890 EDGE1 LD A,#16
900 DELAY DEC A
910 JR NZ,DELAY
920 AND A
930 SAMPLE INC B
940 RET Z
950 LD A,#7F
960 IN A,(#FE)
970 RRA
980 RET NC
990 XOR C
1000 AND #20
1010 JR Z,SAMPLE
1020 LD A,C
1030 CPL
1040 LD C,A
1050 AND #07
1060 OR #08
1070 OUT (#FE),A
1080 SCF
1090 RET
- - - Добавлено - - -
Доброго времени суток goodboy! Скачал архив AlkatrazDevelopmentCartridges.mdr.zip с сайта http://www.worldofspectrum.org/, вот его содержание:
01 - No Label.mdr
01 - No Label.tap
02 - Backup of ITEC Progs.mdr
02 - Backup of ITEC Progs.tap
03 - Alkatraz Utils.mdr
03 - Alkatraz Utils.tap
04 - Alkatraz Utils 2.50.mdr
04 - Alkatraz Utils 2.50.tap
05 - Assembler.mdr
05 - Assembler.tap
06 - Loaders.mdr
06 - Loaders.tap
07 - Assembler Sources.mdr
07 - Assembler Sources.tap
08 - Trans Express.mdr
08 - Trans Express.tap
09 - No Label.mdr
09 - No Label.tap
10 - ITEC Progs.mdr
10 - ITEC Progs.tap
12 - Protector Source.mdr
12 - Protector Source.tap
13 - Routines.mdr
13 - Routines.tap
14 - Master Prog Inst.mdr
14 - Master Prog Inst.tap
16 - Utilities.mdr
16 - Utilities.tap
Alkatraz Carts.xls
MDR2TAP_b2.exe
Упорно искал в tap файлах, хоть один заголовок Program, но безуспешно (может плохо искал), что делать с этим архивом не знаю? Подскажите дельное решение?
Извиняюсь конечно за лаймерство, но по поводу сообщения:
бери готовый код (он в играх от Hewson универсальный)
Это как брать и какой программой и куда в конечном итоге набирать или копировать? (возможно вопрос не данной теме и нужно было создать отдельную – уроки программирования Zx Spectrum, но всё же?)
У меня есть похожий счётчик набранный (из ZX-Ревю 1995 №1).
Спасибо morozov за файл counter.zip!
Открыл файл: word.exe makefile, там написано:
boot.tap: boot.bas counter.tap
bas2tap -sboot -a10 boot.bas boot.tap
cat counter.tap EXOLON\$$.tap >> boot.tap
counter.tap: counter.asm
pasmo --bin counter.asm counter.bin
Как после преобразования counter.asm в counter.bin появляется counter.tap?
Открыл файл: word.exe counter.asm, там написано:
org #FC13
JP START
; #FC16-#FC19 - STR$ значений
; счетчика (единицы...тысячи).
DEFB #48,#48,#48,#48
; флаг запрета/разрешения включения счетчика.
ENABLED: DEFB #00
; #FC1B-#FC1C - адрес счетчика в
; таблице.
DEFW #0000
; #FC1D-#FC20 - адрес счетчика в
; дисплейном файле.
DEFW #0000
DEFW #0000
; Хэдер.
HEADER: DEFS #11
; #FC32-#FC89 - шаблоны цифр счетчика
; (стандартно, по 8 байт на символ);
; всего - 11 цифр, следующих:
; 0-1-2-3-4-5-6-7-8-9-0.
DEFB #FE,#C6,#BA,#BA,#BA,#BA,#C6,#FE
DEFB #FE,#EE,#CE,#EE,#EE,#EE,#82,#FE
DEFB #FE,#C6,#BA,#F6,#EE,#DE,#82,#FE
DEFB #FE,#82,#F6,#E6,#FA,#BA,#C6,#FE
DEFB #FE,#F6,#E6,#D6,#B6,#82,#F6,#FE
DEFB #FE,#82,#BE,#86,#FA,#BA,#C6,#FE
DEFB #FE,#E6,#DE,#86,#BA,#BA,#C6,#FE
DEFB #FE,#82,#FA,#F6,#F6,#EE,#EE,#FE
DEFB #FE,#C6,#BA,#C6,#BA,#BA,#C6,#FE
DEFB #FE,#C6,#BA,#BA,#C2,#FA,#C6,#FE
DEFB #FE,#C6,#BA,#BA,#BA,#BA,#C6,#FE
; Сама процедура загрузки по адресу #FC8A
; в основе содержит программу LD-BYTES
; из ПЗУ, которая была подробно описана
; в РЕВЮ-93 №1-2 (стр. 13). Отличия
; незначительны. Все адреса даны
; для новой процедуры.
LD_BYTES: INC D
EX AF,AF'
DEC D
DI
; Далее, для того, чтобы при
; загрузке хэдера не включался
; счётчик, введены строки:
EXX
LD C,#00
EXX
; Далее опять аналогично ПЗУ:
LD A,#0A
OUT (#FE),A
IN A,(#FE)
RRA
AND #20
OR #00
LD C,A
CP A
LD_BREAK: RET NZ
LD_START: CALL LD_EDGE_1
JR NC,LD_BREAK
LD HL,#0415
LD_WAIT: DJNZ LD_WAIT
DEC HL
LD A,H
OR L
JR NZ,LD_WAIT
CALL LD_EDGE_2
JR NC,LD_BREAK
LD_LEADER: LD B,#9C
CALL LD_EDGE_2
JR NC,LD_BREAK
LD A,#C6
CP B
JR NC,LD_START
INC H
JR NZ,LD_LEADER
LD_SYNC: LD B,#C9
CALL LD_EDGE_1
JR NC,LD_BREAK
LD A,B
CP #D4
JR NC,LD_SYNC
CALL LD_EDGE_1
RET NC
; Опять, для того, чтобы при
; загрузке хэдера не включался
; счётчик, поставлен выключатель:
EXX
LD A,(ENABLED)
LD C,A
LD (#FC1F),A
EXX
; Далее — аналогично ПЗУ:
LD H,#00
LD B,#B0
JR LD_MARKER
LD_LOOP: EX AF,AF'
JR NZ,LD_FLAG
JR NC,LD_VERIFY
LD (IX+#00),L
JR LD_NEXT
LD_FLAG: RL C
XOR L
RET NZ
LD A,C
RRA
LD C,A
INC DE
JR LD_DEC
LD_VERIFY: LD A,(IX+#00)
XOR L
RET NZ
LD_NEXT: INC IX
LD_DEC: DEC DE
EX AF,AF'
LD B,#B2
LD_MARKER: LD L,#01
LD_8_BITS: CALL LD_EDGE_2
RET NC
LD A,#CB
CP B
RL L
LD B,#B0
JP NC,LD_8_BITS
LD A,H
XOR L
LD H,A
LD A,D
OR E
JR NZ,LD_LOOP
LD A,H
CP #01
RET
; Программы LD_EDGE_2 и LD_ED_GE_1
; изменены следующим образом:
LD_EDGE_2: CALL LD_EDGE_1
RET NC
LD_EDGE_1: JP PICTO
LD_SAMPLE: INC B
RET Z
LD A,#7F
IN A,(#FE)
RRA
RET NC
XOR C
AND #20
JR Z,LD_SAMPLE
; Описание работы LD_SAMPLE также можно
; найти в указанном ZX_РЕВЮ. Отличия:
LD A,C
CPL
LD C,A
LD (#5AFE),A
LD (#5AFF),A
; — если в отведённое время фронт импульса
; найден, инвертируются все биты на
; противоположные и выдаётся значение
; аккумулятора в две последние ячейки
; атрибутов. Это приводит к тому, что при
; загрузке в двух последних знакоместах
; можно наблюдать полосы, аналогичные
; бордюрным (сам бордюр при загрузке
; остается чёрным). Далее:
SCF
RET
PICTO: EXX
LD A,C
OR A
JR Z,LD_DELAY
; — если в С ноль, то счётчик не включать.
; Иначе — проверка положения счётчика:
LD HL,#FC1F
DEC (HL)
LD A,(HL)
JR Z,SHET
; Далее происходит включение атрибутов
; счётчика, а в HL — адрес счётчика в
; таблице:
CP #05
JR NC,ATT_R
LD HL,#FC1B
; Теперь переход на адреса в дисплейном
; файле:
INC (HL)
INC L
INC L
DEC (HL)
LD HL,(#FC1B)
; Дальнейшая часть вычисляет адрес
; печатаемой цифры:
LD A,(HL)
ADD A,#32
LD E,A
LD D,#FC
; Следующий фрагмент рисует шаблон,
; лежащий в таблице по адресам
; #FC32 — #FC89:
LD HL,(#FC1D)
LD A,(DE)
LD (HL),A
INC E
INC H
LD A,(DE)
LD (HL),A
INC E
INC H
LD A,(DE)
LD (HL),A
INC E
INC H
LD A,(DE)
LD (HL),A
INC E
INC H
LD A,(DE)
LD (HL),A
INC E
INC H
LD A,(DE)
LD (HL),A
INC E
INC H
LD A,(DE)
LD (HL),A
INC E
INC H
LD A,(DE)
LD (HL),A
EXX
JP LD_SAMPLE
; Далее — фрагмент, осуществляющий
; задержку в 358 тактов процессора:
LD_DELAY: LD B,#17
WAIT_1: DJNZ WAIT_1
LD A,#00
NEG
AND A
EXX
JP LD_SAMPLE
; Затем — установка атрибутов в
; знакоместах счётчика:
ATT_R: LD A,#47
LD (#5AFA),A
LD (#5AFB),A
LD (#5AFC),A
LD (#5AFD),A
INC HL
INC HL
LD B,#0D
JP WAIT_1
; Далее следует процедура SHET:
SHET: LD B,#4F
LD DE,(#FC16)
LD HL,(#FC18)
DEC E
JP P,DES
LD E,B
DEC D
LD B,#05
WAIT_2: DJNZ WAIT_2
LD A,(HL)
JP END_
DES: LD A,D
AND #07
JP Z,SOT_1
DEC D
JP P,SOT_2
LD D,B
DEC L
LD A,(#8000)
LD A,(#8000)
LD A,(#8000)
JP END_
SOT_1: LD A,(HL)
LD A,(HL)
SOT_2: LD A,L
AND #07
JP Z,HANDR_1
DEC L
JP P,HANDR_2
LD L,B
DEC H
NEG
JP END_
HANDR_1: LD A,(HL)
LD A,(HL)
HANDR_2: LD A,H
AND #07
JR Z,END_
DEC H
END_: LD (#FC16),DE
LD (#FC18),HL
LD HL,#FC15
LD (#FC1B),HL
LD HL,#50FE
LD (#FC1D),HL
LD A,#40
LD (#FC1F),A
NEG
NEG
NEG
AND A
EXX
JP LD_SAMPLE
; В приведённой процедуре SHET настолько
; точно просчитаны такты выполнения, что
; она работает не хуже процедуры ПЗУ.
; Если просчи тать все ветви выхода
; программы, то будет 358 тактов. Расчёт
; значений счётчика производится
; следующим образом. Длина программы
; в HL берётся из считанного в таблицу
; хэдера, затем это значение делится
; на 32:
LD HL,(HEADER+#0B)
LD B,#05
WAIT_3: SRL H
RR L
DJNZ WAIT_3
; Регистр DE также загружается
; из таблицы, а в ВС — заносится
; число, соответствующее десятичному
; 1000:
LD DE,#FC19
LOOP_2: LD A,#FF
LD BC,#03E8
; Повтором получаем в А 0, 1, 2 и т.д.:
LOOP_1: INC A
OR A
SBC HL,BC
JR NC,LOOP_1
; После сложения и умножения на 8,
; кладём это значение в таблицу:
ADD HL,BC
ADD A,A
ADD A,A
ADD A,A
LD (DE),A
; Умножаем HL на 10:
LD C,L
LD B,H
ADD HL,HL
ADD HL,HL
ADD HL,BC
ADD HL,HL
; Переход к следующей ячейке и
; повтор, если не конец:
DEC DE
LD A,E
CP #15
JR NZ,LOOP_2
RET
; Чтобы сменить цифру в счётчике,
; обозначающую 1 байт, надо сделать
; 32 вызова процедуры расчёта значения
; счетчика. С началом загрузки программой
; блока кодов включаются атрибуты
; в правом нижнем углу, затем с каждым
; вызовом процедуры LD_EDGE происходит
; смена положения счётчика. Так происходит
; до тех пор, пока блок кодов не
; загрузится и в счётчике не будет "0000".
LD_HEADER: XOR A
LD (ENABLED),A
LD IX,HEADER
LD DE,#0011
XOR A
SCF
CALL LD_BYTES
JR NC,ERR
CALL #FE0F
LD A,#01
LD (ENABLED),A
LD IX,(HEADER+#0D)
LD DE,(HEADER+#0B)
LD A,#FF
SCF
CALL LD_BYTES
JR NC,ERR
EI
RET
ERR: JP #0806
START: EXX
PUSH HL
EXX
CALL LD_HEADER
EXX
POP HL
EXX
RET
Вроде бы из статьи ZX-Ревю 1995 №1, но есть видоизмененные строки из журнала, там где в журнале стоит "...", тут стоят конкретные значения (я не отметил где конкретно, нету времени пока)! Откуда они взялись интересно и видоизменена, либо программа, либо часть программы в конце! В каком ассемблере это набиралось тоже вопрос?
Счётчик универсальный между прочим, работает даже с загрузкой основной части игры (сам проверял), как поменять область загрузки для запуска игры пока не знаю (какие картинки можно грузить с помощью загрузчика тоже?)?
Как убрать эту мигающую фигню рядом с счётчиком не знаю, а вместо неё сделать чтобы мелькали цветные чёрточки на бордюре во время загрузки?
- - - Добавлено - - -
ZX REVU 1995 №1
- - - Добавлено - - -
Сам журнал