Sprinter BIOS

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Sprinter BIOS

Post by Shaos »

Исходники биоса выкладываю сюда коммитами от версии к версии:

https://gitlab.com/sprinter-computer/bios

Версии BIOS:

Code: Select all

;---------------------------------------------------------------
;Rev	Date	   Name	Description
;---------------------------------------------------------------
;Версия 3.04
;R0046  16.06.2003 IM   Исправления для совместимости video с Sp2000
;R0046  13.06.2003 IM   Исправления глюков в режиме ZX
;R0046  02.06.2003 IM   Исправления для видео-ОЗУ AS7C1024A-JC12
;Версия 3.03
;R0045  05.02.2003 IM   Исправления для видео-ОЗУ AS7C1024-JC12
;Версия 3.02
;R0044  01.10.2002 IM   Добавления в прошивке
;Версия 3.00.253 (10.04.2002) UPDATE01
;R0043  01.04.2002 IM   Перекомпилена прошивка для ПЛМ для SIMM
;R0042  10.03.2002 DNS  Setup 253
;Версия 2.17.252 (03.03.2002) UPDATE-beta-version
;R0041  03-03-2002 IM   Подправлены цвета в функции CGA палитры
;R0040  02-03-2002 IM   Исправлен глюк функции выдачи портов
;R0039  02-03-2002 IM   Добавлены чтение палитры и текстовая CGA палитра
;Версия 2.16.252 (27.02.2002) WORK
;R0038  27-02-2002 IM   Сообщение об отсутствии Spectrum-ROM
;R0037  26-02-2002 IM   Жестко закреплены страницы 41h..47h за Spectrum.ROM
;R0036  25-02-2002 IM   Добавлен внутренний порт для возврата в ZX/FN
;R0035  22-02-2002 IM   В BIOS добавлена функция установки Original-INT
;R0034  21-02-2002 IM   Добавлена функция BIOS, переключающая 720/1.44
;Версия 2.15.252 (18.02.2002) WORK
;R0033  18-02-2002 IM   Исправление для ISA
;R0032  12-02-2002 IM   Добавлена функция чтения ROM-Disk-а
;R0031  12-02-2002 IM   Исправлена функция BIOS чтения/записи RAM-Disk-ов
;R0030  12-02-2002 IM   Исправлена схема COVOX-Blaster-а
;R0029  08-02-2002 IM   Полностью измененa схема доступа к ПЗУ/Fast-RAM/ISA
;Версия 2.14.252 (01.02.2002) WORK
;R0028  01-02-2002 DNS  Добавлен сдвиг экрана в setup
;Версия 2.13.251 (10.11.2002) WORK
;R0027  23-01-2002 IM   COVOX-Blaster 16bit, 110khz, stereo
;R0026  17-01-2002 IM   Исправлена ошибка в функции FN_PIC1
;Версия 2.12.251 (10.11.2002) RELEASE
;R0025  10-01-2002 IM   Смещен экран на 1 знакоместо влево
;Версия 2.11.251 (08.01.2002) WORK
;R0024  10-01-2002 IM   Исправление предыдущего исправления
;R0023  08-01-2002 IM   Исправления в BIOS-е (перезагрузка ПЛМ)
;R0022  08-01-2002 IM   разборки с FDD
;Версия 2.10.251 (25.12.2001) RELEASE
;R0020  23-12-2001 IM   коррекция синхронизации в ПЛМ
;R0019  20-12-2001 IM   убрано R0018 - NMI
;Версия 2.09.251 (18.12.2001) WORK (for Denis only!)
;R0018  18-12-2001 IM   изменена прошивка ПЛМ (добавлен NMI)
;R0017  17-12-2001 IM   изменена прошивка ПЛМ (исправления для SIMM)
;R0016  15-12-2001 IM   изменена прошивка ПЛМ (исправления SINC)
;R0015  14-12-2001 IM   добавлен пункт "L" в Post
;R0014  19-11-2001 IM   обезглюченая прошивка для Winbond
;R0013  18-11-2001 IM   возвращен старый copyright в Basic128
;Версия 2.08.251 (17.11.2001) WORK
;R0012  17-11-2001 IM   изменена прошивка ПЛМ от 17-ноя-2001
;Версия 2.07.251 (11.11.2001) WORK
;R0011  11-11-2001 IM   изменена прошивка ПЛМ от 11-ноя-2001
;Версия 2.06.251 (07.11.2001) WORK
;R0010  07-11-2001 IM   изменена прошивка ПЛМ от 07-ноя-2001
;Версия 2.06.251 (05.11.2001) WORK
;R0009  05-11-2001 IM   изменена прошивка ПЛМ от 05-ноя-2001
;Версия 2.05.251 (xx.xx.2001) WORK
;R0008	xx-xx-2001 IM	-- описание изменений --
;Версия 2.04.251 (27.10.2001) RELEASE
;R0007	27-10-2001 IM	изменена прошивка ПЛМ от 27-окт-2001
;R0006	12-10-2001 IM	перекопана прошивка ПЛМ от 12-окт-2001
;Версия 2.04.250 (04.10.2001) WORK
;R0005	04-10-2001 DNS	вставлен новый ROM.BIN от 4-окт-2001
;Версия 2.04.249 (22.09.2001) WORK
;R0004	22-09-2001 DNS	вставлен новый ROM.BIN от ...хм.. не помню..
;R0003	22-09-2001 IM	исправление названий в меню "Hardware"
;R0002	22-09-2001 IM	вставлен номер ПЗУ и функция биоса для него 0EDh
;R0001	22-09-2001 IM	добавлена функция GOTO Spectrum 0FBh
;Версия 2.03.248 (08.06.2001) WORK
;---------------------------------------------------------------
;Revisions:
;R0044 - Введены биты порта управления управления:
;       бит выключения RESET
;       бит включения NMI по <alt>+<F12>
;       бит отключения ZX-screen (совмещен с битом Sprinter/Spectrum)
;R0036 - Спец-функция для sprinter.exe Установка внутреннего порта EE
;       в не 0 приводит к переходу в установленную страницу и продолжению
;       работы программы, установившей перехват
;R0033 - В режиме Sprinter введен старый доступ к ISA через порт 1FFD и
;       PAGE3=D0..DF
;R0031 - В функции чтения/записи RAM-Disk-ов был жестокий глюк...
;       она вообще не работала
;R0030 - Убраны сбои при проигрывании в режиме с прерываниями, когда
;       в CBL записываются лишние или недозаписываются байты...
;       по прерыванию CBL внутренний счетчик устанавливается на 00h или 80h
;R0029 - Введено разделение Sprinter и Spectrum режимов.
;       В режиме Spectrum и Sprinter-ZX все ПЗУ находятся в ОЗУ
;       Изменен доступ к ПЗУ и Fast-RAM доступ стал быстрее. Изменилась
;       адресация страниц Fast-RAM и ROM. Адресуются через порт 5F в режиме
;       SYSTEM-on. Введен полный запрет доступа к RAM во время работы с ПЗУ
;       ОЗУ в этот момент свободно для других функций (потребуется для DMA)
;       Скорость работы в Fast-RAM выведена на максимум (без вайтов).
;       Выкинуты ПЗУ Spectrum-а из BIOS.
;R0026 - Исправлена ошибка в функции FN_PIC1. Были неверная отработка
;       номера окна и несохранение порта RGADR.
;R0024 - последствия R0023, в Турбо возникло занижение скорости из-за
;       переключения управляющего регистра на boundary вместо wait
;R0023 - обнаружена и устранена ошибка в программе перезагрузки ПЛМ извне
;       (через КЭШ) был неверно инициализирован boundary-регистр Z84C15
;R0022 - убран глюк работы с FDD, возникший после корректировки работы с
;       SIMM-ами (подаваемые на FDD данные обрывались раньше времени)
;R0020 - убран глюк несовместимости прошивки "старой" и "новой" партий плат
;R0018 - "дикий" NMI - по alt+F12 просто подается NMI, ничего более не
;       отслеживается
;R0017 - введены задержки (input delay in MAX+) для ввода данных с SIMM-а,
;       изменена времянка сигнала /WE на SIMM
;R0016 - Добавлена схема подавления джиттера строчной синхронизации
;       давится джиттер +/- 0.25мкс
;R0015 - Перед загрузкой ПЛМ зажигается "L" на индикаторе Post-Tester-a
;R0014 - убран глюк под меню help на Winbond-ах (проверить!)
;R0012 - закреплено исправление для ISA, видео-ОЗУ улучшение для UMC
;R0011 - закреплено исправление для ISA, по видео-ОЗУ откат до 2.04 версии
;R0010 - дополнительное удаление глюков с видео-ОЗУ
;R0009 - частичное удаление глюков с видео-ОЗУ
;R0007 - исправление множественных глюков при работе с SIMM методом
;       перекомпиляции с новыми опциями MAX-Plus.
;R0006 - дополнительное исправление глюков при работе с SIMM.
;
Версии SETUP:

