vak: (Default)
[personal profile] vak
В юности мечтал заиметь компьютер с процессором Z80, и вот наконец-то. Частота 7.37 МГц, 32 килобайта ОЗУ, 8 килобайт ПЗУ, последовательный порт с внешним адаптером на USB. ПЗУ на самом деле 64 килобайта, то есть 8 блоков по 8к. Джампером можно выбрать бейсик или монитор.



Так стартует монитор:
Small Computer Monitor - RC2014
*?
Small Computer Monitor by Stephen C Cousins (www.scc.me.uk)
Version 1.0.0 configuration R1 for Z80 based RC2014 systems

Monitor commands:
A [<address>] = Assemble | D [<address>] = Disassemble
M [<address>] = Memory display | E [<address>] = Edit memory
R [<name>] = Registers/edit | F [<name>] = Flags/edit
B [<address>] = Breakpoint | S [<address>] = Single step
I <port> = Input from port | O <port> <data> = Output to port
G [<address>] = Go to program
BAUD <device> <rate> | CONSOLE <device>
FILL <start> <end> <byte> | API <function> [<A>] [<DE>]
DEVICES, DIR, HELP, RESET
*_
Так стартует бейсик. Микрософтовский, заметьте, 1978 года!
Z80 SBC By Grant Searle

Memory top?
Z80 BASIC Ver 4.7b
Copyright (C) 1978 by Microsoft
32382 Bytes free
Ok
_
Для этого компьютера уже появилось некоторое количество софта: https://github.com/RC2014Z80/RC2014

Если добавить внешнюю карточку Compact Flash, можно запустить операционную систему CP/M. А пока попробуем что-нибудь простое, к примеру фракталы Мандельброта. Исходный текст:
list

10 MAXITER = 24
20 LET C$ = "######################################"
30 FOR Y = -39 TO 39
40 FOR X = -39 TO 39
50 CREAL = X / 20
70 CIMAG = Y / 20
80 ZREAL = CREAL
90 ZIMAG = CIMAG
95 COUNT = 1
100 ZM = ZREAL * ZREAL
105 ZN = ZIMAG * ZIMAG
107 ZL = ZM + ZN
110 IF ZL > 4 THEN GOTO 165
120 ZR2 = ZM - ZN + CREAL
130 ZIMAG = ZREAL * ZIMAG * 2 + CIMAG
140 ZREAL = ZR2
150 COUNT = COUNT + 1
160 IF COUNT < MAXITER THEN GOTO 100
165 INK = 184 - (7 * COUNT)
166 GOSUB 1000
167 PAPER = 232 + COUNT
168 GOSUB 1050
170 PRINT MID$(C$, 1 + COUNT, 1);
180 NEXT X
185 PRINT ""
190 NEXT Y
200 END
1000 REM Ink Colour
1010 LET INK$ = STR$(INK)
1020 PRINT CHR$(27) + "[38;5;";RIGHT$(INK$,LEN(INK$) - 1);"m";
1030 RETURN
1050 REM Paper Colour
1060 PAPER$ = STR$(PAPER)
1070 PRINT CHR$(27) + "[48;5;" + RIGHT$(PAPER$,LEN(PAPER$)-1) + "m";
1080 RETURN
1100 REM Move Row - Col
1110 LET ROW$ = STR$(ROW): LET COL$ = STR$(COL)
1120 PRINT CHR$(27) + "[";RIGHT$(ROW$, LEN(ROW$) - 1);";";
1130 PRINT RIGHT$(COL$, LEN(COL$) - 1);"H";
1140 RETURN
2000 REM Draw Line
2010 XO$ = STR$(XO): XI$ = STR$(XI): YO$ = STR$(YO): YI$ = STR$(YI)
2020 PRINT CHR$(27) + "[?#" + RIGHT$(XO$,LEN(XO$) - 1) + ";";
2025 PRINT RIGHT$(XI$, LEN(XI$) - 1) + ";";
2030 PRINT RIGHT$(YO$, LEN(YO$) - 1) + ";";
2035 PRINT RIGHT$(YI$, LEN(YI$) - 1);"L";
2040 RETURN
3000 REM Reset to default
3010 PRINT CHR$(27);CHR$(91);CHR$(48);CHR$(109)
3020 RETURN
Ok
Запускаем:

Date: 2019-10-16 01:46 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Эко какая прелесть.

Я б, конечно, на 80-й поставил форт сразу же. А дальше уже своп-дроп. 10 0 do ." *" loop

Date: 2019-10-16 06:04 (UTC)
dluciv: (Default)
From: [personal profile] dluciv
Во.

Date: 2019-10-16 02:03 (UTC)
From: [personal profile] master_a
Сколько то лет назад я сделал z80 карточку для Apple 2. На 20 МГц. CPM очень неплохо работает. Даже сделал микро-серию для энтузиастов. Ну и сам поиграл.

Date: 2019-10-17 06:56 (UTC)
From: [personal profile] master_a
Just about everything CPM. Including C compiler, Forth и прочая и прочая. CPM на 20 МГц непривычно :)

Date: 2019-10-16 06:09 (UTC)
dluciv: (Default)
From: [personal profile] dluciv
В моём сознании Z80 слишком уж привязан к Спектруму и всему, что из него выросло. И к телефонам с АОН. Но процессор чудесный конечно. Вообще наверное это единственный маленький CISC, который в течение такого времени производится. Хотя может и PDP тоже конечно...

Date: 2019-10-16 07:23 (UTC)
x86128: (Default)
From: [personal profile] x86128
Ого, а сколько это рисуется? Минут 10 наверно?

Date: 2019-10-16 18:24 (UTC)
From: [personal profile] mcler
Возможность грузить программы с кассетника или по радио имеется?

Date: 2019-10-16 19:50 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Сразу видно человека, задающего правильные вопросы!

Date: 2019-10-17 18:48 (UTC)
From: [personal profile] mcler
Это от стремления все-таки стать человеком, дающим правильные ответы :)

Date: 2019-10-17 18:41 (UTC)
From: [personal profile] mcler
Наверное получится передать *.tap https://faqwiki.zxnet.co.uk/wiki/TAP_format
после конвертации в bin или hex через консоль... Тогда у Вас появится куча программ :-)...

Date: 2019-10-17 06:59 (UTC)
From: [personal profile] master_a
Я давным давно сделал и спектрум клон на Verilog, хотя во времена расцвета Спека на 1/6 суши, был уже от нее очень далеко.