Пока что добиться работы опроса клавиш не удалось. Код:
Код:
MODULE TestKeys; (*$MAIN*)
IMPORT b := Basic;
BEGIN
b.Init;
REPEAT UNTIL b.INKEY() # 0X;
END TestKeys.
Код:
;# GNU C17 (GCC) version 11.2.1 20211109 (pdp11-aout)
;# compiled by GNU C version 9.3-win32 20200320, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version none
;# GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
;# options passed: -mbm1 -msoft-float -O2 -Os -fomit-frame-pointer
.text
.even
.globl _main
_main:
;# TestKeys.c:14: {
jsr pc,___main ;#
;# TestKeys.c:19: Basic_Init();
jsr pc,_Basic_Init ;# Basic_Init
L_2:
;# TestKeys.c:21: } while (!(Basic_INKEY() != 0x00));
jsr pc,_Basic_INKEY ;# Basic_INKEY
;# TestKeys.c:21: } while (!(Basic_INKEY() != 0x00));
tstb r0 ;# tmp29
beq L_2 ;#
;# TestKeys.c:23: }
clr r0 ;#
rts pc
Код:
void Basic_Init (void)
{
asm("\
CMPB @$0177717, $0200 \n\
BEQ 10$ \n\
MTPS $0340 \n\
MOV $016000, @$0177716 \n\
10$: TSTB @$0177662 // A key \n\ <-- делаем "один раз в начале достаточно"
MOV $041000, _Basic_scradr"
);
} // Basic_Init
Код:
signed char Basic_INKEY (void) {
asm("\
CLR R0 \n\
TSTB @$0177660 \n\
BPL NOKEY$ \n\
MOVB @$0177662, R0 \n\
NOKEY$: \n"
);
} // Basic_INKEY
TestKeys.zip