4-bit Busch 2090 Computer

4-битные микроконтроллеры и микропроцессоры (прошлое, настоящее, будущее)

Moderator: Lavr

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

4-bit Busch 2090 Computer

Post by Lavr »

Busch 2090 Education Computer

А вот схему этого 4-битного учебного недо-компьютера Busch 2090 я как раз пытался найти,
чтобы посмотреть схемотехнику таких 4-битных устройств.

Image
Увеличить

Code: Select all

4bit microprocessor TMS1600, Custom programmed
64 Bytes RAM
ML-programming language
6-digit 7-segment LED display
hexadecimal keypad for programming.
Но пока нашел только его фотки на выставке компьютерного старья...

Image

Интересно же распоряжается история... :o одни 4-битники ушли безвозвратно в лету...

Другие же столь популярны до сих пор, что их даже отдельные наши коллеги приобретают! :roll:

Image
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Интересно также, что в этом Busch 2090 Education Computer реализовали идею,
которую я пытаюсь воплотить, конструируя 4-бит СРU:
не шибко развитый микроконтроллер TMS 1600 интерпретирует здесь некий
абстрактный "машинный язык высокого уровня".

Примерно, как я хочу интерпретировать систему команд i8080 как можно более
простой схемотехнически 4-битной самоделкой на рассыпухе.
Michael Wessel wrote:However, being an educational system, the documentation of the machine was really excellent, so it wasn't hard to learn the machine language. In fact, it wasn't the native machine language of the TMS 1600 CPU, but a higher-level interpreted custom-designed machine language, tailored for educational purposes. For example, the system offered high-level OP codes for multiplication and division. Nevertheless, everything was on a very low level of abstraction so one could get a real good impression how a simple CPU worked these days. Due to the interpreted higher-level custom machine language, the machine was very slow - I remember that the division 999999 / 1 required 40 seconds (!) using the division OP code (this required 999999 subtraction operations - that was a dumb implementation, obviously).
Image
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

В Busch Microtronic-Computer-System 2090 микроконтроллер TMS1600
интерпретирует вот такую систему команд:

Code: Select all

Command Set 
n = numerical constant 
a = address (two nibbles) 
s = source register 
d = destination register 

Mnemonic   Code   Description 
         
MOV   0 s d   s -> d 
MOVI   1 n d   n -> d 
AND   2 s d   s AND d -> d 
ANDI   3 n d   n AND d -> d 
ADD   4 s d   d + s-> d 
ADDI   5 n d   d + n-> d 
SUB   6 s d   d - s -> d 
SUBI   7 n d   d - n -> d 
CMP   8 s d   compare s and d 
CMPI   9 n d   compare n and d 
OR   A s d   s OR d -> d 
CALL   B a a   jump to subroutine at a a 
GOTO   C a a   goto a a 
BRC   D a a   branch if carry set 
BRZ   E a a   branch if zero 
MAS   F 7 d   move d to register bank 2 
INV   F 8 d   invert d 
SHR   F 9 d   shift d right 
SHL   F A d   shift d left 
ADC   F B d   add carry to d 
SUBC   F C d   subtract carry from d 
DIN   F D d   get I/O input in d (not implemented) 
DOT   F E s   put d to I/O 
KIN   F F d   get keyboard input into d 
DISP   F n s   display n digits, beginning at register s 
HALT   F 0 0   program stop 
NOP   F 0 1   no operation 
DISOUT   F 0 2   display off 
HXDZ   F 0 3   hexadecimal to decimal conversion in reg D-E-F 
DZHX   F 0 4   decimal to hexadecimal conversion in reg D-E-F 
RND   F 0 5   generate random number in reg D-E-F (well, not really!) 
TIME   F 0 6   fetch time of day in reg A-B-C-D-E-F (not implemented) 
RET   F 0 7   return from subroutine 
CLEAR   F 0 8   set all registers to 0 
STC   F 0 9   set carry flag 
RSC   F 0 A   reset carry flag 
MULT   F 0 B   multiplication reg 0-5 with reg 0-5 of bank 2 
DIV   F 0 C   division reg 0-3 with reg 0-3 of bank 2 
EXRL   F 0 D   exchange reg 0-7 of bank 1 with reg 0-7 of bank 2 
EXRM   F 0 E   exchange reg 8-F of bank 1 with reg 8-F of bank 2 
EXRA   F 0 F   exchange reg 0-7 with reg 8-f
Код отдаленно напоминает систему команд i8080, которая более удобна в целях обучения,
нежели оригинальная система команд TMS1600.

