Ну и как не побаловаться с ассемблерными подпрограммами. Пример взят тот же, что и для BASIC-11. Только синтакс вызова ассемблерной подпрограммы упрощенный использовал (можно и полный).
Код:
.RUN MUBAS
MU BASIC-11/RT-11 V2.00R
CONFIGURATION FILE : *2USER
MU BASIC-11/RT-11 IS OPERATIONAL.
PLEASE TYPE IN "HELLO".
HELLO
USERID: 00
PASSWORD:
WELCOME TO MU BASIC-11/RT-11
READY
RUN MULNK
MU BASIC-11/RT-11 V2 LINK FILE Program
Type "?<RET>" after any prompt for HELP.
.SAV/.REL and .COM file name (default is MUBAS): MUASM
Do you want a map? (Y or N; default is N): Y
.MAP name (default is same as .SAV name):
XM monitor or FB monitor ? (X or F; default is F):
Background or Foreground ? (B or F; default is B):
Do you want PRINT USING? (Y or N; default is Y):
Do you want CALL support? (Y or N; default is N): Y
Enter module names (one per line. <RET> to terminate list): MYCLI
Module name: BSCLLB
Module name:
Single or Double precision math? (S or D; default is S):
Arithmetic hardware (NONE, EAE, EIS, FIS, or FPU; default is NONE): FPU
Do you want the transcendental functions? (Y or N; default is Y):
Do you want the SUB command? (Y or N; default is Y):
Do you want the RESEQ command? (Y or N; default is Y):
Do you want long error messages? (Y or N; default is Y):
To create the MU BASIC-11 that you have just defined,
type "RUN EXIT" following the BASIC "READY"
message. When the RT-11 monitor prompts for input,
type "@MUASM<RET>" to link MU BASIC-11.
READY
RUN EXIT
.@MUASM
.R LINK
*MUASM,MUASM=/W/B:500//
*BSPTRS,BSPAT,BSR0S
*BSR1S,BSPR0
*MYCLI
*BSCLLB
*MUO1ID,BSOT0S.FPU,BSOT1S.FPU
*MUBS1,MUBS2,MUBS3
*MUE1ID
*MUIMP/O:1
*MUXID,BSX0A,BSX0B,BSX1A,BSX1B/O:1
*BSX2,BSPR1,BSCLS,MUBXE
*MUEID,MUBS2E,BSE0,BSE1/O:1
*BSSUB,BSRSQ,BSCMP,BSKEYS,BSERR
*BSERML,MUBEE
*MUBSSC,MUBSSA/O:2
*MUOFID,BSFUNC,MUOPT,MUBZ/O:3
*//
*^C
.
Добавляем битики для VBGEXE дабы пустил к I/O page:
Код:
.SIPP MUASM.SAV/A
Base?
Offset? 4
Base Offset Old New?
000000 000004 000200 240
000000 000006 000000 ^Y
.
Запускаем:
Код:
.RU MUASM
MU BASIC-11/RT-11 V2.00R
CONFIGURATION FILE : *2USER
MU BASIC-11/RT-11 IS OPERATIONAL.
PLEASE TYPE IN "HELLO".
HELLO
USERID: 00
PASSWORD:
WELCOME TO MU BASIC-11/RT-11
READY
10 C%=OCT('177564') \ B%=OCT('177566')
20 S$=CHR$(13)&CHR$(10)&'*** HELLO, WORLD! ***'&CHR$(13)&CHR$(10)
30 FOR I%=1% TO LEN(S$)
40 O%=ASC(SEG$(S$,I%,I%))
50 PEEK(C%,V%) \ IF V%<>128 THEN 50 \ POKE(B%,O%)
60 NEXT I%
READY
RUN
NONAME 30-MAR-15 21:42:05
*** HELLO, WORLD! ***
READY
RUN EXIT
.
---------- Post added at 22:24 ---------- Previous post was at 21:54 ----------
Сообщение от
Patron
Рафос отличается от дековского оригинала наличием команд непосредственного доступа к памяти GET и PUT.
Так что видимо это как раз ассемблерные подпрограммы. Просто вместо CALL можно использовать упрощенный синтакс (см выше). Собственно проверяется легко - структура таблицы известна.