.TITLE TTYPE .IDENT \V02.03\ .ENABL LC .SBTTL TTYPE INITIALIZE TERMINAL TYPE ; ;INITIALIZE THE TERMINAL TYPE, JUST AS IN APLSF-10/20 ; .PSECT CODE TTYPE:: CLR OMODE ;DEFAULT TO APL MODE CALL NEWLIN ;Leading 1$: MOV #1,ERRPTR ;IN CASE ERROR OCCURS, STOP MPRINT TMSG ;"TERMINAL.." MESSAGE MOV #GETL,INPTR ;GET INPUT FROM TERMINAL BIS #SY.PMT,SYSTAT ;SPECIAL PROMPT CALL GETLIN ;GET INPUT... BIC #SY.PMT,SYSTAT ;NO MORE 2$: CMPB (R0)+,#CHRSPA ;SPACE? BEQ 2$ ;YES, LOOK FOR SOMETHING ELSE DEC R0 ;BACK-UP PUSH R0 ;SAVE POINTER TO INPUT MOV #4,R1 ;MAX # OF CHARS TO LOOK AT PUSH R1 ;SLEAZY TRICK FOR LATER 3$: CMPB (R0)+,#CHR.CR ;END OF INPUT? BEQ 4$ ;YES, OK SOB R1,3$ ;LOOP UNTIL EOL OR 4 CHARS 4$: SUB R1,(SP) ;CORRECT FOR DECREMENT LOOP BEQ 8$ ;NULL LINE MOV #TYPTBL,R2 ;POINT TO TABLE PUSH R2 ;SAVE FOR LOOP MOV 2(SP),R1 ;GET # OF CHARACTERS MOV 4(SP),R0 ;POINT TO INPUT BUFFER 5$: CMPB (R2)+,(R0)+ ;COMPARE LIST W/ INPUT BLT 6$ ;NOT IN TABLE - GIVE UP BGT 7$ ;NOT THIS ELEMENT - COULD BE ANOTHER SOB R1,5$ ;DECREMENT COUNT BR 9$ ; WE FOUND IT!!! 6$: MOV 4(SP),R0 ;GET POINTER TO INPUT MOV 2(SP),R1 ;GET COUNT OF CHARS ADD #4,(SP) ;POINT TO NEXT ELEMENT MOV (SP),R2 ; IN THE LIST BR 5$ ;AND LOOP AGAIN 7$: TST (SP)+ ;FIXUP THE STACK 8$: CLR R2 ;NOT FOUND = 0 BR 10$ ;AND GO... 9$: MOV (SP)+,R2 ;FIX UP FOR TABLE OFFSET SUB #TYPTBL-4,R2 ;WE HAVE OFFSET (2 WORD ELEMENTS) ASR R2 ; " " " (1 WORD ELEMENTS) 10$: CMP (SP)+,(SP)+ ;ADJUST TE STACK ADD R2,PC ;AND GO BR 11$ ;ERROR BR 15$ ;HELP! BR 12$ ;LA120/LA36 BR 12$ ;LA36/LA120 BR 13$ ;VT100 BR 11$ ;JUST IN CASE 11$: MPRINT ERTMSG ;PRINT ERROR MESSAGE BR TTYPE ; AND TRY AGAIN 12$: MOV #16,R0 ;CONTROL-N CHAR. CALL TTOUT ;PRINT IT BR 14$ 13$: MPRINT INI100 ;SET VT100 TO RECOGNIZE THE APL CHAR. SET 14$: MPRINT INITMS ;APL IS STARTING... CLR ERRPTR ;STANDARD ERROR CONFIGURATION RETURN ;CONTINUE 15$: MPRINT HLPMSG ;PRINT LIST OF AVAILABLE TYPES BR TTYPE ; AND TRY AGAIN .PSECT TABLES TYPTBL: .ASCII /HELP/ ;HELP MESSAGE .ASCII /LA12/ ;LA120 TERMINAL .ASCII /LA36/ ;LA36 TERMINAL .ASCII /VT10/ ;VT100 TERMINAL .BYTE 177,177 TMSG: .ASCIZ /TERMINAL../ ERTMSG: .ASCIZ /TYPE H FOR HELP/<15><12> HLPMSG: .ASCII /GIVE THE APPROPRIATE RESPONSE FOR YOUR TERMINAL/<15><12> .ASCII /RESPONSE YOUR TERMINAL/<15><12> .ASCII /LA36 LA36 WITH APL CHARACTER SET OPTION/<15><12> .ASCII /LA120 LA120 WITH APL CHARACTER SET OPTION/<15><12> .ASCIZ /VT100 VT100 OR VT200 WITH APL CHARACTER SET/<15><12> INITMS: .BYTE 15,12 .ASCII "welcome to apl_11 " .BYTE TYPE,+'0,*10.>>+'0 .BYTE '_,+'0,*10.>>+'0 .BYTE ' ,15,12,0 .BYTE 0,0,0,0,0,0,0,0 INI100: .ASCIZ <16><33>/)1/ .BLKB