Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

Mondx
Doomed
Posts: 652
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by Mondx »

Alekcandr wrote: 13 Apr 2026 09:34Ассемблеры уровня М80 сейчас никому не нужны, никто в них не решает сложных задач.
Здрасте. А кто и в чём сейчас будет писать под ретро?)
Кстате, асм поддержка есть практически у всех современных МК. МК!, а не МП, понимаешь ли...)
Всегда!
begoon
Maniac
Posts: 204
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Добавил headless режим для терминального эмулятора. В headless нет никакого рендера вообще, так что можно запускать эмулятор в скриптовом режиме.

Например:

Code: Select all

npx rk86 --headless \
  --input "KeyD,KeyF,Digit8,Digit0,Digit0,Comma,KeyF,Digit8,KeyF,KeyF,Enter" \
  --timeout 10 \
  --screen out.txt | cat out.txt
и получить
command-d.png
или

Code: Select all

npx rk86 --headless \
  --exit-halt \                                                               
  --input "KeyM,Enter,Digit7,Digit6,Enter,Period,KeyG,Digit0,Enter" \
  --screen out.txt \
  --memory mem.bin --memory-from 0x0000 --memory-to 0x0000 | cat out.txt
и получить
command-m.png
пока вот такие есть опции для headless и не только:

Code: Select all

  -m <файл>                монитор (по умолчанию: встроенный mon32.bin)
  -p                       загрузить файл без запуска
  -g <адрес>               адрес запуска (несовместим с -p)
  --exit-halt              выход при выполнении HLT
  --exit-address [адрес]   выход при переходе на адрес (по умолчанию: 0xFFFE)
  --headless               без отображения экрана (для автотестов)
  --timeout <сек>          выход по таймауту
  --memory <файл>          сохранить память в файл при выходе
  --memory-from <адрес>    начало области дампа памяти (по умолчанию: 0x0000)
  --memory-to <адрес>      конец области дампа памяти включительно (по умолчанию: 0xFFFF)
  --screen <файл>          сохранить экран 78x30 как текст при выходе
  --input <seq>            инъекция клавиш (через запятую): KeyA,Digit1,Enter,...
You do not have the required permissions to view the files attached to this post.
begoon
Maniac
Posts: 204
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Перевел онлайновый эмулятор с ассемблера Славинского (при всем уважении -- отличный ассемблер) на asm8.
asm.png
Добавил Volcano, Лестницу, Сокобан и еще несколько реальных программ в каталог примеров, чтоб можно запускать прямо из исходников.
You do not have the required permissions to view the files attached to this post.
Last edited by begoon on 20 Apr 2026 13:02, edited 1 time in total.
imsushka
Doomed
Posts: 387
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by imsushka »

begoon
Maniac
Posts: 204
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

В терминальной версии добавил "турбо" режим, чтобы в пакетном/скриптовом/headless режиме скорость была максимальной, что дает компьютер, а не 1.7-2МГц РК.
teminal.png
You do not have the required permissions to view the files attached to this post.
begoon
Maniac
Posts: 204
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

imsushka wrote: 20 Apr 2026 11:40 https://github.com/hperaza/RSX180/tree/master/games

вот еще игрушки
О! Сдешний реверс Volcano весьма неплохо откомментирован. Спасибо.

А может это и не реверс, а, собственно, исходник...

Я обновил свой реверс.
b2m
Devil
Posts: 948
Joined: 26 May 2003 06:57

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by b2m »

begoon wrote: 20 Apr 2026 12:47А может это и не реверс, а, собственно, исходник...
Исходник? В мнемониках Z80? Для Радио-86РК? Оригинально... :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
begoon
Maniac
Posts: 204
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Не совсем. Там код на Z80 немного отличается от версии РК: размер экрана, некоторые константы и пр.

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

А в целом, почему я подумал, что это таки оригинал, который уже после перепёрли на РК, потому что исходник вообще чист, нет следов реверса, все имена в стиле 6-символьных меток и пр. В общем, признаки программирования из 80-х на сообразных машинах.
Mondx
Doomed
Posts: 652
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by Mondx »

b2m wrote: 20 Apr 2026 23:59 Исходник? В мнемониках Z80? Для Радио-86РК? Оригинально... :)
Тоже предпочитал мнемонику z80, даже для РК (совсем чуть-чуть). Считаю её более стройной, нежели i8080.
b2m
Devil
Posts: 948
Joined: 26 May 2003 06:57

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by b2m »

Mondx wrote: 21 Apr 2026 00:50Тоже предпочитал мнемонику z80, даже для РК (совсем чуть-чуть). Считаю её более стройной, нежели i8080.
Ну не знаю. Сравни:

Code: Select all

загрузи hl,1
загрузи (место1),hl
загрузи a,2
загрузи (место2),a
и

Code: Select all

установи_пару hl, 1
сохрани_hl место1
установи_рег а, 2
сохрани_a место2
Мнемоники Z80 - это язык Эллочки-людоедки.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
Mondx
Doomed
Posts: 652
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by Mondx »

Ну почему же. У z80 мнемоника чётко обозначает операцию. И аргументы тоже четко указывают на аргументы). У 8080 же в мнемонике содержится и доп. инфо по аргументам. Получается что мнемоник у 8080 больше! Да, у z80 получается лаконичнее.)
Касательно построения ассемблеров/дизассемблеров мнемоника 8080 проще. Я говорю только о наборе команд 8080. С командами z80, а тем более недокументированными, там чёрт ногу сломит. Но, всё реально, проходили.
begoon
Maniac
Posts: 204
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by begoon »

Прикрутил все три компилятора одинаковым образом в эмулятор: ассемблер, C (c8080) и PL/M.

Примеры компилируются, и можно запускать в эмуляторe.
compilers.png
You do not have the required permissions to view the files attached to this post.
DmitryMilk
Senior
Posts: 109
Joined: 12 May 2025 21:56

Re: Эмуляторы I8080/КР580ВМ80A и Радио-86РК на JavaScript

Post by DmitryMilk »

Mondx wrote: 21 Apr 2026 03:06 Ну почему же. У z80 мнемоника чётко обозначает операцию. И аргументы тоже четко указывают на аргументы). У 8080 же в мнемонике содержится и доп. инфо по аргументам. Получается что мнемоник у 8080 больше! Да, у z80 получается лаконичнее.)
Зато в мнемониках i8080 принципиально невозможно написать "невозможные" команды, типа LD c, (de), потому что либо обычные MOV, где не любая регистровая пара, а только M=(HL), либо LDAX/STAX, которые могут только в/из неявный аккумулятор.