nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 03:10



Reply to topic  [ 97 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next
Micro-Professor MPF-II Assembler 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
vitali wrote:
Я не совсем понял, STROBE будет постоянно молотить clock?
Нет... только когда MPF-II принимает массив байт.

vitali wrote:
А как посмотреть экзешник из архива?
Вынуть из архива и запустить его...
На Win-64 работать не будет, поскольку у меня 32-разрядная Windows-7, она запускает 16-разрядное приложение.

Но можно попробовать 32-разрядную сборку:
Attachment:
манчестер.PNG
манчестер.PNG [ 36.95 KiB | Viewed 5772 times ]
Attachment:
MANCHES1.zip [422.58 KiB]
Downloaded 204 times

_________________
iLavr


02 Jul 2021 05:55
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
У меня древний планшет на Атоме, доросший от Винды 8.0 до последней сборки десятки, 32-битная. Последний экзешник запустился.

Классная анимация. В чем такое делается?


02 Jul 2021 12:01
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
vitali wrote:
Классная анимация. В чем такое делается?

Написано на очень древнем софте и скомпилировано весьма современным компилятором. :wink:

Собственно, если б у вас был древний ноут с Виндой 98 ... ХР и портом LPT, половина дела
была бы уже сделана, поскольку в этой программе написаны и клиент и сервер...
А так - клиент я сейчас переношу на Applesoft BASIC, ну а сервер вам придётся написать
на Piton, или что там у вас на повод дёргания лапками имеется.

_________________
iLavr


02 Jul 2021 15:44
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
Lavr wrote:
vitali wrote:
Классная анимация. В чем такое делается?

Написано на очень древнем софте и скомпилировано весьма современным компилятором. :wink:

Понятно. Впечатляет!
Lavr wrote:
Собственно, если б у вас был древний ноут с Виндой 98 ... ХР и портом LPT, половина дела
была бы уже сделана, поскольку в этой программе написаны и клиент и сервер...
А так - клиент я сейчас переношу на Applesoft BASIC, ну а сервер вам придётся написать
на Piton, или что там у вас на повод дёргания лапками имеется.

Древнего ноута, к сожалению, нет. Но есть гипотетический шанс заполучить его, спрошу.
А что, если лапками дрыгать из Ардуины? Конструктивно это можно было бы оформить как маленький блочок рядом с MPF-II, с SD-картой и маленьким OLED экранчиком для пролистывания софта для загрузки.


03 Jul 2021 03:23
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
vitali wrote:
Древнего ноута, к сожалению, нет. Но есть гипотетический шанс заполучить его, спрошу.
Я думаю - уже не надо дёргаться на этот повод - я уже учёл, что у нас его нет.

vitali wrote:
А что, если лапками дрыгать из Ардуины? Конструктивно это можно было бы оформить как маленький блочок рядом с MPF-II, с SD-картой и маленьким OLED экранчиком для пролистывания софта для загрузки.
Ну это ваше дело - чем вы будете лапками дрыгать со стороны РС.
Я допишу сейчас клиент для MPF-II на Applesoft BASIC и напишу вам алгоритм на русском языке.
А там - решайте сами.

_________________
iLavr


03 Jul 2021 04:06
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
Да, глупо еще один ноутбук держать рядом с основным ноутбуком для загрузки MPF-II.
Поэтому ногодрыг будет другой. Мне кажется, Ардуина логично ложится в концепцию - просто, 5-вольт совместимо и реалтайменно, в отличие от линукса "Малины".

Нашел свой старый логгер на SD-карточке с часами реального времени и экранчиком - добавлю 3 кнопки интерфейса, и получится MPF-II Binary Data Loader:


Attachments:
adruino_logger.jpg
adruino_logger.jpg [ 41.12 KiB | Viewed 5738 times ]
03 Jul 2021 07:42
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ну что ж... пора приступить к отладке клиента для MPF-II на реальном железе?
А то у меня лишь эти эмуляторы, которые меня уже зело подутомили без аппаратной поддержки,
а у вас хотя бы кнопка Busy работающая есть - воспользуется ей! :wink:

Ниже - альфа-версия софта. Собственно, частично заглушенная аппаратно для эмулятора,
но в эмуляции практически всё на первый взгляд безошибочно работает...

 MPF-II BASIC LOADER V1
Code:
10  REM >>>>>>>> RECEIVING CODE BLOCK FROM PC <<<<<
20  TEXT : HOME : ON ERROR GOTO 590 : REM ERRORHAND
30  PRINT ">>>>> RECEIVING CODE BLOCK FROM PC <<<<<"
35  PRINT "STROBE=<0> " : PRINT
40  S0 = PEEK($C010) : REM SET STROBE="0" - C058
50  PRINT ">>>>> PRESS [ENTER] TO START: ";
60  GET KEY$ : IF KEY$ <> CHR$(13) THEN GOTO 60
70  PRINT : PRINT : PRINT "WAITING BUSY=<1> ..." : J = 1
80  GOSUB 1900 : REM GET BIT 6 THERE
85  PRINT B(6); : J = J + 1
90  IF J = 78 THEN NORMAL: HTAB 1: J = 1: GOTO 95
93  IF J = 39 THEN INVERSE: HTAB 1
95  IF B(6) = 0 THEN GOTO 80
100 NORMAL: PRINT : PRINT : PRINT "START LOADING... SET STROBE = 1-0-1-0...  "
110 ADDR = INT(1 - 1) : LNGTH = INT(1 - 1) : REM MAKE THEM INTEGER
120 BYTE = INT(1 - 1) : PRE = INT(2 - 1) : NUM = INT(1 - 1)
130 GOSUB 660 : REM GETBYTE
140 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
150 ADDR = BYTE * 256
160 C$ = "0123456789ABCDEF"
170 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
180 A1$ = MID$(C$, AH + 1, 1) : A1$ = A1$  + MID$(C$, AL + 1, 1)
190 GOSUB 660 : REM GETBYTE
200 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
210 ADDR = ADDR + BYTE
220 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
230 A0$ = MID$(C$, AH + 1, 1) : A0$ = A0$  + MID$(C$, AL + 1, 1)
240 A1$ = A1$ + A0$ + "H; "
250 PRINT : PRINT "START  ADDR  = "; A1$; ADDR
260 GOSUB 660 : REM GETBYTE
270 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
280 LNGTH = BYTE * 256
290 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
300 A1$ = MID$(C$, AH + 1, 1) : A1$ = A1$  + MID$(C$, AL + 1, 1)
310 GOSUB 660 : REM GETBYTE
320 IF NUM > 2 THEN GOTO 520 : REM ERROR 660 : REM GETBYTE
330 LNGTH = LNGTH + BYTE
340 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
350 A0$ = MID$(C$, AH + 1, 1) : A0$ = A0$  + MID$(C$, AL + 1, 1)
360 A1$ = A1$ + A0$ + "H; "
370 PRINT : PRINT "BLOCK LENGTH = "; A1$; LNGTH; " Bytes "
380 PRINT : PRINT "LOADING BLOCK FROM ADDR "; ADDR; "... "
390 GOSUB 660 : REM GETBYTE
400 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
410 POKE ADDR, BYTE
420 ADDR = ADDR + 1 : LNGTH = LNGTH - 1
430 IF LNGTH > 0 THEN GOTO 390
440 PRINT
445 PRINT "THE WHOLE CODE BLOCK IS LOADED!"
450 PRINT "PRESS [ENTER] TO START OR [ESC] - EXIT:";
460 GET KEY$
470 IF KEY$ = CHR$(27) THEN GOTO 600 : REM EXITALL
480 IF KEY$ <> CHR$(13) THEN GOTO 460
490 CALL ADDR
500 GOTO 600 : REM EXITALL
520 PRINT
530 PRINT "ERROR WHILE LOADING CURRENT BYTE!" : REM ERROREND
540 PRINT "PRESS [ENTER] TO RESTART, [ESC]> EXIT:";
550 GET KEY$
560 IF KEY$ = CHR$(27) THEN GOTO 600 : REM EXITALL
570 IF KEY$ = CHR$(13) THEN GOTO 20
580 GOTO 550
590 PRINT : PRINT "INERNAL BASIC ERROR! PROGRAM ABORTED! " : REM ERRORHAND
600 END : REM EXITALL

660 BYTE = 0 : W = 256 : BN = 8 : REM GETBYTE
670 GOSUB 750
680 IF NUM > 2 THEN GOTO 720 : REM EXIT GETBYTE
690 W =  W / 2 : BYTE = BYTE + (W * BIT)
700 BN = BN - 1
710 IF BN <> 0 THEN GOTO 670
720 RETURN

750 NUM = 0 : LC = 0 : REM GETBIT
755 HTAB 1 : NORMAL
760 FOR K = 1 TO 39
763 PRINT "+";
764 NEXT K
765 HTAB 1
768 S1 = PEEK($C010) : REM SET STROBE="1" - C059
770 GOSUB 1900 : REM GET BIT 6 THERE
780 PRINT B(6); : LC = LC + 1
790 IF B(6) <> PRE THEN NUM = NUM + 1 : GOTO 810
800 IF LC < 11 THEN GOTO 770
810 IF B(6) < PRE THEN BIT = 1
820 IF B(6) > PRE THEN BIT = 0
825 PRE = B(6)
830 S0 = PEEK($C010) : REM SET STROBE="0" - C058
840 HTAB 10 : INVERSE
850 FOR K = 10 TO 20
860 PRINT B(6);
870 NEXT K
880 HTAB 20 : NORMAL : LC = 20
890 S1 = PEEK($C010) : REM SET STROBE="1" - C059
900 GOSUB 1900 : REM GET BIT 6 THERE
910 PRINT B(6); : LC = LC + 1
915 IF B(6) <> PRE THEN NUM = NUM + 1 : GOTO 925
920 IF LC < 31 THEN GOTO 900
925 IF B(6) < PRE THEN BIT = 1
930 IF B(6) > PRE THEN BIT = 0
940 PRE = B(6)
950 S0 = PEEK($C010) : REM SET STROBE="0" - C058
960 HTAB 31 : INVERSE
970 FOR K = 31 TO 39
975 PRINT B(6);
980 NEXT K
985 HTAB 1 : NORMAL
990 IF NUM = 0 THEN NUM = 15
995 RETURN

1900 GET KEY$ : BX = PEEK($C010): N = 256 : REM TEST BIT6
1910 FOR I = 7 TO 5 STEP -1
1920 N = N/2
1930 B(I) = INT(BX/N): BX = BX - (B(I)*N)
1940 NEXT I
1950 B(6) = B(5) : REM FOR DEBUG
1960 RETURN

Для отладки используется подмена Бита 6 - Busy Битом 5, на который влияет клавиатура:
Code:
[Пробел] - устанавливает бит 5
клавиши: '[', ']', '\' - сбрасывают бит 5 в любом регистре - проверено на эмуляторе!

Формат передачи блока кодов следующий:
Первые два байта: адрес загрузки блока - Старший байт, Младший байт.
Вторые два байта: длина блока кодов - Старший байт, Младший байт.
Далее подряд идёт блок кодов указанной длины.
Каждый байт передаётся начиная от старшего бита (бит 7) к младшему биту (бит 0).
Формат передачи - манчестерское кодирование, подробно изображено на картинках здесь в топике.

Чтобы от тестирования с клавиатуры перейти к тестированию аппаратно кнопкой Busy,
необходимо исправить следующий участок кода:
Code:
1900 BX = PEEK($C010): N = 256 : REM TEST BIT6
1910 FOR I = 7 TO 5 STEP -1
1920 N = N/2
1930 B(I) = INT(BX/N): BX = BX - (B(I)*N)
1940 NEXT I
1960 RETURN


P.S. Имитировал я биты с клавиатуры, глядя на следующую картинку:
Attachment:
манчестер2.png
манчестер2.png [ 6.38 KiB | Viewed 5711 times ]
Ни одного перехода за 2 такта STROBE = 1 такт CLOCK - ОШИБКА!
Более двух переходов за 2 такта STROBE = 1 такт CLOCK - ОШИБКА!
Переход "0"->"1" = лог."0", переход "1"->"0" = лог."1".

_________________
iLavr


03 Jul 2021 15:53
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
Ого, вот это софт! :) Расчехляю Audacity на лаптопе, буду набирать Васик и записывать промежуточные версии