Code: Select all

;---------------------------------------------------------------
;Rev	Date	   Name	Description
;---------------------------------------------------------------
;Изменения в build'e 2.53
;R06	16-02-2002 DNS	Add CMOS install routine. Disabled TRDOS install routine.
;Изменения в build'e 2.52
;R05	28-01-2002 DNS	Add new items to SETUP Utility for screen position.
;Изменения в build'e 2.51
;R04	14-09-2001 DNS	Added procedure GET_BOARD_NUMBER and
			Removed 2 IDE (if with_2ide)
;Изменения в build'e 2.50
;R03a   02-08-2001 DNS	ADD BUILD-IN CD DRIVER (Not release)
;R03	30-07-2001 DNS  Developed a new IDE DETECT routine and fixied any bugs
;R02    25-07-2001 DNS  Add Secondary IDE
;Изменения в build'e 2.48
;R01	23-04-2001 DNS	Removed procedure GET_ID and make new which
;                       will be take Model Name.
;R00	xx-xx-2000 DNS	New BIOS for Sp2000 build 2.48
;---------------------------------------------------------------
;Revisions:
;R01 - Функция GET_ID на платах Sprinter97, получала даты создания и
;      прошивки ПЗУ, на платах Sp2000 было введино понятие модели.
;R02 - Автодетект 4х устройств
;R03 - Добавлена работа всех функций со вторым IDE каналам, работает
;      нестабильно, возможно железо, начата работа над чтением с CD,
;      исправлена ошибка (при определении CDROMа не указывался признак
;      MASTER/SLAVE в параметрах IDE(#FE:#C1C0-#C1CF).
;R04 - Добавлен вывод номера платы (функция #ED) при старте компьютера,
;      работа со вторым IDE перенесена в условную компиляцию (if with_2ide)
;----------------------------------------------------------------
Последние исходники, что есть в архиве Ивана:
Версия 2.17.252 (03.03.2002) UPDATE-beta-version
Получается отсутсвуют исходники 3.04, 3.03, 3.02 и 3.00.253
Есть бинарники 304 (глючный?), 303 и 300 (тот что у меня стоит сейчас)...

P.S. Вот как собирается прошивка (взято из _MAKE_SP.BAT):

Code: Select all

@REM clear all ROM
del _sprin.bin
disk3.com _sprin.bin exp.bin 00000H,800H,1400H
disk3.com _sprin.bin _sprin.bin 800H,800H,0
disk3.com _sprin.bin _sprin.bin 1000H,1000H,0
disk3.com _sprin.bin _sprin.bin 2000H,2000H,0
disk3.com _sprin.bin _sprin.bin 4000H,4000H,0
disk3.com _sprin.bin _sprin.bin 8000H,8000H,0
disk3.com _sprin.bin _sprin.bin 10000H,10000H,0
disk3.com _sprin.bin _sprin.bin 20000H,20000H,0

@REM write first 64k ROM
disk3.com _sprin.bin exp.bin 20000H,4000H,0
disk3.com _sprin.bin DCP.LZ 21400H,1400H,0

@REM Denis part
disk3.com _sprin.bin den_bios\setup.253 00000H,4000H,0

disk3.com _sprin.bin sp2000st.bin 30000h,100h,0
disk3.com _sprin.bin ..\ALTERA\sp2000_t.bin 30100h,59215

call version.bat
disk3.com _sprin.bin vers.bin 3FFD0H,30H,0

make_num _sprin.bin 18
disk3.com это небольшая утилитка, которая создаёт образ прошивки и размещает туда бинари

Code: Select all

DISK3.COM OUTPUT_FILE INPUT_FILE OUTPUT_OFFSET,LENGHT,INPUT_OFFSET
version.bat пишет дату и время сборки в vers.bin:

Code: Select all

date >list<enter
time >>list<enter
dir _sprin.bin>>list
disk3 vers.bin list 0,0AH,10CH
disk3 vers.bin list 0AH,0DH,11BH
disk3 vers.bin list 17H,0EH,050H
disk3 vers.bin list 24H,0CH,12H
sp2000st.bin это загрузчик - собирается отдельно
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Sprinter BIOS

Post by Shaos »

Вытащил прошивки Альтеры и код Ивана из каждого образа ПЗУ что есть у меня на руках - вот MD5 хеши альтеровских прошивок:

Code: Select all

85d6d4efccbc10203cd467022c922840  BIOS212alt.BIN
4d41c7fac240765adde96ad58a8c8b23  BIOS215alt.BIN
8d5add2970916dd0abc9f5cdbaa649c2  BIOS216alt.BIN
8d5add2970916dd0abc9f5cdbaa649c2  BIOS217alt.BIN
8418408d9e581466294bdd886ddace13  BIOS300alt.BIN
a5ce09b1ae4a0cabe6a2fb7f6134858a  BIOS303alt.BIN
c3d9f5432e676a8d66fe601f8fc61942  BIOS304alt.BIN
а вот MD5 хеши Иванмаковской части биоса (между 303 и 304 разница только в выводимом номере версии):

Code: Select all

03a306b6581296c5ab10c3bf8806645f  BIOS212exp.BIN
3d729e8cce85b00af94aa9068dc52d35  BIOS215exp.BIN
523c99a6006c7da6a289705f669dcd7e  BIOS216exp.BIN
6c36bb521dd1704a921bf64f2936ad06  BIOS217exp.BIN
f986b9cc961e3588a9eb6f920bb39ad2  BIOS300exp.BIN
faa1d249df631b0f6ae876285cbcf6c3  BIOS303exp.BIN
a5723b905837f44dea40d59eaf11740f  BIOS304exp.BIN
и на последок MD5 хеши Париновской части биоса (aka "SETUP"):

Code: Select all

0b592ac71357424f5ce5ce460ee1fc4b  BIOS212set.BIN -> 251
45580266c716b0f01bbd4a86f2aecb63  BIOS215set.BIN -> 252
45580266c716b0f01bbd4a86f2aecb63  BIOS216set.BIN -> 252
45580266c716b0f01bbd4a86f2aecb63  BIOS217set.BIN -> 252
f4275988a826eb1ff1ab6465d398ce23  BIOS300set.BIN -> 253
f4275988a826eb1ff1ab6465d398ce23  BIOS303set.BIN -> 253
f4275988a826eb1ff1ab6465d398ce23  BIOS304set.BIN -> 253
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Sprinter BIOS

Post by Shaos »

Вот чего меняется в образе ПЗУ если make_num IMAGE.BIN 7 сделать:

Code: Select all

1c1
< 00000000  f3 76 ff ff 58 7e 83 d4  ff ff ff ff ff ff ff ff  |.v..X~..........|
---
> 00000000  f3 76 ff ff 3b 0d 05 80  ff ff ff ff ff ff ff ff  |.v..;...........|

786c786
< 00020000  c3 00 01 00 00 24 00 00  f5 3e 00 d3 3c f1 18 0b  |.....$...>..<...|
---
> 00020000  c3 00 01 00 00 07 00 00  f5 3e 00 d3 3c f1 18 0b  |.........>..<...|
20000 - это EXP (иванмаковская часть) - там только 1 байт поменялся - как раз тот самый 7
а вот в 00000 - это который SETUP & EXTENDED (париновская часть) - поменялось побольше (4 байта контрольная сумма говорят)

P.S. Вчера экспериментально подтверждено, что иванмаковские исходники, собираемые в эмуляторе CP/M-80, запущенном в эмуляторе DOS, создают результат бинарно идентичный версии биос 2.17, как и предполагалось ранее:
Shaos wrote:Последние исходники, что есть в архиве Ивана:
Версия 2.17.252 (03.03.2002) UPDATE-beta-version
Получается отсутсвуют исходники 3.04, 3.03, 3.02 и 3.00.253
Есть бинарники 304 (глючный?), 303 и 300 (тот что у меня стоит сейчас)...
Исходники 300, 303 и 304 придётся восстанавливать дизассемблируя различия с 217 (аналогично тому, как я восстановил исходники OrgAsm)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Sprinter BIOS

Post by Shaos »

В данный момент я застрял на сборке париновской части - там есть пара файликов, которые собираются неким z80asm (которого нет в архиве):

Code: Select all

	ORG	#8000
	DB	"SETUP"
	JR	JUMP
	DB	"(C) 2001 PETERS Plus Ltd "
JUMP	DI 
	POP	HL
	LD	SP,#7FFF
	PUSH	HL
	PUSH	AF
	LD	HL,#8000
	PUSH	HL
	LD	DE,#D000
	PUSH	DE
	LD	HL,DEPAKER
	LD	BC,LENBLOK
	LDIR 
	LD	HL,PAKCODE
	LD	DE,#8000
	RET 

DEPAKER
	INCLUDEBIN DEPACK.BIN
;LCODE	EQU $-DEHRUST

PAKCODE
	INCLUDEBIN CSETUP.BIN
LENBLOK	EQU	$-DEPAKER

	DB	$/256+1*256-$ DUP (#FF)

я попробовал некоторые z80asm-ы (включая виндовый Анисковца, который советовался петерсами для кросс-сборки в 2002) - никто это не берёт (затыкаются на последней строчке) - видимо надо исходник переделать подо что-то другое...

P.S. суть этого куска - взять запакованный сетап, разархивировать его дехрустом и запустить, при этом за упакованным кодом должно идти некоторое количество FF-ов - этот кусок, как и другой, собирающий вместе все бины, не меняется от версии к версии - так что я пожалуй его просто перепишу и положу во все версии...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Sprinter BIOS

Post by Shaos »

Начал выкладывать исходники биоса:

https://gitlab.com/sprinter-computer/bios
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Sprinter BIOS

Post by Shaos »

RomanRom2 любезно поделился фоткой ПЗУх, нормально работающих в Спринтере:
ROMs.jpg
RomanRom2 wrote:оттестированные мной ПЗУ на чтение. т.е. запись в них из доса спринтера не проверялась.
в целом они были закуплены по принципу "256к размерчик", это любые хххх020 микросхемы, какие нашел
28SF040 (512кб) взял до кучи. тоже работают если записать прошивку в нужную половину. я записывал в обе сразу что бы не думалось ))
Но прошиваться на самом Спринтере могут только вот такие (взято из исходников прошивалки):

Code: Select all

        CALL READ_ID_ROM
        EX DE,HL
        LD HL,0B6BFh
        AND A
        SBC HL,DE
        JP Z,SST39SF020

        LD HL,076BFh
        AND A
        SBC HL,DE
        JP Z,SST39SF020

        LD HL,010BFh
        AND A
        SBC HL,DE
        JP Z,SST29EE020

        LD HL,024BFh
        AND A
        SBC HL,DE
        JP Z,SST29EE020

        LD HL,045DAh
        AND A
        SBC HL,DE
        JP Z,W29C020
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net