Gigatron (компьютер на рассыпухе)
Moderator: Shaos
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Gigatron (компьютер на рассыпухе)
Я поискал компилятор ассемблера для Gigatron-а... от авторов вроде как его нет, поскольку ядро системы
они вроде как написали на python...
Но нашел я по пути пару статеек, где автор, которому, похоже, Gigatron понравился, подробно расписал
как и что в этом скромном железе работает:
Gigatron TTL microcomputer
Программная архитектура Gigatron TTL microcomputer
они вроде как написали на python...
Но нашел я по пути пару статеек, где автор, которому, похоже, Gigatron понравился, подробно расписал
как и что в этом скромном железе работает:
Gigatron TTL microcomputer
Программная архитектура Gigatron TTL microcomputer
iLavr
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Re: Gigatron (компьютер на рассыпухе)
Ассемблерный текст выглядит так:
Но это не что иное, как программа на питоне. Просто в начале файла подключается asm.py
Это, как бы, "микрокод". Он делает много чего: вывод видео, звука, и наконец выполняет инструкции либо vCPU (собственно процессор, как он был задуман), либо 6502 (более поздняя дополнительная реализация).
Ассемблера для vCPU вроде нет, но программы пишутся на более высокоуровневом "языке" GCL (gcl0x.py), который компилируется в команды vCPU, и там вроде как есть возможность делать inline-вставки. Сама прорамма записывается в ПЗУ в виде таблицы (в листинге это видно):
Наличие "трамплинов" вроде как говорит о том, что программа копируется в ОЗУ, т.к. в компиляторе GCL на мой взгляд эти трамплины никак не учитываются. Считать что-либо из ПЗУ обычным способом возможности нет, поэтому данные грузятся выполняя команду ld через "трамплин". Т.е. в ПЗУ блок данных содержит этакие "дырки". Не думаю, что команды vCPU выполняются прямо из ПЗУ. Собственно, вот тут видно:
Code: Select all
#-----------------------------------------------------------------------
#
# ROM page 0: Boot
#
#-----------------------------------------------------------------------
align(0x100, 0x100)
# Give a first sign of life that can be checked with a voltmeter
ld(0b0000); C('LEDs |OOOO|')
ld(syncBits^hSync, OUT) # Prepare XOUT update, hSync goes down, RGB to black
ld(syncBits, OUT) # hSync goes up, updating XOUT
# Simple RAM test and size check by writing to [1<<n] and see if [0] changes or not.
ld(1); C('Quick RAM test and count')
label('.countMem0')
st([memSize],Y); C('Store in RAM and load AC in Y')
ld(255)
xora([Y,0]); C('Invert value from memory')
st([Y,0]); C('Test RAM by writing the new value')
st([0]); C('Copy result in [0]')
xora([Y,0]); C('Read back and compare if written ok')
bne(pc()); C('Loop forever on RAM failure here')
ld(255)
xora([Y,0]); C('Invert memory value again')
st([Y,0]); C('To restore original value')
xora([0]); C('Compare with inverted copy')
beq('.countMem1'); C('If equal, we wrapped around')
ld([memSize])
bra('.countMem0'); C('Loop to test next address line')
adda(AC); C('Executes in the branch delay slot!')
label('.countMem1')
Это, как бы, "микрокод". Он делает много чего: вывод видео, звука, и наконец выполняет инструкции либо vCPU (собственно процессор, как он был задуман), либо 6502 (более поздняя дополнительная реализация).
Ассемблера для vCPU вроде нет, но программы пишутся на более высокоуровневом "языке" GCL (gcl0x.py), который компилируется в команды vCPU, и там вроде как есть возможность делать inline-вставки. Сама прорамма записывается в ПЗУ в виде таблицы (в листинге это видно):
Code: Select all
fae8 0011 ld $11 ;05ac LDWI
fae9 00a0 ld $a0
faea 007f ld $7f
faeb 00cf ld $cf ;05af CALL
faec 0018 ld $18 ;05af vAC
faed 00b4 ld $b4 ;05b1 SYS
faee 00e2 ld $e2
faef 0006 ld $06 ;| RAM segment address (high byte first)
faf0 00f9 ld $f9 ;|
faf1 0007 ld $07 ;| Length (1..256)
faf2 0011 ld $11 ;06f9 LDWI
faf3 0000 ld $00
faf4 0002 ld $02
faf5 005e ld $5e ;06fc ST
faf6 001c ld $1c
faf7 00cf ld $cf ;06fe CALL
faf8 0018 ld $18 ;06fe vAC
faf9 007f ld $7f ;| RAM segment address (high byte first)
fafa 00a0 ld $a0 ;|
fafb fe00 bra ac ;+-----------------------------------+
fafc fcfd bra $fafd ;| |
fafd 1404 ld $04,y ;| Trampoline for page $fa00 lookups |
fafe e065 jmp y,$65 ;| |
faff c218 st [$18] ;+-----------------------------------+
fb00 0017 ld $17 ;| Length (1..256)
fb01 00e3 ld $e3 ;7fa0 ADDI
fb02 000b ld $0b
fb03 002b ld $2b ;7fa2 STW
fb04 001a ld $1a ;7fa2 '_vLR'
fb05 0011 ld $11 ;7fa4 LDWI
fb06 003d ld $3d
fb07 00dc ld $dc
fb08 002b ld $2b ;7fa7 STW
fb09 0024 ld $24
fb0a 00b4 ld $b4 ;7fa9 SYS
fb0b 00e2 ld $e2
fb0c 0011 ld $11 ;7fab LDWI
fb0d 0000 ld $00
fb0e 0002 ld $02
fb0f 002b ld $2b ;7fae STW
fb10 001a ld $1a ;7fae '_vLR'
fb11 0011 ld $11 ;7fb0 LDWI
fb12 006f ld $6f
fb13 00e8 ld $e8
fb14 002b ld $2b ;7fb3 STW
fb15 0024 ld $24
fb16 00b4 ld $b4 ;7fb5 SYS
fb17 00e2 ld $e2
fb18 0000 ld $00 ;End of Apps/MainMenu/MainMenu_v4.gcl, size 939
Code: Select all
a54e 0090 ld $90 ;0ff2 BRA
a54f 00a0 ld $a0
a550 0000 ld $00 ;End of Apps/Racer/Racer_v2.gcl, size 1868
;+-----------------------------------+
;| Apps/Mandelbrot/Mandelbrot_v1.gcl |
;+-----------------------------------+
Mandelbrot: a551 0002 ld $02 ;| RAM segment address (high byte first)
a552 0000 ld $00 ;|
a553 00ef ld $ef ;| Length (1..256)
a554 00cd ld $cd ;0200 DEF
a555 00e8 ld $e8
a556 0075 ld $75 ;0202 PUSH
a557 0059 ld $59 ;0203 LDI
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Re: Gigatron (компьютер на рассыпухе)
Ассемблер для vCPU всё же есть: vasm.py, два года назад, когда я скачивал репозиторий его не было.
Программа на vasm
Программа на vasm
Code: Select all
# Please build this from the Makefile
from vasm import *
p=0x30 # User variables start from $30 in zero page
ORG(0x200) # User programs can start from $200
- LDWI(0x800) # Top left pixel
- STW(p) # Pointer variable p
L('Loop'); POKE(p) # Update pixel
- ADDI(1) # Increment vAC
- BRA('Loop') # Loop forever
END(0x200) # Execution start address
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Gigatron (компьютер на рассыпухе)
Репозиторий я тоже скачал 28 июля 2020 г., сам еще толком не разбирался, что там, но пишут, что:b2m wrote:Ассемблер для vCPU всё же есть: vasm.py, два года назад, когда я скачивал репозиторий его не было.
С таким "винигретом" ковыряться было неохота, и я решил поискать отдельный компилятор ассемблера....существует единый компилятор для нативного асма, vCpu и Gcl в одном флаконе — он там же в исходниках лежит.
Gigatron всё же довольно популярным оказался: его и на ПЛИС уже повторили, и софт народ пытается
писать - может кто и слепил уже отдельный удобный компилятор ассемблера...
iLavr
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Re: Gigatron (компьютер на рассыпухе)
Если почитать документ по языку GCL, то становится понятно, что этот язык и ассемблер vCPU - это практически одно и то-же, просто разные варианты синтаксиса.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Gigatron (компьютер на рассыпухе)
Нет желания ковыряться в их хитровыдуманных языках GCL и виртуальном ассемблер vCPU...
Есть такая мысль, что Gigatron в принципе нетрудно повторить в Proteus, и на родном ассемблере
он, по идее, должен довольно шустро шевелиться даже в виде модели...
Непонятным для такого проекта представляется устройство ввода: в оригинале - это либо "джойстик"
от "Денди", либо PS/2 клавиатура через адаптер на ATTiny...
Есть такая мысль, что Gigatron в принципе нетрудно повторить в Proteus, и на родном ассемблере
он, по идее, должен довольно шустро шевелиться даже в виде модели...
Непонятным для такого проекта представляется устройство ввода: в оригинале - это либо "джойстик"
от "Денди", либо PS/2 клавиатура через адаптер на ATTiny...