04 Jul 2021 07:47
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
Code:
S0 = PEEK($C010)

Такое в AppleBasic работает? Профессор ругается:


Attachments:
peek.jpg
peek.jpg [ 23.6 KiB | Viewed 5695 times ]
04 Jul 2021 08:01
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
vitali wrote:
Code:
S0 = PEEK($C010)
Такое в AppleBasic работает? Профессор ругается:
В Applesoft BASIC это работает, но я же с самого начала показывал возможные варианты:
Code:
BX = PEEK(49168) : REM BX = PEEK(-16368) или BX = PEEK($C010)

Заменяйте сами на работающий у Профессора вариант, у меня ведь его нет.

Lavr wrote:
Я допишу сейчас клиент для MPF-II на Applesoft BASIC и напишу вам алгоритм на русском языке.

Ниже код клиента для MPF-II, из которого все отладочные условности вычищены:

 MPF-II BASIC LOADER V1.1
Code:
10  REM >>>>>>>> RECEIVING CODE BLOCK FROM PC <<<<<
20  TEXT : HOME : ON ERROR GOTO 590 : REM ERRORHAND
30  PRINT ">>>>> RECEIVING CODE BLOCK FROM PC <<<<<"
35  PRINT "STROBE=<0> " : PRINT
40  S0 = PEEK($C058) : REM SET STROBE="0" - C058
50  PRINT ">>>>> PRESS [ENTER] TO START: ";
60  GET KEY$ : IF KEY$ <> CHR$(13) THEN GOTO 60
70  PRINT : PRINT : PRINT "WAITING BUSY=<1> ..." : J = 1
80  GOSUB 1900 : REM GET BIT 6 THERE
85  PRINT B(6); : J = J + 1
90  IF J = 78 THEN NORMAL: HTAB 1: J = 1: GOTO 95
93  IF J = 39 THEN INVERSE: HTAB 1
95  IF B(6) = 0 THEN GOTO 80
100 NORMAL: PRINT : PRINT : PRINT "START LOADING... SET STROBE = 1-0-1-0...  "
110 ADDR = INT(1 - 1) : LNGTH = INT(1 - 1) : REM MAKE THEM INTEGER
120 BYTE = INT(1 - 1) : PRE = INT(2 - 1) : NUM = INT(1 - 1)
130 GOSUB 660 : REM GETBYTE
140 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
150 ADDR = BYTE * 256
160 C$ = "0123456789ABCDEF"
170 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
180 A1$ = MID$(C$, AH + 1, 1) : A1$ = A1$  + MID$(C$, AL + 1, 1)
190 GOSUB 660 : REM GETBYTE
200 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
210 ADDR = ADDR + BYTE
220 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
230 A0$ = MID$(C$, AH + 1, 1) : A0$ = A0$  + MID$(C$, AL + 1, 1)
240 A1$ = A1$ + A0$ + "H; "
250 PRINT : PRINT "START  ADDR  = "; A1$; ADDR
260 GOSUB 660 : REM GETBYTE
270 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
280 LNGTH = BYTE * 256
290 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
300 A1$ = MID$(C$, AH + 1, 1) : A1$ = A1$  + MID$(C$, AL + 1, 1)
310 GOSUB 660 : REM GETBYTE
320 IF NUM > 2 THEN GOTO 520 : REM ERROR 660 : REM GETBYTE
330 LNGTH = LNGTH + BYTE
340 AH = INT(BYTE/16) : AL = BYTE - (AH * 16)
350 A0$ = MID$(C$, AH + 1, 1) : A0$ = A0$  + MID$(C$, AL + 1, 1)
360 A1$ = A1$ + A0$ + "H; "
370 PRINT : PRINT "BLOCK LENGTH = "; A1$; LNGTH; " Bytes "
380 PRINT : PRINT "LOADING BLOCK FROM ADDR "; ADDR; "... "
390 GOSUB 660 : REM GETBYTE
400 IF NUM > 2 THEN GOTO 520 : REM ERROR GETBYTE
410 POKE ADDR, BYTE
420 ADDR = ADDR + 1 : LNGTH = LNGTH - 1
430 IF LNGTH > 0 THEN GOTO 390
440 PRINT
445 PRINT "THE WHOLE CODE BLOCK IS LOADED!"
450 PRINT "PRESS [ENTER] TO START OR [ESC] - EXIT:";
460 GET KEY$
470 IF KEY$ = CHR$(27) THEN GOTO 600 : REM EXITALL
480 IF KEY$ <> CHR$(13) THEN GOTO 460
490 CALL ADDR
500 GOTO 600 : REM EXITALL
520 PRINT
530 PRINT "ERROR WHILE LOADING CURRENT BYTE!" : REM ERROREND
540 PRINT "PRESS [ENTER] TO RESTART, [ESC]> EXIT:";
550 GET KEY$
560 IF KEY$ = CHR$(27) THEN GOTO 600 : REM EXITALL
570 IF KEY$ = CHR$(13) THEN GOTO 20
580 GOTO 550
590 PRINT : PRINT "INERNAL BASIC ERROR! PROGRAM ABORTED! " : REM ERRORHAND
600 END : REM EXITALL

660 BYTE = 0 : W = 256 : BN = 8 : REM GETBYTE
670 GOSUB 750
680 IF NUM > 2 THEN GOTO 720 : REM EXIT GETBYTE
690 W =  W / 2 : BYTE = BYTE + (W * BIT)
700 BN = BN - 1
710 IF BN <> 0 THEN GOTO 670
720 RETURN

750 NUM = 0 : LC = 0 : REM GETBIT
755 HTAB 1 : NORMAL
760 FOR K = 1 TO 39
763 PRINT "+";
764 NEXT K
765 HTAB 1
768 S1 = PEEK($C059) : REM SET STROBE="1" - C059
770 GOSUB 1900 : REM GET BIT 6 THERE
780 PRINT B(6); : LC = LC + 1
790 IF B(6) <> PRE THEN NUM = NUM + 1 : GOTO 810
800 IF LC < 11 THEN GOTO 770
810 IF B(6) < PRE THEN BIT = 1
820 IF B(6) > PRE THEN BIT = 0
825 PRE = B(6)
830 S0 = PEEK($C058) : REM SET STROBE="0" - C058
840 HTAB 10 : INVERSE
850 FOR K = 10 TO 20
860 PRINT B(6);
870 NEXT K
880 HTAB 20 : NORMAL : LC = 20
890 S1 = PEEK($C059) : REM SET STROBE="1" - C059
900 GOSUB 1900 : REM GET BIT 6 THERE
910 PRINT B(6); : LC = LC + 1
915 IF B(6) <> PRE THEN NUM = NUM + 1 : GOTO 925
920 IF LC < 31 THEN GOTO 900
925 IF B(6) < PRE THEN BIT = 1
930 IF B(6) > PRE THEN BIT = 0
940 PRE = B(6)
950 S0 = PEEK($C058) : REM SET STROBE="0" - C058
960 HTAB 31 : INVERSE
970 FOR K = 31 TO 39
975 PRINT B(6);
980 NEXT K
985 HTAB 1 : NORMAL
990 IF NUM = 0 THEN NUM = 15
995 RETURN

