PDA

Просмотр полной версии : Родословная бейсиков для 580ВМ80



esl
24.05.2014, 23:34
Привет всем
такую тему уже пробовали обсуждать, с разной степенью успешности
но у меня есть надежда что наконец можно поставить точку

сразу вывод
большинство бейсиков на бытовых компах пошли от Microsoft Basic 3.2 8k
бейсик для Корвет (и его дети basmsx на апогее и basicvector на векторе) Microsoft Basic 5.x
и отдельно бейсик для ПК8002 - он явно делался из MSX Basic
почему так утверждаю
у разных MS бейсиков - разные представления таблицы токенов, разные у 3.x,4.x,5.x/msx

под "делался из" я имею в виду, что его дизассемблировали а потом уже вносили изменения.

вот тут сводная табличка https://dl.dropboxusercontent.com/u/490774/basic_tokens.txt
рассмотрим детальнее Microsoft Basic 3.2 8k

его прямые потомки

бейсик для MICRO-80
и бейсик для Львова (вроде как он одинок)

из MICRO-80 родился

бейсик для РАДИО86-РК
потом на его основе появился Бейсик Микрон,

ну и потом всё пошло - поехало уже из этих источников

причем бейсик для Вектора (тот который 2.5, похоже дитё Микрона)

немного более детально

в табличке
TokenID, TokenName TokenTextAddr TokenTabAddr TokenCode



