Arduino Nano 3.0 - эмулятор компьютера под управлением ОС CP/M

Тема в разделе "Глядите, что я сделал", создана пользователем FoxyLab, 23 мар 2017.

  1. timon

    timon Гик

    Почему же багофича, использовалось ранее только в путь ))
    Я просто вижу явно 3х8 (символы "а", "е", "t") либо глаза меня подводят на нечеткой картинке )

    Быстренько сконвертил тут из 8х8 в 4х8 (ср866), если хотите - попробуйте, вдруг смотреться будет лучше. Он автоматический и весьма грязный из за этого, конечно чистить нужно будет, если понравится. Чистить это чуть подольше чем автоконвертация, мне придется пробежаться по всем 256 символам в PNG-шке и привести все руками к 4х8, но результат может удивить. У вас интересный проект, но простите, шрифт выглядит так, как будто его линуксоиды в полдень рисовали, если его попробовать улучшить он и проект будет смотреться более интересно ))

    upd. png-исходник 4х8 тоже приложил ))
     

    Вложения:

    • 4x8_font.c
      Размер файла:
      40,6 КБ
      Просмотров:
      285
    • font866.png
      font866.png
      Размер файла:
      2,4 КБ
      Просмотров:
      397
    Последнее редактирование: 14 ноя 2019
    FoxyLab нравится это.
  2. Igor68

    Igor68 Гуру

    Скажите, а выпересели на FRAM (для памяти I2C)? По моему разговор такой был и вы закупали чипы.
     
    FoxyLab нравится это.
  3. FoxyLab

    FoxyLab Гик

    Расстояние между символами получается больше, чем хотелось.

    Нет, 4x8 - буква "T", например, несимметричная. Спасибо, я посмотрел Ваш шрифт, но мне мой, со скругленными гранями, нравится больше :)
    P.S. Учитывая, что свой первый Линюкс - Redhat 6.1 я установил в 1999 году - линюксоид и есть ))) В той шапке еще была неполиткорректная игра "Kill Bill" - нужно было мухобойкой остановить дядю Билли, заражавшего компьютеры своей ОС ))).
     
    Последнее редактирование: 14 ноя 2019
    timon нравится это.
  4. FoxyLab

    FoxyLab Гик

    Да, довольно давно. Иначе бы банально не хватило места для видеопамяти (кэш карточки отъедал довольно много).
    Схема подключения:
    [​IMG]
     
    Последнее редактирование: 15 ноя 2019
    Igor68 нравится это.
  5. FoxyLab

    FoxyLab Гик

    Запустил на "нанокомпьютере" интерпретатор LISP/80 версии 1.1 от T. (Thomas) W. Yonkman:
    [​IMG]
    Вот заметка об этом интерпретаторе в журнале BYTE:
    [​IMG]
    Thomas Yonkman затем написал и LISP/86.
    Попытался найти информацию о нем - нашел данные на 6 сентября 1990 года:
    yonkman@mode.css.gov (Tom Yonkman)
    Tom Yonkman UUCP: seismo!esosun!yonkman
    Geophysics Division, MS/12 ARPA: yonkman%esosun.css.gov@seismo.css.gov
    SAIC SOUND: (619)458-4949
    10210 Campus Point Drive FAX: (619)458-4993
    San Diego, CA 92121
     
    Igor68 нравится это.
  6. parovoZZ

    parovoZZ Гуру

    Прикона))
    Я на LISP когда-то автокад программировал)))
     
    FoxyLab нравится это.
  7. FoxyLab

    FoxyLab Гик

    Небольшой оффтоп - во что транслируются команды работы с портами с оптимизацией и без:

    Код (C++):
    PORTD = 0x01;
    -O0
    Код (Text):

     ae:    8b e2      ldi    r24, 0x2B    ; 43
     b0:    90 e0      ldi    r25, 0x00    ; 0
     b2:    21 e0      ldi    r18, 0x01    ; 1
     b4:    fc 01      movw    r30, r24
     b6:    20 83      st    Z, r18
     
    -Os
    Код (Text):
     
     a6:    81 e0      ldi    r24, 0x01    ; 1
     a8:    8b b9      out    0x0b, r24    ; 11
     
    Код (C++):
    PORTD |= 0x03;
    -O0
    Код (Text):

     ae:    8b e2      ldi    r24, 0x2B    ; 43
     b0:    90 e0      ldi    r25, 0x00    ; 0
     b2:    2b e2      ldi    r18, 0x2B    ; 43
     b4:    30 e0      ldi    r19, 0x00    ; 0
     b6:    f9 01      movw    r30, r18
     b8:    20 81      ld    r18, Z
     ba:    23 60      ori    r18, 0x03    ; 3
     bc:    fc 01      movw    r30, r24
     be:    20 83      st    Z, r18
     
    -Os
    Код (Text):

    a6:    8b b1      in    r24, 0x0b    ; 11
    a8:    83 60      ori    r24, 0x03    ; 3
    aa:    8b b9      out    0x0b, r24    ; 11
     
    Код (C++):
    PORTD |= 0x01;
    -O0
    Код (Text):

     ae:    8b e2      ldi    r24, 0x2B    ; 43
     b0:    90 e0      ldi    r25, 0x00    ; 0
     b2:    2b e2      ldi    r18, 0x2B    ; 43
     b4:    30 e0      ldi    r19, 0x00    ; 0
     b6:    f9 01      movw    r30, r18
     b8:    20 81      ld    r18, Z
     ba:    21 60      ori    r18, 0x01    ; 1
     bc:    fc 01      movw    r30, r24
     be:    20 83      st    Z, r18
     
    -Os
    Код (Text):

     a6:    58 9a      sbi    0x0b, 0    ; 11
     
     
    Igor68 нравится это.
  8. FoxyLab

    FoxyLab Гик

    BASIC для Altair-а (8-килобайтная версия) - творение Билли:
    [​IMG]
    Телетайпный обмен был штатным, удаление символа - посредством знака подчеркивания:
    [​IMG]
    Да и о второй половине ASCII тогда мало задумывались:
    [​IMG]
    P.S. Удобно то, что можно пересылать текст программы в виде текстового файла - "нанокомпьютер" будет считать, что это - ввод с клавиатуры, а аппаратная синхронизация позволяет не задумываться от таймаутах.
    P.P.S. После загрузки Бейсика (он загружается напрямую из монитора, это не CP/M программа) можно сохранить образ памяти с ним на карточке, и следующий раз не загружать его через терминал, а просто прочитать образ (такой упрощенный аналог мэджик баттона Спектрума).
     
    Последнее редактирование: 26 ноя 2019
    Igor68 и timon нравится это.
  9. FoxyLab

    FoxyLab Гик

    FOCAL, просто FOCAL:
    [​IMG]
     
    Igor68 нравится это.
  10. FoxyLab

    FoxyLab Гик

    Запустил шахматную программу Microchess:
    [​IMG]
    Вот титульный лист мануала:
    [​IMG]
    На мой первый ход пешкой
    [​IMG]
    программа ответила лошадью ;-)
    [​IMG]
    Обдумывание хода занимало у "нанокомпьютера" время около 3 минут.
     
    Igor68 и KindMan нравится это.
  11. FoxyLab

    FoxyLab Гик

    НМЛ forever ;-) Я добавил в "нанокомпьютер" возможность ввода-вывода посредством аудиофайла или магнитной ленты (из-за нехватки флэш-памяти пришлость пожертвовать интерпретатором Брэйнфака).
    Платка для согласования уровней (классическое решение):
    [​IMG]
    [​IMG]
    Данные записываются блоками по 128 байт.
    Формат:
    [​IMG]
    Биты в Audacity:
    [​IMG]
    Проверена работоспособность для линейного входа и выхода "большого" компьютера при отклонении скорости до 20%.
    Пример (WAV-файл с тремя блоками):
    ОСТОРОЖНО! ВЫСОКАЯ ГРОМКОСТЬ!
    tape.wav
     
    Igor68 нравится это.
  12. FoxyLab

    FoxyLab Гик

    Я замутил шахматный "батл" между "нанокомпьютером", запустившим Microchess, и "большим" компьютером с питонским движком sunfish :)
    Уже сделано 16 ходов, "нанокомпьютер" играет белыми:
    [​IMG]
    Сначала он думал быстро, на ход тратил несколько минут. Но после движений черного ферзя немного высел на измену и стал обдумывать ход часами.
    "Батл" продолжается ;-)
     
    alp69, ZAZ-965, Igor68 и 3 другим нравится это.
  13. FoxyLab

    FoxyLab Гик

    Ситуация после 22 хода:
    [​IMG]
    Я начал пытаться анализировать ходы - как оказалось, дебют - натурально испанская партия, затем черные применили Берлинскую защиту, а белые - анти-Берлин.
    Вот список ходов:
    1. e2 - e4
    2. e7 - e5
    3. g1 - f3
    4. b8 - c6
    5. f1 - b5
    6. g8 - f6
    7. 0 - 0
    8. f6 - e4
    9. d2 - d4
    10. e5 - d4
    11. f1 - e1
    12. d7 - d5
    13. d1 - d4
    14. d8 - d7
    15. d4 - c3
    16. f8 - d6
    17. c3 - g7
    18. h8 - f8
    19. h2 - h4
    20. f7 - f5
    21. g7 - h6
    22. e8 - d8
    Картинки и некоторые комментарии здесь - https://blog.foxylab.com/shahmatnyj-battl/
     
    Igor68, alp69 и parovoZZ нравится это.
  14. alp69

    alp69 Форумчанин

    Алгоритмы откуда?
     
  15. alp69

    alp69 Форумчанин

    Коллега тестировал Касперского и Node32 . Всю ночь они бились друг с другом... Под утро Node32 качнул утилиту и снес Каспера. :D
     
    FoxyLab нравится это.
  16. FoxyLab

    FoxyLab Гик

    Microchess - оригинальный бинарник, сделанный еще для Альтаира в конце 70-х, загружается в память и запускается сам по себе, CP/M не нужна.
    Sunfish - исходники на Питоне выложены на гитхабе, я только подправил две строчки, чтобы он воспринимал цифровую нотацию Microchess (здесь немного подробнее об этом).
     
    Igor68 и ИгорьК нравится это.
  17. FoxyLab

    FoxyLab Гик

    Ситуация после 40 хода:
    [​IMG]

    23. e1 e2
    24. a7 a6
    25. b5 d3
    26. c6 b4
    27. c1 g5
    28. e4 g5
    29. h6 g5
    30. d6 e7
    31. g5 g7
    32. b4 d3
    33. c2 d3
    34. f8 e8
    35. h4 h5
    36. c7 c5
    37. f3 e5
    38. d7 a4
    39. e5 f7
    40. d8 c7
     
  18. FoxyLab

    FoxyLab Гик

    Готов компаньон-проект - эмулятор i8080-системы на Rust - выбираем из списка бинарных файлов в каталоге программы нужный (например, Бейсики, Минол или шахматы) и запускаем:
    [​IMG]
    In Rust we trust [​IMG]

    Эмулятор успешно прошел знаменитого "экзесайзера":
    [​IMG]
     
    Последнее редактирование: 4 янв 2020
    Igor68 и alp69 нравится это.
  19. FoxyLab

    FoxyLab Гик

    В дополнение к предыдущему посту - т. Jonathan Pallant строит ретрокомпьютер на Кортексе, используя Эмбеддед Раст:

     
    Igor68 нравится это.
  20. FoxyLab

    FoxyLab Гик

    Выполнил редизайн проекта, теперь он выглядит вот так:
    [​IMG]
    Оценил влияние размера кэша инструкций на реальную скорость работы "нанокомпьютера" на примере скорости обдумывания машиной первого хода в MICROCHESS (результаты для TURBO-режима, видеокартинка не отрисовывалась):
    без кэша - 291 секунда;
    кэш 4 байта (слишком маленький, накладные расходы не окупаются и ухудшают скорость) - 580 секунд;
    кэш 8 байт (оптимум) - 21 секунда !!!;
    кэш 16 байт (слишком большой, накладные расходы не окупаются) - 26 секунд.
     
    Igor68 нравится это.