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
Запускаем:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org