iLavr
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Re: Gigatron (компьютер на рассыпухе)
Ну, светодиодами поморгать ты "на родном ассемблере" в Proteus-е сможешь, а вот формировать видео-сигнал и паралельно делать что-либо полезное у тебя вряд-ли получится.Lavr wrote:Gigatron в принципе нетрудно повторить в Proteus, и на родном ассемблере
он, по идее, должен довольно шустро шевелиться даже в виде модели
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Gigatron (компьютер на рассыпухе)
Это просто будет очень медленно, но непреодолимых препятствий этому нет, и на хорошем современномb2m wrote:...светодиодами поморгать ты "на родном ассемблере" в Proteus-е сможешь, а вот формировать видео-сигнал и паралельно делать что-либо полезное у тебя вряд-ли получится.
компьютере шевелиться всё будет.
Библиотека dll с исходным кодом для цветного дисплея у нас в Proteus-е давно есть - это не проблема. Большая, но тоже принципиально преодолимая проблема - это как раз устройство ввода.
Клавиатуру или "джойстик" придётся "нарисовать" заново, как я делал в проекте EDUC-8 Microcomputer.
Просто это выполнимая, но объёмная и совершенно неинтересная работа...

You do not have the required permissions to view the files attached to this post.
iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Подборка процессоров на россыпухе
По образу-то, действительно по образу, вот только коды, к сожалению, не совпадают даже частично...Lavr wrote:Дешифрация кода команды сделана, действительно, по образу 6502 ...