1900 BX = PEEK($C010): N = 256 : REM TEST BIT6
1910 FOR I = 7 TO 6 STEP -1
1920 N = N/2
1930 B(I) = INT(BX/N): BX = BX - (B(I)*N)
1940 NEXT I
1950 RETURN

Если попадаются нерабочие строки типа PEEK($C010) и аналогичные - заменяйте HEX $C010
на DEC через калькулятор Windows.
-16368 - это двухбайтное значение, 49168 - четырёхбайтное значение, оно же: 65536-16368.

Ниже в архиве - алгоритм обмена на русском языке, чтобы вы смогли написать свой сервер.
Attachment:
Алгоритм обмена.zip [23.99 KiB]
Downloaded 195 times

Желаю удачи! :kruto:

_________________
iLavr


04 Jul 2021 08:41
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
Спасибо за подробнейшее описание алгоритма обмена и код на Бейсике!
Поскольку проект нарисовывается серьезный, я открыл репозиторий на Гитлабе, сильно проще будет разбираться в изменениях.

Вот разница между версиями 1.0 и 1.1


04 Jul 2021 13:53
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
vitali wrote:
Вот разница между версиями 1.0 и 1.1
Чисто, чтобы было понятно, в чем разница между отладочной и оригинальной версиями:
некоторые нужные нам адреса эмулятор Applesoft BASIC использовать просто не позволял:
Attachment:
C058.PNG
C058.PNG [ 16.53 KiB | Viewed 5647 times ]
Хотя в их эмуляции и не было никакой пользы для отладки... :-?
Поэтому все они были для прохождения отладки записаны как $C010.
В оригинальной версии - все адреса правильные, но её не выполнит эмулятор.

При отладке, чтобы имитировать сигнал BUSY от PC, я делал подмену Бита 6 на Бит 5 - им
можно управлять с клавиатуры. Программа при этом тормозилась по оператору GET.
Code:
1900 GET KEY$ : BX = PEEK($C010): N = 256 : REM TEST BIT6
1910 FOR I = 7 TO 5 STEP -1
1920 N = N/2
1930 B(I) = INT(BX/N): BX = BX - (B(I)*N)
1940 NEXT I
1950 B(6) = B(5) : REM FOR DEBUG
1960 RETURN

В оригинальном коде проверяется только Бит 6 - BUSY.
Code:
1900 BX = PEEK($C010): N = 256 : REM TEST BIT6
1910 FOR I = 7 TO 6 STEP -1
1920 N = N/2
1930 B(I) = INT(BX/N): BX = BX - (B(I)*N)
1940 NEXT I
1950 RETURN

В этом, собственно, и вся разница между этими двумя версиями...

_________________
iLavr


05 Jul 2021 07:48
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
Понятно.
В общем, я взял за основу Ваш последний код (1.1), заменил шестнадцатеричные числа в PEEK() на десятичные,
и выложил в ГИТ как версию 1.2, буду ее набивать в MPF.


05 Jul 2021 12:39
Profile
Senior
User avatar

Joined: 17 Sep 2019 09:34
Posts: 136
Location: Finland
Reply with quote
Примерно половину программы набил (спасением является работающий после переделки выхода MIC ZX-Магнитофон). Глядя на ужас экрана MPF-II с листингом программы, подумалось: а можно сделать абсолютно минимальный вариант Бейсик Загрузчика, который, скажем, грузиит два байта с ардуино? И отладить только его, все что можно, разместив в подпрограммах, вылизав до упора.


06 Jul 2021 15:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Я не знаю реальной скорости вашего Micro-Professor MPF-II, поэтому вставки на ассемблере
мне написать удалённо - очень затруднительно.

P.S. В принципе есть и другой вариант, я посмотрел, у Apple-][ интерфейс RS-232 реализован
аппаратно на отдельной плате. Если существует плата расширения RS-232 под системный
разъём Micro-Professor MPF-II, можно купить и использовать её.

_________________
iLavr


06 Jul 2021 16:42
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 97 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next

Who is online

Users browsing this forum: No registered users and 9 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.