В Busch-Microtronic бережно и, видимо, с гордостью относятся к своей истории, так что всю
оригинальную документацию на Busch Microtronic-Computer-System 2090 можно найти
по адресу:
http://www.busch-model.com/online/?rubr ... rach_id=de

Image

Правда она на немецком, но выполена в форме комикса... забавно, однако! :roll:
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

По крупной картинке в старте топика я присмотрелся, что там понапаяно на плате
этого Busch 2090 Education Computer.

Code: Select all

HCF 4013BE  -  два двухтактных D-триггера. (К561ТМ2)
HCF 4060BE  -  14-разрядный счётчик с задающим генератором.
 CD 4016BE  -  CMOS Quad Bilateral Switch (Двусторонний переключатель)
 CD 4502BE  -  STROBED HEX INVERTER/BUFFER With 3-State Outputs
uPD 2114LC  -  1024 BIT (256 X 4) STATIC MOS RAM WITH SEPARATE I/O 
NEC B1X088-140

TMS1600NLL7574
И призадумался вот о чем:
...the emulator was a 18" cube of NMOS electronics, so the inputs
and outputs were all inverted
...
Действительно, известно, что
микросхемы серии TMS1000 выпускались по технологии PMOS
Получается, что при одном источнике питания (а я вижу на плате один мост и один большой
кондюк-электролит
) вся логика 40хх действительно понимает выходные сигналы TMS1600
как инверсные?



PS. Я правильно понял, что TMS1600NLL7574 здесь продаётся? Или только документация
предлагается на неё?
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Да, похоже что продаётся, только я думаю они по одной штуке не будут продавать - и цену не назовут пока не узнают кто покупает и зачем...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:
Lavr wrote:Я списался с обладателем этой штуки на картинках выше, он ...
предложил мне сочинить письмо в фирму Busch по поводу прошивки...
Кстати - есть мысли как это сделать ненавязчиво-результативно?
что-то я сомневаюсь, что они вышлют какую-то древнюю прошивку
Письмецо-то в Busch-Microtronic я написал...

Но если внимательно посмотреть систему команд TMS1000...

Image

то, с учетом того, что команд передачи управления всего 3 (переход BR label и вызов CALL label -
условные и один возврат RETN), я, честно говоря, не вижу иного способа интерпретации команд
некоего абстрактного языка иначе как:

Code: Select all

...
TKA ; Загрузить Аккумулятор данными с входных линий
ALEC data1  ; это аналог CPI CODE1
BR   label1 ; Переход на адрес label если флаг статуса установлен
ALEC data2  ; это аналог CPI CODE2
BR   label2 ; Переход на адрес label если флаг статуса установлен
... и т.д.
Ну или что-то в этом роде, но другими конструкциями...

То есть "волшебного jmp" в системе команд, похоже, что не получится...

Code: Select all

.L286: 
   sll   $2,$2,2 
   addiu   $3,$3,%lo(.L242) 
   addu   $2,$3,$2 
   lw   $2,0($2) 
   j   $2                <-- волшебный jmp 
   nop 

   .align   2 
   .align   2 
.L242: 
   .word   .L4 
   .word   .L5 
   .word   .L6 
   .word   .L7 
   .word   .L8 
   .word   .L9 
   .word   .L10
Без переходов "по таблице" интерпретация команд, похоже, будет весьма медленная...
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

можно же не все команды по одной перебирать, а побитно - маской выделяя семейство операций и переходя на их обработку
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:можно же не все команды по одной перебирать, а побитно - маской выделяя семейство
операций и переходя на их обработку
Ну я, собственно, так и делал... но ты же сам с Деминым убедил меня в том, что этот
метод медленен...
Lavr wrote:Объясните мне одну вещь, пожалуйста, уважаемые авторы прецизионных эмуляторов.

Известно ведь, что если представить байт кода операции i8080 как
D7 D6 D5 D4 D3 D2 D1 D0, то
b2m 18 Янв 2011 wrote:Возможны следующие варианты:
D7 D6 - делят на 4 группы команд (можно сказать однотипных)
Почему тогда в ваших исходниках (и не только в ваших) код операции анализируется
в длинном:

