Просмотр полной версии : Родословная бейсиков для 580ВМ80
Привет всем
такую тему уже пробовали обсуждать, с разной степенью успешности
но у меня есть надежда что наконец можно поставить точку
сразу вывод
большинство бейсиков на бытовых компах пошли от 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 (с бейсиками в том числе)
разница 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 .... ....
esl, респект!
Специалистовский (первоначальный) тоже из серии 3.2, может транзитом через микро-80, может как-то иначе. Потом, насколько помню, и микрон адаптировали. Кстати, для спеца видел некий RDS-бейсик (если не путаю название), внутри я его не смотрел, но помню, что он был маленький (то ли на основе 4k, то ли даже родственник тини-бейсика)
Орионовский бейсик тоже родственник 3.2 и тоже, возможно, транзитом через микро-80.
Про остальные, которые я смотрел, ты уже написал :)
для спеца видел некий RDS-бейсик
Проклятый склероз. Не RDS, а RDK (RDK PROMPT BASIC V3.2 3K). Несмотря на V3.2 поверхностный просмотр показал, что на альтаировский/микрософтовский 3.2 не похож, а на тини-бейсик похож.
HardWareMan
25.05.2014, 12:36
Я помню несколько лет назад проводился анализ барсиков для советских ЛК на НедоПЦ. Статистический анализ показал, что у всех 80% совпадений с барсиком от МС. Похоже, что библиотечка была одна или реально реверсили.
Я помню несколько лет назад проводился анализ барсиков для советских ЛК на НедоПЦ. Статистический анализ показал, что у всех 80% совпадений с барсиком от МС. Похоже, что библиотечка была одна или реально реверсили.
реально реверсили ;)
причем именно MS 3.2 8к
код, таблички, совпадают до безобразия
даже если сильно модифицировали (как например МИКРОН), структура осталась, прост добавления
я по этому таблицу токенов и привёл, из нее очень видно как оно двигалось
esl, респект!
Специалистовский (первоначальный) тоже из серии 3.2, может транзитом через микро-80, может как-то иначе. Потом, насколько помню, и микрон адаптировали.
Для Специалиста, как я помню, в журналах "Моделист-Конструктор" публиковали расширения для бейсика. Сперва вроде небольшое расширение, чтобы рисовать круги. А потом расширение для рисования спрайтов, причем весьма мощное. Причем, эти два расширения были с друг другом несовместимы.
Практически для каждого из упомянутых бейсиков (ведущих родословную от 3.2) есть модифицированные, дополненные, улучшенные варианты. Иногда весьма интересные, но основа бейсика оставалась прежней. Прикрутить спрайты (или еще и редактор спрайтов) ПМСМ проще, чем, например, сделать грамотную поддержку нескольких форматов чисел. С другой стороны "спрайты" были более востребованы, люди хотели писать игрушки на бейсике :)
По специалисту (для него нашлось больше всего бейсиков)
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 |
Есть еще более экзотические Башкирия-2М (предполагю, что клон позднего микрософтовского или транзитом с корвета), Ириша (даже не знаю, был ли там "свой" бейсик), Искра1080-Тарту, ЮТ-88 (на нем наверняка альтаировский родственник).
если сбросиш "дампы" - посмотрю, под рукой не нашлось их
под дампом - загрузить в эмуляторе и записать всю память
p.s. обнаружил что для "последних" опкодов в "микроне" неправильно адресса указаны, но править автоматом - лень ;)
не принципиально в рамках этой задачи.
Искра1080-Тарту - загружаешь эмулятор b2mа и стартует T-BASIC. Там хитрое управление памятью, я лучше дампить не буду.
ЮТ-88 - там точно потомок альтаировского 3.2, возможно транзитом с микро-80 или рк86
Б2М - на одном из образов, выложенных на сайте b2mа (не помню на каком). Если мне не изменяет память, то сам b2m как раз и затачивал бейсик под башкирию, так что прошу его самого раскрыть тайну происхождения башкирского бейсика.
Ириша - просто не помню, в CP/M микрософтовские, конечно, должны работать, а был ли заточенный именно под иришу - вопрос.
не вышло
на вид - формат таблицы токенов - совпадает
Искра1080-Тарту, перый токен вроде CLS, другие же токены - не совпадает
там вообще не понятно что в памяти ;)
а копать - лень
b2m - тоже самое, надо бы спросить наверное ;)
Насчет искры - с памятью не стал разбираться, посмотрел i1080.rom - судя по табличке токенов все же наследник 3.2, сравнительно развитый.
Kakos_nonos
25.05.2014, 18:59
Нарисовать бы генеалогическое дерево.
сейчас это
Microsoft Basic 3.2 8k -> Микро-80 -> РК-86 -> остальное
для более детального дерева надо сильно копать внутри, что конкретно менялось
Одна из веток генеалогии легко отслеживается
...->Бейсик РК86->Бейсик-Микрон->потомков микрона можно идентифицировать
Одна из веток генеалогии легко отслеживается
...->Бейсик РК86->Бейсик-Микрон->потомков микрона можно идентифицировать
ага, но тут тоже копать надо
ибо вон на специалисте вроде как есть более ранний вариант Микрона чем на РК86
Как это возможно, ведь Бейсик-микрон был разработан для РК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) на нечто вроде описания упомянутого околоарифметического бага
А бейсик для Ириши в природе еще встречается?
liberation
26.05.2014, 00:06
ну и отдельно идёт бейсик для Львов-ПК01
он явно самостоятельно делался из MS3.2 8k
Про ПК-01 "Львов" сохранилось предание, что Бэйсик для него, когда он был еще только дипломной работой, был доставлен из Польши студентами-контрабандистами. В дальнейшем его доработкой занялись уже сотрудники Львовского политеха. Известно, что почти все доработки были выполнены Юрием Опирем (ua.linkedin.com/pub/yurij-opyr/0/211/252) , чтобы получить лучшую совместимость с MSX. Увы, но Юрий отказался от общения по поводу генезиса Бэйсика для ПК-01. Даже точно датировать работы трудно. Где-то между 1983-87 годами.
Как это возможно, ведь Бейсик-микрон был разработан для РК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 ----------
А бейсик для Ириши в природе еще встречается?
только факт его наличия в "книжке"
Насчет микрона. Для детекта предлагаю использовать поиск сигнатуры 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 ----------
Насколько помню про эту ошибку - основная правка там где-то дальше, но сейчас без иды детально все вспоминать (вернее разбираться по новой) моральных сил мне не хватит.
ибо вон на специалисте вроде как есть более ранний вариант Микрона чем на РК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 Г.
Да, даже в журнале упоминали: Осторожно Бейсик "Микрон" Радио №4 1990, стр.44
А ведь давным-давно я читал эту статью - тем хуже для меня :)
FE 91 DA в BS_M_OLD.RKR есть. Т.е. эта сигнатура для любого микрона, хоть "старого", хоть нормального.
Viktor2312
27.05.2014, 11:05
только факт его наличия в "книжке"
Его там нет.
Распечатка программ интерпретатора БЕЙСИК и ФОРТ в данной книге не приводятся. Пользователи заинтересовавшиеся этими программами...
В конце дампа надпись: РАЗРАБОТАН ДЛЯ *МИКРО/80* И АДАПТИРОВАН ДЛЯ *Р-86РК* ДЛЯ ЖУРНАЛА "РАДИО" БАРЧУКОВЫМ В.Н. И ФАДЕЕВЫМ Е.П. 1986 Г.
Кстати, интересно, промежуточная версия микрона для РК86 распространилась в какой-то степени, а оригинал для микро-80 нигде не засветился?
Его там нет.
ага, я же написал "ФАКТ ЕГО НАЛИЧИЯ" ;)
а не сам бейсик.
VovanRK86
28.05.2014, 00:16
Его там нет.
А про ЮТ88 не так кстати?
Б2М - на одном из образов, выложенных на сайте b2mа (не помню на каком). Если мне не изменяет память, то сам b2m как раз и затачивал бейсик под башкирию, так что прошу его самого раскрыть тайну происхождения башкирского бейсика.
Могу с уверенностью сказать, что в исходиках он назывался XYBASIC, авторство уже не помню, но вроде было Digital Research. Хотя, это был дизассемблированный текст, так что назвать могли как угодно.
Некий XYBASIC (http://nesssoftware.com/home/mwc/XYBASIC.php) для CP/M с исходниками, но не Digital Research. Там даже поддержка amd9511 есть.
Да, это оно и есть.
Вот кусок оригинала:
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
Но мне оно досталось уже переработанное, были добавлены несколько графических операторов (токены новых команд двухбайтные, одним оператором пожертвовали ради префикса).
Некий XYBASIC (http://nesssoftware.com/home/mwc/XYBASIC.php) для CP/M с исходниками, но не Digital Research. Там даже поддержка amd9511 есть.
Интересно, что исходники достали с 8-ми дюймовых дискет в мае 2014, то есть в этом месяце. Свежак! :)
В завершение темы (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
Стоит дополнить про PRINTPEEK(32768) - микрософтовцы в более поздних версиях тоже поправили ошибку с подобными случаями
Уточню, что микрософтовцы не правили "ту" процедуру, а добавили отдельную (смотрел на примере векторовской адаптации корветовского бейсика).
Еще уточнение: "граница раздела" по использованию/неиспользованию в микрософтовских бейсиках процедуры с fe 90 da для 16битных целых зависит не от номера версии, а от варианта:
1. в 8k (наибольший номер, который смотрел - 4.7) - да
2. в extended (наименьший номер, который смотрел - 4.0) - нет.
XYBASIC for Process Control, Data Acquisition and Real Time Applications with 8080-based Computers
?
и где взять 9511?
и где взять 9511?
"I adapted XYBASIC to use it if present (using self-modifying code!)."
Нету - и фиг с ним, без него работать будет.
Наверно я не разобрался, но там в исходниках для 9511 стоит условная компиляция, т.е. с 9511 отдельная версия.
Да, даже в журнале упоминали: Осторожно Бейсик "Микрон" Радио №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.
DDp, есть какие-то идеи, как так получилось (и откуда взялся BASIC MIKRON (ENG).rkr)?
DDp, есть какие-то идеи, как так получилось (и откуда взялся BASIC MIKRON (ENG).rkr)?
Откуда вообще взялся недоМИКРОН - нет.
А конкретно эта запись из этой темы (http://zx-pk.ru/showthread.php?t=25154):
Есть такой рижский клон Радио-86РК - "Микро-88". У меня от него осталась кассета...
Всем привет!
Как раз пишу конвертер под 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');
Подниму темку вопросами, может быть и не касающуюся её напрямую...
1. Какие ПЗУшные Бейсики для 8080 у нас существуют? На ум приходит только специалистовский...
2. Возможно ли решить следующую задачу:
- Бейсик в ПЗУ;
- программа для Бейсика в ПЗУ;
- при включении питания/сбросу программа перегружается из ПЗУ в рабочие ячейки ОЗУ и ей передаётся управление (без лишних вопросов к пользователю)?
3. Куда смотреть для корректировки, если вывод будет производиться не на ТВ и не на СОМ-порт, а на что-то иное, к примеру, на 7-сегментный индикатор?
Может вопросы и глупенькие, но заранее спасибо за возможные ответы.
1. Какие ПЗУшные Бейсики для 8080 у нас существуют? На ум приходит только специалистовский...
Под ПЗУшным в данном случае подразумевается "работающий из ПЗУ без пересылки в ОЗУ"? Если да, то можно ссылку на такой специалистовский? Сам на вскидку могу вспомнить работающие из ПЗУ бейсики ПК8000, Искры-Тарту 1080, примерно наполовину работающий из ПЗУ бейсик Львова ПК-01.
Под ПЗУшным в данном случае подразумевается "работающий из ПЗУ без пересылки в ОЗУ"?
Да, именно так. Просто что помню про Спеца, что Бейсик там мог располагаться в ПЗУ, а вот как он работал - сие мне не ведомо. Реально ПЗУшный Бейсик, с которым работаю до сих пор - это OSI BASIC, но он для 6502...
Хочу сделать небольшую конструкцию на 8080 (не комп! но управляющая машина), но софт использовать на Бейсике, на асме писать муторно и неблагодарно...
Наиболее распространенные на советских компах варианты микрософтовского бейсика 3.2 без самомодифицирующегося кода, из пзу в принципе должны работать, лишь бы служебные переменные не попали в пзу. Со специалистом проблема только в том, что там для работы из пзу бейсик пришлось бы полностью и качественно дизассемблировать и оттранслировать с другого адреса, у меня на этот счет большие сомнения. Еще есть cp/m-ные бейсики, из них один из самых маленьких - IBASIC океана-240 (начальная версия XYBASIC). Вроде Ewgeny7 адаптировал микрософтовский бейсик какой-то версии для своей конструкции, может он подскажет. И насчет работы бейсика из пзу - это обязательно? Может его тоже просто пересылать в озу перед началом работы?
Хотелось бы обойтись одной РУ10 в качестве ОЗУ (как в Денди), но будем посмотреть. По адаптации Евгением посмотрю ветку, спасибо.
Опять же, почему 8080 - комп на 6502 используется в работе, а ВМ80 валяется без дела, вот и прицеливаюсь...
Хотелось бы обойтись одной РУ10 в качестве ОЗУ
Получается как минимум там должны поместиться служебные переменные самого бейсика, стек и переменные программы, а программу как и бейсик лучше исполнять из пзу.
Так и есть. Первые 256 байт отведены под системные нужды, 256 под стек, а полтора кило вполне на программу хватает. Так Денди (и производные 6502) и работают.
Корветовский бейсик из ПЗУ вроде тоже работал
Первые 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). Эту ссылку неоднократно приводили, может даже и я сам, но пусть будет.
куча народу этим фанатеет блин
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
еще какойто LLL BASIC for 8080
Насколько я понял отсюда (http://www.retrotechnology.com/herbs_stuff/float.html) LLL BASIC не дошел до наших дней целиком, только математическая часть.
точно rom basic для 8080 - значит это возможно
https://www.adwaterandstir.com/2017/05/30/rombasic/
:v2_dizzy_roll:
LLL какието листинги на бумаге
rom basic для 8080 - значит это возможно
Остаётся решить вопрос автозагрузки и автостарта самой программы на Бейсике. Надеюсь, что описание переменных в этом поможет.
rom basic для 8080
Может у меня баннерорезка лютует, но не вижу ссылки для скачивания.
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)/
скачать здесь
Спасибо, у меня именно такого варианта не было. Но все же он не 100% romный, он копирует в озу небольшие фрагменты кода, не считая служебных переменных и стека.
для задач rw6hrm, наверное VTL-2 килобайтный идеален
да и для всех наших компов на 580, прямо в монитор прошивать
для ЮТ 88
только он в бинарнике и некто должен разобрать , потом собрать , потом
хехе
некому кроме некоторых -)
Курю его, курю... Да там не особо его разбирать, только найти обращения к портам в/в, остальное мелочи. Не без недостатков: нет плавающей запятой, нет функций... Обойтись можно, но вопрос об автозапуске остаётся...
Здесь (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ного.
Нашел еще одно характерное отличие бейсика микрон в дополнение к ранее озвученному (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%. Для экспоненты и арктангенса используются коэффиценты ряда Маклорена. А вот для синуса и логарифма коэффициенты какие-то странноватые.
Практически доразобрался с рядами.
У синуса коэффициенты умножены на 2*pi в соответствующей степени. Меня сбило то, что микрософтовцы немного (на 5%, если за 100% принять зануление) ошиблись с последним коэффициентом. Но эта небольшая погрешность на практике совершенно незаметна, т.к. даже если взять и занулить 5й коэффициент, то ошибка будет только вблизи аргументов +-pi/2 и +-3pi/2 (с периодом 2*pi) и это будет очень-очень маленькая ошибка. Поэтому микрософтовцы не поправили пятый коэффициент для расчета синуса даже в последних (5.x) версиях своих бейсиков для 8080.
Для логарифма ряд считает некий промежуточный результат.
Меня сбило то, что микрософтовцы немного (на 5%, если за 100% принять зануление) ошиблись с последним коэффициентом. Но эта небольшая погрешность на практике совершенно незаметна, т.к. даже если взять и занулить 5й коэффициент, то ошибка будет только вблизи аргументов +-pi/2 и +-3pi/2 (с периодом 2*pi) и это будет очень-очень маленькая ошибка. Поэтому микрософтовцы не поправили пятый коэффициент для расчета синуса даже в последних (5.x) версиях своих бейсиков для 8080.
При более тщательной проверке оказалось, что именно "неправильный" пятый коэффициент дает максимальную точность расчета синуса (разница очень-очень маленькая, но все же есть). Получается микрософтовцы совершенно оправданно использовали именно его. Осталось понять - почему так.
- - - Добавлено - - -
Единственное объяснение, которое смог придумать - это коррекция коэффициента для учета ограниченной точности представления чисел. Представление нормального коэффициента вылезает в следующий старший бит мантиссы, а микрософтовский вариант почти на границе. Можно даже чуть увеличить этот коэффициент, главное не переходить к задействованию следующего бита мантиссы, и тогда результаты тоже получаются неотличимо точные. Именно пятый коэффициент подвергся коррекции скорее всего из-за того, что он перед минимальным по модулю значением степени аргумента, в других коэффициентах точности хватает (для правильного вычисления произведения коэффициента на степень аргумента).
в копилку свеженький
https://github.com/dimitrit/tastybasic
Tasty Basic
Нашел, откуда взяли коэффициенты для разложения синуса в ряд в микрософтовском бейсике. Книга Computer Apporoximations, J. Hart и другие (1968). Страница 238, набор SIN 3341, только в книге и в бейсике разное масштабирование аргумента и, соответственно, коэффициентов (в книге соответствуют аргументу деленному на pi/2, а в бейсике - на 2pi). Со своей колокольни я бы трактовал использованный подход как умножение на оконную функцию при усечении бесконечного ряда (должен был и сам догадаться). Вместо умножения на прямоугольную оконную функцию (т.е. часть коэффициентов берем с множителем 1, а остальные с множителем 0, т.е. отбрасываем) здесь используется более плавная и больше всего изменяются коэффициенты на границе, в данном случае пятый. В книжке можно увидеть, что в других наборах для синуса с большим или меньшим числом коэффициентов тоже сильнее всего "страдают" именно конечные.
Насчет логарифма. В последних микрософтовских бейсиках для 8080 точно используются коэффициенты из Харта, но там изменили алгоритм. Скорее всего в бейсиках <=5.0 тоже из Харта, только надо найти тот самый набор. Кстати побочный эффект разбирательства с алгоритмом - удостоверился, что корветовский бейсик на базе не последних версий микрософтовского.
Tasty Basic
Варианты Tiny Basica - это хорошо, но слишком уж он простой.
https://sourceforge.net/projects/msxsyssrc/
не смотрел , чтото msx
microsoft basic-80 5.2 source code
http://lahey.winworldpc.com/Microsoft%20Basic-80%205.2%20Source.7z
О, за msxный большое спасибо, а тот что (предположительно, т.к. скачать оттуда не смог) по второй ссылке я уже скачал в декабре прошлого года. Из исходника basic-80 я как раз и вышел на книгу Харта. В этом исходнике отдельно доставляют восьмеричные числа.
ivagor, ждем msx бейсик для вектора
:v2_dizzy_tired2:
вот тут
https://winworldpc.com/download/c2bfc380-c2b2-c2b4-7d00-11c3a7c29d25
Microsoft Basic-80 5.2 Source
Собрал пзу msx 1 из исходника и вроде оно даже работает. Правда собирается на байт длиннее чем нужно (я этот байт отрезал). Адаптировать на вектор msx бейсик я собирался с ПК8002, но остановился на ПК8000 и дальше пока не думал.
Архив с бейсиком-80 5.2 точно тот, который я качал раньше.
Попробовал компильнуть XYBASIC из исходников, ссылка (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=713288&viewfull=1#post713288) на которые есть в теме. И там не все гладко, не хочет нормально компилироваться. При большом желании разобраться можно, но все равно досадно.
а правда корветовский бейсик похож на gw-basic?
вот здесь парень написал
http://old-dos.ru/index.php?page=lib&do=show&id=71
Корветовский бейсик - это модифицированный микрософтовский. GW-BASIC - тоже микрософтовский, поэтому неудивительно, что они похожи.
Работа над ошибками. 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 выдал два.
в пзу монитора нав можно вмонтировать LLL )
- - - Добавлено - - -
ivagor, а вы куданибудь выкладваете результаты труда?
Модифицированные бейсики и, иногда, информацию выкладывал на форуме в соответствующих разделах (вектор, специалист, океан, РК86, может еще что забыл). Векторовские поделки svofski разместил в своей онлайн-картотеке.
Вспомнил, еще про львовский бейсик довольно много писал на соответствующем специализированном форуме.
сюда наверное и его
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/
Радует еще один исходник бейсика, жалко, что в pdf (может он не защищенный, текст извлекать не пробовал).
- - - Добавлено - - -
Похоже там сканированные страницы, не текст
Уже писал про "скрытые" различия микрона и предыдущей версии, изначально предназначенной для микро-80, вот еще одно. В микроне в процедурах умножения и деления убрали самомодифицирующийся код. Т.к. это привело к замедлению и увеличению размера этих процедур, то напрашивается только одно объяснение - ориентация на возможность размещения микрона в пзу.
Забавная ситуация с этими процедурами в конверсиях этих бейсиков на другие компы. У потомков микрона, даже чисто озушных, остались процедуры rom-frendly.
Зато в паре пзушных бейсиков, базирующихся на версии микро80, фрагменты этих процедур с самомодификацией вместо адаптации под пзу пересылают в озу и вызывают оттуда. В одном из компов совсем круто - процедуру переносят для выполнения в озу, а за вызовом этой процедуры в пзу осталась пачка nopов, которые каждый раз тормозят выполнение.
напрашивается только одно объяснение - ориентация на возможность размещения микрона в пзу.
По-моему, в "Радио" об этом где-то даже писали (про адаптацию "Микрона" для ПЗУ).
Точно, надо было статью перечитать - "Интерпретатор может быть размещен в ПЗУ в той же области, что не нарушит его работоспособности."
Но это не делает менее забавным оставление этих процедур в бейсиках-потомках в том же виде (большом и тормозном), даже если эти потомки были рассчитаны только на озу и сами использовали самомодификацию в других процедурах (пример - векторовский 2.5).
Еще пара фактов про микрон.
1. INP и OUT токенизируются, но в таблице вызовов они перенаправлены на сообщение об ошибке. И их реализации почти полностью остались, но не используются.
2. CSAVE проверяет один байт из пзу, и если он не совпал с нужным значением, то вылетает.
Поправил ошибки/недоработки РКшного микрона:
1. Теперь бейсик совместим и с z80.
2. Исправлен оператор RENUM (подробности и примеры есть в векторовском разделе в теме про бейсик).
3. При редактировании работает ЗБ (BackSpace). Не понимаю, почему авторы микрона сразу не сделали поддержку этой клавиши.
Не понимаю, почему авторы микрона сразу не сделали поддержку этой клавиши.
А как там было? В Бейсике ДВК-1 просто печатался бекслеш и это звалось у нас редактированием.
Понятно, что это наследие телетайпа, но каким образом оно просочилось в видеотерминалы и компьютеры, которые отродясь были ориентированы на видеодисплеи, понять невозможно.
ЗБ/BkSp в оригинальном микроне печатает белый квадрат, а для удаления ненужных символов в позиции курсора можно использовать F2 (как Delete, подводим курсор куда надо и жмем F2). А вот, например, авторы векторовской адаптации микрона реализовали нормальную работу ЗБ.
Виной всему скорее всего седобородые старцы. Испоконъ вѣку печатали бѣлые квадраты и черты косыя!
Возможно у клавиши ЗБ изначально в доисторические времена был какой-то другой смысл. У микро-80, микроши, специалиста и ют-88 монитор при нажатии на ЗБ просто печатает знак подчеркивания. На мой взгляд действие ЗБ как BkSp намного полезнее.
так микрон будет работать в пзу ?
или в каком номере падио статья
ivagor, клавиша ЗБ значит забой и забивает она потому что это телетайп. Печатает бекслеш и всех делов. Вот зачем это воспроизводить на видеотерминале?
так микрон будет работать в пзу ?
или в каком номере падио статья
Статья про микрон в Радио 1988\8, стр. 37-43. Из пзу он работать будет, нужно только включить пзу с микроном в адресное пространство в адреса 0000-1FFF. Возможно такую доработку для РК публиковали, но я про нее не читал.
клавиша ЗБ значит забой и забивает она потому что это телетайп. Печатает бекслеш и всех делов. Вот зачем это воспроизводить на видеотерминале?
Насчет воспроизведения такого поведения ЗБ в компьютерах во второй половине 80х у меня тоже недоумение, их авторы ведь наверняка были знакомы с продвинутыми забугорными компами. Даже с РК и Микрошей непонятно - авторы у них одни и те же, но в мониторе Микроши ЗБ печатает подчеркивание, а в мониторе РК - стирает предыдущий символ.
Позвольте сразу же тупые вопросы по Микрону.
1. Если он находится с нулевого адреса, то, исключив схему стартового прыжка в ПЗУ и запустив комп, мы сразу получаем рабочий Бейсик?
2. Куда и что ткнуть в случае, если есть образ памяти ОЗУ в виде ПЗУ(с 2200H), куда помещена исполняемая программа на Бейсике, чтобы Микрон не спрашивал "Y/N", а сразу бы запускал "загруженную" программу (типа авто-RUN'а)?
3. При работе программы в Служебной области (2000Н-2200Н) что-то изменяется? Если да, то как бы её переместить к области буфера символьных переменных?
Вообще хочется, чтобы Микрон вместе с программой на Бейсике сидел в первых 16К в ПЗУ, а все служебные изменяемые ячейки - в 2К ОЗУ чуть выше... Сразу оговорюсь, что к дизайну РК-86 и подобных это никаким образом не относится, машина планируется абсолютно иная.
1. Если он находится с нулевого адреса, то, исключив схему стартового прыжка в ПЗУ и запустив комп, мы сразу получаем рабочий Бейсик?
На РК будет проблема, если так сделать, т.к. сначала надо настроить ВВ55, ВТ57, ВГ75.
2. Куда и что ткнуть в случае, если есть образ памяти ОЗУ в виде ПЗУ(с 2200H), куда помещена исполняемая программа на Бейсике, чтобы Микрон не спрашивал "Y/N", а сразу бы запускал "загруженную" программу (типа авто-RUN'а)?
У меня база иды этого бейсика на другом компе, но прямо сейчас можно посмотреть заметку в Радио (http://www.danbigras.ru/RK86/AutoRun/AutoRun.html) на тему автозапуска. Этот вопрос можно решить разными способами, например в векторовском бейсике 2.5 (развитие микрона) сделали "псевдозагрузку" (из озу в озу) программы при старте.
3. При работе программы в Служебной области (2000Н-2200Н) что-то изменяется? Если да, то как бы её переместить к области буфера символьных переменных?
Да, конечно изменяется. Переместить можно. Как именно переместить - у меня сейчас дизасма нет под рукой, но там явно правок много было бы, в двух словах не перечислить.
Но я бы сказал, что это довольно мелкие вопросы по сравнению с полной адаптацией бейсика для другого компьютера, непохожего на РК.
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ного.
И единственный отечественный бейсик, который реагирует также - бейсик ПК8002. И у него есть экранный редактор и спрайты - похоже его действительно сделали на основе MSXного.
знать никогда не знал про 8002,
кто-то разобрал msx бейсик в то время и собрал его заново для своего производимого компа ?
8002 институтский проект какой?
Про ПК8002 я (как скорее всего и большинство остальных ретролюбов) впервые прочитал в "Вычислительной технике и ее применении" 1990\8 (стр. 46-47). А теперь доступна документация, софт, b2m эмуляцию сделал. Про историю можно здесь (https://zx-pk.ru/threads/9609-kompyuter-quot-pk8002-quot.html?p=546675&viewfull=1#post546675) почитать. Утверждения, что их бейсик на основе MSXного, делали и другие разработчики советских компов, но вот подтверждается это пока только для ПК8002.
И формат хранения чисел в бейсике ПК8002 BCDшный, что является особенностью бейсика MSX (на что обращал внимание DDp). Для полного счастья еще можно сравнить коды токенов, но имхо это уже не очень нужно.
ivagor, bbcbasic для Ориона -)
https://drive.google.com/file/d/0B3S0wVWNPLrwMEV0UmNYakFLaEk/view
в Other/
может могущественный джин переделает под Специалист?
-)
Корректнее сказать, что это адаптация bbcbasic для cp/m, требующая z80. Для запуска на специалисте (или любом другом компе) надо z80 и настоящую cp/m или некий минимум эмуляции основных функций cp/m.
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). Автор не я, а Ян Логан и Френк О-Хара, их книгу я и обработал.
Кто-нибудь может подсказать, почему бейсик-микрон не работает на Z80? Вроде бы когда-то обсуждалось, может быть, даже патч был, но не могу почему-то найти...
Если не ошибаюсь, проблема была с флагом четности...
Если не ошибаюсь, проблема была с флагом четности
Да, там в двух местах флаг четности мешает.
Вроде бы когда-то обсуждалось, может быть, даже патч был
Если речь про РКшный микрон, то вот (https://zx-pk.ru/threads/23483-rodoslovnaya-bejsikov-dlya-580vm80.html?p=1020923&viewfull=1#post1020923)
Проклятый склероз. Не 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
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot