Micro-Professor MPF-II Assembler

MOS Technology / Commodore / Apple II / NES etc.

Moderator: Lavr

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

Re: 6502 Assembler in BASIC

Post by Lavr »

vitali wrote:Однако это только завтра вечером смогу, сейчас не у железок.
Договорились - на завтра... а я пока Applesoft BASIC посмотрю - что он сможет...


UPDATE: Значит, завтра без Распберри Пи собираем вот такую схему:
printer.PNG
В Microprofessor II Basic набираем вот такую программу:

Code: Select all

10   REM  Applesoft BASIC
40   TEXT : REM ENTER TEXT MODE
45   HOME : REM CLEAR TEXT SCREEN
58   C$ = "0123456789ABCDEF" 
60   REM ++++++++++++++++++++++++++++++++++++++++
62   bx = PEEK($C010) : REM или PEEK(49168) или PEEK(-16368) 
63   bh = INT(bx/16)
64   bl = bx-(bh*16)
65   D$ = MID$(C$, bh+1, 1)
66   E$ = MID$(C$, bl+1, 1)
67   PRINT D$;E$;"  ";
69   GOTO 60
70   REM  ++++++++++++++++++++++++++++++++++++++++
Нажимаем и отпускаем кнопку, смотрим - что на экране...
Этот тест поможет выяснить по какому биту байта, считанного из порта $C010, поступает сигнал Busy,
а также - инвертируется этот сигнал или нет.

Второй тест проверяет, когда STROBE="1", и когда STROBE="0"

Code: Select all

10   REM  Applesoft BASIC
40   TEXT : REM ENTER TEXT MODE
45   HOME : REM CLEAR TEXT SCREEN
58   PRINT "0C058H, 0C059H PORTS TEST:" : PRINT " "
60   REM ++++++++++++++++++++++++++++++++++++++++
62   POKE 49240,0: REM или POKE $C058,0 или POKE -16296,0
63   PRINT "POKE 0C058H TEST: "; : GET A$ : PRINT A$
64   POKE 49241,0: REM или POKE $C059,0 или POKE -16295,0
65   PRINT "POKE 0C059H TEST: "; : GET A$ : PRINT A$
69   GOTO 60
70   REM  ++++++++++++++++++++++++++++++++++++++++
Нажимаем и отпускаем любую клавишу, смотрим горит или не горит светодиод...

Светодиод желательно сверхъяркий чтобы светился при 10 кОм и не перегружал порт.
В принципе можно светодиод взять любой обычный и сопротивление уменьшить
до 330 ... 1 кОм, поскольку драйверы принтера как правило мощные.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

Ого, сколько всего за отчетный период! :)

Начал собирать детальки. По схеме - нормально, если источник 5 вольт для кнопки будет не из Микропрофессора?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 6502 Assembler in BASIC

Post by Lavr »

vitali wrote: По схеме - нормально, если источник 5 вольт для кнопки будет не из Микропрофессора?
В принципе ничего страшного - но внимательно и четко соединяйте все земли перед включением.
Соединения земли должны быть надёжные.

UPDATE: И надо проверить быстродействие Бейсика.

Code: Select all

40   TEXT : REM ENTER TEXT MODE
45   HOME : REM CLEAR TEXT SCREEN
50   PRINT "Speaker Test"
55   time = 2 : REM полупериод
60   bx = PEEK(-16336) : REM bx = PEEK($C030) 
62   FOR PAUSE=1 TO time: NEXT PAUSE
63   GOTO 64
64   bx = PEEK(-16336) : REM bx = PEEK($C030) 
65   FOR PAUSE=1 TO time: NEXT PAUSE
69   GOTO 60
Здесь вывод на динамик - с какой примерно частотой зазвучит?
Ожидаю довольно низкую частоту...

Code: Select all

40   TEXT : REM ENTER TEXT MODE
45   HOME : REM CLEAR TEXT SCREEN
50   PRINT "Strobe Test"
55   time = 2 : REM полупериод
60   bx = PEEK($C058) 
62   FOR PAUSE=1 TO time: NEXT PAUSE
63   GOTO 64
64   bx = PEEK($C059) 
65   FOR PAUSE=1 TO time: NEXT PAUSE
69   GOTO 60
А здесь - импульсы выдаются на вывод Strobe порта принтера -
это если есть возможность посмотреть импульсы осциллографом...

time = 2 - можно менять в строну увеличения: частота импульсов будет ниже.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 6502 Assembler in BASIC

Post by Lavr »

Впрочем, если складывается впечатление, что мы сильно уходим в сторону от вашей
мечты - написать "Хэллоу, Ворлд!" на ассемблере, то можете по-быстрому сделать
вот так: скомпилировать свою программу чем-либо на РС, и занести её коды в следующую
программу на Бейсике:

Code: Select all

10  REM ASSM PROGRAM
15  TEXT : HOME : PRINT " SOUND TEST: "
20  FOR LOC = 768 TO 786
30  READ BYTE
40  POKE LOC,BYTE
50  NEXT LOC
60  DATA 162,0,32,30,251,141,48,192,162,1,32,30,251,141,48,192,76,0,3
65  REM DATA $A2,$00,$20,$1E,$FB,$8D,$30,$C0,$A2,$01,$20,$1E,$FB,$8D,$30,$C0,$4C,$00,$03
70  CALL 768 : REM ORG $300
Здесь в примере - программа извлечения звука через спикер с адреса 0300Н.

Если надо затащить что-то другое, меняете код на свой в строке DATA и
в цикле FOR LOC = 768 TO 786 меняете второе число на 768+(Число байт после DATA).
iLavr
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

В общем, полученно за отчетный период. Хочется проиллюстрировать все, поэтому я буду разбивать логические вещи на одно сообщение.

Спаянный Port Tester и подключение к Микропрофессору.
You do not have the required permissions to view the files attached to this post.
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

Хорошо, что хотя бы через внешнюю аудиокарту запись и загрузка ВАСИКа работает как часы. Помогает с написанием и отладкой программы "не за раз".

Тестируем BUSY пин:
  • Не нажатая кнопка BUSY (высокий уровень):

    Code: Select all

    C0H = 11000000b
  • Нажатая кнопка BUSY (низкийуровень):

    Code: Select all

    80H = 10000000b
Получается, пин BUSY это бит 6
You do not have the required permissions to view the files attached to this post.
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

Тестируем STROBE.
  • При старте уровень низкий (светодиод не горит)
  • Последующие нажатия клавиатуры триггерят светодиод
You do not have the required permissions to view the files attached to this post.
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

Продолжение нажатия клавиатуры
You do not have the required permissions to view the files attached to this post.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 6502 Assembler in BASIC

Post by Lavr »

vitali wrote:Тестируем BUSY пин:
  • Не нажатая кнопка BUSY (высокий уровень):

    Code: Select all

    C0H = 11000000b
  • Нажатая кнопка BUSY (низкий уровень):

    Code: Select all

    80H = 10000000b
Получается, пин BUSY это бит 6
Вот это и хотелось проверить: значит в мануале опечатка.
ошибка1.png
vitali wrote:Тестируем STROBE.
При старте уровень низкий (светодиод не горит)
POKE 0C058H - STROBE="0",
POKE 0C059H - STROBE="1"

Со всеми неопределённостями - всё выяснили...

Теперь бы выяснить быстродействие Васика примерное - я пользуюсь Васиком по
вашей ссылке https://www.calormen.com/jsbasic/, там он от Эппл-][,
кое-что довольно глючно работает, в частности логика AND - вот уж не ожидал! :o
Своеобразно они интерпретируют в Васике результат AND - не побитно! :-?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

Lavr wrote:
vitali wrote:Тестируем BUSY пин:
  • Не нажатая кнопка BUSY (высокий уровень):

    Code: Select all

    C0H = 11000000b
  • Нажатая кнопка BUSY (низкий уровень):

    Code: Select all

    80H = 10000000b
Получается, пин BUSY это бит 6
Вот это и хотелось проверить: значит в мануале опечатка.
Да, похоже на то.
Lavr wrote:POKE 0C058H - STROBE="0",
POKE 0C059H - STROBE="1"

Со всеми неопределённостями - всё выяснили...
Да, в принципе, можно пропихивать бит в Микропрфессора и забирать бит оттуда.
Lavr wrote: Теперь бы выяснить быстродействие Васика примерное - я пользуюсь Васиком по
вашей ссылке https://www.calormen.com/jsbasic/, там он от Эппл-][,
кое-что довольно глючно работает, в частности логика AND - вот уж не ожидал! :o
Своеобразно они интерпретируют в Васике результат AND - не побитно! :-?
Я записал звук с динамика, файл тут. Не очень высокая частота.

Осциллограф у меня внешний USB-шный, но он работает только с опенсорсным софтов под Линуксом, сейчас некуда подключить.

Похоже, Васик Микропрофессора близок к Эппловскому, насколько он глючный, пока непонятно
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

А со Стробом в мануале не опечатка, случаем? Запись в 58 помечена как LOW
strobe.JPG
You do not have the required permissions to view the files attached to this post.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 6502 Assembler in BASIC

Post by Lavr »

vitali wrote:А со Стробом в мануале не опечатка, случаем? Запись в 58 помечена как LOW
Я уже не проверял по мануалу - надеюсь, ваши эксперименты точнее...
POKE 0C058H - STROBE="0",
POKE 0C059H - STROBE="1"

Насчет частоты: если написать протокол RS-232 софтовый, то в Васике мы должны уметь
задавать точные интервалы.
В противном случае придётся написать самоделку по типу "hands shake" - когда MPF-II будет
подтверждать принятый бит по линии STROBE - для этого я и просил её проверить...
vitali wrote:Я записал звук с динамика, файл тут. Не очень высокая частота.
Даааа... :-? частота под Васиком очень мала... придется "hands shake" написать... :-?
iLavr
User avatar
vitali
Senior
Posts: 136
Joined: 17 Sep 2019 09:34
Location: Finland

Re: 6502 Assembler in BASIC

Post by vitali »

А, понял. Мне кажется, надежнее будет с подтверждением Стробом. Потому как скорее всего, со стороны компа утилиту придется писать для Распберри, а там как-то привязываться к точным интервалам неохота. Да и на Питоне хочется утилиту написать :)
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 6502 Assembler in BASIC

Post by Lavr »

А попробуйте всё же - как звук из-под ассемблерной программы?

Code: Select all

10  REM ASSM PROGRAM
15  TEXT : HOME : PRINT " SOUND TEST: "
20  FOR LOC = 768 TO 786
30  READ BYTE
40  POKE LOC,BYTE
50  NEXT LOC
60  DATA 162,0,32,30,251,141,48,192,162,1,32,30,251,141,48,192,76,0,3
70  CALL 768 : REM ORG $300
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 6502 Assembler in BASIC

Post by Lavr »

vitali wrote:А со Стробом в мануале не опечатка, случаем? Запись в 58 помечена как LOW
А светодиод у вас точно - на землю? Чтобы уж быть уверенным на 100% - а то что-то
многовато опечаток в мануале... :-?

P.S. Опечатки в мануале нет! Всё верно!
POKE 0C058H - STROBE="0",
POKE 0C059H - STROBE="1"
iLavr