The user may wish to run programs written in Pascal/MT+ in a ROM based system. This has been a design goal from the beginning and has been done successfully by many users.
The steps required to put a program into ROM are presented below.
PROCEDURE @INI;
BEGIN
END;
LINKMT USERPROG,MYWNC,MYRNC,GET,MYINI,PASLIB/S
Listed below are three skeletons for the @INI, @RNC, and @WNC routines which can be used in ROM environments.
;---------------------------------------------------------------;
; SAMPLE INITIALIZATION ROUTINE ;
;---------------------------------------------------------------;
PUBLIC @INI
PUBLIC @SYSIN ;SYSTEM INPUT VECTOR
PUBLIC @SYSOUT ;SYSTEM OUTPUT VECTOR
PUBLIC INPUT ;DEFAULT INPUT FIB
;THIS MUST BE PRESENT EVEN IF NO
;FILE I/O IS DONE
PUBLIC OUTPUT ;AGAIN MUST BE PRESENT EVEN IF NO
;FILE I/O IS DONE
EXTRN @RNC
EXTRN @WNC
@INI:
LXI H,@RNC
SHLD @SYSIN
LXI H,@WNC
SHLD @SYSOUT
;
; ... ADD MORE HERE FOR HEAP, ETC. PRUNE FROM STANDARD @INI
;
RET
DSEG
@SYSIN: DS 2
@SYSOUT: DS 2
INPUT: DS 1 ;DUMMY FIB
OUTPUT: DS 1 ;DUMMY FIB
END ;AND THAT'S A SIMPLE ONE
;---------------------------------------------------------------;
; SAMPLE @RNC - READ NEXT CHARACTER ROUTINE ;
;---------------------------------------------------------------;
PUBLIC @RNC
@RNC:
; INCLUDE CODE HERE TO GET CHARACTER INTO A-REG AND
; ECHO IT. ALSO IF USER WANTS TO SIMULATE CON: THE
; THE DRIVER MUST ECHO BACKSPACE AS <BACKSPACE, SPACE,
; BACKSPACE> AND CR AS CR/LF
MOV L,A
MVI H,0
XTHL ;PUT FUNC VALUE ON STACK AND
;RET ADDR IN HL
PCHL ;RETURN
END
;---------------------------------------------------------------;
; SAMPLE @WNC - WRITE NEXT CHARACTER ROUTINE ;
;---------------------------------------------------------------;
PUBLIC @WNC
@WNC:
POP H ;GET RET ADDR
XTHL ;PUT IT BACK AND GET PARM CHAR
; CODE HERE TO WRITE CHARACTER IN L-REG TO OUTPUT DEVICE
; IF USER WANTS TO SIMULATE CON: COMPLETELY THE USER
; MUST OUTPUT CR AS CR/LF
RET
END