#TITLE "Sign-on Message Area" #SUBTTL "For the NEC-APC" ; ; SOMIPC.A ; MODULE "SOMAPC" ; module ID ; #INCLUDE "EQUATE" ; oommon OS equivalences ; LOC Data# ; locate in data segment ; USRSOM:: #REPEAT 6 ; allocate 60 user bytes BYTE 0,0,0,0,0,0,0,0,0,0 #ENDREP ; ; BYTE ACR,ALF ; BYTE "System Memory Size = " MEMKSZ: BYTE 0,0,0,0 ; range = 64-610k ; ; BYTE ACR,ALF ; BYTE "Circuit: " CKTNO: BYTE 0,0,0 ; range = 0-255 ; ; BYTE ", Node: " NODNO: BYTE 0,0,0 ; range = 0-255 ; BYTE "$" ; LOC Code# ; locate in code segment ; ; Routines to patch system sign on message. ; PTMKSZ:: PUSH DI ; save reg MOV DI,&MEMKSZ ; get msg offset CALL DECMSG ; do common code MOV [DI],='k' ; append kilobyte char POP DI ; restore reg RET ; and exit ; PTMCKT:: PUSH DI ; save reg MOV DI,&CKTNO ; get msg offset XOR AH,AH ; make double length CALL DECMSG ; do common code POP DI ; restore reg RET ; and exit ; PTMNOD:: PUSH DI ; save reg MOV DI,&NODNO ; get msg offset XOR AH,AH ; make double length CALL DECMSG ; do common code POP DI ; restore reg RET ; and exit ; DECMSG: XOR BL,BL ; clear zero print flag MOV CX,=100 CALL __DM ; write 100's digit MOV CX,=10 CALL __DM ; write 10's digit MOV CX,=1 OR BL,=0XFF ; set zero print flag __DM: XOR DX,DX ; clear remainder register DIV CX ; divide the number OR AL,AL ; did it go? JNZ __1 ; if not, continue OR BL,BL ; zero print enabled? JZ __X ; if not, continue __1: ADD AL,='0' ; add ASCII bias MOV [DI],AL ; move to message area INC DI ; bump pointer OR BL,=0XFF ; set zero print flag __X: XCHG AX,DX ; swap remainder with quotient RET ; all done ; END