8K BASIC Ver 3-2_.bin | basic-micri80.bin | basic80-rk86.bin
------------------------------------------------------------------------------------
81: END 0088 0170 05f5 | 81: CLS 0088 0170 17b3 | 81: CLS 0088 0170 1765
82: FOR 008b 0172 0538 | 82: FOR 008b 0172 0535 | 82: FOR 008b 0172 0535
83: NEXT 008e 0174 0927 | 83: NEXT 008e 0174 091d | 83: NEXT 008e 0174 091d
84: DATA 0092 0176 06fd | 84: DATA 0092 0176 06f9 | 84: DATA 0092 0176 06f9
85: INPUT 0096 0178 085c | 85: INPUT 0096 0178 0852 | 85: INPUT 0096 0178 0852
86: DIM 009b 017a 0b24 | 86: DIM 009b 017a 0b15 | 86: DIM 009b 017a 0b15
87: READ 009e 017c 0883 | 87: READ 009e 017c 0879 | 87: READ 009e 017c 0879
88: LET 00a2 017e 0714 | 88: CUR 00a2 017e 176a | 88: CUR 00a2 017e 1779
89: GOTO 00a5 0180 06cb | 89: GOTO 00a5 0180 06c7 | 89: GOTO 00a5 0180 06c7
8a: RUN 00a9 0182 06ae | 8a: RUN 00a9 0182 06ab | 8a: RUN 00a9 0182 06ab
8b: IF 00ac 0184 0782 | 8b: IF 00ac 0184 0778 | 8b: IF 00ac 0184 0778
8c:RESTORE 00ae 0186 05df | 8c:RESTORE 00ae 0186 05db | 8c:RESTORE 00ae 0186 05db
8d: GOSUB 00b5 0188 06ba | 8d: GOSUB 00b5 0188 06b7 | 8d: GOSUB 00b5 0188 06b7
8e: RETURN 00ba 018a 06e7 | 8e: RETURN 00ba 018a 06e3 | 8e: RETURN 00ba 018a 06e3
8f: REM 00c0 018c 06ff | 8f: REM 00c0 018c 06fb | 8f: REM 00c0 018c 06fb
90: STOP 00c3 018e 05f3 | 90: STOP 00c3 018e 05ef | 90: STOP 00c3 018e 05ef
91: OUT 00c7 0190 0fa4 | 91: OUT 00c7 0190 0f80 | 91: OUT 00c7 0190 0f80
92: ON 00ca 0192 0766 | 92: ON 00ca 0192 075c | 92: ON 00ca 0192 075c
93: NULL 00cc 0194 062e | 93: PLOT 00cc 0194 17c7 | 93: PLOT 00cc 0194 17af
94: WAIT 00d0 0196 0faa | 94: LINE 00d0 0196 1847 | 94: LINE 00d0 0196 1847
95: DEF 00d4 0198 0cce | 95: POKE 00d4 0198 172c | 95: POKE 00d4 0198 172c
96: POKE 00d7 019a 10aa | 96: PRINT 00d8 019a 0791 | 96: PRINT 00d8 019a 0791
97: PRINT 00db 019c 079b | 97: DEF 00dd 019c 0cb0 | 97: DEF 00dd 019c 0cb0
98: CONT 00e0 019e 061b | 98: CONT 00e0 019e 0617 | 98: CONT 00e0 019e 0617
99: LIST 00e4 01a0 04f1 | 99: LIST 00e4 01a0 04ee | 99: LIST 00e4 01a0 04ee
9a: CLEAR 00e8 01a2 0685 | 9a: CLEAR 00e8 01a2 0682 | 9a: CLEAR 00e8 01a2 0682
9b: CLOAD 00ed 01a4 1040 | 9b: MLOAD 00ed 01a4 1905 | 9b: MLOAD 00ed 01a4 1905
9c: CSAVE 00f2 01a6 1020 | 9c: MSAVE 00f2 01a6 18ee | 9c: MSAVE 00f2 01a6 18ee
9d: NEW 00f7 01a8 03a1 | 9d: NEW 00f7 01a8 039d | 9d: NEW 00f7 01a8 039d
9e: TAB( 00fa .... .... | 9e: TAB( 00fa .... .... | 9e: TAB( 00fa .... ....
9f: TO 00fe .... .... | 9f: TO 00fe .... .... | 9f: TO 00fe .... ....
a0: FN 0100 .... .... | a0: SPC( 0100 .... .... | a0: SPC( 0100 .... ....
a1: SPC( 0102 .... .... | a1: FN 0104 .... .... | a1: FN 0104 .... ....
a2: THEN 0106 .... .... | a2: THEN 0106 .... .... | a2: THEN 0106 .... ....
a3: NOT 010a .... .... | a3: NOT 010a .... .... | a3: NOT 010a .... ....
a4: STEP 010d .... .... | a4: STEP 010d .... .... | a4: STEP 010d .... ....
a5: + 0111 .... .... | a5: + 0111 .... .... | a5: + 0111 .... ....
a6: - 0112 .... .... | a6: - 0112 .... .... | a6: - 0112 .... ....
a7: * 0113 .... .... | a7: * 0113 .... .... | a7: * 0113 .... ....
a8: / 0114 .... .... | a8: / 0114 .... .... | a8: / 0114 .... ....
a9: ^ 0115 .... .... | a9: ^ 0115 .... .... | a9: ^ 0115 .... ....
aa: AND 0116 .... .... | aa: AND 0116 .... .... | aa: AND 0116 .... ....
ab: OR 0119 .... .... | ab: OR 0119 .... .... | ab: OR 0119 .... ....
ac: > 011b .... .... | ac: > 011b .... .... | ac: > 011b .... ....
ad: = 011c .... .... | ad: = 011c .... .... | ad: = 011c .... ....
ae: < 011d .... .... | ae: < 011d .... .... | ae: < 011d .... ....
af: SGN 011e 0043 131a | af: SGN 011e 0043 12d4 | af: SGN 011e 0043 12d4
b0: INT 0121 0045 13d8 | b0: INT 0121 0045 1392 | b0: INT 0121 0045 1392
b1: ABS 0124 0047 132e | b1: ABS 0124 0047 12e8 | b1: ABS 0124 0047 12e8
b2: USR 0127 0049 065f | b2: USR 0127 0049 1736 | b2: USR 0127 0049 1736
b3: FRE 012a 004b 0c98 | b3: FRE 012a 004b 0c7a | b3: FRE 012a 004b 0c7a
b4: INP 012d 004d 0f99 | b4: INP 012d 004d 0f75 | b4: INP 012d 004d 0f75
b5: POS 0130 004f 0cc6 | b5: POS 0130 004f 0ca8 | b5: POS 0130 004f 0ca8
b6: SQR 0133 0051 15a6 | b6: SQR 0133 0051 1554 | b6: SQR 0133 0051 1554
b7: RND 0136 0053 167c | b7: RND 0136 0053 162a | b7: RND 0136 0053 162a
b8: LOG 0139 0055 11c4 | b8: LOG 0139 0055 117e | b8: LOG 0139 0055 117e
b9: EXP 013c 0057 15eb | b9: EXP 013c 0057 1599 | b9: EXP 013c 0057 1599
ba: COS 013f 0059 16b2 | ba: COS 013f 0059 1660 | ba: COS 013f 0059 1660
bb: SIN 0142 005b 16b8 | bb: SIN 0142 005b 1666 | bb: SIN 0142 005b 1666
bc: TAN 0145 005d 1715 | bc: TAN 0145 005d 16c3 | bc: TAN 0145 005d 16c3
bd: ATN 0148 005f 172a | bd: ATN 0148 005f 16d8 | bd: ATN 0148 005f 16d8
be: PEEK 014b 0061 10a3 | be: PEEK 014b 0061 1724 | be: PEEK 014b 0061 1724
bf: LEN 014f 0063 0f0a | bf: LEN 014f 0063 0ee7 | bf: LEN 014f 0063 0ee7
c0: STR$ 0152 0065 0d3a | c0: STR$ 0152 0065 0d1f | c0: STR$ 0152 0065 0d1f
c1: VAL 0156 0067 0fec | c1: VAL 0156 0067 0fc8 | c1: VAL 0156 0067 0fc8
c2: ASC 0159 0069 0f19 | c2: ASC 0159 0069 0ef6 | c2: ASC 0159 0069 0ef6
c3: CHR$ 015c 006b 0f28 | c3: CHR$ 015c 006b 0f04 | c3: CHR$ 015c 006b 0f04
c4: LEFT$ 0160 006d 0f38 | c4: LEFT$ 0160 006d 0f14 | c4: LEFT$ 0160 006d 0f14
c5: RIGHT$ 0165 006f 0f68 | c5: RIGHT$ 0165 006f 0f44 | c5: RIGHT$ 0165 006f 0f44
c6: MID$ 016b 0071 0f72 | c6: MID$ 016b 0071 0f4e | c6: MID$ 016b 0071 0f4e


видно что кол-во и расположение токенов совпадает, адресса очень близки
часть операторов похоже просто запатчили (заодно пожертвовав END)
причем длинна новых слов совпала ;)



END -> CLS
LET -> CUR
NULL -> PLOT
WAIT -> LINE
CLOAD -> MLOAD
CSAVE -> MSAVE

и непонятно зачем сдвинуты DEF,POKE,PRINT

дальше таблица токенов сохраняется, т.е все дальнейшие - потомки

в микроне расширина таблица токенов, но строго ПОСЛЕ стандартных


c7:SCREEN$( 1eee 1fd8 1a39
c8: INKEY$ 1ef6 1fda 1685
c9: AT 1efc 1fdc 009b
ca: & 1efe 1fde 16a9
cb: BEEP 1eff 1fe0 0279
cc: PAUSE 1f03 1fe2 7913
cd: VERIFY 1f08 1fe4 0f11
ce: HOME 1f0e 1fe6 4e7b
cf: EDIT 1f12 1fe8 7b10
d0: DELETE 1f16 1fea 10b0
d1: MERGE 1f1c 1fec 137f
d2: AUTO 1f21 1fee 5014
d3: HIMEM 1f25 1ff0 09a6
d4: @ 1f2a 1ff2 a546
d5: ASN 1f2b 1ff4 4d09
d6: ADDR 1f2e 1ff6 2849
d7: PI 1f32 1ff8 2943
d8: RENUM 1f34 1ffa 4f52
d9: ACS 1f39 1ffc 2f4e
da: LG 1f3c 1ffe 3838
db: LPRINT 1f3e 2000 6e65
dc: LLIST 1f44 2002 6075


бейсик 2.5 для вектора - расширение микрона


dd: SCREEN 23b5 24ac 0c2e
de: COLOR 23bb 24ae cde9
df: GET 23c0 24b0 1f33
e0: PUT 23c3 24b2 3bcd
e1: BSAVE 23c6 24b4 f50f
e2: BLOAD 23cb 24b6 f0e6
e3: PLAY 23d0 24b8 b032
e4: PAINT 23d4 24ba f13d
e5: CIRCLE 23d9 24bc 0fe6


а basicsig явно из micro-80


бейсик Суры - на основе того-же micro80 но расширен в сторону MSX, опять же все расширения - после MICRO-80

ну и отдельно идёт бейсик для Львов-ПК01
он явно самостоятельно делался из MS3.2 8k

пациенты - в аттаче

ваши коментарии ?

для тех кто хочет взять дизасм в руки, полезные ссылки

http://altairbasic.org/ откоментированый Altair Basic 3.2 4k (у него меньше мат функций, но все структуры - копия)

на страничке http://msx.hansotten.com/index.php?page=msxsw
есть TRS-80 Basic detailed description и TRS-80 Basic source code
это дизасм TRS-80 basic Level 2 (Microsoft 5.x)

ну и наконец http://sourceforge.net/projects/msxsyssrc/
дизасмы всех MSX ROM (с бейсиками в том числе)

esl
25.05.2014, 01:44
разница MS BASIC 3.2 4K vs 8K



4K BASIC Ver 3-2_.bin | 8K BASIC Ver 3-2_.bin
----------------------------------------------------------
81: END 0057 00d2 01f7 | 81: END 0088 0170 05f5
82: FOR 005a 00d4 03d5 | 82: FOR 008b 0172 0538
83: NEXT 005d 00d6 0649 | 83: NEXT 008e 0174 0927
84: DATA 0061 00d8 04f5 | 84: DATA 0092 0176 06fd
85: INPUT 0065 00da 05e4 | 85: INPUT 0096 0178 085c
86: DIM 006a 00dc 0716 | 86: DIM 009b 017a 0b24
87: READ 006d 00de 05f6 | 87: READ 009e 017c 0883
88: LET 0071 00e0 0502 | 88: LET 00a2 017e 0714
89: GOTO 0074 00e2 04cf | 89: GOTO 00a5 0180 06cb
8a: RUN 0078 00e4 02a1 | 8a: RUN 00a9 0182 06ae
8b: IF 007b 00e6 0516 | 8b: IF 00ac 0184 0782
8c: RESTORE 007d 00e8 0469 | 8c: RESTORE 00ae 0186 05df
8d: GOSUB 0084 00ea 04be | 8d: GOSUB 00b5 0188 06ba
8e: RETURN 0089 00ec 04df | 8e: RETURN 00ba 018a 06e7
8f: REM 008f 00ee 04f7 | 8f: REM 00c0 018c 06ff
90: STOP 0092 00f0 01f7 | 90: STOP 00c3 018e 05f3
91: PRINT 0096 00f2 0557 | 91: OUT 00c7 0190 0fa4
92: LIST 009b 00f4 038e | 92: ON 00ca 0192 0766
93: CLEAR 009f 00f6 02a6 | 93: NULL 00cc 0194 062e
94: NEW 00a4 00f8 0295 | 94: WAIT 00d0 0196 0faa
95: TAB( 00a7 .... .... | 95: DEF 00d4 0198 0cce
96: TO 00ab .... .... | 96: POKE 00d7 019a 10aa
97: THEN 00ad .... .... | 97: PRINT 00db 019c 079b
98: STEP 00b1 .... .... | 98: CONT 00e0 019e 061b
99: + 00b5 .... .... | 99: LIST 00e4 01a0 04f1
9a: - 00b6 .... .... | 9a: CLEAR 00e8 01a2 0685
9b: * 00b7 .... .... | 9b: CLOAD 00ed 01a4 1040
9c: / 00b8 .... .... | 9c: CSAVE 00f2 01a6 1020
9d: > 00b9 .... .... | 9d: NEW 00f7 01a8 03a1
9e: = 00ba .... .... | 9e: TAB( 00fa .... ....
9f: < 00bb .... .... | 9f: TO 00fe .... ....
a0: SGN 00bc .... .... | a0: FN 0100 .... ....
a1: INT 00bf .... .... | a1: SPC( 0102 .... ....
a2: ABS 00c2 .... .... | a2: THEN 0106 .... ....
a3: USR 00c5 .... .... | a3: NOT 010a .... ....
a4: SQR 00c8 .... .... | a4: STEP 010d .... ....
a5: RND 00cb .... .... | a5: + 0111 .... ....
a6: SIN 00ce .... .... | a6: - 0112 .... ....
| a7: * 0113 .... ....
| a8: / 0114 .... ....
| a9: ^ 0115 .... ....
| aa: AND 0116 .... ....
| ab: OR 0119 .... ....
| ac: > 011b .... ....
| ad: = 011c .... ....
| ae: < 011d .... ....
| af: SGN 011e .... ....
| b0: INT 0121 .... ....
| b1: ABS 0124 .... ....
| b2: USR 0127 .... ....
| b3: FRE 012a .... ....
| b4: INP 012d .... ....
| b5: POS 0130 .... ....
| b6: SQR 0133 .... ....
| b7: RND 0136 .... ....
| b8: LOG 0139 .... ....
| b9: EXP 013c .... ....
| ba: COS 013f .... ....
| bb: SIN 0142 .... ....
| bc: TAN 0145 .... ....
| bd: ATN 0148 .... ....
| be: PEEK 014b .... ....
| bf: LEN 014f .... ....
| c0: STR$ 0152 .... ....
| c1: VAL 0156 .... ....
| c2: ASC 0159 .... ....
| c3: CHR$ 015c .... ....
| c4: LEFT$ 0160 .... ....
| c5: RIGHT$ 0165 .... ....
| c6: MID$ 016b .... ....

ivagor
25.05.2014, 06:17
esl, респект!
Специалистовский (первоначальный) тоже из серии 3.2, может транзитом через микро-80, может как-то иначе. Потом, насколько помню, и микрон адаптировали. Кстати, для спеца видел некий RDS-бейсик (если не путаю название), внутри я его не смотрел, но помню, что он был маленький (то ли на основе 4k, то ли даже родственник тини-бейсика)
Орионовский бейсик тоже родственник 3.2 и тоже, возможно, транзитом через микро-80.
Про остальные, которые я смотрел, ты уже написал :)

ivagor
25.05.2014, 11:27
для спеца видел некий RDS-бейсик
Проклятый склероз. Не RDS, а RDK (RDK PROMPT BASIC V3.2 3K). Несмотря на V3.2 поверхностный просмотр показал, что на альтаировский/микрософтовский 3.2 не похож, а на тини-бейсик похож.

HardWareMan
25.05.2014, 12:36
Я помню несколько лет назад проводился анализ барсиков для советских ЛК на НедоПЦ. Статистический анализ показал, что у всех 80% совпадений с барсиком от МС. Похоже, что библиотечка была одна или реально реверсили.

esl
25.05.2014, 12:56
Я помню несколько лет назад проводился анализ барсиков для советских ЛК на НедоПЦ. Статистический анализ показал, что у всех 80% совпадений с барсиком от МС. Похоже, что библиотечка была одна или реально реверсили.

реально реверсили ;)
причем именно MS 3.2 8к

код, таблички, совпадают до безобразия
даже если сильно модифицировали (как например МИКРОН), структура осталась, прост добавления
я по этому таблицу токенов и привёл, из нее очень видно как оно двигалось

Titus
25.05.2014, 13:11
esl, респект!
Специалистовский (первоначальный) тоже из серии 3.2, может транзитом через микро-80, может как-то иначе. Потом, насколько помню, и микрон адаптировали.


Для Специалиста, как я помню, в журналах "Моделист-Конструктор" публиковали расширения для бейсика. Сперва вроде небольшое расширение, чтобы рисовать круги. А потом расширение для рисования спрайтов, причем весьма мощное. Причем, эти два расширения были с друг другом несовместимы.

ivagor
25.05.2014, 13:39
Практически для каждого из упомянутых бейсиков (ведущих родословную от 3.2) есть модифицированные, дополненные, улучшенные варианты. Иногда весьма интересные, но основа бейсика оставалась прежней. Прикрутить спрайты (или еще и редактор спрайтов) ПМСМ проще, чем, например, сделать грамотную поддержку нескольких форматов чисел. С другой стороны "спрайты" были более востребованы, люди хотели писать игрушки на бейсике :)

esl
25.05.2014, 16:42
По специалисту (для него нашлось больше всего бейсиков)

https://dl.dropboxusercontent.com/u/490774/basic-tokens-specialist-micro80.txt

это всё дети МИКРО-80

bas-cir
bas-gr
bas-kbh
bas-new
bas-s
bas-sg
bas-spec
bas-srv
basic
basic-a
basic1
basic2
basic3

как раз то о чем написано выше
все адресса совавдают, + наверное расширения в виде патчей
но меня интересовала именно база, а не патчи

https://dl.dropboxusercontent.com/u/490774/basic-tokens-specialist-micron.txt
а часть на основе МИКРОНА, причем
явно более ранняя версия микрона чем та что у меня, меньше ключевых слов


bas-mic2
bas-micr

--- нет
ADDR
PI
RENUM
ACS
LG
LPRINT
LLIST


bas-mag2 совпадает по адресам с мкроном с рк

по токенам совпадает с микроном, но адреса отличаються, другая версия ?


bas-mag
basmic87

ну и отдельно bas-rdk, о нем выше писал ivagor.

в общем всё ожидаемо ;)

---------- Post added at 15:42 ---------- Previous post was at 15:31 ----------

ORION BASIC

дитё MICRO-80
похоже серьёзное копания уровня микрона.



basic80-rk86.bin | basmikr-rk86.bin | orion-basic.ram
---------------------------------------------------------------------------------------
81: CLS 0088 0170 1765 | 81: CLS 1e07 1f4a 1cc2 | 81: CLS 0088 0eb4 1717
82: FOR 008b 0172 0535 | 82: FOR 1e0a 1f4c 03e2 | 82: FOR 008b 0eb6 03fa
83: NEXT 008e 0174 091d | 83: NEXT 1e0d 1f4e 0820 | 83: NEXT 008e 0eb8 07d0
84: DATA 0092 0176 06f9 | 84: DATA 1e11 1f50 05b1 | 84: DATA 0092 0eba 05b9
85: INPUT 0096 0178 0852 | 85: INPUT 1e15 1f52 0740 | 85: INPUT 0096 0ebc 06f4
86: DIM 009b 017a 0b15 | 86: DIM 1e1a 1f54 0a44 | 86: DIM 009b 0ebe 09c8
87: READ 009e 017c 0879 | 87: READ 1e1d 1f56 0794 | 87: READ 009e 0ec0 072d
88: CUR 00a2 017e 1779 | 88: CUR 1e21 1f58 1920 | 88: CUR 00a2 0ec2 1636
89: GOTO 00a5 0180 06c7 | 89: GOTO 1e24 1f5a 057f | 89: GOTO 00a5 0ec4 0587
8a: RUN 00a9 0182 06ab | 8a: RUN 1e28 1f5c 0563 | 8a: RUN 00a9 0ec6 0560
8b: IF 00ac 0184 0778 | 8b: IF 1e2b 1f5e 0630 | 8b: IF 00ac 0ec8 0638
8c: RESTORE 00ae 0186 05db | 8c: RESTORE 1e2d 1f60 0496 | 8c: RESTORE 00ae 0eca 04a3
8d: GOSUB 00b5 0188 06b7 | 8d: GOSUB 1e34 1f62 056f | 8d: GOSUB 00b5 0ecc 0577
8e: RETURN 00ba 018a 06e3 | 8e: RETURN 1e39 1f64 059b | 8e: RETURN 00ba 0ece 05a3
8f: REM 00c0 018c 06fb | 8f: REM 1e3f 1f66 05b3 | 8f: REM 00c0 0ed0 05bb
90: STOP 00c3 018e 05ef | 90: STOP 1e42 1f68 04b9 | 90: STOP 00c3 0ed2 04b6
91: OUT 00c7 0190 0f80 | 91: OUT 1e46 1f6a 009b | 91: DPL 00c7 0ed4 1846
92: ON 00ca 0192 075c | 92: ON 1e49 1f6c 0614 | 92: ON 00ca 0ed6 061c
93: PLOT 00cc 0194 17af | 93: PLOT 1e4b 1f6e 1936 | 93: PSET 00cc 0ed8 1925
94: LINE 00d0 0196 1847 | 94: LINE 1e4f 1f70 199e | 94: LINE 00d0 0eda 1827
95: POKE 00d4 0198 172c | 95: POKE 1e53 1f72 15e6 | 95: POKE 00d4 0edc 1620
96: PRINT 00d8 019a 0791 | 96: PRINT 1e57 1f74 0648 | 96: PRINT 00d8 0ede 1fa9
97: DEF 00dd 019c 0cb0 | 97: DEF 1e5c 1f76 0bdf | 97: DEF 00dd 0ee0 0b6a
98: CONT 00e0 019e 0617 | 98: CONT 1e5f 1f78 04dd | 98: CONT 00e0 0ee2 04da
99: LIST 00e4 01a0 04ee | 99: LIST 1e63 1f7a 0397 | 99: LIST 00e4 0ee4 196e
9a: CLEAR 00e8 01a2 0682 | 9a: CLEAR 1e67 1f7c 053a | 9a: CLEAR 00e8 0ee6 0537
9b: MLOAD 00ed 01a4 1905 | 9b: CLOAD 1e6c 1f7e 1b6f | 9b: LLIST 00ed 0ee8 196d
9c: MSAVE 00f2 01a6 18ee | 9c: CSAVE 1e71 1f80 1b06 | 9c: LPRINT 00f2 0eea 1da4
9d: NEW 00f7 01a8 039d | 9d: NEW 1e76 1f82 01af | 9d: NEW 00f8 0eec 031e
9e: TAB( 00fa .... .... | 9e: TAB( 1e79 .... .... | 9e: EDIT 00fb 0eee 197d
9f: TO 00fe .... .... | 9f: TO 1e7d .... .... | 9f: COLOR 00ff 0ef0 1d47
a0: SPC( 0100 .... .... | a0: SPC( 1e7f .... .... | a0: BOX 0104 0ef2 17ee
a1: FN 0104 .... .... | a1: FN 1e83 .... .... | a1: SCREEN 0107 0ef4 1657
a2: THEN 0106 .... .... | a2: THEN 1e85 .... .... | a2: PAINT 010d 0ef6 1be6
a3: NOT 010a .... .... | a3: NOT 1e89 .... .... | a3: SYSTEM 0112 0ef8 1f78
a4: STEP 010d .... .... | a4: STEP 1e8c .... .... | a4: SAVE 0118 0efa 1e30
a5: + 0111 .... .... | a5: + 1e90 .... .... | a5: LOAD 011c 0efc 1eb5
a6: - 0112 .... .... | a6: - 1e91 .... .... | a6: FILES 0120 0efe 1dc0
a7: * 0113 .... .... | a7: * 1e92 .... .... | a7: KILL 0125 0f00 1efb
a8: / 0114 .... .... | a8: / 1e93 .... .... | a8: TAB( 0129 .... ....
a9: ^ 0115 .... .... | a9: ^ 1e94 .... .... | a9: TO 012d .... ....
aa: AND 0116 .... .... | aa: AND 1e95 .... .... | aa: SPC( 012f .... ....
ab: OR 0119 .... .... | ab: OR 1e98 .... .... | ab: FN 0133 .... ....
ac: > 011b .... .... | ac: > 1e9a .... .... | ac: THEN 0135 .... ....
ad: = 011c .... .... | ad: = 1e9b .... .... | ad: NOT 0139 .... ....
ae: < 011d .... .... | ae: < 1e9c .... .... | ae: STEP 013c .... ....
af: SGN 011e 0043 12d4 | af: SGN 1e9d 1fa8 1178 | af: + 0140 .... ....
b0: INT 0121 0045 1392 | b0: INT 1ea0 1faa 1236 | b0: - 0141 .... ....
b1: ABS 0124 0047 12e8 | b1: ABS 1ea3 1fac 118c | b1: * 0142 .... ....
b2: USR 0127 0049 1736 | b2: USR 1ea6 1fae 15f4 | b2: / 0143 .... ....
b3: FRE 012a 004b 0c7a | b3: FRE 1ea9 1fb0 0ba9 | b3: ^ 0144 .... ....
b4: INP 012d 004d 0f75 | b4: INP 1eac 1fb2 009b | b4: AND 0145 .... ....
b5: POS 0130 004f 0ca8 | b5: POS 1eaf 1fb4 0bd7 | b5: OR 0148 .... ....
b6: SQR 0133 0051 1554 | b6: SQR 1eb2 1fb6 140a | b6: > 014a .... ....
b7: RND 0136 0053 162a | b7: RND 1eb5 1fb8 14e0 | b7: = 014b .... ....
b8: LOG 0139 0055 117e | b8: LOG 1eb8 1fba 1012 | b8: < 014c .... ....
b9: EXP 013c 0057 1599 | b9: EXP 1ebb 1fbc 144f | b9: SGN 014d 0043 11c8
ba: COS 013f 0059 1660 | ba: COS 1ebe 1fbe 1512 | ba: INT 0150 0045 1286
bb: SIN 0142 005b 1666 | bb: SIN 1ec1 1fc0 1518 | bb: ABS 0153 0047 11dc
bc: TAN 0145 005d 16c3 | bc: TAN 1ec4 1fc2 157d | bc: USR 0156 0049 162a
bd: ATN 0148 005f 16d8 | bd: ATN 1ec7 1fc4 1592 | bd: FRE 0159 004b 0b2d
be: PEEK 014b 0061 1724 | be: PEEK 1eca 1fc6 15de | be: INP 015c 004d 0f15
bf: LEN 014f 0063 0ee7 | bf: LEN 1ece 1fc8 0e12 | bf: POS 015f 004f 0b62
c0: STR$ 0152 0065 0d1f | c0: STR$ 1ed1 1fca 0c4e | c0: SQR 0162 0051 1448
c1: VAL 0156 0067 0fc8 | c1: VAL 1ed5 1fcc 0eeb | c1: RND 0165 0053 151e
c2: ASC 0159 0069 0ef6 | c2: ASC 1ed8 1fce 0e21 | c2: LOG 0168 0055 1072
c3: CHR$ 015c 006b 0f04 | c3: CHR$ 1edb 1fd0 0e2f | c3: EXP 016b 0057 148d
c4: LEFT$ 0160 006d 0f14 | c4: LEFT$ 1edf 1fd2 0e41 | c4: COS 016e 0059 1554
c5: RIGHT$ 0165 006f 0f44 | c5: RIGHT$ 1ee4 1fd4 0e71 | c5: SIN 0171 005b 155a
c6: MID$ 016b 0071 0f4e | c6: MID$ 1eea 1fd6 0e7b | c6: TAN 0174 005d 15b7
| c7:SCREEN$( 1eee 1fd8 1a39 | c7: ATN 0177 005f 15cc
| c8: INKEY$ 1ef6 1fda 1685 | c8: PEEK 017a 0061 1618
| c9: AT 1efc 1fdc 009b | c9: LEN 017e 0063 0d9e
| ca: & 1efe 1fde 16a9 | ca: STR$ 0181 0065 0bd9
| cb: BEEP 1eff 1fe0 0279 | cb: VAL 0185 0067 0f38
| cc: PAUSE 1f03 1fe2 7913 | cc: ASC 0188 0069 0dad
| cd: VERIFY 1f08 1fe4 0f11 | cd: CHR$ 018b 006b 0dbb
| ce: HOME 1f0e 1fe6 4e7b | ce: LEFT$ 018f 006d 0dcb
| cf: EDIT 1f12 1fe8 7b10 | cf: RIGHT$ 0194 006f 0dfb
| d0: DELETE 1f16 1fea 10b0 | d0: MID$ 019a 0071 0e05
| d1: MERGE 1f1c 1fec 137f | d1: GET 019e 0073 4079
| d2: AUTO 1f21 1fee 5014 | d2: PUT 01a1 0075 7913
| d3: HIMEM 1f25 1ff0 09a6 | d3: SOUND 01a4 0077 0f71
| d4: @ 1f2a 1ff2 a546 | d4: DELETE 01a9 0079 ae7b
| d5: ASN 1f2b 1ff4 4d09 | d5: AUTO 01af 007b 7b10
| d6: ADDR 1f2e 1ff6 2849 | d6: RENUM 01b3 007d 110c
| d7: PI 1f32 1ff8 2943 |
| d8: RENUM 1f34 1ffa 4f52 |
| d9: ACS 1f39 1ffc 2f4e |
| da: LG 1f3c 1ffe 3838 |
| db: LPRINT 1f3e 2000 6e65 |
| dc: LLIST 1f44 2002 6075 |

ivagor
25.05.2014, 17:10
Есть еще более экзотические Башкирия-2М (предполагю, что клон позднего микрософтовского или транзитом с корвета), Ириша (даже не знаю, был ли там "свой" бейсик), Искра1080-Тарту, ЮТ-88 (на нем наверняка альтаировский родственник).

esl
25.05.2014, 17:13
если сбросиш "дампы" - посмотрю, под рукой не нашлось их
под дампом - загрузить в эмуляторе и записать всю память

p.s. обнаружил что для "последних" опкодов в "микроне" неправильно адресса указаны, но править автоматом - лень ;)
не принципиально в рамках этой задачи.

ivagor
25.05.2014, 17:31
Искра1080-Тарту - загружаешь эмулятор b2mа и стартует T-BASIC. Там хитрое управление памятью, я лучше дампить не буду.
ЮТ-88 - там точно потомок альтаировского 3.2, возможно транзитом с микро-80 или рк86
Б2М - на одном из образов, выложенных на сайте b2mа (не помню на каком). Если мне не изменяет память, то сам b2m как раз и затачивал бейсик под башкирию, так что прошу его самого раскрыть тайну происхождения башкирского бейсика.
Ириша - просто не помню, в CP/M микрософтовские, конечно, должны работать, а был ли заточенный именно под иришу - вопрос.

esl
25.05.2014, 17:49
не вышло

на вид - формат таблицы токенов - совпадает
Искра1080-Тарту, перый токен вроде CLS, другие же токены - не совпадает
там вообще не понятно что в памяти ;)
а копать - лень

b2m - тоже самое, надо бы спросить наверное ;)

ivagor
25.05.2014, 18:02
Насчет искры - с памятью не стал разбираться, посмотрел i1080.rom - судя по табличке токенов все же наследник 3.2, сравнительно развитый.

Kakos_nonos
25.05.2014, 18:59
Нарисовать бы генеалогическое дерево.

esl
25.05.2014, 19:22
сейчас это
Microsoft Basic 3.2 8k -> Микро-80 -> РК-86 -> остальное
для более детального дерева надо сильно копать внутри, что конкретно менялось

ivagor
25.05.2014, 19:31
Одна из веток генеалогии легко отслеживается
...->Бейсик РК86->Бейсик-Микрон->потомков микрона можно идентифицировать

esl
25.05.2014, 20:29
Одна из веток генеалогии легко отслеживается
...->Бейсик РК86->Бейсик-Микрон->потомков микрона можно идентифицировать

ага, но тут тоже копать надо
ибо вон на специалисте вроде как есть более ранний вариант Микрона чем на РК86

ivagor
25.05.2014, 20:55
Как это возможно, ведь Бейсик-микрон был разработан для РК86? Можно, конечно, нафантазировать - у авторов утекла промежуточная версия микрона, на её основе сделали версию для специалиста, но лично мне в это сложно поверить.
Я отличал микроновских потомков по двум признакам:
1. Откорректированная процедура в математике (без IDAшной базы адрес не помню) - это ПМСМ достаточный признак для идентификации микрона
2. Наличие сервисных операторов EDIT, DELETE, RENUM, AUTO - это необходимый, но не достаточный признак
Список признаков неполный

---------- Post added at 22:55 ---------- Previous post was at 22:50 ----------

Ссылка (http://zx-pk.ru/showpost.php?p=206742&postcount=160) на нечто вроде описания упомянутого околоарифметического бага

tnt23
25.05.2014, 23:07
А бейсик для Ириши в природе еще встречается?

liberation
26.05.2014, 00:06
ну и отдельно идёт бейсик для Львов-ПК01
он явно самостоятельно делался из MS3.2 8k

Про ПК-01 "Львов" сохранилось предание, что Бэйсик для него, когда он был еще только дипломной работой, был доставлен из Польши студентами-контрабандистами. В дальнейшем его доработкой занялись уже сотрудники Львовского политеха. Известно, что почти все доработки были выполнены Юрием Опирем (ua.linkedin.com/pub/yurij-opyr/0/211/252) , чтобы получить лучшую совместимость с MSX. Увы, но Юрий отказался от общения по поводу генезиса Бэйсика для ПК-01. Даже точно датировать работы трудно. Где-то между 1983-87 годами.

esl
26.05.2014, 14:14
Как это возможно, ведь Бейсик-микрон был разработан для РК86? Можно, конечно, нафантазировать - у авторов утекла промежуточная версия микрона, на её основе сделали версию для специалиста, но лично мне в это сложно поверить.
Я отличал микроновских потомков по двум признакам:
1. Откорректированная процедура в математике (без IDAшной базы адрес не помню) - это ПМСМ достаточный признак для идентификации микрона
2. Наличие сервисных операторов EDIT, DELETE, RENUM, AUTO - это необходимый, но не достаточный признак


я в код не сильно лазил, такие тонкности не смотрел, это наверное отдельное исследование надо делать

я вот про что , на спеце есть два бейсика у которых не совпадают адреса и нет операторов/функций

ADDR
PI
RENUM
ACS
LG
LPRINT
LLIST

на мой взгляд - это более ранняя версия, хотя в код не смотрел.

---------- Post added at 13:14 ---------- Previous post was at 13:04 ----------


А бейсик для Ириши в природе еще встречается?

только факт его наличия в "книжке"

ivagor
26.05.2014, 22:33
Насчет микрона. Для детекта предлагаю использовать поиск сигнатуры FE 91 DA. В "немикронах" будет FE 90 DA. В известном дизасме альтаир бейсика 3.2 (ссылка например в первом посте темы) это фрагмент процедуры GetSubscript, но я бы вслед за Е.Филипповым назвал это фрагментом процедуры INTFROMFLOAT.
Как увидеть проявление разницы - например PRINTPEEK(32768)
По вышепредложенному критерию Искровский бейсик оказался представителем микроновской ветки и на PRINTPEEK(32768) реагирует без ошибки

---------- Post added at 00:30 ---------- Previous post was at 00:11 ----------

Стоит дополнить про PRINTPEEK(32768) - микрософтовцы в более поздних версиях тоже поправили ошибку с подобными случаями, но по другому, чем в микроне и сигнатура FE 91 DA отличает именно микроны.

---------- Post added at 00:33 ---------- Previous post was at 00:30 ----------

Насколько помню про эту ошибку - основная правка там где-то дальше, но сейчас без иды детально все вспоминать (вернее разбираться по новой) моральных сил мне не хватит.

DDp
27.05.2014, 01:19
ибо вон на специалисте вроде как есть более ранний вариант Микрона чем на РК86

Как это возможно, ведь Бейсик-микрон был разработан для РК86? Можно, конечно, нафантазировать - у авторов утекла промежуточная версия микрона...
Да, даже в журнале упоминали: Осторожно Бейсик "Микрон" Радио №4 1990, стр.44 (http://www.radioway.ru/images/big/1990/04/_1990_04_46.gif)
Видимо, в статье имеется в виду BS_M_OLD.RKR (http://emu80.org/files/s_2.zip) - говорит, что *МИКРОН*, промт "ЖДУ:". Второй пилот-тон (между заголовком и осн.блоком) двухтональный, сначала низкий тон, затем высокий (в журнальном "Микроне" только низкий). В конце дампа надпись: РАЗРАБОТАН ДЛЯ *МИКРО/80* И АДАПТИРОВАН ДЛЯ *Р-86РК* ДЛЯ ЖУРНАЛА "РАДИО" БАРЧУКОВЫМ В.Н. И ФАДЕЕВЫМ Е.П. 1986 Г.

ivagor
27.05.2014, 06:23
Да, даже в журнале упоминали: Осторожно Бейсик "Микрон" Радио №4 1990, стр.44
А ведь давным-давно я читал эту статью - тем хуже для меня :)
FE 91 DA в BS_M_OLD.RKR есть. Т.е. эта сигнатура для любого микрона, хоть "старого", хоть нормального.

Viktor2312
27.05.2014, 11:05
только факт его наличия в "книжке"

Его там нет.


Распечатка программ интерпретатора БЕЙСИК и ФОРТ в данной книге не приводятся. Пользователи заинтересовавшиеся этими программами...

ivagor
27.05.2014, 11:59
В конце дампа надпись: РАЗРАБОТАН ДЛЯ *МИКРО/80* И АДАПТИРОВАН ДЛЯ *Р-86РК* ДЛЯ ЖУРНАЛА "РАДИО" БАРЧУКОВЫМ В.Н. И ФАДЕЕВЫМ Е.П. 1986 Г.
Кстати, интересно, промежуточная версия микрона для РК86 распространилась в какой-то степени, а оригинал для микро-80 нигде не засветился?

esl
27.05.2014, 14:09
Его там нет.

ага, я же написал "ФАКТ ЕГО НАЛИЧИЯ" ;)
а не сам бейсик.

VovanRK86
28.05.2014, 00:16
Его там нет.
А про ЮТ88 не так кстати?

b2m
28.05.2014, 10:40
Б2М - на одном из образов, выложенных на сайте b2mа (не помню на каком). Если мне не изменяет память, то сам b2m как раз и затачивал бейсик под башкирию, так что прошу его самого раскрыть тайну происхождения башкирского бейсика.
Могу с уверенностью сказать, что в исходиках он назывался XYBASIC, авторство уже не помню, но вроде было Digital Research. Хотя, это был дизассемблированный текст, так что назвать могли как угодно.

ivagor
28.05.2014, 20:29
Некий XYBASIC (http://nesssoftware.com/home/mwc/XYBASIC.php) для CP/M с исходниками, но не Digital Research. Там даже поддержка amd9511 есть.

b2m
28.05.2014, 22:01
Да, это оно и есть.
Вот кусок оригинала:

gtpar: call gtcnd ;look for comma not followed by delimiter
mvi a,0
rc ;no more parameters, return 0
mvi d,multt
call gtd ;look for *
jnc gtpa1 ;array passed
call gtvar ;else var ref
lxi b,0 ;# dims = 0 to C
push b ;push 0 for DE
jnc gtpa2 ;and continue below
mcerr: error f, M, C ;fatal MC error
gtpa1: call fdvar ;look for var name
jc mcerr
ldax d ;fetch type
mov c,m ;# dims to C
mvi b,0 ;to allow dad
inx h ;point to first dim byte
push h ;and save
dad b
dad b ;point to first data byte
gtpa2: call bytsd ;bytes per entry to DE
mov b,e ;and then to B
pop d ;dim addr to DE

А вот из моих исходников:

PARCALL:CALL L2069
MVI A,0
RC
MVI D,0C3H
CALL L2072
JNC L05FB
CALL L2287
LXI B,0
PUSH B
JNC L0609
MCERR: CALL ERMSGC
DB 'Нет перемен.',0
L05FB: CALL FINDVAR
JC MCERR
LDAX D
MOV C,M
MVI B,0
INX H
PUSH H
DAD B
DAD B
L0609: CALL L0364
MOV B,E
POP D

Но мне оно досталось уже переработанное, были добавлены несколько графических операторов (токены новых команд двухбайтные, одним оператором пожертвовали ради префикса).

b2m
29.05.2014, 19:12
Некий XYBASIC (http://nesssoftware.com/home/mwc/XYBASIC.php) для CP/M с исходниками, но не Digital Research. Там даже поддержка amd9511 есть.
Интересно, что исходники достали с 8-ми дюймовых дискет в мае 2014, то есть в этом месяце. Свежак! :)

ivagor
01.06.2014, 15:34
В завершение темы (http://zx-pk.ru/showpost.php?p=712870&postcount=23) про отличие процедуры INTFROMFLOAT (векторовское название) в микронах и немикронах. Наверно стоит все же озвучить более корректный комментарий, что в домикронах это не ошибка, а просто особенность - в них эта процедура пропустит от -32768 до 32767, а в микронах -65535 до 65535.

---------- Post added at 17:34 ---------- Previous post was at 17:31 ----------


Насколько помню про эту ошибку - основная правка там где-то дальше, но сейчас без иды детально все вспоминать (вернее разбираться по новой) моральных сил мне не хватит.
Основная правка все же как раз cpi 91h вместо cpi 90h

ivagor
03.06.2014, 11:55
Стоит дополнить про PRINTPEEK(32768) - микрософтовцы в более поздних версиях тоже поправили ошибку с подобными случаями
Уточню, что микрософтовцы не правили "ту" процедуру, а добавили отдельную (смотрел на примере векторовской адаптации корветовского бейсика).

Еще уточнение: "граница раздела" по использованию/неиспользованию в микрософтовских бейсиках процедуры с fe 90 da для 16битных целых зависит не от номера версии, а от варианта:
1. в 8k (наибольший номер, который смотрел - 4.7) - да
2. в extended (наименьший номер, который смотрел - 4.0) - нет.

zx_
03.06.2014, 16:24
XYBASIC for Process Control, Data Acquisition and Real Time Applications with 8080-based Computers
?
и где взять 9511?

Ewgeny7
04.06.2014, 09:13
и где взять 9511?
"I adapted XYBASIC to use it if present (using self-modifying code!)."
Нету - и фиг с ним, без него работать будет.

ivagor
04.06.2014, 10:58
Наверно я не разобрался, но там в исходниках для 9511 стоит условная компиляция, т.е. с 9511 отдельная версия.

DDp
24.05.2015, 22:27
Да, даже в журнале упоминали: Осторожно Бейсик "Микрон" Радио №4 1990, стр.44
Видимо, в статье имеется в виду BS_M_OLD.RKR - говорит, что *МИКРОН*, промт "ЖДУ:". Второй пилот-тон (между заголовком и осн.блоком) двухтональный, сначала низкий тон, затем высокий (в журнальном "Микроне" только низкий). В конце дампа надпись: РАЗРАБОТАН ДЛЯ *МИКРО/80* И АДАПТИРОВАН ДЛЯ *Р-86РК* ДЛЯ ЖУРНАЛА "РАДИО" БАРЧУКОВЫМ В.Н. И ФАДЕЕВЫМ Е.П. 1986 Г.
Здесь (01 BASIC MIKRON (ENG).rkr) (http://zx-pk.ru/attachment.php?attachmentid=52299&d=1432492971) точно такой же бейсик, но английскими сообщениями. Надписи "РАЗРАБОТАН ДЛЯ..." нет.

Плюс нахлабучка "Бейсик-RENUM" то же с англискими сообщениями. При запуске бейсика копируется в верхние адреса. Запуск из монитора: G7000.

Ewgeny7
24.05.2015, 23:18
ЗдОрово, обожаю бейсики.

ivagor
25.05.2015, 09:02
DDp, есть какие-то идеи, как так получилось (и откуда взялся BASIC MIKRON (ENG).rkr)?

DDp
25.05.2015, 18:52
DDp, есть какие-то идеи, как так получилось (и откуда взялся BASIC MIKRON (ENG).rkr)?
Откуда вообще взялся недоМИКРОН - нет.

А конкретно эта запись из этой темы (http://zx-pk.ru/showthread.php?t=25154):
Есть такой рижский клон Радио-86РК - "Микро-88". У меня от него осталась кассета...

Shaman
31.03.2016, 06:56
Всем привет!
Как раз пишу конвертер под Windows на Lazarus между текстовым листингом программы на Бейсике и дампом ОЗУ.
Чтобы под Виндой в текстовом редакторе с красивой подсветкой спокойно разрабатывать игры :v2_dizzy_army:
У меня получилось смещение идентификатора на единичку меньше.
Это встроенный в Партнер-01.01 бейсик (точно так же для Радио-86/РК).



Clear_Command;
Add_Command($80, 'CLS');
Add_Command($81, 'FOR');
Add_Command($82, 'NEXT');
Add_Command($83, 'DATA');
Add_Command($84, 'INPUT');
Add_Command($85, 'DIM');
Add_Command($86, 'READ');
Add_Command($87, 'CUR');
Add_Command($88, 'GOTO');
Add_Command($89, 'RUN');
Add_Command($8A, 'IF');
Add_Command($8B, 'RESTORE');
Add_Command($8C, 'GOSUB');
Add_Command($8D, 'RETURN');
Add_Command($8E, 'REM');
Add_Command($8F, 'STOP');

Add_Command($90, 'OUT');
Add_Command($91, 'ON');
Add_Command($92, 'PLOT');
Add_Command($93, 'LINE');
Add_Command($94, 'POKE');
Add_Command($95, 'PRINT');
Add_Command($96, 'DEF');
Add_Command($97, 'CONT');
Add_Command($98, 'LIST');
Add_Command($99, 'CLEAR');
Add_Command($9A, 'CLOAD');
Add_Command($9B, 'CSAVE');
Add_Command($9C, 'NEW');
Add_Command($9D, 'TAB(');
Add_Command($9E, 'TO');
Add_Command($9F, 'SPC(');

Add_Command($A0, 'FN');
Add_Command($A1, 'THEN');
Add_Command($A2, 'NOT');
Add_Command($A3, 'STEP');
Add_Command($A4, '+');
Add_Command($A5, '-');
Add_Command($A6, '*');
Add_Command($A7, '/');
Add_Command($A8, '^');
Add_Command($A9, 'AND');
Add_Command($AA, 'OR');
Add_Command($AB, '>');
Add_Command($AC, '=');
Add_Command($AD, '<');
Add_Command($AE, 'SGN');
Add_Command($AF, 'INT');

Add_Command($B0, 'ABS');
Add_Command($B1, 'USR');
Add_Command($B2, 'FRE');
Add_Command($B3, 'INP');
Add_Command($B4, 'POS');
Add_Command($B5, 'SQR');
Add_Command($B6, 'RND');
Add_Command($B7, 'LOG');
Add_Command($B8, 'EXP');
Add_Command($B9, 'COS');
Add_Command($BA, 'SIN');
Add_Command($BB, 'TAN');
Add_Command($BC, 'ATN');
Add_Command($BD, 'PEEK');
Add_Command($BE, 'LEN');
Add_Command($BF, 'STR$');

Add_Command($C0, 'VAL');
Add_Command($C1, 'ASC');
Add_Command($C2, 'CHR$');
Add_Command($C3, 'LEFT$');
Add_Command($C4, 'RIGHT$');
Add_Command($C5, 'MID$');
Add_Command($C6, 'SCREEN$(');
Add_Command($C7, 'INKEY$');
Add_Command($C8, 'AT');
Add_Command($C9, '&');
Add_Command($CA, 'BEEP');
Add_Command($CB, 'PAUSE');
Add_Command($CC, 'VERIFY');
Add_Command($CD, 'HOME');
Add_Command($CE, 'EDIT');
Add_Command($CF, 'DELETE');

Add_Command($D0, 'MERGE');
Add_Command($D1, 'AUTO');
Add_Command($D2, 'HIMEM');
Add_Command($D3, '@');
Add_Command($D4, 'ASN');
Add_Command($D5, 'ADDR');
Add_Command($D6, 'PI');
Add_Command($D7, 'RENUM');
Add_Command($D8, 'ACS');
Add_Command($D9, 'LG');
Add_Command($DA, 'LPRINT');
Add_Command($DB, 'LLIST');

rw6hrm
15.05.2019, 16:11
Подниму темку вопросами, может быть и не касающуюся её напрямую...
1. Какие ПЗУшные Бейсики для 8080 у нас существуют? На ум приходит только специалистовский...
2. Возможно ли решить следующую задачу:
- Бейсик в ПЗУ;
- программа для Бейсика в ПЗУ;
- при включении питания/сбросу программа перегружается из ПЗУ в рабочие ячейки ОЗУ и ей передаётся управление (без лишних вопросов к пользователю)?
3. Куда смотреть для корректировки, если вывод будет производиться не на ТВ и не на СОМ-порт, а на что-то иное, к примеру, на 7-сегментный индикатор?
Может вопросы и глупенькие, но заранее спасибо за возможные ответы.

ivagor
15.05.2019, 16:39
1. Какие ПЗУшные Бейсики для 8080 у нас существуют? На ум приходит только специалистовский...
Под ПЗУшным в данном случае подразумевается "работающий из ПЗУ без пересылки в ОЗУ"? Если да, то можно ссылку на такой специалистовский? Сам на вскидку могу вспомнить работающие из ПЗУ бейсики ПК8000, Искры-Тарту 1080, примерно наполовину работающий из ПЗУ бейсик Львова ПК-01.

rw6hrm
15.05.2019, 16:46
Под ПЗУшным в данном случае подразумевается "работающий из ПЗУ без пересылки в ОЗУ"?
Да, именно так. Просто что помню про Спеца, что Бейсик там мог располагаться в ПЗУ, а вот как он работал - сие мне не ведомо. Реально ПЗУшный Бейсик, с которым работаю до сих пор - это OSI BASIC, но он для 6502...
Хочу сделать небольшую конструкцию на 8080 (не комп! но управляющая машина), но софт использовать на Бейсике, на асме писать муторно и неблагодарно...

ivagor
15.05.2019, 17:03
Наиболее распространенные на советских компах варианты микрософтовского бейсика 3.2 без самомодифицирующегося кода, из пзу в принципе должны работать, лишь бы служебные переменные не попали в пзу. Со специалистом проблема только в том, что там для работы из пзу бейсик пришлось бы полностью и качественно дизассемблировать и оттранслировать с другого адреса, у меня на этот счет большие сомнения. Еще есть cp/m-ные бейсики, из них один из самых маленьких - IBASIC океана-240 (начальная версия XYBASIC). Вроде Ewgeny7 адаптировал микрософтовский бейсик какой-то версии для своей конструкции, может он подскажет. И насчет работы бейсика из пзу - это обязательно? Может его тоже просто пересылать в озу перед началом работы?

rw6hrm
15.05.2019, 17:14
Хотелось бы обойтись одной РУ10 в качестве ОЗУ (как в Денди), но будем посмотреть. По адаптации Евгением посмотрю ветку, спасибо.
Опять же, почему 8080 - комп на 6502 используется в работе, а ВМ80 валяется без дела, вот и прицеливаюсь...

ivagor
15.05.2019, 17:23
Хотелось бы обойтись одной РУ10 в качестве ОЗУ
Получается как минимум там должны поместиться служебные переменные самого бейсика, стек и переменные программы, а программу как и бейсик лучше исполнять из пзу.

rw6hrm
15.05.2019, 17:30
Так и есть. Первые 256 байт отведены под системные нужды, 256 под стек, а полтора кило вполне на программу хватает. Так Денди (и производные 6502) и работают.

BYTEMAN
15.05.2019, 17:41
Корветовский бейсик из ПЗУ вроде тоже работал

ivagor
15.05.2019, 18:19
Первые 256 байт отведены под системные нужды
Если речь не просто о первых 256 байтах микросхемы, а о первых 256 байтах адресного пространства, то имхо лучше ориентироваться на какой-нибудь cp/m-ный бейсик, т.к. они в эту область почти не лезут, им разве что переход по адресу 0005h нужен. А бейсики советских пк вслед за микрософтовским 3.2 не только используют почти все RST, но и размещают в районе <100h часто используемые процедуры. Исправить можно все, но с cp/m-ным на первый взгляд правок должно быть меньше.

- - - Добавлено - - -


Корветовский бейсик из ПЗУ вроде тоже работал
Да, он продвинутый (5.x вместо 3.2) но зато весьма толстый по меркам 8080.

- - - Добавлено - - -

Вспомнил про Tiny BASIC (http://cpuville.com/Code/Tiny-BASIC.html). Он маленький и там есть исходник с комментариями, т.е. его сравнительно просто адаптировать. Правда и возможностей у него мало. Насколько помню svofski его компилировал, может он что-то скажет.

- - - Добавлено - - -

Ну и на всякий случай почти дизасм альтаир бейсика (http://altairbasic.org/) (который в основе большинства бейсиков советских ПК на 8080). Эту ссылку неоднократно приводили, может даже и я сам, но пусть будет.

zx_
15.05.2019, 18:39
куча народу этим фанатеет блин

https://www.autometer.de/unix4fun/z80pack/ftp/altair/

http://www.ittybittycomputers.com/IttyBitty/TinyBasic/

еще какойто LLL BASIC for 8080
https://github.com/feilipu/LLL-Floating-Point - с поддержкой математического сопроцессора, серьезно люди подходили к вопросу тогда

Ливерморская лаборатория, где взрыволет к тау кита рассчитвали,
https://e-reports-ext.llnl.gov/pdf/171286.pdf

на 8080

ivagor
15.05.2019, 19:10
еще какойто LLL BASIC for 8080
Насколько я понял отсюда (http://www.retrotechnology.com/herbs_stuff/float.html) LLL BASIC не дошел до наших дней целиком, только математическая часть.

zx_
15.05.2019, 19:31
точно rom basic для 8080 - значит это возможно
https://www.adwaterandstir.com/2017/05/30/rombasic/

:v2_dizzy_roll:

LLL какието листинги на бумаге

rw6hrm
15.05.2019, 20:46
rom basic для 8080 - значит это возможно
Остаётся решить вопрос автозагрузки и автостарта самой программы на Бейсике. Надеюсь, что описание переменных в этом поможет.

ivagor
15.05.2019, 21:04
rom basic для 8080
Может у меня баннерорезка лютует, но не вижу ссылки для скачивания.

zx_
15.05.2019, 22:08
ivagor, я так понял, это разновидность альтаир бейсика

скачать здесь
http://altairclone.com/downloads/roms/

какойто супер язык программирования, мимо нас прошел незамеченным
V T L–2 for the Altair 8800
A VERY TINY LANGUAGE

1 килобайт занимает
http://altairclone.com/downloads/roms/VTL-2%20(Very%20Tiny%20Language)/

ivagor
16.05.2019, 08:26
скачать здесь
Спасибо, у меня именно такого варианта не было. Но все же он не 100% romный, он копирует в озу небольшие фрагменты кода, не считая служебных переменных и стека.

zx_
16.05.2019, 13:16
для задач rw6hrm, наверное VTL-2 килобайтный идеален
да и для всех наших компов на 580, прямо в монитор прошивать
для ЮТ 88
только он в бинарнике и некто должен разобрать , потом собрать , потом
хехе
некому кроме некоторых -)

rw6hrm
16.05.2019, 14:03
Курю его, курю... Да там не особо его разбирать, только найти обращения к портам в/в, остальное мелочи. Не без недостатков: нет плавающей запятой, нет функций... Обойтись можно, но вопрос об автозапуске остаётся...

ivagor
26.05.2019, 08:40
Здесь (http://www.nascomhomepage.com/) (среди прочего) можно скачать исходник NASCOM бейсика, который является версией 4.7 микрософтовского бейсика. Это версия 8k, т.ч. вполне конкурентоспособна с советскими вариантами 3.2. Минус - нашел там несколько команд специфичных для z80 (три команды с IX, две команды djnz и один раз 16битный sbc), все это очень легко переделывается на 8080 (дольше и муторнее переделывать ввод и вывод). Плюс (кроме того, что это 4.7) - вызовы ряда подпрограмм, которые в 3.2 на rst здесь на call, что облегчает релоцирование. Исходник рассчитан на некий специфический асм (указан в заголовке), я его скачал, но не стал пробовать и перепилил на tasm.
Еще очень бегло взглянул на апогеевский BASMSX.RKA. Это точно не 3.2, а 4.x или 5.x. MSXный - это вариант 5.x, но насчет этого апогеевского варианта не уверен, что там есть хоть что-то из msxного.

ivagor
26.05.2019, 18:05
Нашел еще одно характерное отличие бейсика микрон в дополнение к ранее озвученному (1 (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=712870&viewfull=1#post712870), 2 (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=714141&viewfull=1#post714141)). В таблице коэффициентов ряда для расчета синуса вместо пяти используемых зачем-то поместили семь коэффициентов (из которых два никогда не используются). И во всех портах микрона на другие компы их бездумно перетаскивали. Использовать для "детекта микрона" все же проще сигнатуру из процедуры INTFROMFLOAT, описанную по вышеприведенной ссылке.
Признаюсь, что насчет рядов в микросфотовских бейсиках разобрался не на 100%. Для экспоненты и арктангенса используются коэффиценты ряда Маклорена. А вот для синуса и логарифма коэффициенты какие-то странноватые.

ivagor
27.05.2019, 17:02
Практически доразобрался с рядами.
У синуса коэффициенты умножены на 2*pi в соответствующей степени. Меня сбило то, что микрософтовцы немного (на 5%, если за 100% принять зануление) ошиблись с последним коэффициентом. Но эта небольшая погрешность на практике совершенно незаметна, т.к. даже если взять и занулить 5й коэффициент, то ошибка будет только вблизи аргументов +-pi/2 и +-3pi/2 (с периодом 2*pi) и это будет очень-очень маленькая ошибка. Поэтому микрософтовцы не поправили пятый коэффициент для расчета синуса даже в последних (5.x) версиях своих бейсиков для 8080.
Для логарифма ряд считает некий промежуточный результат.

ivagor
27.05.2019, 21:55
Меня сбило то, что микрософтовцы немного (на 5%, если за 100% принять зануление) ошиблись с последним коэффициентом. Но эта небольшая погрешность на практике совершенно незаметна, т.к. даже если взять и занулить 5й коэффициент, то ошибка будет только вблизи аргументов +-pi/2 и +-3pi/2 (с периодом 2*pi) и это будет очень-очень маленькая ошибка. Поэтому микрософтовцы не поправили пятый коэффициент для расчета синуса даже в последних (5.x) версиях своих бейсиков для 8080.
При более тщательной проверке оказалось, что именно "неправильный" пятый коэффициент дает максимальную точность расчета синуса (разница очень-очень маленькая, но все же есть). Получается микрософтовцы совершенно оправданно использовали именно его. Осталось понять - почему так.

- - - Добавлено - - -

Единственное объяснение, которое смог придумать - это коррекция коэффициента для учета ограниченной точности представления чисел. Представление нормального коэффициента вылезает в следующий старший бит мантиссы, а микрософтовский вариант почти на границе. Можно даже чуть увеличить этот коэффициент, главное не переходить к задействованию следующего бита мантиссы, и тогда результаты тоже получаются неотличимо точные. Именно пятый коэффициент подвергся коррекции скорее всего из-за того, что он перед минимальным по модулю значением степени аргумента, в других коэффициентах точности хватает (для правильного вычисления произведения коэффициента на степень аргумента).

zx_
27.05.2019, 23:07
в копилку свеженький
https://github.com/dimitrit/tastybasic

Tasty Basic

ivagor
28.05.2019, 06:46
Нашел, откуда взяли коэффициенты для разложения синуса в ряд в микрософтовском бейсике. Книга Computer Apporoximations, J. Hart и другие (1968). Страница 238, набор SIN 3341, только в книге и в бейсике разное масштабирование аргумента и, соответственно, коэффициентов (в книге соответствуют аргументу деленному на pi/2, а в бейсике - на 2pi). Со своей колокольни я бы трактовал использованный подход как умножение на оконную функцию при усечении бесконечного ряда (должен был и сам догадаться). Вместо умножения на прямоугольную оконную функцию (т.е. часть коэффициентов берем с множителем 1, а остальные с множителем 0, т.е. отбрасываем) здесь используется более плавная и больше всего изменяются коэффициенты на границе, в данном случае пятый. В книжке можно увидеть, что в других наборах для синуса с большим или меньшим числом коэффициентов тоже сильнее всего "страдают" именно конечные.
Насчет логарифма. В последних микрософтовских бейсиках для 8080 точно используются коэффициенты из Харта, но там изменили алгоритм. Скорее всего в бейсиках <=5.0 тоже из Харта, только надо найти тот самый набор. Кстати побочный эффект разбирательства с алгоритмом - удостоверился, что корветовский бейсик на базе не последних версий микрософтовского.


Tasty Basic
Варианты Tiny Basica - это хорошо, но слишком уж он простой.

zx_
28.05.2019, 10:27
https://sourceforge.net/projects/msxsyssrc/
не смотрел , чтото msx

microsoft basic-80 5.2 source code
http://lahey.winworldpc.com/Microsoft%20Basic-80%205.2%20Source.7z

ivagor
28.05.2019, 10:53
О, за msxный большое спасибо, а тот что (предположительно, т.к. скачать оттуда не смог) по второй ссылке я уже скачал в декабре прошлого года. Из исходника basic-80 я как раз и вышел на книгу Харта. В этом исходнике отдельно доставляют восьмеричные числа.

zx_
28.05.2019, 12:06
ivagor, ждем msx бейсик для вектора
:v2_dizzy_tired2:

вот тут
https://winworldpc.com/download/c2bfc380-c2b2-c2b4-7d00-11c3a7c29d25

Microsoft Basic-80 5.2 Source

ivagor
28.05.2019, 16:59
Собрал пзу msx 1 из исходника и вроде оно даже работает. Правда собирается на байт длиннее чем нужно (я этот байт отрезал). Адаптировать на вектор msx бейсик я собирался с ПК8002, но остановился на ПК8000 и дальше пока не думал.
Архив с бейсиком-80 5.2 точно тот, который я качал раньше.

ivagor
02.06.2019, 13:16
Попробовал компильнуть XYBASIC из исходников, ссылка (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=713288&viewfull=1#post713288) на которые есть в теме. И там не все гладко, не хочет нормально компилироваться. При большом желании разобраться можно, но все равно досадно.

zx_
05.06.2019, 22:18
а правда корветовский бейсик похож на gw-basic?
вот здесь парень написал
http://old-dos.ru/index.php?page=lib&do=show&id=71

ivagor
06.06.2019, 06:39
Корветовский бейсик - это модифицированный микрософтовский. GW-BASIC - тоже микрософтовский, поэтому неудивительно, что они похожи.

ivagor
06.06.2019, 16:52
Работа над ошибками. LLL Basic (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=1012566&viewfull=1#post1012566) все же дошел до наших дней в полном виде, а не частично, как я писал (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=1012572&viewfull=1#post1012572). Откомпилированный .COM внутри архива доисторического формата .ARK. И он даже работает, по крайней мере PRINT 1+1 выдал два.

zx_
06.06.2019, 20:01
в пзу монитора нав можно вмонтировать LLL )

- - - Добавлено - - -

ivagor, а вы куданибудь выкладваете результаты труда?

ivagor
06.06.2019, 20:22
Модифицированные бейсики и, иногда, информацию выкладывал на форуме в соответствующих разделах (вектор, специалист, океан, РК86, может еще что забыл). Векторовские поделки svofski разместил в своей онлайн-картотеке.
Вспомнил, еще про львовский бейсик довольно много писал на соответствующем специализированном форуме.

zx_
14.06.2019, 13:08
сюда наверное и его
Very Tiny Language
768 бит всего, для альтаира
http://altairclone.com/downloads/roms/VTL-2%20(Very%20Tiny%20Language)/VTL-2%20Manual.pdf

http://altairclone.com/downloads/roms/VTL-2%20(Very%20Tiny%20Language)/

у альтаира богатое наследие
http://altairclone.com/downloads/

ivagor
14.06.2019, 13:42
Радует еще один исходник бейсика, жалко, что в pdf (может он не защищенный, текст извлекать не пробовал).

- - - Добавлено - - -

Похоже там сканированные страницы, не текст

ivagor
18.07.2019, 17:06
Уже писал про "скрытые" различия микрона и предыдущей версии, изначально предназначенной для микро-80, вот еще одно. В микроне в процедурах умножения и деления убрали самомодифицирующийся код. Т.к. это привело к замедлению и увеличению размера этих процедур, то напрашивается только одно объяснение - ориентация на возможность размещения микрона в пзу.
Забавная ситуация с этими процедурами в конверсиях этих бейсиков на другие компы. У потомков микрона, даже чисто озушных, остались процедуры rom-frendly.
Зато в паре пзушных бейсиков, базирующихся на версии микро80, фрагменты этих процедур с самомодификацией вместо адаптации под пзу пересылают в озу и вызывают оттуда. В одном из компов совсем круто - процедуру переносят для выполнения в озу, а за вызовом этой процедуры в пзу осталась пачка nopов, которые каждый раз тормозят выполнение.

tnt23
18.07.2019, 18:59
напрашивается только одно объяснение - ориентация на возможность размещения микрона в пзу.

По-моему, в "Радио" об этом где-то даже писали (про адаптацию "Микрона" для ПЗУ).

ivagor
18.07.2019, 19:29
Точно, надо было статью перечитать - "Интерпретатор может быть размещен в ПЗУ в той же области, что не нарушит его работоспособности."
Но это не делает менее забавным оставление этих процедур в бейсиках-потомках в том же виде (большом и тормозном), даже если эти потомки были рассчитаны только на озу и сами использовали самомодификацию в других процедурах (пример - векторовский 2.5).

ivagor
19.07.2019, 18:19
Еще пара фактов про микрон.
1. INP и OUT токенизируются, но в таблице вызовов они перенаправлены на сообщение об ошибке. И их реализации почти полностью остались, но не используются.
2. CSAVE проверяет один байт из пзу, и если он не совпал с нужным значением, то вылетает.

Поправил ошибки/недоработки РКшного микрона:
1. Теперь бейсик совместим и с z80.
2. Исправлен оператор RENUM (подробности и примеры есть в векторовском разделе в теме про бейсик).
3. При редактировании работает ЗБ (BackSpace). Не понимаю, почему авторы микрона сразу не сделали поддержку этой клавиши.

svofski
19.07.2019, 18:47
Не понимаю, почему авторы микрона сразу не сделали поддержку этой клавиши.
А как там было? В Бейсике ДВК-1 просто печатался бекслеш и это звалось у нас редактированием.

Понятно, что это наследие телетайпа, но каким образом оно просочилось в видеотерминалы и компьютеры, которые отродясь были ориентированы на видеодисплеи, понять невозможно.

ivagor
19.07.2019, 18:56
ЗБ/BkSp в оригинальном микроне печатает белый квадрат, а для удаления ненужных символов в позиции курсора можно использовать F2 (как Delete, подводим курсор куда надо и жмем F2). А вот, например, авторы векторовской адаптации микрона реализовали нормальную работу ЗБ.

svofski
19.07.2019, 19:06
Виной всему скорее всего седобородые старцы. Испоконъ ​вѣку​ печатали ​бѣлые​ квадраты и черты ​косыя​!

ivagor
19.07.2019, 20:41
Возможно у клавиши ЗБ изначально в доисторические времена был какой-то другой смысл. У микро-80, микроши, специалиста и ют-88 монитор при нажатии на ЗБ просто печатает знак подчеркивания. На мой взгляд действие ЗБ как BkSp намного полезнее.

zx_
19.07.2019, 21:54
так микрон будет работать в пзу ?
или в каком номере падио статья

svofski
20.07.2019, 00:25
ivagor, клавиша ЗБ значит забой и забивает она потому что это телетайп. Печатает бекслеш и всех делов. Вот зачем это воспроизводить на видеотерминале?

ivagor
20.07.2019, 06:03
так микрон будет работать в пзу ?
или в каком номере падио статья
Статья про микрон в Радио 1988\8, стр. 37-43. Из пзу он работать будет, нужно только включить пзу с микроном в адресное пространство в адреса 0000-1FFF. Возможно такую доработку для РК публиковали, но я про нее не читал.


клавиша ЗБ значит забой и забивает она потому что это телетайп. Печатает бекслеш и всех делов. Вот зачем это воспроизводить на видеотерминале?
Насчет воспроизведения такого поведения ЗБ в компьютерах во второй половине 80х у меня тоже недоумение, их авторы ведь наверняка были знакомы с продвинутыми забугорными компами. Даже с РК и Микрошей непонятно - авторы у них одни и те же, но в мониторе Микроши ЗБ печатает подчеркивание, а в мониторе РК - стирает предыдущий символ.

rw6hrm
20.07.2019, 12:10
Позвольте сразу же тупые вопросы по Микрону.
1. Если он находится с нулевого адреса, то, исключив схему стартового прыжка в ПЗУ и запустив комп, мы сразу получаем рабочий Бейсик?
2. Куда и что ткнуть в случае, если есть образ памяти ОЗУ в виде ПЗУ(с 2200H), куда помещена исполняемая программа на Бейсике, чтобы Микрон не спрашивал "Y/N", а сразу бы запускал "загруженную" программу (типа авто-RUN'а)?
3. При работе программы в Служебной области (2000Н-2200Н) что-то изменяется? Если да, то как бы её переместить к области буфера символьных переменных?
Вообще хочется, чтобы Микрон вместе с программой на Бейсике сидел в первых 16К в ПЗУ, а все служебные изменяемые ячейки - в 2К ОЗУ чуть выше... Сразу оговорюсь, что к дизайну РК-86 и подобных это никаким образом не относится, машина планируется абсолютно иная.

ivagor
20.07.2019, 12:41
1. Если он находится с нулевого адреса, то, исключив схему стартового прыжка в ПЗУ и запустив комп, мы сразу получаем рабочий Бейсик?
На РК будет проблема, если так сделать, т.к. сначала надо настроить ВВ55, ВТ57, ВГ75.


2. Куда и что ткнуть в случае, если есть образ памяти ОЗУ в виде ПЗУ(с 2200H), куда помещена исполняемая программа на Бейсике, чтобы Микрон не спрашивал "Y/N", а сразу бы запускал "загруженную" программу (типа авто-RUN'а)?

У меня база иды этого бейсика на другом компе, но прямо сейчас можно посмотреть заметку в Радио (http://www.danbigras.ru/RK86/AutoRun/AutoRun.html) на тему автозапуска. Этот вопрос можно решить разными способами, например в векторовском бейсике 2.5 (развитие микрона) сделали "псевдозагрузку" (из озу в озу) программы при старте.


3. При работе программы в Служебной области (2000Н-2200Н) что-то изменяется? Если да, то как бы её переместить к области буфера символьных переменных?
Да, конечно изменяется. Переместить можно. Как именно переместить - у меня сейчас дизасма нет под рукой, но там явно правок много было бы, в двух словах не перечислить.

Но я бы сказал, что это довольно мелкие вопросы по сравнению с полной адаптацией бейсика для другого компьютера, непохожего на РК.

ivagor
22.07.2019, 18:16
MSX Basic сделан на базе микрософтовского, в вики написано что из версии 4.5. Очевидные его отличия - поддержка msxного железа и экранный редактор. Но, как оказалось, кое в чем он отличается и при выполнении операторов.
Вот такой "тест"

10 DEFDBL A-Z
20 FOR I=1 TO 10
30 PRINT I
40 NEXT
"Общечеловеческие" микрософтовские бейсики 5.21 (BASIC-80) и 5.29 (BASIC-85) ругаются на строку 20 (если в строке 10 задать целую или одинарную точность, то все ОК). Аналогично реагируют бейсик Корвета и BASMSX Апогея. "Урезанные" бейсики, которые поддерживают только одинарную точность, я конечно исключаю из сравнения.
А вот MSXный бейсик переваривает двойную точность в FOR. И единственный отечественный бейсик, который реагирует также - бейсик ПК8002. И у него есть экранный редактор и спрайты - похоже его действительно сделали на основе MSXного.

zx_
22.07.2019, 18:41
И единственный отечественный бейсик, который реагирует также - бейсик ПК8002. И у него есть экранный редактор и спрайты - похоже его действительно сделали на основе MSXного.

знать никогда не знал про 8002,
кто-то разобрал msx бейсик в то время и собрал его заново для своего производимого компа ?
8002 институтский проект какой?

ivagor
22.07.2019, 18:57
Про ПК8002 я (как скорее всего и большинство остальных ретролюбов) впервые прочитал в "Вычислительной технике и ее применении" 1990\8 (стр. 46-47). А теперь доступна документация, софт, b2m эмуляцию сделал. Про историю можно здесь (https://zx-pk.ru/threads/9609-kompyuter-quot-pk8002-quot.html?p=546675&viewfull=1#post546675) почитать. Утверждения, что их бейсик на основе MSXного, делали и другие разработчики советских компов, но вот подтверждается это пока только для ПК8002.

ivagor
22.07.2019, 21:04
И формат хранения чисел в бейсике ПК8002 BCDшный, что является особенностью бейсика MSX (на что обращал внимание DDp). Для полного счастья еще можно сравнить коды токенов, но имхо это уже не очень нужно.

zx_
20.01.2021, 14:28
ivagor, bbcbasic для Ориона -)
https://drive.google.com/file/d/0B3S0wVWNPLrwMEV0UmNYakFLaEk/view

в Other/

может могущественный джин переделает под Специалист?
-)

ivagor
20.01.2021, 15:15
Корректнее сказать, что это адаптация bbcbasic для cp/m, требующая z80. Для запуска на специалисте (или любом другом компе) надо z80 и настоящую cp/m или некий минимум эмуляции основных функций cp/m.

DDp
02.02.2021, 21:24
BS_M_OLD.RKR (http://emu80.org/files/s_2.zip)
Ссылка (https://zx-pk.ru/threads/17872-neizvestnye-kassety-opoznanie-otsifrovka-i-t-d.html?p=1102544&viewfull=1#post1102544) - бейсики, найденые на кассетах (совершенно сучайно, есстессно)

cass1\0001_damaged кусок Бейсика с надписями
"*MИКРOША* BASIC"
"РАЗРАБОТАНО ДЛЯ ЖУРНАЛА РАДИО МОСКВА 1984 ГОД"

cass1\0006.rkr Не журнальный вариант Бейсика-Микрон. Похож на BS_M_OLD.RKR. Отличия...
1) заголовок "EXTENDED BASIC-8K"
2) оба пилот-тона низкой тональности
3) в коде строчка-подпись "БВН86" (в КОИ-7 конечно) - Барчуков В.Н.

cass1\0033.rkr Описание BASIC *МИКРОН* и сам
BASIC *МИКРОН* - вариант более близкий к журнальному
1) все текстовые строки и список токенов в конце
2) формат выгрузки полностью соответствует журнальному
(тональность пилот-тонов и контрольная сумма)
3) в последних байтах подпись "18.08.87 Г. SHLD"
(похож на BASMIC87.RKS)


cass3\0015.rkr "SBASIC - MICROPOSOL 07.83"

Прямая ссылка на вложение (https://zx-pk.ru/attachment.php?attachmentid=74612&d=1612285142)

FOMA1959
22.02.2021, 11:43
Добрый день уважаемый Master! Я совсем недавно на Вашем форуме и разыскиваю текст программы интерпретатора БЕЙСИК для МИКРО-80 (желательно с комментариями). Могу предложить текст ПЗУ от ZX-Spectrum с подробнейшими комментариями (500 страниц в формате .docx). Автор не я, а Ян Логан и Френк О-Хара, их книгу я и обработал.

Pyk
25.03.2021, 14:42
Кто-нибудь может подсказать, почему бейсик-микрон не работает на Z80? Вроде бы когда-то обсуждалось, может быть, даже патч был, но не могу почему-то найти...
Если не ошибаюсь, проблема была с флагом четности...

ivagor
25.03.2021, 15:08
Если не ошибаюсь, проблема была с флагом четности
Да, там в двух местах флаг четности мешает.

Вроде бы когда-то обсуждалось, может быть, даже патч был
Если речь про РКшный микрон, то вот (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=1020923&viewfull=1#post1020923)

Shaos
13.03.2024, 10:05
Проклятый склероз. Не RDS, а RDK (RDK PROMPT BASIC V3.2 3K). Несмотря на V3.2 поверхностный просмотр показал, что на альтаировский/микрософтовский 3.2 не похож, а на тини-бейсик похож.в 2011 году я подсчитал, что RDK очень похож на TRS-80 Level I, который был не от Microsoft (от тех был Level II), а был написан на основе фришного Palo Alto Tiny BASIC от Li-Chen Wang (https://en.wikipedia.org/wiki/Li-Chen_Wang):

Level I Basic was based on Li-Chen Wang's free Tiny BASIC, additional functions added by Radio Shack.[8] It achieved a measure of noteworthiness due in large part to its outstanding manual,[5] written by David Lien, which presented lessons on programming with text and humorous graphics, making the subjects very easy to understand. It had only two string variables (A$ and B$), 26 numeric variables (A - Z) and one array, A(). Code for functions like SIN(), COS() and TAN() was not included in ROM but printed at the end of the book. The only error messages were: "WHAT?" for syntax errors, "HOW?" for arithmetic errors such as division by zero, and "SORRY" for out of memory errors.http://en.wikipedia.org/wiki/TRS-80
http://www.nedopc.org/forum/viewtopic.php?f=39&t=9630&start=30

P.S. Буквально вот только что появился ещё один микроскопический бейсик для 8080, который влезает в 1К ПЗУ и требует как минимум 1К ОЗУ (но может использовать и все 64К):

https://hackaday.io/project/194248-one-kilobyte-tiny-basic-for-the-8080
https://github.com/WillStevens/basic1K