;*************************** AMUS Program Label ******************************
; Filename: P.M68 Date: 10/31/91
; Category: UTIL Hash Code: XXX-XXX-XXX-XXX Version: 1.0(100)
; Initials: ULTR/US Name: DAVID PALLMANN
; Company: ULTRASOFT CORPORATION Telephone #: 5163484848
; Related Files:
; Min. Op. Sys.: AMOSL 1.0/AMOS32 1.0 Expertise Level: INT
; Special: To assemble: .M68 P
; Description: Like PRINT/PRNT; figures out which spooler type is running.
;*****************************************************************************
;****************************************************************************
;* *
;* P *
;* Performs functions of PRINT and PRNT - works with either spooler *
;* *
;****************************************************************************
;[100] 31 October 1991 21:33 Edited by David Pallmann
; Created.
START: PHDR -1,0,PH$REE!PH$REU ; program header
GETIMP 200.,A5 ; get command line buffer
;************
;* BRANCH *
;************
;determine printer type and branch to appropriate handerl
BRANCH: TST LPTQUE ; is memory-based spooler in use?
BEQ TASK.MANAGER ; no - task manager spooler
;******************
;* MEMORY.BASED *
;******************
;for memory based spooler we use the PRINT command
MEMORY.BASED:
MOV A5,A0 ; begin setting up command line
MOVB #'P,(A0)+ ;
MOVB #'R,(A0)+ ;
MOVB #'I,(A0)+ ;
MOVB #'N,(A0)+ ;
MOVB #'T,(A0)+ ;
MOVB #40,(A0)+ ;
BR FINISH.COMMAND.LINE ; go copy rest of command line
;******************
;* TASK.MANAGER *
;******************
;for task manager spooler we use the PRNT command
TASK.MANAGER:
MOV A5,A0 ; begin setting up command line
MOVB #'P,(A0)+ ;
MOVB #'R,(A0)+ ;
MOVB #'N,(A0)+ ;
MOVB #'T,(A0)+ ;
MOVB #40,(A0)+ ; go copy rest of command line
;*************************
;* FINISH.COMMAND.LINE *
;*************************
;Finish command line currently indexed by A0
;Copy command line to terminal input line buffer
;Execute PRINT or PRNT command that we have constructed and exit
FINISH.COMMAND.LINE:
10$: MOVB (A2)+,(A0)+ ; copy command line character
BNE 10$ ; loop until null encountered
JOBIDX A3 ; index job control block
MOV JOBTRM(A3),A4 ; index terminal control block
MOV T.ILB(A4),A2 ; index terminal input line buffer
MOV A5,A0 ; index our command line
20$: MOVB (A0)+,(A2)+ ; set command line
BNE 20$ ; into terminal input buffer
MOV T.ILB(A4),A2 ; index command to execute with A2
AMOS ; go execute it
EXIT ; exit to AMOS command level