Привет всем
такую тему уже пробовали обсуждать, с разной степенью успешности
но у меня есть надежда что наконец можно поставить точку
сразу вывод
большинство бейсиков на бытовых компах пошли от 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/...sic_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 (с бейсиками в том числе)