;***************************************************************************
; AAA.M68 - Alphanso's Assembler Assylum Universal file
;
; by Dave Heyliger - AMUS Staff
; last update 01/07/87
;
; Functions: PRTTAB - acts just like PRINT TAB (#,#) from BASIC
; NOECHO - turns off keyboard echoing
; ECHO - turns keyboard echoing back on
; ONEKEY - makes the KBD call 1 character to D1
; MLTKEY - makes the KBD call multiple keys, A2 pointer
; CLRCTC - Clear a pending ^C from within the program
; NOCTC - "set" NOCTRLC
; CTC - "set" CTRLC
; HEX - "set" HEX
; OCTAL - "set" OCTAL
;
; Note: place assembled AAA.UNV in the MAC: account, DSK0:[7,7]
;***************************************************************************
DEFINE NOECHO ;makes keyboard entries "invisible"
PUSH A6 ;"black box"
JOBIDX A6 ;give A6 the JOBIDX
MOV JOBTRM(A6),A6 ;A6 points to the Terminal Status Word
ORW #T$ECS,@A6 ;second bit now contains a "1" (no echo)
POP A6 ;restore original
ENDM
DEFINE ECHO ;turns ECHO back on for keyboard input
PUSH A6 ;"black box"
PUSH D4
JOBIDX A6 ;get the JOBIDX
MOV JOBTRM(A6),A6 ;A6 points to the Terminal Status Word
MOVW #T$ECS,D4 ;D4 contains 00000010
COMW D4 ;D4 contains 11111101
ANDW D4,@A6 ;second bit now contains a "0"
POP D4 ;restore originals
POP A6
ENDM
DEFINE ONEKEY ;makes KBD only accept one key (D1 holds it)
PUSH A6 ;"black box"
JOBIDX A6 ;get JCB pointer
MOV JOBTRM(A6),A6 ;A6 holds pointer to TSW
ORW #T$IMI,@A6 ;set "one key" for KBD (D1 will hold char.)
POP A6 ;restore original
ENDM
DEFINE MLTKEY ;multiple keystrokes on KBD call (A2 pointer)
PUSH A6 ;"black box"
PUSH D4
JOBIDX A6
MOV JOBTRM(A6),A6 ;A6 holds pointer to TSW
MOVW #T$IMI,D4 ;we will complement this value
COMW D4 ;to set up the AND so as to
ANDW D4,@A6 ;turn off the T$IMI bit (back to normal mode)
POP D4 ;restore originals
POP A6
ENDM
DEFINE CLRCTC ;clear out a ^C when user hits one (fool them)
PUSH A6 ;"black box"
PUSH D7
TYPECR ^C ;simulates user "exiting" by displaying a ^C
JOBIDX A6 ;A6 now contains pointer to JOBIDX (JOBSTS)
MOVW #J.CCC,D7 ;Reg. D7 contains ^C abort flag
COMW D7 ;logical one's complement (0->1 and 1->0)
ANDW D7,@A6 ;flag is now turned OFF
POP D7 ;restore originalS
POP A6
ENDM
DEFINE NOCTC ;"set noctrlc"
PUSH A6 ;"black box"
PUSH D7
JOBIDX A6 ;point to JOBIDX (JOBSTS)
LEA A6,JOBTYP(A6) ;A6 points to JOBTYP word
MOVW #J.CCA,D7 ;Reg. D7 contains ^C enable flag
COMW D7 ;flip the bits
ANDW D7,@A6 ;^C disabled
POP D7 ;restore originals
POP A6
ENDM
DEFINE CTC ;"set ctrlc"
PUSH A6 ;"black box"
JOBIDX A6 ;point to JOBIDX (JOBSTS)
LEA A6,JOBTYP(A6) ;A6 points to JOBTYP word
ORW #J.CCA,@A6 ;^C set
POP A6 ;restore original
ENDM
DEFINE HEX ;set binary output to HEX
PUSH A6 ;"black box"
JOBIDX A6 ;point to JOBIDX (JOBSTS)
LEA A6,JOBTYP(A6) ;A6 points to JOBTYP word
ORW #J.HEX,@A6 ;HEX set
POP A6 ;restore original
ENDM
DEFINE OCTAL ;set OCTAL
PUSH A6 ;"black box"
PUSH D7
JOBIDX A6 ;point to JOBIDX (JOBSTS)
LEA A6,JOBTYP(A6) ;A6 points to JOBTYP word
MOVW #J.HEX,D7 ;get the flag number
COMW D7 ;flip the bits
ANDW D7,@A6 ;OCTAL set
POP D7 ;restore original
POP A6
ENDM