PDA

Просмотр полной версии : Хочу написать кассетный загрузчик похожий на Alkatraz но не совсем!!! Прикольнее!!



alex8418
27.07.2019, 23:24
Хочу написать кассетный загрузчик похожий на Alkatraz но не совсем!!! Чтобы картинка грузилась как в игре Bobby Bearing защита Алькатраз, не обязательно чтобы была во время загрузки бегущая строка!!! Чтобы после загрузки картинки возникал счётчик похожий на Newson Slowload такой как в игре Cybernoid и полосы возникали вместе с счётчиком такого цвета как в игре Kentucky Racing!!! Помогите с написанием программы в GENS-е!!!???!!! Игры взяты с сайта http://www.worldofspectrum.org!!!

goodboy
27.07.2019, 23:59
объяснять долго. ищи статьи в журналах ZXreview.
там была и заствка рисующаяся квадратиком (сам кодируешь проявление экрана) и разноцветные полосы и много всего другого.

alex8418
28.07.2019, 00:33
объяснять долго. ищи статьи в журналах ZXreview.
там была и заствка рисующаяся квадратиком (сам кодируешь проявление экрана) и разноцветные полосы и много всего другого.

Да набирал я все загрузчики Zxreview в GENS-е! Но есть те которые со строчками написаны, в чём их набирать не знаю между прочим??? Вы заметьте почему спросил и указал игру BobbyBearing потому что там отрисовка идёт сначала полосками, потом рисуют четыре квадрата одновременно и всё происходит в цвете, так как атрибуты цвета загружаются в загрузчике - вот в чём фокус, в журнале такого нет!!! Да про изменение полос не про все понятно как делать??? А про квадрат в крайнем углу и вовсе неясно, что говорить про счётчик???

Объект для взлома игра Island of Dr. Destructo, The, так в TR-DOS перевести мне её не удалось, а переделать загрузчик хочется и не только её!!!

^m00h^
28.07.2019, 00:48
alex8418

Посмотри еще на wos Ranarama, Technician Ted, Technician Ted: The Megamix, Blood Brothers, Deflektor, Final Matrix, Costa Capers, Moon Strike, Heavy on the Magick, City Slicker, Maze The, Zynaps, Defender of the crown. А еще на старом ftp wos были загрузчики ramsoft с индикацией загрузки в виде полоски.

alex8418
28.07.2019, 00:58
alex8418

Посмотри еще на wos Ranarama, Technician Ted, Technician Ted: The Megamix, Blood Brothers, Deflektor, Final Matrix, Costa Capers, Moon Strike, Heavy on the Magick, City Slicker, Maze The, Zynaps, Defender of the crown. А еще на старом ftp wos были загрузчики ramsoft с индикацией загрузки в виде полоски.

Вы не совсем меня поняли я имел ввиду, как написать этот загрузчик в GENS-е??? Свой загрузчик, для любой игры, который любой желающий на форуме сможет писать для любой понравившейся ему игры!!!

^m00h^
28.07.2019, 01:00
А почему именно в Gens а не в чем-то другом ? Остается дизасмить и разбираться как оно сделано.

Shiny
28.07.2019, 05:30
А на старушек еще не тянет, не?

goodboy
28.07.2019, 10:24
любой желающий на форуме сможет писать для любой понравившейся ему игры!!!
а если файл игры накладывается на область где работает загрузчик ???

- - - Добавлено - - -


Вы заметьте почему спросил и указал игру BobbyBearing потому что там отрисовка идёт сначала полосками, потом рисуют четыре квадрата одновременно и всё происходит в цвете, так как атрибуты цвета загружаются в загрузчике - вот в чём фокус, в журнале такого нет!!!
для этого тоже есть спец.утилита.
пользователь сам выбирает как проявляется экран.
загрузчик на основе его выбора строит карту адресов и выводит загружаемые байты в нужном порядке.

alex8418
28.07.2019, 11:27
а если файл игры накладывается на область где работает загрузчик ???

- - - Добавлено - - -


для этого тоже есть спец.утилита.
пользователь сам выбирает как проявляется экран.
загрузчик на основе его выбора строит карту адресов и выводит загружаемые байты в нужном порядке.

Вот с этого момента по подробнее, что за утилита, как называется? В журнале ZXreview далеко не всё понятно, если только не являешься спектрумистом, который уже давно занимается ассеблированием, дизассемблированием! Я к такой категории не отношусь!

Хотел увидеть в данной теме конкретные примеры!

goodboy
28.07.2019, 11:59
что за утилита, как называется?
http://www.worldofspectrum.org/infoseekid.cgi?id=0024194

Bedazzle
29.07.2019, 14:53
alex8418

Посмотри еще на ... Heavy on the Magick,

В ней искаропки :) есть обе процедуры

turbo_loader: ; #B7EE

turbo_saver: ; #BACD
...
#BB85

достать можно сразу после загрузки игры. После запуска в это место пишется буфер экрана, так что место затирается.

alex8418
30.07.2019, 02:21
http://www.worldofspectrum.org/infoseekid.cgi?id=0024194

Спасибо 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 статья Нестандартные загрузчики!

goodboy
30.07.2019, 11:25
Спасибо goodboy, но Вы понимаете, что это не СОВСЕМ то что Я спрашивал?
действительно, какая-то дичь, а я поверил названию и посоветовал не проверив функционал.

- - - Добавлено - - -


Тема счётчика вообще заглохла!!
бери готовый код (он в играх от Hewson универсальный)

