https://youtu.be/HPg35q2abKI
Вид для печати
Резюмировал демо программы и собрал на странице.
Оффтоп
Векторовскую версию уже после конкурса получилось сильно разогнать и этому среди прочего помогло наличие конвертера TXT<->CAS. Если будет подобный конвертер для Специалиста, то можно и на него перетащить оптимизированный вариант. Редактор в бейсике-практик не такой уж плохой по советским меркам начала 90х, но сейчас у меня уже не хватает моральных сил активно работать в нем с программой в несколько десятков строк.[свернуть]
Конвертер есть в одну сторону, выложил вчера вместе с новой версией эмулятора. Собственно, я и вспомнил про этот конвертер, когда захотел посмотреть исходник демы. А вот обратно хуже. Быструю вставку в эмуляторе из буфера обмена я сделал, но пока не на Специалисте :( В общем, надо подумать...
Я мог бы на досуге поэкспериментировать с подобным конвертором на Pyton. Только я не знаю формат хранения текста. И если он нигде не документирован, то сильно помог бы листинг программы с конкурса в текстовом виде. Хотя можно, конечно, и руками набрать.
Распознал с экрана:
Код:1 REM RCTXTSPEC
2 REM BBC MICRO VERSION BY PAUL MALIN
3 REM SPECIALIST VERSION BY IVAN GORODETSKY
4 CLS1
5 CUR0,247:PRINT"X"
6 PLOT8,250,2: PLOT8,252,2
7 PLOT6,255,2: LINE8,255
8 FORU=64T0319
9 E=(U-64)/256-.5:F=.7:N=E*.9-F*.4:0=E*.4+F*.9
10 I=7:J=248
11 L=SGN(N):M=SGN(0):S=1/ABS(N):T=1/ABS(0)
12 E=(-.5*L-(N>0)>*S:F=-(0>0)*T:Y=0:C=1
13 D=E>F
14 IFDTHENH=F:F=F+T:J=J+M:GOT016
15 H=E:E=E+S:I=I+L
16 PLOTI,J,0:P=PEEK(7901)
17 A=-180/H
18 G=0:IFY>=0THENG=Y
19 PLOTU,G,C
20 C=(NOTC)AND3:Y=128+A:IFY>=0THENG=Y
21 LINEU,G
22 IFP=0THEN13
23 B=240/H:2=31AND32*CI+(N+0)*H*,45+J);W=32/(B-A):V=W*(INT(A)-A)
24 IF(7ANDZ)=00R(7AND(2+4)>=0THEN30
25 IFDTHEN28
26 FORK INT(A+128) TOINT(B+128)
27 PLOTU,K,1-((3ANDV)>=0):V=Y+W:LINEU,K:NEXT:NEXT:GOT037
28 FORK-INT(A+128) TOINT(B+128)
29 PLOTU,K,1-NOT((3ANDV)=0):V=Y+W:LINEU,K:NEXT:NEXT:GOT037
30 FORK-INT(A+128) TOINT(B+128)
31 Q=2:R=7ANDV:V=Y+W
32 IFR>3THENQ=Q+4
33 C=C3ANDR)=00R(7ANDQ)=0
34 IFDTHENC=NOTC
35 PLOTU,K,1-C:LINEU,K
36 NEXT:NEXT
37 REM
В распознанном есть ошибки распознавания.
Сконвертировано моим старым конвертером на Паскале, вдруг поможет: https://github.com/vpyk/EmuUtils/blo...xt/bsm2txt.pasКод:1 REM RCTXTSPEC
2 REM BBC MICRO VERSION BY PAUL MALIN
3 REM SPECIALIST VERSION BY IVAN GORODETSKY
4 CLS1
5 CUR0,247:PRINT"X"
6 PLOT8,250,2:PLOT8,252,2
7 PLOT6,255,2:LINE8,255
8 FORU=64TO319
9 E=(U-64)/256-.5:F=.7:N=E*.9-F*.4:O=E*.4+F*.9
10 I=7:J=248
11 L=SGN(N):M=SGN(O):S=1/ABS(N):T=1/ABS(O)
12 E=(-.5*L-(N>0))*S:F=-(O>0)*T:Y=0:C=1
13 D=E>F
14 IFDTHENH=F:F=F+T:J=J+M:GOTO16
15 H=E:E=E+S:I=I+L
16 PLOTI,J,0:P=PEEK(7901)
17 A=-180/H
18 G=0:IFY>=0THENG=Y
19 PLOTU,G,C
20 C=(NOTC)AND3:Y=128+A:IFY>=0THENG=Y
21 LINEU,G
22 IFP=0THEN13
23 B=240/H:Z=31AND32*(I+(N+O)*H*.45+J):W=32/(B-A):V=W*(INT(A)-A)
24 IF(7ANDZ)=0OR(7AND(Z+4))=0THEN30
25 IFDTHEN28
26 FORK=INT(A+128)TOINT(B+128)
27 PLOTU,K,1-((3ANDV)=0):V=V+W:LINEU,K:NEXT:NEXT:GOTO37
28 FORK=INT(A+128)TOINT(B+128)
29 PLOTU,K,1-NOT((3ANDV)=0):V=V+W:LINEU,K:NEXT:NEXT:GOTO37
30 FORK=INT(A+128)TOINT(B+128)
31 Q=Z:R=7ANDV:V=V+W
32 IFR>3THENQ=Q+4
33 C=(3ANDR)=0OR(7ANDQ)=0
34 IFDTHENC=NOTC
35 PLOTU,K,1-C:LINEU,K
36 NEXT:NEXT
37 REM
Наверняка ты видел, но на всякий случай - можно оттолкнуться от конвертера svofski.
И может начиная с моего оффтопа перетащить посты в раздел Специалиста?
Действительно! Распознавалка много нулей перепутала с буквой O. Плюс ещё неточности...
Нет, не видел. Спасибо!
Перенёс.
Для начала вытащил из BASIC-Практик все зарезервированные слова:
Код:CLS
FOR
NEXT
DATA
INPUT
DIM
READ
CUR
GOTO
RUN
IF
RESTORE
GOSUB
RETURN
REM
STOP
DPL
ON
PLOT
LINE
POKE
DEF
CONT
LIST
CLEAR
MLOAD
MSAVE
NEW
TAB(
TO
SPC(
FN
THEN
NOT
STEP
+
-
*
/
^
AND
OR
>
=
<
SGN
INT
ABS
USR
FRE
INP
POS
SQR
RND
LOG
EXP
COS
SIN
TAN
ATN
PEEK
LEN
STR$
VAL
ASC
CHR$
LEFT$
RIGHT$
MID$
CIRCLE
MERGE
AUTO
RENUM
RCOM
DELETE
COMP
SYST
EDIT
Кроме токенов от 80h до CEh (CLS - EDIT) есть еще два
CF - & (шестнадцатеричные)
D0 - AT (не реализовано)