Code: Select all

switch (opcode) {
        case 0x00:            /* nop */
         ...
        case 0xFF:            /* rst 7 */
         ...
        }
Разве не было бы быстрее - выделить два старших бита в опкоде - D7 D6
и по их значению организовать 4 более коротких цикла switch (opcode)
по 4-м группам опкодов?
Чтобы не повторяться, обсуждение было здесь...

Если нет переходов "по таблице", то хоть и "ёлочкой" до каждой отдельной команды
всё-равно придётся добираться через последовательность "CPI CODE".
Ну разве что эмулируемые "регистры" сэмулируются чуть побыстрее...
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Он конечно медленнее свича, но если свич отсутствует как класс, то твоя "ёлочка" - следующий метод,
который будет заведомо быстрее полного последовательного перебора...

P.S. Кстати там всё же TMS1600 был - может в нём уже появилась команда перехода по значению регистра?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:Кстати там всё же TMS1600 был - может в нём уже появилась команда перехода по значению регистра?
Пока все материалы, которые я нашел, об этом не говорят...
На TMS1600 отдельно мануала не нашел... на TMS1400 система команд аналогичная.
Отличия в серии у них в основном по количеству ног портов и памяти на борту.

Но вывод всё же напрашивается, что самому - в 4-битном ЦПУ - переход по регистру,
хотя бы в пределах 256 байт сделать надо
...

А то я прогуглил тут критикуемую МакБастером его раритетную машину - TI-99/4A,
так оказалось - она на 3МГц "просирала все полимеры", поскольку работала с двойной
интерпретацией.
Т.е. процессор от TI исполнял не нативный код, а входной интерпетируемый язык.
Пример показательный - во что выливается интерпретация...



Ты не глянул - я тебя там просил - что за эмулятор под МАКом?
Lavr wrote:Shaos, раз уж у тебя MacOS X под руками - посмотри лучше, что вот здесь изобразил
автор эмуляции Busch-Microtronic 2090?
А то мне MacOS X взять негде... :(
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Сегодня посмотрю - у меня есть и MacOS X (10.4 PCC и 10.6 Intel), и MacOS 9.2 (PPC).
А то у автора не написано под какую архитектуру и ось у него сбoрка...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Если я правильно понял - в архиве образ МАКовского диска 2090.dmg?

HEX-редактором я в нём текстового ничего не увидел (вдруг исходники?) :wink:
А больше мне его открыть нечем... но судя по намёкам автора, TMS1600 он не
эмулирует, а эмулирует прямо виртуальную машину Busch-Microtronic 2090.

Но всё равно интересно - что у него получилось... :roll:
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Lavr wrote:
Shaos wrote:Кстати там всё же TMS1600 был - может в нём уже появилась команда перехода по значению регистра?
Но вывод всё же напрашивается, что самому - в 4-битном ЦПУ - переход по регистру,
хотя бы в пределах 256 байт сделать надо
...
Я прикинул - не могли ли они сделать программный счетчик загружаемым из регистра
посредством программирования такой команды из набора микрокоманд.

Но по всем блок-схемам - это тоже, на мой взгляд, реально не получается.
iLavr
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Внутри DMG-образа находится программа, скомпилированная в 2003 году - вот содержимое диска,
в котором есть что почитать :roll:

http://www.nedopc.org/nedopc/upload/2090.zip (638KB)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:вот содержимое диска, в котором есть что почитать :roll:
Спасибо! А сам эмулятор запускал? Как он у него внешне выглядит?

Если ..\Microtronic 2090 Emulator\2090 Emulator.app\Contents\MacOS\2090 Emulator -
это исполняемый МАК-овский файл, то интересно, на чем автор его написал! :o

Большая часть файла - сплошной текст!

Code: Select all

NXArgv.   progname.  dyld func lookup.  dyld init check.  start
. environ.dyld stub binding helper.start.   darwin gcc3 preregis
ter frame info.   keymgr dwarf2 register sections.  cplus init.
cthread init routine.  mh execute header.  objcInit. atexit. ca
tch exception raise. catch exception raise state. catch exceptio
n raise state identity. clock alarm reply. do mach notify dead n
ame. do mach notify no senders. do mach notify port deleted. 
Ну и далее - в таком же духе...
iLavr