SoftLight
30.07.2019, 12:22
alex8418, тебе sjasm файл что-ли готовый прислать? Тут (http://zxpress.ru/book_articles.php?id=255) все есть про счетчик, и даже работает если набрать.

BYTEMAN
30.07.2019, 15:26
https://zx-pk.ru/threads/9187-originalnaya-zagruzka-kartinki.html?p=175264&viewfull=1#post175264
Последняя прога в файле под названием ARTBRUSH.

goodboy
30.07.2019, 15:58
в алькатразе (в отличии от бегающего квадратика) совсем другая логика работы.
в квадратике (при кодировании) адреса сохраняются на ленту, а в алькатразе они уже внутри загрузчика,
там похоже перед загрузкой строится карта на основании заданных участков экрана.
на WoS есть загрузочный комплект/исходники
http://www.worldofspectrum.org/pub/sinclair/screens/in-game/a/AlkatrazDevelopmentCartridges.gif
...
я в своих дисковых версиях делал эмуляцию проявления таких экранов.
вот нашёл/вспомнил для примера
https://vtrd.in/gamez/s/SIDEARMZ.ZIP

alex8418
20.10.2019, 19:36
alex8418, тебе sjasm файл что-ли готовый прислать? Тут (http://zxpress.ru/book_articles.php?id=255) все есть про счетчик, и даже работает если набрать.

Пытался я уже из 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

- - - Добавлено - - -


в алькатразе (в отличии от бегающего квадратика) совсем другая логика работы.
в квадратике (при кодировании) адреса сохраняются на ленту, а в алькатразе они уже внутри загрузчика,
там похоже перед загрузкой строится карта на основании заданных участков экрана.
на WoS есть загрузочный комплект/исходники
http://www.worldofspectrum.org/pub/sinclair/screens/in-game/a/AlkatrazDevelopmentCartridges.gif
...
я в своих дисковых версиях делал эмуляцию проявления таких экранов.
вот нашёл/вспомнил для примера
https://vtrd.in/gamez/s/SIDEARMZ.ZIP

Доброго времени суток 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, но всё же?)

morozov
20.10.2019, 19:58
У меня есть похожий счётчик набранный (из ZX-Ревю 1995 №1).

alex8418
25.10.2019, 06:06
У меня есть похожий счётчик набранный (из 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

- - - Добавлено - - -

Сам журнал

Bedazzle
25.10.2019, 07:19
...
В каком ассемблере это набиралось тоже вопрос?
...
Как после преобразования counter.asm в counter.bin появляется counter.tap?


Ассемблер - pasmo.
Тапок собирается в bas2tap.



Как убрать эту мигающую фигню рядом с счётчиком не знаю, а вместо неё сделать чтобы мелькали цветные чёрточки на бордюре во время загрузки?


Может, начать с чего попроще для начала? К примеру, прикрутить лоадер к другой игрушке, и разобраться, где что менять для блоков разной длины и расположения в памяти?

morozov
25.10.2019, 19:40
Как убрать эту мигающую фигню рядом с счётчиком не знаю

> LD (#5AFE),A
> LD (#5AFF),A

Эти две команды загружают значение из аккумулятора в область атрибутов на месте мигающей фигни. Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.


Счётчик универсальный между прочим, работает даже с загрузкой основной части игры (сам проверял), как поменять область загрузки для запуска игры пока не знаю (какие картинки можно грузить с помощью загрузчика тоже?)?

Это такой же универсальный загрузчик, как и стандартный LD_BYTES. Интерфейс вроде бы тот же.

Bedazzle
26.10.2019, 09:49
Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.

...или заменить адрес, и писать в пзу :)

alex8418
28.10.2019, 02:25
Ассемблер - pasmo.
Тапок собирается в bas2tap.

Есть получилось, сам создал counter.tap из counter.asm, только пользователь morozov забыл указать ещё одну программу:
Вот как я сделал:
1. Вводим pasmo --bin counter.asm counter.bin
получается: counter.bin
2. Вводим bin2tap -c counter.bin counter.tap counter 64531
получается: counter.tap - аналогичный из архива counter.zip (пользователя morozov)!

- - - Добавлено - - -


> LD (#5AFE),A
> LD (#5AFF),A

Эти две команды загружают значение из аккумулятора в область атрибутов на месте мигающей фигни. Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.

Пока не разбирался с мигающим квадратом, вопрос к morozov-у другой - откуда взялся полный текст программы в том числе с изменениями в конце её, ведь в журнале ZX Review 1995 №1 она написана не полностью? (возможно хитрость состоит в том, что нужно прочитать весь номер сначала до конца?)

- - - Добавлено - - -

Я конечно понимаю, что автоматизация сестра прогресса, но всё же, допустим:

Купил Я плату к примеру Пентагона 128 Kb на zx-pk.com у одного из пользователей, спаял её, наладил, запускаю, передо мной табличка:
1. Tape Loader
2. 128 BASIC
3. Calculator
4. 48 BASIC
5. TR-DOS

Лежит передо мной распечатанный журнал ZX REVU 1995 №1, есть аудио-вход (дисководом не обзавёлся), спаян шнурок от аудио к разъёму mp3 плеера (с помощью программы tap2mp3 или как её там не помню перевёл tap и tzx в mp3)!

Так вот вопрос - какую программу мне использовать, что набрать программу из файла counter.asm на реальном спектруме без эмуляции?

morozov
28.10.2019, 06:05
откуда взялся полный текст программы в том числе с изменениями в конце её, ведь в журнале ZX Review 1995 №1 она написана не полностью?

В этом же номере журнала, в конце статьи есть двоичный дамп. Я его набрал, а потом с помощью SkoolKit (https://github.com/skoolkid/skoolkit) сконвертировал в исходный код. Из изменений — помню, что где-то исправлял одну опечатку, но не более. Дальше вроде бы хотел избавиться от захардкоженных адресов, чтобы сделать процедуру более переносимой, но до конца не доделал. К сожалению, в истории изменений этого нет, но если есть вопросы по конкретным элементам, можно обсуждать в гит-репозитории (https://github.com/morozov/counter) (специально опубликовал).


Есть получилось, сам создал counter.tap из counter.asm, только пользователь morozov забыл указать ещё одну программу:
Вот как я сделал:
1. Вводим pasmo --bin counter.asm counter.bin
получается: counter.bin
2. Вводим bin2tap -c counter.bin counter.tap counter 64531
получается: counter.tap - аналогичный из архива counter.zip (пользователя morozov)!

Там то же самое в мейк-файле. Ничего вручную запускать не обязательно, он как раз и нужен, чтобы автоматизировать процесс сборки (правда этот подход рассчитан на Linux/OSX, а не на Windows).


Так вот вопрос - какую программу мне использовать, что набрать программу из файла counter.asm на реальном спектруме без эмуляции?

Тут не помогу. Я в своё время код писал на бумажке, переводил в машинные коды и вводил чем-то типа FOR/DATA/POKE. По идее, должен подойти любой ассемблер, т.к. никаких наворотов в этой программе нет. Правильно ли я понимаю, что задача состоит именно в том, чтобы написать загрузчик на настоящем компьютере? Почему нельзя написать его в эмуляторе, а потом загрузить в компьютер? Я так понимаю, что до написания, что до компьютера пока далеко.

- - - Добавлено - - -


...или заменить адрес, и писать в пзу

Конечно, это проще, но не спортивно. Топик-стартер-то хочет написать свой загрузчик (читай, разобраться по ходу, что к чему).

Bedazzle
28.10.2019, 07:55
Конечно, это проще, но не спортивно. Топик-стартер-то хочет написать свой загрузчик (читай, разобраться по ходу, что к чему).

Разобраться - дело похвальное. Но судя по вопросам, человеку совсем с азов начинать требуется.
И видимо, лучше пробовать что-то проще, чем кастомный загрузчик. Например, смена цвета бордюра, тушение экрана, и т.п.

alex8418
03.11.2019, 13:20
> LD (#5AFE),A
> LD (#5AFF),A

Эти две команды загружают значение из аккумулятора в область атрибутов на месте мигающей фигни. Насколько я понимаю, если этот код убрать, может понадобиться менять искусственные задержки в других местах, чтобы общее количество тактов осталось неизменным.



Это такой же универсальный загрузчик, как и стандартный LD_BYTES. Интерфейс вроде бы тот же.

Убрал строки LD (#5AFE),A и LD (#5AFF),A из программы counter.asm, результат на картинке в прикреплении (пытался убрать LD A,C CPL LD C,A LD (#5AFE),A LD (#5AFF),A, но программа виснет)! Вообщем появляется козябрик вместо первой цифры счётчика, мигающая фигня исчезла, но и счётчик считает неправильно начиная с 999! Сразу появилось ещё два вопроса: что определяет положение счётчика на картинке и почему бордюр красный, если в журнале написано, что он должен быть чёрным?

- - - Добавлено - - -


В этом же номере журнала, в конце статьи есть двоичный дамп. Я его набрал, а потом с помощью SkoolKit (https://github.com/skoolkid/skoolkit) сконвертировал в исходный код. Из изменений — помню, что где-то исправлял одну опечатку, но не более. Дальше вроде бы хотел избавиться от захардкоженных адресов, чтобы сделать процедуру более переносимой, но до конца не доделал. К сожалению, в истории изменений этого нет, но если есть вопросы по конкретным элементам, можно обсуждать в гит-репозитории (https://github.com/morozov/counter) (специально опубликовал).

Зашёл по ссылке SkoolKit, скачал компилятор Python 3.4.3 с сайта Python.org, установил на компьютер - не разобрался в нём, пытался скопировать текст программы skool2bin.py с помощью клавиш Ctrl + Ins или Ctrl + C и вставить с помощью Shift + Ins или Shift +V - не получается! Объясните пожалуйста morozov как работать с комплектом программ, по указанной Вами ссылке?

- - - Добавлено - - -


Тут не помогу. Я в своё время код писал на бумажке, переводил в машинные коды и вводил чем-то типа FOR/DATA/POKE. По идее, должен подойти любой ассемблер, т.к. никаких наворотов в этой программе нет. Правильно ли я понимаю, что задача состоит именно в том, чтобы написать загрузчик на настоящем компьютере? Почему нельзя написать его в эмуляторе, а потом загрузить в компьютер? Я так понимаю, что до написания, что до компьютера пока далеко.

Мне интересен процесс написания этой программы первопроходцами, а именно Newson-ом, у них же не было эмуляторов, я загрузчики защищенные при этом они писали! Как?

Я так понимаю через операторы READ и DATA в бэйсике программа будет иметь такой вид, как приведённая мною ниже (приблизительно):

10 DIM a(22)
20 FOR i=1 TO 22
30 READ a(i)
40 POKE (25999+i),a(i)
50 NEXT i
60 DATA 17,255,63,33
70 DATA 0,0,126,230
80 DATA 7,211,254,126
90 DATA 71,16,254,35
100 DATA 27,122,179,32
110 DATA 241,201
120 RANDOMIZE USR 26000

Только как через оператор DATA будет выглядеть строка из дампа блоков - FC13: C3 69 FE 48 48 48 48 00 :59 ???

- - - Добавлено - - -


Разобраться - дело похвальное. Но судя по вопросам, человеку совсем с азов начинать требуется.
И видимо, лучше пробовать что-то проще, чем кастомный загрузчик. Например, смена цвета бордюра, тушение экрана, и т.п.

Извиняйте за моё малознание, честно говоря идея написать этот загрузчик, запала ещё в далеких 90-х, когда я его только увидел, я долго тогда мучался с бэйсиком - думал, что получиться набрать эту программу, пока не пришло разочарование, но книги и журналы было тогда достать трудновато и стоили денег (да и лишних тогда не было), про интернет вообще тогда можно было и не мечтать - это было запредельно дорогое удовольствие, да и скорость по нашим сейчас меркам отвратительная!

Поэтому извиняйте, но вопрос Я задам ещё один (пускаю он и не в рамках данного топика), то что ещё не освоилось в мозгах, а именно:

Чем отличается программа набранная в GENS-4:
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
..........................

от программы данного счётчика???:

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
...........................

Вроде и та и другая - это программа набранная в ассемблере, но одну Я набираю в GENS-4, а другую надо загонять в спектрум через двоичный дамп в конце статьи журнала ZX REVU непонятным способом!

Так в чём в всё-таки отличия этих программ???

Bedazzle
03.11.2019, 16:18
Зашёл по ссылке SkoolKit, скачал компилятор Python 3.4.3 с сайта Python.org, установил на компьютер - не разобрался в нём

Python и SkoolKit для задачи написания своего загрузчика вам не нужны.
Набор SkoolKit используется для исследования бинарных файлов и преобразования их в ассемблерный текст.
Волшебства не происходит, и большую часть работы по определению что за что отвечает приходится делать глазками и ручками.


Мне интересен процесс написания этой программы первопроходцами, а именно Newson-ом, у них же не было эмуляторов, я загрузчики защищенные при этом они писали! Как?

Коммерческий софт часто писался на более мощных машинах, там же компилировался, и заливался на zx для тестирования.


Я так понимаю через операторы READ и DATA в бэйсике программа

А зачем вам бейсик? Пишите на ассемблере, можно прямо в эмуляторе пробовать собирать.
Если же хочется с самых истоков, то есть к примеру, книги "Как написать игру на бейсике" и "Как написать игру на ассемблере".
В них много чего интересного можно узнать. Можно также журналы ZX-ревю, огромный кладезь информации, но разрозненными кусочками.


Извиняйте за моё малознание, честно говоря идея написать этот загрузчик, запала ещё в далеких 90-х, когда я его только увидел, я долго тогда мучался с бэйсиком - думал, что получиться набрать эту программу, пока не пришло разочарование, но книги и журналы было тогда достать трудновато и стоили денег (да и лишних тогда не было), про интернет вообще тогда можно было и не мечтать - это было запредельно дорогое удовольствие, да и скорость по нашим сейчас меркам отвратительная!

Зачем извиняться человеку, который ищет знаний? Это же здорово. А про 90е... у большинства наверное не было возможности добыть полезную и полную информацию.


Чем отличается программа набранная в GENS-4:

Программа, набранная как ассемблерный текст (Gens, Tasm, Alasm, SjASM, или ещё какой, неважно) предназначена для перевода с человеком понятных текстовых команд в машинный код (набор числовых инструкций в виде файла байт).
Далее этот файл загружается в память компьютера и запускается к примеру, через RANDOMIZE USR...


а другую надо загонять в спектрум через двоичный дамп в конце статьи журнала ZX REVU непонятным способом!

Загонять через двоичный дамп или числами через массив DATA могли пользователи, не сильно искушённые в работе компа, не имеющие нужных навыков и/или необходимого софта (например, ассемблера).
Тогда к примеру, настучав бейсиковую программу (а бейсик-то был доступен сразу), и запустив её, человек получал в памяти компьютера последовательность чисел. Эта последовательность (кусок оперативной памяти) сохранялась в виде файла (на ленту или диск).


Так в чём в всё-таки отличия этих программ???

Т.е. в конечном результате разницы нет - будет получен какой-то файлик, содержащий программу (или графику, или другие данные).
Вопрос только в удобстве средств и затраченного времени на получение этого файлика.

Как это делалось "тогда", первопроходцами, и как это можно сделать сейчас - две большие разницы.
Ну, и как уже предлагал - если есть время и интерес, лучше маленькими шажками, и всё-таки не с загрузчика. А, например:



ld hl, #4000 ; 16384
ld de, #4001 ; 16385
ld bc, #1AFF ; 6911
xor a ; A = 0
ld (hl), a ; зануляем первый байт экрана
ldir ; очищаем экран
ret

morozov
04.11.2019, 18:27
Объясните пожалуйста morozov как работать с комплектом программ, по указанной Вами ссылке?

Смотрите в Makefile. Он определяет процесс сборки:



# Компилируем код счётчика в tap-файл
pasmo --tap counter.asm counter.tap

# Компилируем код бейсик-загрузчика в другой tap-файл
bas2tap -sboot -a10 boot.bas boot.tap

# Объединяем загрузчик, счётчик и картинку вместе
cat counter.tap EXOLON\$$.tap >> boot.tap


Если вы пользуетесь macOS или Linux, и при условии, то что все нужные программы у вас установлены, просто набрав make в терминале, вы получите готовый tap-файл. Из зависимостей — tap2bas (https://github.com/andybalaam/bas2tap) для компиляции бейсик-файла в tap-образ (не знаю, чем/как собрать под Windows, но должно быть возможно) и Pasmo (http://pasmo.speccy.org/) — кросс-компилятор ассемблера (должен работать на чём угодно).

GNU Make (https://www.gnu.org/software/make/) устроен таким образом, что при каждом запуске он проверяет, какие из исходных файлов изменились и выполняем необходимый минимум команд, чтобы пересобрать итоговый файл. Таким образом, каждый раз после того, как я что-то поменял в исходных текстах, я набираю make и получаю готовый tap-образ.

- - - Добавлено - - -



Ну, и как уже предлагал - если есть время и интерес, лучше маленькими шажками, и всё-таки не с загрузчика. А, например:



ld hl, #4000 ; 16384
ld de, #4001 ; 16385
ld bc, #1AFF ; 6911
xor a ; A = 0
ld (hl), a ; зануляем первый байт экрана
ldir ; очищаем экран
ret


Я в своё время разобрался с ассемблером и Pasmo с помощью нескольких видеоуроков (https://www.youtube.com/watch?v=gwBsbz4TRD0). Как раз подойдёт для примера выше.

Bedazzle
04.11.2019, 21:27
Я в своё время разобрался с ассемблером и Pasmo

Как инфа топикстартеру - если я правильно понял, в европах в основном используют Pasmo, в русскоговорящей же тусовке больше распространён SjASM.

Но по большому счёту, большинство исходных текстов программ с небольшими изменениями можно собирать в любом ассемблере.

zebest
06.11.2019, 00:02
Ну да, в УжаСме как то привычнее собирается.
Бейсик собирал BasinC-ом, вернее Builder-ом в нем, в отладчике что-то неправильно этот пример работает.
Интересно было бы (для меня:) во время задержки в 358 тактов бордюр прорисовывать, но тактов точно не хватит.
А в целом - прикольно конечно, но не актуально :)

alex8418
11.11.2019, 00:00
Ну да, в УжаСме как то привычнее собирается.
Бейсик собирал BasinC-ом, вернее Builder-ом в нем, в отладчике что-то неправильно этот пример работает.
Интересно было бы (для меня:) во время задержки в 358 тактов бордюр прорисовывать, но тактов точно не хватит.
А в целом - прикольно конечно, но не актуально :)

Спасибо zebest за счётчик! Жалко что в архиве нет файла counter.asm, сразу возникает первый вопрос - это счётчик из журнала ZX REVU 1995 №1 или Вы вскрыли загрузчик Newson-а? Т.к. нет ASM текста программы бессмысленно спрашивать вопросы заданные ранее и не отвеченные: где в программе задается положение счётчика на экране и почему бордюр красный, хотя должен быть чёрным???

В crack-нутой игре Sabouter-2 (релиз в прикреплении ниже), у автора загрузчика получилось сделать и счётчик и полосы (счётчик в виде отчёта времени, а полосы правда только поменяли цвет на сине-чёрный)!!! Но прикол ещё в том, что программа ассемблера загружается в блоке Program !!!

goodboy
11.11.2019, 00:05
программа ассемблера загружается в блоке Program !!!
обычное дело. код размещается после REM

alex8418
11.11.2019, 00:29
Смотрите в Makefile. Он определяет процесс сборки:



# Компилируем код счётчика в tap-файл
pasmo --tap counter.asm counter.tap

# Компилируем код бейсик-загрузчика в другой tap-файл
bas2tap -sboot -a10 boot.bas boot.tap

# Объединяем загрузчик, счётчик и картинку вместе
cat counter.tap EXOLON\$$.tap >> boot.tap


Если вы пользуетесь macOS или Linux, и при условии, то что все нужные программы у вас установлены, просто набрав make в терминале, вы получите готовый tap-файл. Из зависимостей — tap2bas (https://github.com/andybalaam/bas2tap) для компиляции бейсик-файла в tap-образ (не знаю, чем/как собрать под Windows, но должно быть возможно) и Pasmo (http://pasmo.speccy.org/) — кросс-компилятор ассемблера (должен работать на чём угодно).

GNU Make (https://www.gnu.org/software/make/) устроен таким образом, что при каждом запуске он проверяет, какие из исходных файлов изменились и выполняем необходимый минимум команд, чтобы пересобрать итоговый файл. Таким образом, каждый раз после того, как я что-то поменял в исходных текстах, я набираю make и получаю готовый tap-образ.

- - - Добавлено - - -



Я в своё время разобрался с ассемблером и Pasmo с помощью нескольких видеоуроков (https://www.youtube.com/watch?v=gwBsbz4TRD0). Как раз подойдёт для примера выше.

Спасибо morozov, c тем что Вы описали я давно разобрался (вообще для сборки файлов использую Win7), а так имел ввиду - как работать с комплектом программ Skoolkit, открыл ссылку и не понял, что делать дальше (фото в прикреплении)?

Я так понял что программу приведённую в Вашем ответе надо написать например в SjASM, сохранить в файле *.asm, а потом преобразовать в *.tap по уже известной схеме?

- - - Добавлено - - -


обычное дело. код размещается после REM

Ой спасибо goodboy, а пример приведёте из рабочей программы?

morozov
11.11.2019, 00:39
где в программе задается положение счётчика

Адрес экранной области задаётся в LD HL,#50FE (https://github.com/morozov/counter/blob/e9bba80cbd70d8bf525c464b5fd1ca8b15e6853d/counter.asm#L338) (см. комментарии (https://github.com/morozov/counter/blob/e9bba80cbd70d8bf525c464b5fd1ca8b15e6853d/REVU95_1.txt#L1819) в статье из журнала), адрес области атрибутов — в LD (#5AFA),A (https://github.com/morozov/counter/blob/e9bba80cbd70d8bf525c464b5fd1ca8b15e6853d/counter.asm#L284-L287).

alex8418
11.11.2019, 00:58
Python и SkoolKit для задачи написания своего загрузчика вам не нужны.
Набор SkoolKit используется для исследования бинарных файлов и преобразования их в ассемблерный текст.
Волшебства не происходит, и большую часть работы по определению что за что отвечает приходится делать глазками и ручками.

Спасибо всем: Bedazzle, morozov-у, zebest-у, goodboy-ю за Ваши ответы и за то что тема до сих пор не заглохла!

Потому сейчас вопрос задам всем, а именно, как мне набрать полный дамп программы из журнала ZX REVU 1995 №1

FC13: C3 69 FE 48 48 48 48 00 :59
FC1B: 00 00 00 00 00 00 00 00 :17
FC23: 00 00 00 00 00 00 00 00 :1F
FC2B: 00 00 00 00 00 00 00 FE :25
FC33: C6 BA BA BA BA C6 FE FE :9F
FC3B: EE CE EE EE EE 82 FE FE :3B
FC43: C6 BA F6 EE DE 82 FE FE :FF
FC4B: 82 F6 E6 FA BA C6 FE FE :1B
FC53: F6 E6 D6 B6 82 F6 FE FE :2B
FC5B: 82 BE 86 FA BA C6 FE FE :93
FC63: E6 DE 86 BA BA C6 FE FE DF
FC6B: 82 FA F6 F6 EE EE FE FE :A7
FC73: C6 BA C6 BA BA C6 FE FE :EB
FC7B: C6 BA BA C2 FA C6 FE FE :2F
FC83: C6 BA BA BA BA C6 FE 14 :05
FC8B: 08 15 F3 D9 0E 00 D9 3E :95
FC93: 0A D3 FE DB FE 1F E6 20 :68
FC9B: F6 00 4F BF C0 CD 20 FD :45
FCA3: 30 FA 21 15 04 10 FE 2B :3C
FCAB: 7C B5 20 F9 CD 1C FD 30 :07
FCB3: EB 06 9C CD 1C FD 30 E4 :36
FCBB: 3E C6 B8 30 EO 24 20 F1 :B8
FCC3: 06 C9 CD 20 FD 30 D5 78 :F5
FCCB: FE D4 30 F4 CD 20 FD D0 :77
FCD3: D9 3A 1A FC 4F 32 1F FC :94
FCDB: D9 26 00 06 B0 18 1F 08 :CB
FCE3: 20 07 30 0F DD 75 00 18 :AF
FCEB: 0F CB 11 AD C0 79 1F 4F :26
FCF3: 13 18 07 DD 7E 00 AD C0 :E9
FCFB: DD 23 1B 08 06 B2 2E 01 :01
FD03: CD 1C FD D0 3E CB B8 CB :42
FD0B: 15 06 B0 D2 03 FD 7C AD :CE
FD13: 67 7A B3 20 CA 7C FE 01 :09
FD1B: C9 CD 20 FD D0 C3 3B FD :96
FD23: 04 C8 3E 7F DB FE 1F D0 :71
FD2B: A9 E6 20 28 F3 79 2F 4F :E9
FD33: 32 FE 5A 32 FF 5A 37 C9 :45
FD3B: D9 79 B7 28 40 21 1F FC :E5
FD43: 35 7E 28 5B FE 05 30 42 :EB
FD4B: 21 1B FC 34 2C 2C 35 2A :6B
FD53: 1B FC 7E C6 32 5F 16 FC :4E
FD5B: 2A 1D FC 1A 77 1C 24 1A :86
FD63: 77 1C 24 1A 77 1C 24 1A :02
FD6B: 77 1C 24 1A 77 1C 24 1A :0A
FD73: 77 1C 24 1A 77 1C 24 1A :12
FD7B: 77 D9 C3 23 FD 06 17 10 D8
FD83: FE 3E 00 ED 44 A7 D9 C3 :30
FD8B: 23 FD 3E 47 32 FA 5A 32 :E5
FD93: FB 5A 32 FC 5A 32 FD 5A :F6
FD9B: 23 23 06 0D C3 82 FD 06 :39
FDA3: 4F ED 5B 16 FC 2A 18 FC :87
FDAB: 1D F2 B9 FD 58 15 06 05 :E5
FDB3: 10 FE 7E C3 EC FD 7A E6 :48
FDBB: 07 CA D1 FD 15 F2 D3 FD :2E
FDC3: 50 2D 3A 00 80 3A 00 80 :B1
FDCB: 3A 00 80 C3 EC FD 7E 7E :2A
FDD3: 7D E6 07 CA E4 FD 2D F2 :04
FDDB: E6 FD 68 25 ED 44 C3 EC :28
FDE3: FD 7E 7E 7C E6 07 28 01 :6B
FDEB: 25 ED 53 16 FC 22 18 FC :95
FDF3: 21 15 FC 22 1B FC 21 FE :7A
FDFB: 50 22 1D FC 3E 40 32 1F :52
FE03: FC ED 44 ED 44 ED 44 A7 :37
FE0B: D9 C3 23 FD 2A 2C FC 06 :1D
FE13: 05 CB 3C CB 1D 10 FA 11 :20
FE1B: 19 FC 3E FF 01 E8 03 3C :93
FE23: B7 ED 42 30 FA 09 87 87 :48
FE2B: 87 12 4D 44 29 29 09 29 D7
FE33: 1B 7B FE 15 20 E4 C9 AF :56
FE3B: 32 1A FC DD 21 21 FC 11 :AD
FE43: 11 00 AF 37 CD 8A FC 30 :BB
FE4B: 1A CD 0F FE 3E 01 32 1A :C8
FE53: FC DD 2A 2E FC ED 5B 2C :F2
FE5B: FC 3E FF 37 CD 8A FC 30 :4C
FE63: 02 FB C9 C3 06 08 D9 E5 :B6
FE6B: D9 CD 3A FE D9 E1 D9 C9 :A3

В строках FC63,FD7B и FE2B убрал знак ":", так появляется Dizzy - :D в контрольных суммах DF,D8 и D7 соответсвенно!

- - - Добавлено - - -


Адрес экранной области задаётся в LD HL,#50FE (https://github.com/morozov/counter/blob/e9bba80cbd70d8bf525c464b5fd1ca8b15e6853d/counter.asm#L338) (см. комментарии (https://github.com/morozov/counter/blob/e9bba80cbd70d8bf525c464b5fd1ca8b15e6853d/REVU95_1.txt#L1819) в статье из журнала), адрес области атрибутов — в LD (#5AFA),A (https://github.com/morozov/counter/blob/e9bba80cbd70d8bf525c464b5fd1ca8b15e6853d/counter.asm#L284-L287).

Спасибо morozov, посмотрю как появиться время!

Bedazzle
11.11.2019, 01:38
Потому сейчас вопрос задам всем, а именно, как мне набрать полный дамп программы из журнала ZX REVU 1995 №1


Я вырезал в текстовике лишнее, через DB скомпилировал бинарник, потом его дизассемблировал.
В полученный листинг глубоко не вникал, но сейчас он компилируется.
Положил сюда:
https://pastebin.com/0up0WLjS

morozov
11.11.2019, 02:39
В строках FC63,FD7B и FE2B убрал знак ":", так появляется Dizzy - в контрольных суммах DF,D8 и D7 соответсвенно!

Чтобы текст кода не обрабатывался движком форума, его нужно обрамлять в теги
...[​/code]. Кроме этого, он будет отображаться ровно, моноширинным шрифтом.

[code]FC63: E6 DE 86 BA BA C6 FE FE :DF

- - - Добавлено - - -


как работать с комплектом программ Skoolkit, открыл ссылку и не понял, что делать дальше

Вот инструкция по установке (https://skoolkit.ca/docs/skoolkit/usage.html) (в т.ч. и на Windows), вот подробная инструкция по разбору игры (https://skoolkit.ca/docs/skoolkit/diy.html).

alex8418
12.11.2019, 23:00
- - - Добавлено - - -



Ой спасибо goodboy, а пример приведёте из рабочей программы?

Всё-таки интересно, как можно использовать оператор REM в бэйсике??? Мне известно 2-а случая (больше нигде в литературе никаких применений не нашёл): 1) комментарии к строкам программы в бэйсике; 2) для загрузки файлов с дискеты - RANDOMIZE USR 15619: REM: LOAD "picture" CODE 16384, 6912 (только не помню надо ли задавать длину для загрузки, а так вроде всё верно?)

- - - Добавлено - - -


через DB скомпилировал бинарник, потом его дизассемблировал.

Bedazzle не подскажите, что за программа такая DB, ранее по тексту топика не встречалась???

- - - Добавлено - - -


Чтобы текст кода не обрабатывался движком форума, его нужно обрамлять в теги
...[​/code]. Кроме этого, он будет отображаться ровно, моноширинным шрифтом.

[code]FC63: E6 DE 86 BA BA C6 FE FE :DF

- - - Добавлено - - -



Вот инструкция по установке (https://skoolkit.ca/docs/skoolkit/usage.html) (в т.ч. и на Windows), вот подробная инструкция по разбору игры (https://skoolkit.ca/docs/skoolkit/diy.html).

Спасибо morozov за подробные ответы! Когда разберусь, отпишу Вам, если будет что непонятно!

Labrador
13.11.2019, 01:55
Всё-таки интересно, как можно использовать оператор REM в бэйсике???
Т.к. после REM могут идти любые символы и интерпретатор бейсика их ни как не обрабатывает, туда вбивают нужное количество байт (например пробелами) и потом записывают любой код, который будет сохраняться/загружаться вместе с бейсик программой. Почитай ZX-Ревю. Там много интересного, к сожалению не помню в каком конкретно номере описывается такой трюк с бейсиком, много лет назад читал.

morozov
13.11.2019, 06:20
а пример приведёте из рабочей программы?

Да вот хотя бы эту заставку (https://github.com/morozov/bill-gilbert/blob/9d9f280f4f0d83da3c16d4f6405826cb61269bab/src/boot.bas#L1) посмотрите. Весь машинный код запихивается (https://github.com/morozov/bill-gilbert/blob/9d9f280f4f0d83da3c16d4f6405826cb61269bab/Makefile#L5) после REM в нулевую строку и вызывается через RANDOMIZE USR.

В моём случае пробелы не вбиваются изначально вручную, а сразу записываются кодом компилятором бейсика.

Bedazzle
13.11.2019, 07:55
Bedazzle не подскажите, что за программа такая DB, ранее по тексту топика не встречалась???

Сокращение от Define Byte.
Подробнее можно прочесть тут (https://github.com/sjasmplus/sjasmplus/wiki#byte-bytes).

alex8418
03.11.2021, 23:21
Ну да, в УжаСме как то привычнее собирается.
Бейсик собирал BasinC-ом, вернее Builder-ом в нем, в отладчике что-то неправильно этот пример работает.
Интересно было бы (для меня:) во время задержки в 358 тактов бордюр прорисовывать, но тактов точно не хватит.
А в целом - прикольно конечно, но не актуально :)

Шалом!!!
Ахтунг!!!
Салам Молекум!!!
Добрый вечер!!!
И ещё не знаю как там!!!

Вообщем вопреки задержке в 358 тактов и вопреки утверждениям zebest-а у меня получилось взять от 48К спеки всё!!! Представляю Вам мой загрузчик со счётчиком и бордюром с цветными полосами!!! Постараюсь в ближайшее время доделать загрузчик картинки с загрузкой в обратную сторону, пока не получается - машинный код капризная штука!!!

morozov
04.11.2021, 00:40
Как мне кажется, когда грузится несжатая картинка, а особенно нестандартным образом, ни счётчика ни полосок не надо, т.к. этот процесс сам по себе занимает. Ну а когда есть счётчик, полоски тоже не особо нужны, т.к. счётчик уже и есть индикатор загрузки. Хотя, конечно, в качестве спортивного упражнения — почему нет? Ну и о вкусах не спорят.

На мой вкус, вот если бы из этого линейного загрузчика (https://github.com/morozov/linear/blob/master/src/loader.asm) убрать полоски, было бы красиво.

zebest
04.11.2021, 10:12
вопреки утверждениям zebest-а
зебест насколько емуу помниЦЦа несколько другое утверждал, типа такого (псевдо-квази загрузчик экрана :)
76333
со статикой на бордере (тайминги в поделке конечно Пентагон-а) . Уж оченно трудно прибивать бордер гвоздями при нечетком кол-ве тактов)
С произвольными полосочками-черточками довольно много тап-загрузчиков. И красивых много.
Но для меня лично во всех этих загрузчиках всего один минус. Под названием - DivMMC :((
А так то да, круто!!!

goodboy
04.11.2021, 11:33
С произвольными полосочками-черточками довольно много тап-загрузчиков. И красивых много.
Но для меня лично во всех этих загрузчиках всего один минус. Под названием - DivMMC (
А так то да, круто!!!
а что мешает прикрутить вывод на бордюр в депакер ?
(разжим файла после загрузки)

alex8418
04.11.2021, 16:14
Как мне кажется, когда грузится несжатая картинка, а особенно нестандартным образом, ни счётчика ни полосок не надо, т.к. этот процесс сам по себе занимает. Ну а когда есть счётчик, полоски тоже не особо нужны, т.к. счётчик уже и есть индикатор загрузки. Хотя, конечно, в качестве спортивного упражнения — почему нет? Ну и о вкусах не спорят.

На мой вкус, вот если бы из этого линейного загрузчика (https://github.com/morozov/linear/blob/master/src/loader.asm) убрать полоски, было бы красиво.

Вот мой вариант загрузки картинки, который удалось пока получить! Хочу сделать вариант загрузки данной картинки наоборот, чтобы сначала атрибуты грузились снизу вверх, а потом по атрибутам картинка плавно полосками одна за другой снизу вверх(а не через пять как в стандартной загрузке), а бордюр при этом оставался чёрного цвета, чтобы было интересно наблюдать за процессом! В представленном мною счётчике происходит стандартная загрузка картинки из процедуры ld-bytes в область 16384 без изменений!

- - - Добавлено - - -


зебест насколько емуу помниЦЦа несколько другое утверждал, типа такого (псевдо-квази загрузчик экрана :)
76333
со статикой на бордере (тайминги в поделке конечно Пентагон-а) . Уж оченно трудно прибивать бордер гвоздями при нечетком кол-ве тактов)
С произвольными полосочками-черточками довольно много тап-загрузчиков. И красивых много.
Но для меня лично во всех этих загрузчиках всего один минус. Под названием - DivMMC :((
А так то да, круто!!!

zebest, Я Вам про Анджелина Джоли, а Вы мне про Монику Левински! Ёпрст! Какое отношение имеет прорисовка заставки в загруженной программе к изменённому - модифицированному загрузчику стандартной процедуры ld-bytes Зикс Спектрума??? (согласно файла, который Вы прикрепили!)

alex8418
06.11.2021, 13:04
Доброго времени суток уважаемые гости форума, а так же владельцы своих топиков! Хочу создать новый топик под названием Программирование в машинном коде и ассемблере на ZX Spectrum (для чайников)! Топик будет ориентирован на людей, которые вообще не знают как это делается на реальном спектруме и основан на собственном опыте изучения данного вопроса (поэтому профессионалы - не судите строго!)! В топике будут часто встречаться ссылки на журнал ZX Ревю, я думаю авторы журнала не обидятся на меня, так как написанным статьям исполнилось уже 30 лет и на данный момент Я считаю они утратили свою актуальность по причине неугомонно растущего технологического процесса! Хочу спросить у пользователей форума, есть ли востребованность в указанном выше топике (если да то будем писать, что знаем!)?

Топик - Хочу написать кассетный загрузчик похожий на Alkatraz но не совсем!!! Прикольнее!! скорее всего закончиться, тем что я напишу модифицированный загрузчик картинки снизу вверх!

goodboy
06.11.2021, 13:54
загрузчик картинки снизу вверх!
для начала сгодится и бейсик.
тебе ведь придётся переставить линии в загрузочной картинке (то есть сначала выгрузить её в изменённом формате)
знаний for next step-X , peek poke + строение экрана должно хватить.
напиши эмулятор картинки (она из памяти просто выводится на экран как ты задумал)

0xDEAD
06.11.2021, 16:41
они утратили свою актуальность по причине неугомонно растущего технологического процесса!
А можно уточнить, какой именно у ZX-Spectrum произошёл "технологический процесс" за 40 лет? Теперь, к примеру, DOWN_HL уже неактуальна?

Bedazzle
06.11.2021, 21:42
А можно уточнить, какой именно у ZX-Spectrum произошёл "технологический процесс" за 40 лет? Теперь, к примеру, DOWN_HL уже неактуальна?

Как минимум, эту функцию неплохо оптимизировали (https://hype.retroscene.org/blog/dev/1047.html) по сравнению с тем, что было 40 лет назад.

0xDEAD
06.11.2021, 21:46
Как минимум, эту функцию неплохо оптимизировали (https://hype.retroscene.org/blog/dev/1047.html) по сравнению с тем, что было 40 лет назад.

Ну, так она теперь не DOWN_HL?

Bedazzle
06.11.2021, 22:26
Ну, так она теперь не DOWN_HL?

Речь только лишь о

Прогре́сс, проградация (лат. pro — движение вперёд, успех; gradĭ — шагать, ступать; gradatio — постепенное повышение) — направление развития от низшего к высшему, положительная динамика, поступательное движение вперед.

0xDEAD
06.11.2021, 22:33
Код можно оптимизировать сколько угодно, на то он и код.
А для программиста на Спектруме что изменилось за сорок лет? Частота процессора? Объем памяти? Способ адресации видео?

p.s.
Нексты, пентевы и прочие тс-конфиги - это не спектрумы.

goodboy
06.11.2021, 22:37
какой именно у ZX-Spectrum произошёл "технологический процесс" за 40 лет?
ну как минимум средства разработки/отладки стали гораздо быстрее/удобнее.
полезность zx48+магнитофон я не отрицаю, но некоторые задачи теперь решаются парой кликов, а не часами

0xDEAD
06.11.2021, 22:57
средства разработки/отладки стали гораздо быстрее/удобнее
Ну а заслуга Спектрума тут в чём?

goodboy
06.11.2021, 23:12
автор фразы скорее всего имел ввиду что изменились носители информации и контроллеры для доступа к ней,
в связи с этим работа с реальным магнитофоном утратила актуальность

alex8418
07.11.2021, 10:38
автор фразы скорее всего имел ввиду что изменились носители информации и контроллеры для доступа к ней,
в связи с этим работа с реальным магнитофоном утратила актуальность

goodboy и все остальные пользователи спасибо за ответы! Но по поводу неугомонно растущего технологического прогресса - Вы не угадали! Я имел ввиду, что на данных момент существуют мощные 64 битные компьютеры на базе IBM PC (с каждым годом появляются всё более и более мощные процессоры, увеличивается объём оперативной памяти и размеры носителей информации - этот процесс идёт постоянно), которые за счёт своей мощности позволяют решать более серьёзные задачи, чем нежели создание модифицированного загрузчика ld-bytes и т.д. и т.п.! 99,5% публики ZX SPECTRUM в масштабе всей страны приходилась на 1990-е годы, когда просто других компьютеров в Нашей стране не было в таком количестве, а сейчас случился спад из-за прогресса, что собственно говоря и естественно! На форуме остались только фанаты ZX SPECTRUM и интересующиеся, на которых как некоторые говорили тогда игрушка, произвела впечатление в те самые 1990-е и поэтому часть людей писали и программы и демонстралки и что только не писали!

Но мой вопрос заключался в другом, нужен ли топик под названием: Программирование в машинном коде и на ассемблере (для чайников)?

Black Cat / Era CG
07.11.2021, 16:29
Но мой вопрос заключался в другом, нужен ли топик под названием: Программирование в машинном коде и на ассемблере (для чайников)?
Нужен. Если речь пойдет о современной кросс-разработке :)

reddie
07.11.2021, 16:59
Нексты, пентевы и прочие тс-конфиги - это не спектрумы.
Ну хоть кто-то в открытую это признал.


нужен ли топик под названием: Программирование в машинном коде и на ассемблере
Как уже ответил Блэк Кэт - разве что для ленивых писишников, коим тяжело что-то делать на реальном Спектруме.
Настоящие спектрумисты молча кодят в Аласме/Засме/чем там еще и не жалуются на неудобства =))

Black Cat / Era CG
07.11.2021, 17:20
Настоящие спектрумисты молча кодят в Аласме/Засме/чем там еще и не жалуются на неудобства =))Где эти настоящие спектрумисты и их софты? И еще Медноногов он как, настоящий, или поддельный?

reddie
07.11.2021, 17:43
Где эти настоящие спектрумисты и их софты?
Да нигде, вымерли уже, как класс. Остались одни "кроссплатформерщики".


Медноногов он как, настоящий, или поддельный?
Во времена создания НЛО и ЧВ такими возможностями, как сейчас, Спектрумы (железные) не обладали.
Да и явную конверсию графики с PC я бы не назвал подделкой, оно лишь пошло на пользу.

goodboy
07.11.2021, 18:29
Медноногов он как, настоящий, или поддельный?
первое НЛО написано на Gense (куча небольших программ), а дальше он уже сменил ориентацию

0xDEAD
07.11.2021, 21:38
Ну хоть кто-то в открытую это признал.
А чего уж тут не признать... это совсем другие машины - просто они умеют, с разной степенью верности, эмулировать Спектрум, в том числе.

alex8418
08.11.2021, 01:41
Нужен. Если речь пойдет о современной кросс-разработке :)

А вот хрен там, статья будет для человека у которого завалялся на полочке Пентагон старый или Ленинград даже! Подключив Пентагон (Ленинград) к телевизору, он захотел ощутить себя звездой программирования в ассемблере и как я на COVID-ной изоляции попробовав, понял чтобы модернизировать загрузчик на ZX Spectrum нужно потратить как минимум месяц времени, чтобы догадаться что нужно менять в не реллоцируемом загрузчике! И не раз пытавшись разлить горячий кофе на свой старый ноутбук! В помощь только одна хорошая программа на IBM PC, которая ускоряет процесс набора программы BasinC ver. 1.69 с сайта https://vtrd.in/!

Black Cat / Era CG
08.11.2021, 01:44
Тогда мне не интересно)))

alex8418
08.11.2021, 02:11
Тогда мне не интересно)))

Вот Вы с Бердска ребята капризные, Вы бы мне лучше кинематическую схему магнитофона Нота 203 Бердского электромеханического завода прислали, а то не крутит катушки и всё, и ещё зараза не записывал на ленту с самого его производства (что делать, магнитная лента Свема?)!

- - - Добавлено - - -

И почему я постоянно слушал на этом магнитофоне Modern Talking - альбом Let’s Talk About Love???

Black Cat / Era CG
08.11.2021, 02:23
Вот Вы с Бердска ребята капризныеНу мое мнение, что либо шашечки, либо ехать. Те, кому надо шашечки, уже сидят и наслаждаются процессом в аласмах, тасмах и ксасах. Не уверен, что им нужна подобная статья, потому что их цель это процесс, причем именно такой, к которому у них теплые и ностальгические чувства. А тем, кому ехать, тем важнее конечная цель, то есть написать софтину под спек, используя самые оптимальные современные средства разработки. Вот им такая статья бы зашла, знаю точно. В генсе я сидел, щас на сжасме какую-нибудь хелловролдину написать смогу, а вот написать что-то стоящее не вытяну. Так что скорее я ваще не про себя.

Вы бы мне лучше кинематическую схему магнитофона Нота 203 Бердского электромеханического завода прислали, а то не крутит катушки и всё, и ещё зараза не записывал на ленту с самого его производства (что делать, магнитная лента Свема?)!Ну если оно еще и существует где-то (что не факт), то я уж точно не знаю где :(

andreysur
08.11.2021, 21:46
Посмотрите информацию по этой ссылке - http://www.rw6ase.narod.ru/00/mg_kat_/nota202_203.html

goodboy
08.11.2021, 22:05
блин, у нас в семье был такой магнитофон и первые игры для спека как раз записывались/запускались с него.
(кассет было мало, а катушек много)
вспоминаю что я ухитрился потерять прижимную пластину под головкой.
на чтение это особо не влияло, а для записи было критично.
папа потом сделал некое подобие из бронзовой пластинки + фетр

sova741
08.11.2021, 22:17
И еще Медноногов он как, настоящий, или поддельный?

Вроде как настоящий

Black Cat / Era CG
08.11.2021, 22:21
Вроде как настоящийНу просто он при написании своих игр последних как-то не особо стремался использовать кросс-ассемблер самописный под дос. Понимал вполне, что это намного удобнее и избавляет от кучи лишнего геморроя. Щас у всех есть ПК с виндой или пингвином, поэтому писать в православных олдовых асмах -- это просто ностальгическое удовольствие, либо сильная привычка. Не более.

andreysur
08.11.2021, 22:21
alex8418, Кинематика магнитофона очень простая - перемотка сделана на шкивах. Надо почистить и смазать оси шкивов, протереть резиновые поверхности шкивов, заменить пассики, проверить - не блокируются ли тормоза. По поводу записи - надо сначала заменить универсальную головку, износ поверхности прямо влияет на качество записи.

goodboy
08.11.2021, 22:43
вспомнил и нашёл загрузчик с очень крутым способом вывода картинки http://spectrum4ever.org/download.php?t=fulltape&id=3683
(браузер может ругаться на http)

Bedazzle
09.11.2021, 00:38
вспомнил и нашёл загрузчик с очень крутым способом вывода картинки

Офигенно!

- - - Добавлено - - -


В помощь только одна хорошая программа на IBM PC, которая ускоряет процесс набора программы BasinC ver. 1.69

Обновляемся на https://arda.kisafilm.org/blog/?p=1358&lang=en

или даже так, 1.78 (https://arda.kisafilm.org/fish/get/serve.php?b=BasinC178.zip&d=13&s=scuk)

drbars
28.11.2021, 08:23
Тоже была мысль написать загрузчик прикольный... Вопрос в чем, я не разбирался как они работают, вроде как нужно уложить свой код в определённое "окно" по тактам, вместо стандартной задержки. Этот код он точно по тактам считается или есть какой диапазон допуска?

Sandro
28.11.2021, 08:37
Тоже была мысль написать загрузчик прикольный... Вопрос в чем, я не разбирался как они работают, вроде как нужно уложить свой код в определённое "окно" по тактам, вместо стандартной задержки. Этот код он точно по тактам считается или есть какой диапазон допуска?

а) Если писать загрузчик правильно, то никакой "стандартной задержки" быть не должно. Задержка, а точнее -- длительность импульса должна измеряться по настроечной последовательности.
б) В процедуру настройки длительности вставляешь код, который исполняется столько же, сколько рисование, но на самом деле ничего не делает. Можно рисовать куда-нибудь в память, например. Тогда всё откалибруется само.

jerri
28.11.2021, 21:53
Тоже была мысль написать загрузчик прикольный... Вопрос в чем, я не разбирался как они работают, вроде как нужно уложить свой код в определённое "окно" по тактам, вместо стандартной задержки. Этот код он точно по тактам считается или есть какой диапазон допуска?

там есть холостой цикл который выполняется каждый бит. вот его то и заменяют

morozov
28.12.2025, 21:32
Ещё недавно наткнулся на загрузчик Frank-74/47loader (https://github.com/Frank-74/47loader). Там автор экспериментирует со многими эффектами типа линейной загрузки экрана, загрузки в обратную сторону, даже взад-вперёд, но они все уже где-то встречались.

Что мне бросилось в глаза, так это что в одном из вариантов при загрузке используются три цвета, причём каждый из цветов «чернил» на бордюре остаётся более-менее на своём месте (см. картинку). Не припомню, чтобы я такое видел «в дикой природе».

Ну и вообще код хорошо структурирован и написан аккуратно — приятно читать и изучать.

breeze
28.12.2025, 22:41
автор экспериментирует со многими эффектами типа линейной загрузки экрана, загрузки в обратную сторону, даже взад-вперёд

а видосики примеров где-то есть?)

morozov
29.12.2025, 01:41
Видосиков нет, но в репозитории есть TZX.