Ассемблерные коды Gigatron взяты отсюда: Programming the Gigatron
You do not have the required permissions to view the files attached to this post.
iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Подборка процессоров на россыпухе
Да, я тоже по случаю прочитал вот тут: In Memoriam - Marcel van Kervinck что-то типа эпитафии...Shaos wrote:Пишут Марсель умер: https://forum.gigatron.io/viewtopic.php?f=5&t=235

iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Gigatron (компьютер на рассыпухе)
Есть вот какое предположение на этот повод:Lavr wrote:Есть такая мысль, что Gigatron в принципе нетрудно повторить в Proteus, и на родном ассемблере
он, по идее, должен довольно шустро шевелиться даже в виде модели...
1. В оригинале Gigatron работает с "джойстиком" от "Денди", следовательно, на родном ассемблере
он должен быть способен поддерживать и родную клавиатуру от "Денди", которая работает через
порт "джойстика":
Такую клавиатуру смоделировать в Proteus и просто, и даже интересно!

2. Конечно, это круто, что Gigatron работает на VGA-монитор без лишнего железа!

Но это и съедает его довольно неслабую тактовую частоту в 6.25 МГц...
А вот если исключить эту опцию, в которой и прелести-то особой нет: всего-то 160х120 точек,
и подключить на этот порт обычный LCD дисплейчик с интерфейсом SPI, то процессор станет свободен
от необходимости постоянного видеовывода, и его мощности можно обратить на полезную программу.

LCD дисплейчик не обязательно брать от NOKIA 3310, сейчас выбор дисплейчиков побогаче!
С этими двумя решениями Gigatron и под Proteus должен приемлемо шевелиться...
Только вот с софтом у Gigatron-а всё довольно запутанно...

iLavr
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Re: Gigatron (компьютер на рассыпухе)
Да, если процессору vCPU остаются такты только во время обратного хода луча по вертикали, то он получит не больше 9% времени. (из 525 остаются только 45 и то не полность). Но!Lavr wrote:Конечно, это круто, что Gigatron работает на VGA-монитор без лишнего железа!![]()
Но это и съедает его довольно неслабую тактовую частоту в 6.25 МГц...
Размер точки Gigatron-а 4х4 пикселя, то есть он повторяет каждую сканлинию 4 раза. И есть режимы, когда некоторые сканлинии остаются чёрными (в первой версии только одна из 4-х, в последних до трёх из 4-х). То есть даже если имеем только одну чёрную, то будет (45+120)/525 уже почти 30%, а с тремя будет уже около 77%. Правда в таком режиме картинка уже выглядит коряво.
Режим переключается кнопкой на джойстике в любой момент.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Gigatron (компьютер на рассыпухе)
так как там видео генерируется программно, то надо полагать весь существующий софт ожидает телевизора...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Re: Gigatron (компьютер на рассыпухе)
Почему телевизора? Там же написано, VGA 640x480 59.94Hz
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Gigatron (компьютер на рассыпухе)
Ну в штатах почти все телеки умеют VGA 59.94Hzb2m wrote:Почему телевизора? Там же написано, VGA 640x480 59.94Hz

Я тут за главного - если что шлите мыло на me собака shaos точка net