nedoPC.org

Community for electronics hobbyists, established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 09 Dec 2024 18:34



Reply to topic  [ 120 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
[SDK] Старая тема про nedoPC SDK (август 2004) 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Чегойто я смотрю в nedo полноценные блоки типа
Code:
\if ${1}
$mach=${1}
\else
$mach=ORION
\endif
делать будет тяжко - пожалуй введу ка я метки и буду реализовывать старый добрый goto...

... и условный прыжок на метку \if EXPR : label

Code:
NEDO v2.0.1 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>
Simple command interpreter, usage: NEDO FILE.N [args]

Format of N-file:
#!./nedo
# comments start with the hash sign character
$name=value # set variable
# predefined variables are ${EXEPATH}, ${PROJECT} and arguments ${1}..${9}
command ... ${name} ... ${1} # local command with variables and args
!command ... ${name} # system command with possible variables
\need file # check file existance and exit if it doesn't exist
\remove file # remove file if it exists
\append file string # append text file with a string as a new line
\rename oldfile newfile # rename file
\copy oldfile newfile # copy file
\exit # preliminary quit scripted sequence
\say ... ${name} ... # say something with possible variables
\glue targetfile binfile hexoffset # add binary files
\ltrim binfile # remove leading zeros from binary file
\rtrim binfile # remove trailing zeros from binary file
\label name # set label
\goto name # jump to label name
\if EXPR : name # evaluate expression and jump to label name if true
# EXPR could be ${name}, ${name}==value, ${name}!=value, ${name}>num etc.

Alternative way to use: NEDO path_to_project [args]
In this case it will try to open file DEFAULT.N located in specified directory.

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


08 Jul 2024 21:23
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Вот так теперь выглядит скрипт сборки бинаря для РК:
Code:
#!./nedo
# MAPGEN for radio (i8080) -> MAPGEN.BIN
$name=MAPGEN
$spr=SPR_OR
$aspr=2000
$abin=0000
$avar=4000
$syst=radio
$proc=i8080
\remove ${spr}.BIN
\remove ${spr}.R
spr_comp -S${syst} -O#${aspr} ${spr}.SPR
\remove ${name}.RO
robbyc -p -l ${name}.R
\need ${name}.RO
\remove ${name}.A
robbycc ${name}.RO -P${proc} -S${syst} -O#${abin} -B#${avar}
\need ${name}.A
\remove ${name}.LST
\remove ${name}.BIN
rasm ${name}.A -t${EXEPATH}LIB/I8080/__RULES
\need ${name}.BIN
\remove ${spr}.BIN
\remove ${name}.LST
\remove ${name}.R!
\remove ${name}.RO
\remove ${name}.RLS
\remove ${name}.A
Работаю над добавлением условий, чтобы один и тот же скрипт мог собирать бинари под Орион, Специалист, Спектрум и Спринтер...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Jul 2024 02:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Shaos wrote:
Ещё можно модель расположения проектов взять из SprinterSDK, где на одном уровне с INC и LIB имелся каталог project и там уже подкаталоги с проектами (только я наверное назову его PRJ для единообразия), а то сейчас всё в одной куче лежит - и исходники утилит, и собранные утилиты, и исходники примеров, и скрипты сборки примеров под разные платформы, и (если собирать примеры) все промежуточные файлы (как в RW1P2 вплоть до версии 1.4). Ещё ради SprinterSDK я тогда делал возможность поиска файлов не только в текущем директории, но и в директории откуда вызываются исполняемые файлы - это тоже надо будет поддержать на уровне nedo[make]...

Поддержал каталог PRJ в котором лежат подкаталоги с проектами - теперь чтобы собрать скажем проект MAPGEN надо находясь в общем директории SDK выполнить в случае доса:

NEDO PRJ\MAPGEN\MAPGEN.N

а в случае линукса:

$(pwd)/nedo PRJ/MAPGEN/MAPGEN.N

Тут pwd нужен для подстановки полного текущего пути т.к. линукс не подставляет путь к исполняемому файлу в argv[0] если он запущен без префикса (как это делает DOS или Windows), а путь этот мне нужен т.к. далее он используется в nedo как переменная ${EXEPATH} и все общие файлы берутся относительно него (включая исполняемые файлы из состава SDK типа spr_comp или robbyc, к которым этот путь добавляется неявно в процессе исполнения скрипта), а специфические для проекта файлы берутся из текущего директория проекта, куда nedo перескакивает первым делом при запуске. Под спойлером можно посмотреть пример вывода в процессе сборки:

 terminal
Code:
shaos@amd64s:~/src/SDK-work$ $(pwd)/nedo PRJ/MAPGEN/MAPGEN.N
EXEPATH=/home/shaos/src/SDK-work/
CURPATH=PRJ/MAPGEN
total 12
-rw-r--r-- 1 shaos shaos  605 Jul  9 03:41 MAPGEN.N
-rw-r--r-- 1 shaos shaos 2096 Jul  8 21:39 MAPGEN.R
-rw-r--r-- 1 shaos shaos  512 Jul  8 21:39 SPR_OR.SPR
>>>\remove SPR_OR.BIN
>>>\remove SPR_OR.R
>>>spr_comp -Sradio -O#2000 SPR_OR.SPR
-->!/home/shaos/src/SDK-work/spr_comp -Sradio -O#2000 SPR_OR.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 8192 [2000]
TYPE 8x8-2/16
SP_E   SP_H   SP_S   SP_B   SP_R   SP_F   SP_R0   SP_0   SP_1   OK

>>>\remove MAPGEN.RO
>>>robbyc -p -l MAPGEN.R
-->!/home/shaos/src/SDK-work/robbyc -p -l MAPGEN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAPGEN.R!>
Pass 1
Pass 2
Ok!
<MAPGEN.RO>
<MAPGEN.RLS>
Good Luck !

>>>\need MAPGEN.RO
>>>\remove MAPGEN.A
>>>robbycc MAPGEN.RO -Pi8080 -Sradio -O#0000 -B#4000
-->!/home/shaos/src/SDK-work/robbycc MAPGEN.RO -Pi8080 -Sradio -O#0000 -B#4000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #0000
BASE #4000 [16384]
VARS 240
REGS #4220 [16928]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

>>>\need MAPGEN.A
>>>\remove MAPGEN.LST
>>>\remove MAPGEN.BIN
>>>rasm MAPGEN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES
-->!/home/shaos/src/SDK-work/rasm MAPGEN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES


RoboAssembler v2.6.2 (c) 1997-2024 Alexander A. Shabarshin <me@shaos.net>

### Initialization (244 codes from '/home/shaos/src/SDK-work/LIB/I8080/__RULES')

### Includes

### Labels

### Deleting comments and empty lines

### First pass

### Second pass

### Compilation complete

>>>\need MAPGEN.BIN
>>>\remove SPR_OR.BIN
>>>\remove MAPGEN.LST
>>>\remove MAPGEN.R!
>>>\remove MAPGEN.RO
>>>\remove MAPGEN.RLS
>>>\remove MAPGEN.A

Ok!

По идее тут всё самодостаточное - никаких внешних тулзов не используется и сюда легко можно нахлобучить GitLab CI/CD-автоматизацию, когда получившиеся бинарники скармливаются текстовому эмулятору pseudo-86rk (который лежит в той же самой репе https://gitlab.com/nedopc/sdk) для сверки текстового выхлопа с эталоном - так можно проверять при каждом апдейте репы что никакая математика не сломана и т.д.

P.S. Если я в будущем добавлю в систему сборки поддержку i8086, то мне ведь придётся ещё написать текстовый эмулятор pseudos :lol:

P.P.S. Самодостаточность есть только для i8080 и возможно будет для i8086, а вот для Z80 нужен ассемблер zmac, который не входит в эту репу - по идее он PUBLIC DOMAIN - наверное можно и включить?...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Jul 2024 03:00
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Раз уж я задумался над новой концепцией "робото-ориентированного программирования" (Robot Oriented Programming), то можно попробовать в обозримом будущем поддержать её в nedoPC SDK - по идее уже сейчас отдельные роботы могут компилироваться независимо друг от друга и располагаться в памяти одновременно по разным адресам - их только надо научить общаться посредством передачи сообщений с переключением контекста в момент ожидания (кстати на платформах с переключаемыми банками памяти эти самые откомпилированные роботы могут жить в разных страницах, позволяя занять данными и кодом всю доступную память!)...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Jul 2024 12:34
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Я по ходу в 2006 году что-то добавлял и исправлял в LIB/Z80/__RULES, но не делал аналогичные изменения в LIB/I8080/__RULES, в котором в 2018 году, когда начал заливать на GitLab, что-то пытался упрощать (чего делать похоже не надо было) - так что сейчас надо всё сводить к общему знаменателю... и автоматические тесты должны поспособствовать тому, что впредь ничего не сломается... кстати я могу тулзы SDK собирать через nedo вместо make - может таки назвать его nedomake? :lol:

P.S. По идее т.к. в проектах теперь по умолчанию предполагается один единственный скрипт сборки на все случаи жизни, то может быть вместо NEDO PRJ\MAPGEN\MAPGEN.N надо разрешить запуск сборки задавая имя подкаталога проекта NEDO PRJ\MAPGEN (с возможным добавлением параметра ORION или SPECCY или там ALL, CLEAR и даже TEST) и далее собиралка поймёт, что это не имя файла, а подкаталог и сама подставит какое-то заранее известное имя - типа BUILD.N или MAKE.N или NEDOMAKE.N или DEFAULT.N?...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


09 Jul 2024 21:53
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
По аналогии со Sprinter SDK у меня будет шаблон для создания скрипта сборки для новых проектов, чтобы пользователь сам не ковырялся с N-файлами. По видимому этот шаблон сразу будет содержать в себе сборку под все поддерживаемые платформы, а если пользователь будет писать под что-то конкретное (с asm вставками, использованием специфического апи и т.д.), то ему надо будет подрезать универсальный скрипт сборки, убрав лишнее. Ну либо надо будет добавить функционал генерации скрипта сборки по шаблону, чтобы была воможность оставлять лишь сборку под конкретный процессор (пока это i8080 или z80) либо конкретную систему (например RADIO или SPRINTER) - в таком случае в темплейте блоки специфические для конкретных процессоров/систем надо будет помечать специальными комментариями, которые утилита NEW_PRJ будет использовать, чтобы оставлять только то, что пользователю нужно, например: NEW_PRJ MYPROJ MyName (и далее опциональное слово для фильтрации целевых платформ - имя автора тут нужно для генерации исходного фйла робота-пустышки с ключевыми словами ROBOT и AUTHOR).

P.S. Так как проекты теперь лежат в отдельных подкаталогах, то самым простым вариантом было бы назвать главный исходный файл проекта MAIN.R, а файл описывающий тайлы - TILES.SPR, скрипт сборки при этом будет называться DEFAULT.N, а конкретное имя бинарнику будет назначаться внутри N-файла (его вообще можно взять из названия подкаталога где проект лежит - тогда файл сборки будет одинаковым для всех простых проектов) - или это слишком примитивно? Сейчас имя главного исходного файла проекта как правило совпадает с именем получающегося бинарника.

P.P.S. Кстати пользователи не только ковырялись со скриптами сборки в Sprinter SDK, но и писали свои собственные скрипты для shjob viewtopic.php?p=70443#p70443 :)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


10 Jul 2024 06:02
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Для редактирования тайлов-спрайтов я все эти годы использовал свой редактор спековской графики SCRED:

Image

Он сейчас только только для DOS существует с исходникми под лицензией MIT и лежит ZIP-архивом на nedoPC.org - можно сделать Linux версию (через unigraf.cpp), перерелизить его под GPLv3 и залить в репу nedoPC SDK

P.S. Ну или переписать его на Robby и зарелизить как PUBLIC DOMAIN пример для SDK :lol:

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


11 Jul 2024 08:25
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Shaos wrote:
Чегойто я смотрю в nedo полноценные блоки типа
Code:
\if ${1}
$mach=${1}
\else
$mach=ORION
\endif
делать будет тяжко - пожалуй введу ка я метки и буду реализовывать старый добрый goto...

... точнее \if EXPR : label

( функционал goto можно будет получить написав \if 1 : label )

В данный момент делаю только переходы вниз, чтобы невозможно было городить циклы (пока) - по идее преходов вниз должно хватить, чтобы задавать тип системы аргументом как я планировал (по умолчанию будет выбираться RADIO, а вот обобщающих аргументов типа ALL пока не будет т.к. оно потребует циклы)

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


12 Jul 2024 17:39
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Shaos wrote:
... Самодостаточность есть только для i8080 и возможно будет для i8086, а вот для Z80 нужен ассемблер zmac, который не входит в эту репу - по идее он PUBLIC DOMAIN - наверное можно и включить?...
Залил сырцы zmac в репу sdk:

https://gitlab.com/nedopc/sdk/-/tree/master/zmac

друг на друга zmac версии 1.3 (июль 2000), 1.32 (февраль 2005) и 1.33 (март 2005) - две последние родились на этом форуме (друг на друга это чтобы диффы можно было смотреть):

v1.32: https://gitlab.com/nedopc/sdk/-/commit/ce00665e44cff00515c33e000170bccb87784d62

v1.33: https://gitlab.com/nedopc/sdk/-/commit/f2f4a71a8acf64f28210d868ac1258743c205014

P.S. также перекодировал все русские комменты в UTF-8 (наверное надо на английский перевести) и апдейтнул ChangeLog...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


12 Jul 2024 23:15
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Shaos wrote:
...По идее т.к. в проектах теперь по умолчанию предполагается один единственный скрипт сборки на все случаи жизни, то может быть вместо NEDO PRJ\MAPGEN\MAPGEN.N надо разрешить запуск сборки задавая имя подкаталога проекта NEDO PRJ\MAPGEN (с возможным добавлением параметра ORION или SPECCY или там ALL, CLEAR и даже TEST) и далее собиралка поймёт, что это не имя файла, а подкаталог и сама подставит какое-то заранее известное имя - типа BUILD.N или MAKE.N или NEDOMAKE.N или DEFAULT.N?...

Вот такой DEFAULT.N внутри подкаталога проекта уже работает - собирает BIN-файл для Радио-86РК:
Code:
#!./nedo
# MAPGEN - map generator for Robot Warfate 1 game
\say Building ${project}
$spr=SPR_OR
$aspr=2000
$abin=0000
$avar=4000
$syst=radio
$proc=i8080
\remove ${spr}.BIN
\remove ${spr}.R
spr_comp -S${syst} -O#${aspr} ${spr}.SPR
\remove ${project}.RO
robbyc -p -l ${project}.R
\need ${project}.RO
\remove ${project}.A
robbycc ${project}.RO -P${proc} -S${syst} -O#${abin} -B#${avar}
\need ${project}.A
\remove ${project}.LST
\remove ${project}.BIN
rasm ${project}.A -t${EXEPATH}LIB/I8080/__RULES
\need ${project}.BIN
\remove ${spr}.BIN
\remove ${project}.LST
\remove ${project}.R!
\remove ${project}.RO
\remove ${project}.RLS
\remove ${project}.A
При запуске команды NEDO PRJ\MAPGEN оно берёт этот DEFAULT.N лежащий в каталоге PRJ/MAPGEN и устанавливает переменную PROJECT равной MAPGEN (имя подкаталога). Надо будет ещё сделать чтобы файл робота всегда был MAIN.R, а файл спрайтов/тайлов всегда был TILES.SPR - тогда это будет один скрипт сборки для всех универсальных примеров...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


13 Jul 2024 21:43
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Shaos wrote:
Надо будет ещё сделать чтобы файл робота всегда был MAIN.R, а файл спрайтов/тайлов всегда был TILES.SPR - тогда это будет один скрипт сборки для всех универсальных примеров...

Универсальный скрипт сборки получается достаточно увесистый :o
Code:
#!./nedomake
# Universal NEDOMAKE script to build any nedoPC SDK example
\say Build ${project}
$src=MAIN
$spr=TILES
\if ${1} : checksys
\goto radio # by default it's Radio-86RK
\label checksys
# i8080 targets:
\if ${1}==radio  : radio
\if ${1}==orion  : orion
\if ${1}==spets  : spets
\if ${1}==speccy : speccy
# z80 targets:
\if ${1}==trdos  : speccy2
\if ${1}==estex  : sprinter
# other targets:
\if ${1}==clean  : clear
\say ERROR : unknown target "${1}"
\exit
\label clear
\remove ${spr}.R
\remove ${src}.RO
\remove ${src}.BIN
\remove ${project}.EXE
\remove ${project}.BIN
\remove ${project}.bin
\remove ${project}.tap
\remove ${project}.trd
\remove ${project}$.bru
\goto endclear
\label radio
$syst=radio
\goto i8080
\label orion
$syst=orion
\goto i8080
\label spets
$syst=spets
\label i8080
$proc=i8080
$abin=#0000
$aspr=#5000
$avar=#6000
\goto action
\label speccy
$proc=i8080
\goto speccy1
\label speccy2
$proc=z80
\label speccy1
$syst=speccy
$abin=#8000
$aspr=#D000
$avar=#E000
\goto action
\label sprinter
$syst=sprinter
$proc=z80
$ahdr=#3F00
$abin=#4100
$aspr=#9000
$avar=#A000
\label action
\remove ${spr}.BIN
\remove ${spr}.R
spr_comp -S${syst} -O${aspr} ${spr}.SPR
\remove ${src}.RO
robbyc -p -l ${src}.R
\need ${src}.RO
\remove ${src}.A
robbycc ${src}.RO -P${proc} -S${syst} -O${abin} -B${avar}
\need ${src}.A
\remove ${src}.BIN
\if ${proc}!=z80 : rasm
\remove ${src}.bin
zmac ${src}.A
\need ${src}.bin
\rename ${src}.bin ${src}.BIN
\remove ${src}.lst
\goto bincont
\label rasm
rasm ${src}.A -t${EXEPATH}LIB/I8080/__RULES
\label bincont
\need ${src}.BIN
\if ${syst}==radio    : endradio
\if ${syst}==sprinter : sprinterexe
\remove ${project}.bin
\glue ${project}.bin ${src}.BIN ${abin}
\glue ${project}.bin ${spr}.BIN ${aspr}
\ltrim ${project}.bin
\need ${project}.bin
\if ${syst}==spets : endclear
\if ${syst}==speccy : endspeccy
# it must be orion at this point
bin2bru ${project}.bin ${abin}
\need ${project}$.bru
\remove ${project}.bin
\goto endclear
\label endspeccy
\if ${1}==trdos : endtrdos
# it must be tap at this point
\remove ${project}.tap
bin2tap ${project}.bin ${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
\need ${project}.tap
\remove ${project}.bin
\goto endclear
\label endtrdos
\remove ${project}.trd
\remove ${project}.trl
\append ${project}.trl NORMAL "${project}"
\append ${project}.trl TRUNCATED
\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
\append ${project}.trl binary "${project}.bin","robot","C",32768
bin2trd ${project}.trl
\need ${project}.trd
\remove ${project}.trl
\remove ${project}.bin
\goto endclear
\label sprinterexe
\remove ${project}.EXE
\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN ${ahdr}
\glue ${project}.EXE ${src}.BIN ${abin}
\glue ${project}.EXE ${spr}.BIN ${aspr}
\ltrim ${project}.EXE
\need ${project}.EXE
\goto endclear
\label endradio
\rename ${src}.BIN ${project}.BIN
\label endclear
\remove ${spr}.BIN
\remove ${spr}.R
\remove ${src}.BIN
\remove ${src}.LST
\remove ${src}.R!
\remove ${src}.RO
\remove ${src}.RLS
\remove ${src}.A

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

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


14 Jul 2024 02:30
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Слегка упростил скрипт выше, но всё равно чегой-то жырновато получается, если держать такой скрипт в каждом примере - наверное надо поддержать подтягивание DEFAULT.N из EXEPATH тоже (если его нету в подкаталоге с проектом)...

P.S. Можно наверное добавить ещё одну команду /include и положить в каждый пример простейший скрипт из одной строчки:
Code:
#!./nedo
/include ${EXEPATH}DEFAULT.N
хотя это уже явное упоминание дефолтного скрипта, что выглядит странно...

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


14 Jul 2024 10:24
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Shaos wrote:
кстати я могу тулзы SDK собирать через nedo вместо make - может таки назвать его nedomake? :lol:
Слово nedomake лучше гуглится :lol:

Так что пусть будет NEDOMAKE :mrgreen:

Shaos wrote:
Слегка упростил скрипт выше, но всё равно чегой-то жырновато получается, если держать такой скрипт в каждом примере - наверное надо поддержать подтягивание DEFAULT.N из EXEPATH тоже (если его нету в подкаталоге с проектом)...
Сделал, выкатив NEDOMAKE v2.0.2 :mrgreen:

https://gitlab.com/nedopc/sdk/-/commit/599b7c680744b0f872f870a0e4e21641c29af076

Скрипт DEFAULT.N приведённый выше тоже обновил - вот вывод недомейка при собирании примера MAPGEN для разных таргетов (три минуса --- показывают, что строчка пропускается из-за перескока на более позднюю метку):

 NEDOMAKE PRJ/MAPGEN
Code:
NEDOMAKE v2.0.2 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>

JOBFILE=/home/shaos/src/SDK-work/DEFAULT.N
EXEPATH=/home/shaos/src/SDK-work/
PROJECT=MAPGEN
CURPATH=PRJ/MAPGEN
>>>\say Build MAPGEN
Build MAPGEN
>>>$src=MAIN<<<
>>>$spr=TILES<<<
>>>\if 0 : checksys
>>>\goto radio
---\label checksys
---\if ${1}==radio  : radio
---\if ${1}==orion  : orion
---\if ${1}==spets  : spets
---\if ${1}==speccy : speccy
---\if ${1}==trdos  : speccy2
---\if ${1}==estex  : sprinter
---\if ${1}==clean  : clear
---\say ERROR : unknown target "${1}"
---\exit
---\label clear
---\remove ${spr}.R
---\remove ${src}.RO
---\remove ${src}.BIN
---\remove ${project}.EXE
---\remove ${project}.BIN
---\remove ${project}.bin
---\remove ${project}.tap
---\remove ${project}.trd
---\remove ${project}$.bru
---\goto endclear
>>>\label radio
>>>$syst=radio<<<
>>>\goto i8080
---\label orion
---$syst=orion
---\goto i8080
---\label spets
---$syst=spets
>>>\label i8080
>>>$proc=i8080<<<
>>>$abin=#0000<<<
>>>$aspr=#5000<<<
>>>$avar=#6000<<<
>>>\goto action
---\label speccy
---$proc=i8080
---\goto speccy1
---\label speccy2
---$proc=z80
---\label speccy1
---$syst=speccy
---$abin=#8000
---$aspr=#D000
---$avar=#E000
---\goto action
---\label sprinter
---$syst=sprinter
---$proc=z80
---$ahdr=#3F00
---$abin=#4100
---$aspr=#9000
---$avar=#A000
>>>\label action
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>spr_comp -Sradio -O#5000 TILES.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 20480 [5000]
TYPE 8x8-2/16
SP_E   SP_H   SP_S   SP_B   SP_R   SP_F   SP_R0   SP_0   SP_1   OK

!!!/home/shaos/src/SDK-work/spr_comp -Sradio -O#5000 TILES.SPR
>>>\remove MAIN.RO
>>>robbyc -p -l MAIN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAIN.R!>
Pass 1
Pass 2
Ok!
<MAIN.RO>
<MAIN.RLS>
Good Luck !

!!!/home/shaos/src/SDK-work/robbyc -p -l MAIN.R
>>>\need MAIN.RO
>>>\remove MAIN.A
>>>robbycc MAIN.RO -Pi8080 -Sradio -O#0000 -B#6000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #0000
BASE #6000 [24576]
VARS 240
REGS #6220 [25120]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

!!!/home/shaos/src/SDK-work/robbycc MAIN.RO -Pi8080 -Sradio -O#0000 -B#6000
>>>\need MAIN.A
>>>\remove MAIN.BIN
>>>\if i8080!=z80 : rasm
---\remove ${src}.bin
---zmac ${src}.A
---\need ${src}.bin
---\rename ${src}.bin ${src}.BIN
---\remove ${src}.lst
---\goto bincont
>>>\label rasm
>>>rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES


RoboAssembler v2.6.2 (c) 1997-2024 Alexander A. Shabarshin <me@shaos.net>

### Initialization (244 codes from '/home/shaos/src/SDK-work/LIB/I8080/__RULES')

### Includes

### Labels

### Deleting comments and empty lines

### First pass

### Second pass

### Compilation complete

!!!/home/shaos/src/SDK-work/rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES
>>>\label bincont
>>>\need MAIN.BIN
>>>\if radio==radio    : endradio
---\if ${syst}==sprinter : sprinterexe
---\remove ${project}.bin
---\glue ${project}.bin ${src}.BIN ${abin}
---\glue ${project}.bin ${spr}.BIN ${aspr}
---\ltrim ${project}.bin
---\need ${project}.bin
---\if ${syst}==spets : endclear
---\if ${syst}==speccy : endspeccy
---bin2bru ${project}.bin ${abin}
---\need ${project}$.bru
---\remove ${project}.bin
---\goto endclear
---\label endspeccy
---\if ${1}==trdos : endtrdos
---\remove ${project}.tap
---bin2tap ${project}.bin ${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
---\need ${project}.tap
---\remove ${project}.bin
---\goto endclear
---\label endtrdos
---\remove ${project}.trd
---\remove ${project}.trl
---\append ${project}.trl NORMAL "${project}"
---\append ${project}.trl TRUNCATED
---\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
---\append ${project}.trl binary "${project}.bin","robot","C",32768
---bin2trd ${project}.trl
---\need ${project}.trd
---\remove ${project}.trl
---\remove ${project}.bin
---\goto endclear
---\label sprinterexe
---\remove ${project}.EXE
---\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN ${ahdr}
---\glue ${project}.EXE ${src}.BIN ${abin}
---\glue ${project}.EXE ${spr}.BIN ${aspr}
---\ltrim ${project}.EXE
---\need ${project}.EXE
---\goto endclear
>>>\label endradio
>>>\rename MAIN.BIN MAPGEN.BIN
>>>\label endclear
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>\remove MAIN.BIN
>>>\remove MAIN.LST
>>>\remove MAIN.R!
>>>\remove MAIN.RO
>>>\remove MAIN.RLS
>>>\remove MAIN.A

Ok!


 NEDOMAKE PRJ/MAPGEN RADIO
Code:
NEDOMAKE v2.0.2 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>

JOBFILE=/home/shaos/src/SDK-work/DEFAULT.N
EXEPATH=/home/shaos/src/SDK-work/
PROJECT=MAPGEN
CURPATH=PRJ/MAPGEN
>>>\say Build MAPGEN
Build MAPGEN
>>>$src=MAIN<<<
>>>$spr=TILES<<<
>>>\if radio : checksys
---\goto radio
>>>\label checksys
>>>\if radio==radio  : radio
---\if ${1}==orion  : orion
---\if ${1}==spets  : spets
---\if ${1}==speccy : speccy
---\if ${1}==trdos  : speccy2
---\if ${1}==estex  : sprinter
---\if ${1}==clean  : clear
---\say ERROR : unknown target "${1}"
---\exit
---\label clear
---\remove ${spr}.R
---\remove ${src}.RO
---\remove ${src}.BIN
---\remove ${project}.EXE
---\remove ${project}.BIN
---\remove ${project}.bin
---\remove ${project}.tap
---\remove ${project}.trd
---\remove ${project}$.bru
---\goto endclear
>>>\label radio
>>>$syst=radio<<<
>>>\goto i8080
---\label orion
---$syst=orion
---\goto i8080
---\label spets
---$syst=spets
>>>\label i8080
>>>$proc=i8080<<<
>>>$abin=#0000<<<
>>>$aspr=#5000<<<
>>>$avar=#6000<<<
>>>\goto action
---\label speccy
---$proc=i8080
---\goto speccy1
---\label speccy2
---$proc=z80
---\label speccy1
---$syst=speccy
---$abin=#8000
---$aspr=#D000
---$avar=#E000
---\goto action
---\label sprinter
---$syst=sprinter
---$proc=z80
---$ahdr=#3F00
---$abin=#4100
---$aspr=#9000
---$avar=#A000
>>>\label action
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>spr_comp -Sradio -O#5000 TILES.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 20480 [5000]
TYPE 8x8-2/16
SP_E   SP_H   SP_S   SP_B   SP_R   SP_F   SP_R0   SP_0   SP_1   OK

!!!/home/shaos/src/SDK-work/spr_comp -Sradio -O#5000 TILES.SPR
>>>\remove MAIN.RO
>>>robbyc -p -l MAIN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAIN.R!>
Pass 1
Pass 2
Ok!
<MAIN.RO>
<MAIN.RLS>
Good Luck !

!!!/home/shaos/src/SDK-work/robbyc -p -l MAIN.R
>>>\need MAIN.RO
>>>\remove MAIN.A
>>>robbycc MAIN.RO -Pi8080 -Sradio -O#0000 -B#6000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #0000
BASE #6000 [24576]
VARS 240
REGS #6220 [25120]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

!!!/home/shaos/src/SDK-work/robbycc MAIN.RO -Pi8080 -Sradio -O#0000 -B#6000
>>>\need MAIN.A
>>>\remove MAIN.BIN
>>>\if i8080!=z80 : rasm
---\remove ${src}.bin
---zmac ${src}.A
---\need ${src}.bin
---\rename ${src}.bin ${src}.BIN
---\remove ${src}.lst
---\goto bincont
>>>\label rasm
>>>rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES


RoboAssembler v2.6.2 (c) 1997-2024 Alexander A. Shabarshin <me@shaos.net>

### Initialization (244 codes from '/home/shaos/src/SDK-work/LIB/I8080/__RULES')

### Includes

### Labels

### Deleting comments and empty lines

### First pass

### Second pass

### Compilation complete

!!!/home/shaos/src/SDK-work/rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES
>>>\label bincont
>>>\need MAIN.BIN
>>>\if radio==radio    : endradio
---\if ${syst}==sprinter : sprinterexe
---\remove ${project}.bin
---\glue ${project}.bin ${src}.BIN ${abin}
---\glue ${project}.bin ${spr}.BIN ${aspr}
---\ltrim ${project}.bin
---\need ${project}.bin
---\if ${syst}==spets : endclear
---\if ${syst}==speccy : endspeccy
---bin2bru ${project}.bin ${abin}
---\need ${project}$.bru
---\remove ${project}.bin
---\goto endclear
---\label endspeccy
---\if ${1}==trdos : endtrdos
---\remove ${project}.tap
---bin2tap ${project}.bin ${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
---\need ${project}.tap
---\remove ${project}.bin
---\goto endclear
---\label endtrdos
---\remove ${project}.trd
---\remove ${project}.trl
---\append ${project}.trl NORMAL "${project}"
---\append ${project}.trl TRUNCATED
---\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
---\append ${project}.trl binary "${project}.bin","robot","C",32768
---bin2trd ${project}.trl
---\need ${project}.trd
---\remove ${project}.trl
---\remove ${project}.bin
---\goto endclear
---\label sprinterexe
---\remove ${project}.EXE
---\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN ${ahdr}
---\glue ${project}.EXE ${src}.BIN ${abin}
---\glue ${project}.EXE ${spr}.BIN ${aspr}
---\ltrim ${project}.EXE
---\need ${project}.EXE
---\goto endclear
>>>\label endradio
>>>\rename MAIN.BIN MAPGEN.BIN
>>>\label endclear
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>\remove MAIN.BIN
>>>\remove MAIN.LST
>>>\remove MAIN.R!
>>>\remove MAIN.RO
>>>\remove MAIN.RLS
>>>\remove MAIN.A

Ok!


 NEDOMAKE PRJ/MAPGEN ORION
Code:
NEDOMAKE v2.0.2 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>

JOBFILE=/home/shaos/src/SDK-work/DEFAULT.N
EXEPATH=/home/shaos/src/SDK-work/
PROJECT=MAPGEN
CURPATH=PRJ/MAPGEN
>>>\say Build MAPGEN
Build MAPGEN
>>>$src=MAIN<<<
>>>$spr=TILES<<<
>>>\if orion : checksys
---\goto radio
>>>\label checksys
>>>\if orion==radio  : radio
>>>\if orion==orion  : orion
---\if ${1}==spets  : spets
---\if ${1}==speccy : speccy
---\if ${1}==trdos  : speccy2
---\if ${1}==estex  : sprinter
---\if ${1}==clean  : clear
---\say ERROR : unknown target "${1}"
---\exit
---\label clear
---\remove ${spr}.R
---\remove ${src}.RO
---\remove ${src}.BIN
---\remove ${project}.EXE
---\remove ${project}.BIN
---\remove ${project}.bin
---\remove ${project}.tap
---\remove ${project}.trd
---\remove ${project}$.bru
---\goto endclear
---\label radio
---$syst=radio
---\goto i8080
>>>\label orion
>>>$syst=orion<<<
>>>\goto i8080
---\label spets
---$syst=spets
>>>\label i8080
>>>$proc=i8080<<<
>>>$abin=#0000<<<
>>>$aspr=#5000<<<
>>>$avar=#6000<<<
>>>\goto action
---\label speccy
---$proc=i8080
---\goto speccy1
---\label speccy2
---$proc=z80
---\label speccy1
---$syst=speccy
---$abin=#8000
---$aspr=#D000
---$avar=#E000
---\goto action
---\label sprinter
---$syst=sprinter
---$proc=z80
---$ahdr=#3F00
---$abin=#4100
---$aspr=#9000
---$avar=#A000
>>>\label action
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>spr_comp -Sorion -O#5000 TILES.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 20480 [5000]
TYPE 8x8-2/16
SP_E   5000 : 9 bytes wrote (0)
SP_H   5009 : 9 bytes wrote (0)
SP_S   5012 : 9 bytes wrote (0)
SP_B   501B : 9 bytes wrote (0)
SP_R   5024 : 9 bytes wrote (0)
SP_F   502D : 9 bytes wrote (0)
SP_R0   5036 : 9 bytes wrote (0)
SP_0   503F : 9 bytes wrote (0)
SP_1   5048 : 9 bytes wrote (0)
OK

!!!/home/shaos/src/SDK-work/spr_comp -Sorion -O#5000 TILES.SPR
>>>\remove MAIN.RO
>>>robbyc -p -l MAIN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAIN.R!>
Pass 1
Pass 2
Ok!
<MAIN.RO>
<MAIN.RLS>
Good Luck !

!!!/home/shaos/src/SDK-work/robbyc -p -l MAIN.R
>>>\need MAIN.RO
>>>\remove MAIN.A
>>>robbycc MAIN.RO -Pi8080 -Sorion -O#0000 -B#6000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #0000
BASE #6000 [24576]
VARS 240
REGS #6220 [25120]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

!!!/home/shaos/src/SDK-work/robbycc MAIN.RO -Pi8080 -Sorion -O#0000 -B#6000
>>>\need MAIN.A
>>>\remove MAIN.BIN
>>>\if i8080!=z80 : rasm
---\remove ${src}.bin
---zmac ${src}.A
---\need ${src}.bin
---\rename ${src}.bin ${src}.BIN
---\remove ${src}.lst
---\goto bincont
>>>\label rasm
>>>rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES


RoboAssembler v2.6.2 (c) 1997-2024 Alexander A. Shabarshin <me@shaos.net>

### Initialization (244 codes from '/home/shaos/src/SDK-work/LIB/I8080/__RULES')

### Includes

### Labels

### Deleting comments and empty lines

### First pass

### Second pass

### Compilation complete

!!!/home/shaos/src/SDK-work/rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES
>>>\label bincont
>>>\need MAIN.BIN
>>>\if orion==radio    : endradio
>>>\if orion==sprinter : sprinterexe
>>>\remove MAPGEN.bin
>>>\glue MAPGEN.bin MAIN.BIN #0000
>>>\glue MAPGEN.bin TILES.BIN #5000
>>>\ltrim MAPGEN.bin
>>>\need MAPGEN.bin
>>>\if orion==spets : endclear
>>>\if orion==speccy : endspeccy
>>>bin2bru MAPGEN.bin #0000
Creating BRU file 'MAPGEN$.bru' 0000 5060
!!!/home/shaos/src/SDK-work/bin2bru MAPGEN.bin \#0000
>>>\need MAPGEN$.bru
>>>\remove MAPGEN.bin
>>>\goto endclear
---\label endspeccy
---\if ${1}==trdos : endtrdos
---\remove ${project}.tap
---bin2tap ${project}.bin ${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
---\need ${project}.tap
---\remove ${project}.bin
---\goto endclear
---\label endtrdos
---\remove ${project}.trd
---\remove ${project}.trl
---\append ${project}.trl NORMAL "${project}"
---\append ${project}.trl TRUNCATED
---\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
---\append ${project}.trl binary "${project}.bin","robot","C",32768
---bin2trd ${project}.trl
---\need ${project}.trd
---\remove ${project}.trl
---\remove ${project}.bin
---\goto endclear
---\label sprinterexe
---\remove ${project}.EXE
---\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN ${ahdr}
---\glue ${project}.EXE ${src}.BIN ${abin}
---\glue ${project}.EXE ${spr}.BIN ${aspr}
---\ltrim ${project}.EXE
---\need ${project}.EXE
---\goto endclear
---\label endradio
---\rename ${src}.BIN ${project}.BIN
>>>\label endclear
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>\remove MAIN.BIN
>>>\remove MAIN.LST
>>>\remove MAIN.R!
>>>\remove MAIN.RO
>>>\remove MAIN.RLS
>>>\remove MAIN.A

Ok!

Вариант без параметра и вариант с параметром radio генерируют один и тот же BIN-файл, но скрипт в самом начале идёт немного другим путём:

Code:
>diff mapgen-default.out mapgen-radio.out
13,16c13,16
< >>>\if 0 : checksys
< >>>\goto radio
< ---\label checksys
< ---\if ${1}==radio  : radio
---
> >>>\if radio : checksys
> ---\goto radio
> >>>\label checksys
> >>>\if radio==radio  : radio


Вариант с параметром orion генерирует BRU-файл для моего эмулятора Orionix.

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


14 Jul 2024 22:09
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Тут по ходу получается, что то, что я все эти годы считал сборкой для платформы Специалист (spec и позже spets) на самом деле является сборкой для Специлист-MX (я ещё в стародавние времена пользовался эмулятором Шевцова для отладки) - в настоящий момент оно немного сломанное, но я думаю сегодня вечерком я это дело доковыряю:

 NEDOMAKE PRJ/MAPGEN SPETS
Code:
NEDOMAKE v2.0.2 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>

JOBFILE=/home/shaos/src/SDK-work/DEFAULT.N
EXEPATH=/home/shaos/src/SDK-work/
PROJECT=MAPGEN
CURPATH=PRJ/MAPGEN
>>>\say Build MAPGEN
Build MAPGEN
>>>$src=MAIN<<<
>>>$spr=TILES<<<
>>>\if spets : checksys
---\goto radio
>>>\label checksys
>>>\if spets==radio  : radio
>>>\if spets==orion  : orion
>>>\if spets==spets  : spets
---\if ${1}==speccy : speccy
---\if ${1}==trdos  : speccy2
---\if ${1}==estex  : sprinter
---\if ${1}==clean  : clear
---\say ERROR : unknown target "${1}"
---\exit
---\label clear
---\remove ${spr}.R
---\remove ${src}.RO
---\remove ${src}.BIN
---\remove ${project}.EXE
---\remove ${project}.BIN
---\remove ${project}.bin
---\remove ${project}.tap
---\remove ${project}.trd
---\remove ${project}$.bru
---\goto endclear
---\label radio
---$syst=radio
---\goto i8080
---\label orion
---$syst=orion
---\goto i8080
>>>\label spets
>>>$syst=spets<<<
>>>\label i8080
>>>$proc=i8080<<<
>>>$abin=#0000<<<
>>>$aspr=#5000<<<
>>>$avar=#6000<<<
>>>\goto action
---\label speccy
---$proc=i8080
---\goto speccy1
---\label speccy2
---$proc=z80
---\label speccy1
---$syst=speccy
---$abin=#8000
---$aspr=#D000
---$avar=#E000
---\goto action
---\label sprinter
---$syst=sprinter
---$proc=z80
---$ahdr=#3F00
---$abin=#4100
---$aspr=#9000
---$avar=#A000
>>>\label action
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>spr_comp -Sspets -O#5000 TILES.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 20480 [5000]
TYPE 8x8-2/16
SP_E   5000 : 9 bytes wrote (1)
SP_H   5009 : 9 bytes wrote (1)
SP_S   5012 : 9 bytes wrote (0)
SP_B   501B : 9 bytes wrote (1)
SP_R   5024 : 9 bytes wrote (0)
SP_F   502D : 9 bytes wrote (0)
SP_R0   5036 : 9 bytes wrote (1)
SP_0   503F : 9 bytes wrote (0)
SP_1   5048 : 9 bytes wrote (1)
OK

!!!/home/shaos/src/SDK-work/spr_comp -Sspets -O#5000 TILES.SPR
>>>\remove MAIN.RO
>>>robbyc -p -l MAIN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAIN.R!>
Pass 1
Pass 2
Ok!
<MAIN.RO>
<MAIN.RLS>
Good Luck !

!!!/home/shaos/src/SDK-work/robbyc -p -l MAIN.R
>>>\need MAIN.RO
>>>\remove MAIN.A
>>>robbycc MAIN.RO -Pi8080 -Sspets -O#0000 -B#6000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #0000
BASE #6000 [24576]
VARS 240
REGS #6220 [25120]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

!!!/home/shaos/src/SDK-work/robbycc MAIN.RO -Pi8080 -Sspets -O#0000 -B#6000
>>>\need MAIN.A
>>>\remove MAIN.BIN
>>>\if i8080!=z80 : rasm
---\remove ${src}.bin
---zmac ${src}.A
---\need ${src}.bin
---\rename ${src}.bin ${src}.BIN
---\remove ${src}.lst
---\goto bincont
>>>\label rasm
>>>rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES


RoboAssembler v2.6.2 (c) 1997-2024 Alexander A. Shabarshin <me@shaos.net>

### Initialization (244 codes from '/home/shaos/src/SDK-work/LIB/I8080/__RULES')

### Includes

### Labels

### Deleting comments and empty lines

### First pass

### Second pass

### Compilation complete

!!!/home/shaos/src/SDK-work/rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES
>>>\label bincont
>>>\need MAIN.BIN
>>>\if spets==radio    : endradio
>>>\if spets==sprinter : sprinterexe
>>>\remove MAPGEN.bin
>>>\glue MAPGEN.bin MAIN.BIN #0000
>>>\glue MAPGEN.bin TILES.BIN #5000
>>>\ltrim MAPGEN.bin
>>>\need MAPGEN.bin
>>>\if spets==spets : endclear
---\if ${syst}==speccy : endspeccy
---bin2bru ${project}.bin ${abin}
---\need ${project}$.bru
---\remove ${project}.bin
---\goto endclear
---\label endspeccy
---\if ${1}==trdos : endtrdos
---\remove ${project}.tap
---bin2tap ${project}.bin ${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
---\need ${project}.tap
---\remove ${project}.bin
---\goto endclear
---\label endtrdos
---\remove ${project}.trd
---\remove ${project}.trl
---\append ${project}.trl NORMAL "${project}"
---\append ${project}.trl TRUNCATED
---\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
---\append ${project}.trl binary "${project}.bin","robot","C",32768
---bin2trd ${project}.trl
---\need ${project}.trd
---\remove ${project}.trl
---\remove ${project}.bin
---\goto endclear
---\label sprinterexe
---\remove ${project}.EXE
---\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN ${ahdr}
---\glue ${project}.EXE ${src}.BIN ${abin}
---\glue ${project}.EXE ${spr}.BIN ${aspr}
---\ltrim ${project}.EXE
---\need ${project}.EXE
---\goto endclear
---\label endradio
---\rename ${src}.BIN ${project}.BIN
>>>\label endclear
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>\remove MAIN.BIN
>>>\remove MAIN.LST
>>>\remove MAIN.R!
>>>\remove MAIN.RO
>>>\remove MAIN.RLS
>>>\remove MAIN.A

Ok!

Ещё по традиции у меня остаётся сборка для ZX Spectrum, но через мнемноки i8080 и мой ассемблер RASM - при этом генерируется TAP-файл (таргет speccy):

 NEDOMAKE PRJ/MAPGEN SPECCY
Code:
NEDOMAKE v2.0.2 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>

JOBFILE=/home/shaos/src/SDK-work/DEFAULT.N
EXEPATH=/home/shaos/src/SDK-work/
PROJECT=MAPGEN
CURPATH=PRJ/MAPGEN
>>>\say Build MAPGEN
Build MAPGEN
>>>$src=MAIN<<<
>>>$spr=TILES<<<
>>>\if speccy : checksys
---\goto radio
>>>\label checksys
>>>\if speccy==radio  : radio
>>>\if speccy==orion  : orion
>>>\if speccy==spets  : spets
>>>\if speccy==speccy : speccy
---\if ${1}==trdos  : speccy2
---\if ${1}==estex  : sprinter
---\if ${1}==clean  : clear
---\say ERROR : unknown target "${1}"
---\exit
---\label clear
---\remove ${spr}.R
---\remove ${src}.RO
---\remove ${src}.BIN
---\remove ${project}.EXE
---\remove ${project}.BIN
---\remove ${project}.bin
---\remove ${project}.tap
---\remove ${project}.trd
---\remove ${project}$.bru
---\goto endclear
---\label radio
---$syst=radio
---\goto i8080
---\label orion
---$syst=orion
---\goto i8080
---\label spets
---$syst=spets
---\label i8080
---$proc=i8080
---$abin=#0000
---$aspr=#5000
---$avar=#6000
---\goto action
>>>\label speccy
>>>$proc=i8080<<<
>>>\goto speccy1
---\label speccy2
---$proc=z80
>>>\label speccy1
>>>$syst=speccy<<<
>>>$abin=#8000<<<
>>>$aspr=#D000<<<
>>>$avar=#E000<<<
>>>\goto action
---\label sprinter
---$syst=sprinter
---$proc=z80
---$ahdr=#3F00
---$abin=#4100
---$aspr=#9000
---$avar=#A000
>>>\label action
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>spr_comp -Sspeccy -O#D000 TILES.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 53248 [D000]
TYPE 8x8-2/16
SP_E   D000 : 9 bytes wrote (0)
SP_H   D009 : 9 bytes wrote (0)
SP_S   D012 : 9 bytes wrote (0)
SP_B   D01B : 9 bytes wrote (0)
SP_R   D024 : 9 bytes wrote (0)
SP_F   D02D : 9 bytes wrote (0)
SP_R0   D036 : 9 bytes wrote (0)
SP_0   D03F : 9 bytes wrote (0)
SP_1   D048 : 9 bytes wrote (0)
OK

!!!/home/shaos/src/SDK-work/spr_comp -Sspeccy -O#D000 TILES.SPR
>>>\remove MAIN.RO
>>>robbyc -p -l MAIN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAIN.R!>
Pass 1
Pass 2
Ok!
<MAIN.RO>
<MAIN.RLS>
Good Luck !

!!!/home/shaos/src/SDK-work/robbyc -p -l MAIN.R
>>>\need MAIN.RO
>>>\remove MAIN.A
>>>robbycc MAIN.RO -Pi8080 -Sspeccy -O#8000 -B#E000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #8000
BASE #E000 [57344]
VARS 240
REGS #E220 [57888]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

!!!/home/shaos/src/SDK-work/robbycc MAIN.RO -Pi8080 -Sspeccy -O#8000 -B#E000
>>>\need MAIN.A
>>>\remove MAIN.BIN
>>>\if i8080!=z80 : rasm
---\remove ${src}.bin
---zmac ${src}.A
---\need ${src}.bin
---\rename ${src}.bin ${src}.BIN
---\remove ${src}.lst
---\goto bincont
>>>\label rasm
>>>rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES


RoboAssembler v2.6.2 (c) 1997-2024 Alexander A. Shabarshin <me@shaos.net>

### Initialization (244 codes from '/home/shaos/src/SDK-work/LIB/I8080/__RULES')

### Includes

### Labels

### Deleting comments and empty lines

### First pass

### Second pass

### Compilation complete

!!!/home/shaos/src/SDK-work/rasm MAIN.A -t/home/shaos/src/SDK-work/LIB/I8080/__RULES
>>>\label bincont
>>>\need MAIN.BIN
>>>\if speccy==radio    : endradio
>>>\if speccy==sprinter : sprinterexe
>>>\remove MAPGEN.bin
>>>\glue MAPGEN.bin MAIN.BIN #8000
>>>\glue MAPGEN.bin TILES.BIN #D000
>>>\ltrim MAPGEN.bin
>>>\need MAPGEN.bin
>>>\if speccy==spets : endclear
>>>\if speccy==speccy : endspeccy
---bin2bru ${project}.bin ${abin}
---\need ${project}$.bru
---\remove ${project}.bin
---\goto endclear
>>>\label endspeccy
>>>\if speccy==trdos : endtrdos
>>>\remove MAPGEN.tap
>>>bin2tap MAPGEN.bin #8000 /home/shaos/src/SDK-work/LIB/Z80/SPECCY/TAPE
START: 0x8000 (32768)
LOADER /home/shaos/src/SDK-work/LIB/Z80/SPECCY/TAPE
!!!/home/shaos/src/SDK-work/bin2tap MAPGEN.bin \#8000 /home/shaos/src/SDK-work/LIB/Z80/SPECCY/TAPE
>>>\need MAPGEN.tap
>>>\remove MAPGEN.bin
>>>\goto endclear
---\label endtrdos
---\remove ${project}.trd
---\remove ${project}.trl
---\append ${project}.trl NORMAL "${project}"
---\append ${project}.trl TRUNCATED
---\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
---\append ${project}.trl binary "${project}.bin","robot","C",32768
---bin2trd ${project}.trl
---\need ${project}.trd
---\remove ${project}.trl
---\remove ${project}.bin
---\goto endclear
---\label sprinterexe
---\remove ${project}.EXE
---\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN ${ahdr}
---\glue ${project}.EXE ${src}.BIN ${abin}
---\glue ${project}.EXE ${spr}.BIN ${aspr}
---\ltrim ${project}.EXE
---\need ${project}.EXE
---\goto endclear
---\label endradio
---\rename ${src}.BIN ${project}.BIN
>>>\label endclear
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>\remove MAIN.BIN
>>>\remove MAIN.LST
>>>\remove MAIN.R!
>>>\remove MAIN.RO
>>>\remove MAIN.RLS
>>>\remove MAIN.A

Ok!

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


14 Jul 2024 22:31
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 23467
Location: Silicon Valley
Reply with quote
Ну и наконец 2 таргета с процессором Z80 - trdos (TRD файл для компьютера ZX Spectrum):

 NEDOMAKE PRJ/MAPGEN TRDOS
Code:
NEDOMAKE v2.0.2 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>

JOBFILE=/home/shaos/src/SDK-work/DEFAULT.N
EXEPATH=/home/shaos/src/SDK-work/
PROJECT=MAPGEN
CURPATH=PRJ/MAPGEN
>>>\say Build MAPGEN
Build MAPGEN
>>>$src=MAIN<<<
>>>$spr=TILES<<<
>>>\if trdos : checksys
---\goto radio
>>>\label checksys
>>>\if trdos==radio  : radio
>>>\if trdos==orion  : orion
>>>\if trdos==spets  : spets
>>>\if trdos==speccy : speccy
>>>\if trdos==trdos  : speccy2
---\if ${1}==estex  : sprinter
---\if ${1}==clean  : clear
---\say ERROR : unknown target "${1}"
---\exit
---\label clear
---\remove ${spr}.R
---\remove ${src}.RO
---\remove ${src}.BIN
---\remove ${project}.EXE
---\remove ${project}.BIN
---\remove ${project}.bin
---\remove ${project}.tap
---\remove ${project}.trd
---\remove ${project}$.bru
---\goto endclear
---\label radio
---$syst=radio
---\goto i8080
---\label orion
---$syst=orion
---\goto i8080
---\label spets
---$syst=spets
---\label i8080
---$proc=i8080
---$abin=#0000
---$aspr=#5000
---$avar=#6000
---\goto action
---\label speccy
---$proc=i8080
---\goto speccy1
>>>\label speccy2
>>>$proc=z80<<<
>>>\label speccy1
>>>$syst=speccy<<<
>>>$abin=#8000<<<
>>>$aspr=#D000<<<
>>>$avar=#E000<<<
>>>\goto action
---\label sprinter
---$syst=sprinter
---$proc=z80
---$ahdr=#3F00
---$abin=#4100
---$aspr=#9000
---$avar=#A000
>>>\label action
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>spr_comp -Sspeccy -O#D000 TILES.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 53248 [D000]
TYPE 8x8-2/16
SP_E   D000 : 9 bytes wrote (0)
SP_H   D009 : 9 bytes wrote (0)
SP_S   D012 : 9 bytes wrote (0)
SP_B   D01B : 9 bytes wrote (0)
SP_R   D024 : 9 bytes wrote (0)
SP_F   D02D : 9 bytes wrote (0)
SP_R0   D036 : 9 bytes wrote (0)
SP_0   D03F : 9 bytes wrote (0)
SP_1   D048 : 9 bytes wrote (0)
OK

!!!/home/shaos/src/SDK-work/spr_comp -Sspeccy -O#D000 TILES.SPR
>>>\remove MAIN.RO
>>>robbyc -p -l MAIN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAIN.R!>
Pass 1
Pass 2
Ok!
<MAIN.RO>
<MAIN.RLS>
Good Luck !

!!!/home/shaos/src/SDK-work/robbyc -p -l MAIN.R
>>>\need MAIN.RO
>>>\remove MAIN.A
>>>robbycc MAIN.RO -Pz80 -Sspeccy -O#8000 -B#E000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #8000
BASE #E000 [57344]
VARS 240
REGS #E220 [57888]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

!!!/home/shaos/src/SDK-work/robbycc MAIN.RO -Pz80 -Sspeccy -O#8000 -B#E000
>>>\need MAIN.A
>>>\remove MAIN.BIN
>>>\if z80!=z80 : rasm
>>>\remove MAIN.bin
>>>zmac MAIN.A
!!!/home/shaos/src/SDK-work/zmac MAIN.A
>>>\need MAIN.bin
>>>\rename MAIN.bin MAIN.BIN
>>>\remove MAIN.lst
>>>\goto bincont
---\label rasm
---rasm ${src}.A -t${EXEPATH}LIB/I8080/__RULES
>>>\label bincont
>>>\need MAIN.BIN
>>>\if speccy==radio    : endradio
>>>\if speccy==sprinter : sprinterexe
>>>\remove MAPGEN.bin
>>>\glue MAPGEN.bin MAIN.BIN #8000
>>>\glue MAPGEN.bin TILES.BIN #D000
>>>\ltrim MAPGEN.bin
>>>\need MAPGEN.bin
>>>\if speccy==spets : endclear
>>>\if speccy==speccy : endspeccy
---bin2bru ${project}.bin ${abin}
---\need ${project}$.bru
---\remove ${project}.bin
---\goto endclear
>>>\label endspeccy
>>>\if trdos==trdos : endtrdos
---\remove ${project}.tap
---bin2tap ${project}.bin ${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
---\need ${project}.tap
---\remove ${project}.bin
---\goto endclear
>>>\label endtrdos
>>>\remove MAPGEN.trd
>>>\remove MAPGEN.trl
>>>\append MAPGEN.trl NORMAL "MAPGEN"
>>>\append MAPGEN.trl TRUNCATED
>>>\append MAPGEN.trl hobeta "/home/shaos/src/SDK-work/LIB/Z80/SPECCY/BOOT","boot","B"
>>>\append MAPGEN.trl binary "MAPGEN.bin","robot","C",32768
>>>bin2trd MAPGEN.trl

Making TRD file from binaries or/and hobeta files (v1.0.2024)

(c) 1999  Copper Feet (Vyacheslav Mednonogov)

Modified in 2002,2018,2024 by Alexander Shabarshin <me@shaos.net>

Input file: MAPGEN.trl (129 bytes)

Normal TR-DOS Disk (DD80)  Label: "MAPGEN  "
Files: 2  Free sectors: 2462   

Input file: MAPGEN.trl (129 bytes)

[H001] Name="boot    B" Len=00048 Start=00048 Blk=001 Trk=001 Sec=00
[B002] Name="robot   C" Len=20561 Start=32768 Blk=081 Trk=001 Sec=01

TRD file was truncated

Ok!

!!!/home/shaos/src/SDK-work/bin2trd MAPGEN.trl
>>>\need MAPGEN.trd
>>>\remove MAPGEN.trl
>>>\remove MAPGEN.bin
>>>\goto endclear
---\label sprinterexe
---\remove ${project}.EXE
---\glue ${project}.EXE ${EXEPATH}LIB/Z80/SPRINTER/HEAD.BIN ${ahdr}
---\glue ${project}.EXE ${src}.BIN ${abin}
---\glue ${project}.EXE ${spr}.BIN ${aspr}
---\ltrim ${project}.EXE
---\need ${project}.EXE
---\goto endclear
---\label endradio
---\rename ${src}.BIN ${project}.BIN
>>>\label endclear
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>\remove MAIN.BIN
>>>\remove MAIN.LST
>>>\remove MAIN.R!
>>>\remove MAIN.RO
>>>\remove MAIN.RLS
>>>\remove MAIN.A

Ok!

и estex (EXE файл для компьютера Sprinter):

 NEDOMAKE PRJ/MAPGEN ESTEX
Code:
NEDOMAKE v2.0.2 (c) 2002-2024, Alexander A. Shabarshin <me@shaos.net>

JOBFILE=/home/shaos/src/SDK-work/DEFAULT.N
EXEPATH=/home/shaos/src/SDK-work/
PROJECT=MAPGEN
CURPATH=PRJ/MAPGEN
>>>\say Build MAPGEN
Build MAPGEN
>>>$src=MAIN<<<
>>>$spr=TILES<<<
>>>\if estex : checksys
---\goto radio
>>>\label checksys
>>>\if estex==radio  : radio
>>>\if estex==orion  : orion
>>>\if estex==spets  : spets
>>>\if estex==speccy : speccy
>>>\if estex==trdos  : speccy2
>>>\if estex==estex  : sprinter
---\if ${1}==clean  : clear
---\say ERROR : unknown target "${1}"
---\exit
---\label clear
---\remove ${spr}.R
---\remove ${src}.RO
---\remove ${src}.BIN
---\remove ${project}.EXE
---\remove ${project}.BIN
---\remove ${project}.bin
---\remove ${project}.tap
---\remove ${project}.trd
---\remove ${project}$.bru
---\goto endclear
---\label radio
---$syst=radio
---\goto i8080
---\label orion
---$syst=orion
---\goto i8080
---\label spets
---$syst=spets
---\label i8080
---$proc=i8080
---$abin=#0000
---$aspr=#5000
---$avar=#6000
---\goto action
---\label speccy
---$proc=i8080
---\goto speccy1
---\label speccy2
---$proc=z80
---\label speccy1
---$syst=speccy
---$abin=#8000
---$aspr=#D000
---$avar=#E000
---\goto action
>>>\label sprinter
>>>$syst=sprinter<<<
>>>$proc=z80<<<
>>>$ahdr=#3F00<<<
>>>$abin=#4100<<<
>>>$aspr=#9000<<<
>>>$avar=#A000<<<
>>>\label action
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>spr_comp -Ssprinter -O#9000 TILES.SPR

SPR_COMP v2.0 Alexander A. Shabarshin <me@shaos.net>

ORG 36864 [9000]
TYPE 8x8-2/16
SP_E   9000 : 9 bytes wrote (0)
SP_H   9009 : 9 bytes wrote (0)
SP_S   9012 : 9 bytes wrote (0)
SP_B   901B : 9 bytes wrote (0)
SP_R   9024 : 9 bytes wrote (0)
SP_F   902D : 9 bytes wrote (0)
SP_R0   9036 : 9 bytes wrote (0)
SP_0   903F : 9 bytes wrote (0)
SP_1   9048 : 9 bytes wrote (0)
OK

!!!/home/shaos/src/SDK-work/spr_comp -Ssprinter -O#9000 TILES.SPR
>>>\remove MAIN.RO
>>>robbyc -p -l MAIN.R

ROBBYC - Robby Preprocessor & Compiler v2.3.1 (Jul  8 2024)
Copyright (c) 1998-2024, Alexander "Shaos" Shabarshin
http://nedoPC.org (E-mail: me@shaos.net)

Preprocessor
<MAIN.R!>
Pass 1
Pass 2
Ok!
<MAIN.RO>
<MAIN.RLS>
Good Luck !

!!!/home/shaos/src/SDK-work/robbyc -p -l MAIN.R
>>>\need MAIN.RO
>>>\remove MAIN.A
>>>robbycc MAIN.RO -Pz80 -Ssprinter -O#4100 -B#A000

ROBBYCC v2.0.1 Robby bytecode to arbitrary code cross-compiler
Copyright (c) 2001-2024, Alexander A. Shabarshin <me@shaos.net>
Part of nedoPC SDK, see http://www.nedopc.org/nedopc/SDK

ORG  #4100
BASE #A000 [40960]
VARS 240
REGS #A220 [41504]
0000 FindCode 0x01 (offset=0x0021)
0005 FindCode 0x20 (offset=0x0026)
000C FindCode 0x20 (offset=0x002D)
0013 FindCode 0x44 (offset=0x0034)
0017 FindCode 0x20 (offset=0x0038)
001E FindCode 0x20 (offset=0x003F)
0025 FindCode 0x20 (offset=0x0046)
002C FindCode 0x20 (offset=0x004D)
0033 FindCode 0x01 (offset=0x0054)
0038 FindCode 0x01 (offset=0x0059)
003D FindCode 0x20 (offset=0x005E)
0044 FindCode 0x20 (offset=0x0065)
004B FindCode 0x20 (offset=0x006C)
0052 FindCode 0x7F (offset=0x0073)
0056 FindCode 0x20 (offset=0x0077)
005D FindCode 0x20 (offset=0x007E)
0064 FindCode 0x40 (offset=0x0085)
0076 FindCode 0x40 (offset=0x0097)
0088 FindCode 0x20 (offset=0x00A9)
008F FindCode 0x20 (offset=0x00B0)
0096 FindCode 0x20 (offset=0x00B7)
009D FindCode 0x7F (offset=0x00BE)
00A1 FindCode 0x37 (offset=0x00C2)
00B7 FindCode 0x20 (offset=0x00D8)
00BE FindCode 0x40 (offset=0x00DF)
00CC FindCode 0x20 (offset=0x00ED)
00D3 FindCode 0x7F (offset=0x00F4)
00D7 FindCode 0x20 (offset=0x00F8)
00DE FindCode 0x44 (offset=0x00FF)
00E2 FindCode 0x20 (offset=0x0103)
00E9 FindCode 0x44 (offset=0x010A)
00ED FindCode 0x20 (offset=0x010E)
00F4 FindCode 0x20 (offset=0x0115)
00FB FindCode 0x20 (offset=0x011C)
0102 FindCode 0x44 (offset=0x0123)
0106 FindCode 0x20 (offset=0x0127)
010D FindCode 0x20 (offset=0x012E)
0114 FindCode 0x40 (offset=0x0135)
0122 FindCode 0x42 (offset=0x0143)
0129 FindCode 0x20 (offset=0x014A)
0130 FindCode 0x40 (offset=0x0151)
013E FindCode 0x42 (offset=0x015F)
0145 FindCode 0x40 (offset=0x0166)
0158 FindCode 0x40 (offset=0x0179)
0166 FindCode 0x40 (offset=0x0187)
0175 FindCode 0x40 (offset=0x0196)
0184 FindCode 0x69 (offset=0x01A5)
018B FindCode 0x40 (offset=0x01AC)
0199 FindCode 0x42 (offset=0x01BA)
01A0 FindCode 0x6A (offset=0x01C1)
01A7 FindCode 0x40 (offset=0x01C8)
01B5 FindCode 0x42 (offset=0x01D6)
01BC FindCode 0x6A (offset=0x01DD)
01C3 FindCode 0x40 (offset=0x01E4)
01D1 FindCode 0x42 (offset=0x01F2)
01D8 FindCode 0x6A (offset=0x01F9)
01DF FindCode 0x40 (offset=0x0200)
01ED FindCode 0x42 (offset=0x020E)
01F4 FindCode 0x6A (offset=0x0215)
01FB FindCode 0x40 (offset=0x021C)
0209 FindCode 0x42 (offset=0x022A)
0210 FindCode 0x6A (offset=0x0231)
0217 FindCode 0x40 (offset=0x0238)
0225 FindCode 0x42 (offset=0x0246)
022C FindCode 0x6A (offset=0x024D)
0233 FindCode 0x40 (offset=0x0254)
0241 FindCode 0x43 (offset=0x0262)
0245 FindCode 0x40 (offset=0x0266)
0253 FindCode 0x43 (offset=0x0274)
0257 FindCode 0x40 (offset=0x0278)
0260 FindCode 0x42 (offset=0x0281)
0267 FindCode 0x62 (offset=0x0288)
026B FindCode 0x40 (offset=0x028C)
0275 FindCode 0x42 (offset=0x0296)
027C FindCode 0x43 (offset=0x029D)
0280 FindCode 0x43 (offset=0x02A1)
0284 FindCode 0x43 (offset=0x02A5)
0288 FindCode 0x00 (offset=0x02A9)
0289 FindCode 0x20 (offset=0x02AA)
0290 FindCode 0x33 (offset=0x02B1)
0291 FindCode 0x40 (offset=0x02B2)
02A3 FindCode 0x40 (offset=0x02C4)
02C7 FindCode 0x40 (offset=0x02E8)
02D1 FindCode 0x42 (offset=0x02F2)
02D8 FindCode 0x40 (offset=0x02F9)
02E7 FindCode 0x40 (offset=0x0308)
02F1 FindCode 0x33 (offset=0x0312)
02F2 FindCode 0x33 (offset=0x0313)
02F3 FindCode 0x37 (offset=0x0314)
030A FindCode 0x33 (offset=0x032B)
030B FindCode 0x20 (offset=0x032C)
0312 FindCode 0x20 (offset=0x0333)
0319 FindCode 0x20 (offset=0x033A)
0320 FindCode 0x40 (offset=0x0341)
032F FindCode 0x40 (offset=0x0350)
033E FindCode 0x40 (offset=0x035F)
034D FindCode 0x40 (offset=0x036E)
035C FindCode 0x40 (offset=0x037D)
036B FindCode 0x20 (offset=0x038C)
0372 FindCode 0x40 (offset=0x0393)
0381 FindCode 0x42 (offset=0x03A2)
0388 FindCode 0x20 (offset=0x03A9)
0391 FindCode 0x40 (offset=0x03B2)
039F FindCode 0x43 (offset=0x03C0)
03A3 FindCode 0x20 (offset=0x03C4)
03AA FindCode 0x20 (offset=0x03CB)
03B1 FindCode 0x40 (offset=0x03D2)
03C0 FindCode 0x42 (offset=0x03E1)
03C7 FindCode 0x40 (offset=0x03E8)
03D6 FindCode 0x42 (offset=0x03F7)
03DD FindCode 0x20 (offset=0x03FE)
03E4 FindCode 0x44 (offset=0x0405)
03E8 FindCode 0x43 (offset=0x0409)
03EC FindCode 0x20 (offset=0x040D)
03F5 FindCode 0x40 (offset=0x0416)
0403 FindCode 0x43 (offset=0x0424)
0407 FindCode 0x20 (offset=0x0428)
040E FindCode 0x40 (offset=0x042F)
041D FindCode 0x42 (offset=0x043E)
0424 FindCode 0x40 (offset=0x0445)
0433 FindCode 0x42 (offset=0x0454)
043A FindCode 0x20 (offset=0x045B)
0441 FindCode 0x44 (offset=0x0462)
0445 FindCode 0x43 (offset=0x0466)
0449 FindCode 0x20 (offset=0x046A)
0452 FindCode 0x40 (offset=0x0473)
0460 FindCode 0x43 (offset=0x0481)
0464 FindCode 0x20 (offset=0x0485)
046B FindCode 0x40 (offset=0x048C)
047A FindCode 0x42 (offset=0x049B)
0481 FindCode 0x40 (offset=0x04A2)
0490 FindCode 0x42 (offset=0x04B1)
0497 FindCode 0x20 (offset=0x04B8)
049E FindCode 0x44 (offset=0x04BF)
04A2 FindCode 0x43 (offset=0x04C3)
04A6 FindCode 0x20 (offset=0x04C7)
04AF FindCode 0x40 (offset=0x04D0)
04BD FindCode 0x42 (offset=0x04DE)
04C4 FindCode 0x40 (offset=0x04E5)
04D8 FindCode 0x40 (offset=0x04F9)
04EC FindCode 0x40 (offset=0x050D)
04FA FindCode 0x40 (offset=0x051B)
0508 FindCode 0x43 (offset=0x0529)
050C FindCode 0x20 (offset=0x052D)
0513 FindCode 0x40 (offset=0x0534)
0522 FindCode 0x42 (offset=0x0543)
0529 FindCode 0x40 (offset=0x054A)
0538 FindCode 0x42 (offset=0x0559)
053F FindCode 0x20 (offset=0x0560)
0546 FindCode 0x44 (offset=0x0567)
054A FindCode 0x43 (offset=0x056B)
054E FindCode 0x20 (offset=0x056F)
0557 FindCode 0x40 (offset=0x0578)
0565 FindCode 0x43 (offset=0x0586)
0569 FindCode 0x20 (offset=0x058A)
0570 FindCode 0x40 (offset=0x0591)
057F FindCode 0x42 (offset=0x05A0)
0586 FindCode 0x40 (offset=0x05A7)
0595 FindCode 0x42 (offset=0x05B6)
059C FindCode 0x20 (offset=0x05BD)
05A3 FindCode 0x44 (offset=0x05C4)
05A7 FindCode 0x43 (offset=0x05C8)
05AB FindCode 0x40 (offset=0x05CC)
05BE FindCode 0x40 (offset=0x05DF)
05CC FindCode 0x43 (offset=0x05ED)
05D0 FindCode 0x33 (offset=0x05F1)
05D1 FindCode 0xFF (offset=0x05F2)
Compile Ok!

!!!/home/shaos/src/SDK-work/robbycc MAIN.RO -Pz80 -Ssprinter -O#4100 -B#A000
>>>\need MAIN.A
>>>\remove MAIN.BIN
>>>\if z80!=z80 : rasm
>>>\remove MAIN.bin
>>>zmac MAIN.A
!!!/home/shaos/src/SDK-work/zmac MAIN.A
>>>\need MAIN.bin
>>>\rename MAIN.bin MAIN.BIN
>>>\remove MAIN.lst
>>>\goto bincont
---\label rasm
---rasm ${src}.A -t${EXEPATH}LIB/I8080/__RULES
>>>\label bincont
>>>\need MAIN.BIN
>>>\if sprinter==radio    : endradio
>>>\if sprinter==sprinter : sprinterexe
---\remove ${project}.bin
---\glue ${project}.bin ${src}.BIN ${abin}
---\glue ${project}.bin ${spr}.BIN ${aspr}
---\ltrim ${project}.bin
---\need ${project}.bin
---\if ${syst}==spets : endclear
---\if ${syst}==speccy : endspeccy
---bin2bru ${project}.bin ${abin}
---\need ${project}$.bru
---\remove ${project}.bin
---\goto endclear
---\label endspeccy
---\if ${1}==trdos : endtrdos
---\remove ${project}.tap
---bin2tap ${project}.bin ${abin} ${EXEPATH}LIB/Z80/SPECCY/TAPE
---\need ${project}.tap
---\remove ${project}.bin
---\goto endclear
---\label endtrdos
---\remove ${project}.trd
---\remove ${project}.trl
---\append ${project}.trl NORMAL "${project}"
---\append ${project}.trl TRUNCATED
---\append ${project}.trl hobeta "${EXEPATH}LIB/Z80/SPECCY/BOOT","boot","B"
---\append ${project}.trl binary "${project}.bin","robot","C",32768
---bin2trd ${project}.trl
---\need ${project}.trd
---\remove ${project}.trl
---\remove ${project}.bin
---\goto endclear
>>>\label sprinterexe
>>>\remove MAPGEN.EXE
>>>\glue MAPGEN.EXE /home/shaos/src/SDK-work/LIB/Z80/SPRINTER/HEAD.BIN #3F00
>>>\glue MAPGEN.EXE MAIN.BIN #4100
>>>\glue MAPGEN.EXE TILES.BIN #9000
>>>\ltrim MAPGEN.EXE
>>>\need MAPGEN.EXE
>>>\goto endclear
---\label endradio
---\rename ${src}.BIN ${project}.BIN
>>>\label endclear
>>>\remove TILES.BIN
>>>\remove TILES.R
>>>\remove MAIN.BIN
>>>\remove MAIN.LST
>>>\remove MAIN.R!
>>>\remove MAIN.RO
>>>\remove MAIN.RLS
>>>\remove MAIN.A

Ok!

_________________
https://mastodon.social/@Shaos :dj:
https://www.youtube.com/@Shaos1973


14 Jul 2024 22:34
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 120 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.