RNCMD.MAC/AU/-BF=RNCMD.VGN;1 -,,/;CAR 1/ \ -2 .IDENT /M02.1/ -33 ; ; CARTS LUG MODIFICATIONS ; ; CAR 1 --> ADDED CHANGE BAR COMMANDS, FIXED BUG WITH SKIP AND BLANK ; WITH NEGATIVE NUMBERS AND, ADDED RELATIVE MARGEN ; ADJUSTMENT (+ OR -) CAUSES RELATIVE NORMAL OTHERWISE ; % -39 ; ENABLE/DISABLE CHANGE BAR COMMADS (ALSO ON AND OFF) ; ENCBR:: CLR $CBON ;CLEAR ON MOV #CBNSP,EBSIZ ;NUMBER OF CHAR TO MOVE TO RIGHT RETURN DSCBR:: CLR EBSIZ ;SET OFFSET BACK TO ZERO CLR $CBON ;TURN OFF CANGE BAR RETURN BGBAR:: MOV #CBBIT,$CBON ;FLAG BAR ON RETURN ENBAR:: MOV #CBFBT,$CBON ;FLAG BAR OFF RETURN ; ; SET UNDERLINE LOCK, UNTIL END OF LINE LOCKUL:: BIS #2,$ULLSW CLR ULTYP ; UNDERLINE RETURN ; SET "DARK" LOCK ON, UNTIL END OF LINE LKDARK:: BIS #2,$ULLSW MOV SP,ULTYP ;OVERPRINT RETURN ; UNDERLINE BY "&" AND "\&" IS DONE BY .... SETUL:: CLR DFULT ; UNDERSCORE CHARACTER RETURN SETDK:: MOV SP,DFULT ; OVERPRINT RETURN ;****************** ; RELATIVE VS ABSOLUTE TAB STOPS ; RT N = TAB STOPS ARE RELATIVE TO COLUMN N (NORMALLY 0) ; RT -1 = TAB STOPS ARE RELATIVE TO THE LEFT MARGIN ON THE LINE ; THAT THE TAB IS ON ; RT (NOTHING) = TAB STOPS ARE RELATIVE TO THE LEFT MARGIN AT THE TIME OF THIS ; COMMAND RTAB:: CALL (R4) MOV LMARG,R3 ; NONE, USE CURRENT LEFT MARGIN MOV R3,RELTAB RETURN ; ROUTINES TO SET CHARACTER SIZE AND LINE SIZE FOR LA120 LA120:: CALL (R4) ; GET CHARACTERS PER INCH MOV #10.,R3 ; DEFAULT = 10 MOV R3,CPI CALL (R4) ; GET LINES PER INCH MOV #6.,R3 ; DEFAULT = 6 ; SEARCH LINES PER INCH CONVERSION MOV #LPITAB,R4 5$: TSTEQB (R4),ILCMJ CMPEQB (R4)+,R3,20$ INC R4 BR 5$ ; SEARCH CHARACTERS PER INCH CONVERSION TABLE 20$: MOVB (R4),LPIMSG+2 MOV #CPITAB,R4 25$: TSTEQB (R4),ILCMJ CMPEQB (R4)+,CPI,30$ INC R4 BR 25$ 30$: MOVB (R4),CPIMSG+2 MOV SP,NSLA120 ; SET FLAG SO IT CAN BE CLEARED AT END ;;;;;; ROUTINE TO SEND SIZE COMMAND TO ; LA 120 SET120::MOV #LPIMSG,R4 35$: MOVB (R4)+,R1 BEQ 40$ CALL FOUT BR 35$ 40$: RETURN ILCMJ: JMP ILCM ; LINES PER INCH CONVERSION TABLE LPITAB: .BYTE 2.,'4 .BYTE 3.,'5 .BYTE 4.,'6 .BYTE 6.,'1 .BYTE 8.,'2 .BYTE 12.,'3 .WORD 0 ; CHARACTERS PER INCH CONVERSION TABLE CPITAB: .BYTE 5.,'5 .BYTE 6.,'6 .BYTE 7.,'7 .BYTE 8.,'8 .BYTE 10.,'1 .BYTE 12.,'2 .BYTE 13.,'3 .BYTE 16.,'4 .WORD 0 LPIMSG::.BYTE 33,133,'1,172 CPIMSG::.BYTE 33,133,'6,167 .WORD 0 -149,149 MOV STDLM,R3 ;IF NONE, INITIALIZE -160,160 MOV STDLM,LMARG ; RESET LM TO STANDARD -162,162 MOV PNLPG,R3 ;SET INITIAL PAGE LENGTH PARAMETER -261,261 -283,287 TST R3 ;CHECK IF ARGUMENT IS NEG BMI 15$ ;IF NEGATIVE DO NOT MAKE TOP OF PAGE CHECK CMP LINEC,$HDRSW ;AT TOP OF PAGE? BLE 30$ ;IF LE YES 15$: MOV R3,R1 CALL $MUL ;MULTIPLY TST R1 ;CHECK IF RESULT IS + BPL 17$ ;AND IF SO CONTINUE AS NORMAL MOV R1,R2 ;GET THE NUMBER OF LINES FROM END OF PAGE ADD NLPG,R2 ;R2 NOW HAS LINE NUMBER THAT WE WANT TO GET TO CMP R2,LINEC ;BUT CHECK IF WE HAVE ALREADY PASSED THAT POINT BGT 16$ ; IF GT OK MOV #1,R2 ;ELSE JUST SKIP 1 LINE BR 20$ ; 16$: SUB LINEC,R2 ;GENERATE NUMBER OF LINES TO SKIP BR 20$ 17$: MOV R1,R2 ;CHECK IF ROOM ON PAGE -306,308 ADD LINEC,R3 ; SEE IF THE FIGURE WILL FIT ON THIS PAGE CMP R3,NLPG ; IF NOT, SAVE IT FOR TOP OF NEXT PAGE BLE 12$ ; IT WILL FIT ; IT WON'T FIT. HOLD IT FOR THE NEXT PAGE. IF WE ARE ALREADY HOLDING ONE ; FOR THE NEXT PAGE, FORCE A NEW PAGE NOW. TST FIGSAV ; ALREADY HOLDING ONE OFF? BNE 15$ ; YES MOV (SP)+,FIGSAV ; NO, HOLD THIS ONE RETURN 15$: CALL BPAGE ; NEW PAGE (INCLUDING SPACE FOR PREV FIGURE) 12$: MOV (SP)+,R2 ; PUT THE FIGURE HERE JMP SKIPN -380 ADD RIGSHI,R2 ;ADD ON RIGHT SHIFT SPACE ADD EBSIZ,R2 ;ADD ON CHANGE BAR AREA /