mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-01 01:19:17 +00:00
386 lines
13 KiB
Plaintext
386 lines
13 KiB
Plaintext
TITLE VBCSER - SERVICE ROUTINE FOR DEC VB10C (5.02 OR LATER) - V035
|
||
SUBTTL P. M. HURLEY/DAL 14 APR 87
|
||
SEARCH F,S
|
||
|
||
|
||
|
||
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
|
||
; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
|
||
;
|
||
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION
|
||
; 1973,1974,1975,1976,1977,1978,1979,1980,1984,1986,1988.
|
||
;ALL RIGHTS RESERVED.
|
||
|
||
.CPYRT<1973,1988>
|
||
|
||
|
||
XP VVBCSR,035
|
||
|
||
ENTRY VBCSER
|
||
VBCSER:
|
||
|
||
|
||
|
||
;THIS SERVICE ROUTINE ALLOWS THE DISPLAY TO BE USED AS A STANDARD DEVICE
|
||
|
||
;THE I/O INSTRUCTIONS ARE AS FOLLOWS:
|
||
|
||
; INIT D,15 ;INITIALIZE DISPLAY ON SOFTWARE CHANNEL D
|
||
; ;IN DUMP MODE (ONLY DUMP MODE IS ALLOWED ON DISPLAY)
|
||
; SIXBIT /DIS/
|
||
; 0 ;NO BUFFERS
|
||
; ERROR RETURN
|
||
; NORMAL RETURN
|
||
|
||
; CLOSE D, ;STOPS THE DISPLAY
|
||
; OR ; AND
|
||
; RELEASE D, ;RELEASES THE DEVICE
|
||
|
||
; INPUT D,ADR ;RECEIVE LIGHT PEN AND ERROR CONDITIONS
|
||
; SERVICE ROUTINE RETURNS WITH:
|
||
; ADR/ Y,X COORDINATES OF LAST LIGHT PEN HIT
|
||
; ADR+1/ DISPLAY ADDRESS COUNTER OF LAST LIGHT PEN HIT
|
||
; ADR+2/ Y,X COORDINATES OF FIRST ERROR SINCE LAST INPUT INSTRUCTION
|
||
; ADR+3/ ERROR BITS, ADDRESS OF DISPLAY INSTRUCTION CAUSING ERROR
|
||
|
||
; OUTPUT D,ADR ;START THE DISPLAY
|
||
; WHERE:
|
||
; ADR/ USER ERROR FLAG ADDRESS, STARTING ADDRESS OF DISPLAY PROGRAM
|
||
; ADR+1/ 0 OR DESIRED VIRTUAL PROTECTION AND VIRTUAL RELOCATION
|
||
; PROTECTION AND RELOCATION FORMAT IS SIMILAR TO THAT USED BY THE SYSTEM
|
||
; I.E. HIGH ORDER 8 PROTECTION BITS ARE LEFT JUSTIFIED IN LEFT HALF
|
||
; HIGH ORDER 8 RELOCATION BITS ARE LEFT JUSTIFIED IN RIGHT HALF
|
||
; IF 0 IS USED THE PROTECTION AND RELOCATION IS THAT OF THE USER'S JOB
|
||
|
||
;THE USER ERROR FLAG IS SET TO -1 IF AN ERROR OR A LIGHT PEN HIT OCCURS ON THE DISPLAY
|
||
;THE SERVICE ROUTINE HANDLES DISPLAY INTERRUPTS AS FOLLOWS:
|
||
|
||
; STOP INTERRUPT RESTART AT BEGINING OF DISPLAY PROGRAM AFTER TWO
|
||
; JIFFIES HAVE ELAPSED SINCE LAST START OF PICTURE
|
||
|
||
; ILLEGAL ADDRESS LET THE DISPLAY HANG.
|
||
; IT IS UP TO THE USER TO REMEDY THE SITUATION.
|
||
|
||
; EDGE VIOLATION TREAT AS STOP FLAG, BUT SET USER ERROR FLAG
|
||
|
||
; LIGHT PEN RESUME DISPLAYING
|
||
;DEVICE DATA BLOCK
|
||
|
||
ENTRY VBCDDB
|
||
PENDDB::
|
||
VBCDDB::
|
||
SIXBIT /DIS/ ;DEVNAM
|
||
XWD ^D60*HUNGST,0 ;DEVCHR
|
||
DISIOS: 0 ;DEVIOS
|
||
EXP VBCDSP ;DEVSER
|
||
XWD DVOUT+DVIN+DVLNG,20000 ;DEVMOD
|
||
0 ;DEVLOG
|
||
0 ;DEVBUF
|
||
XWD R,0 ;DEVIAD
|
||
0 ;DEVOAD
|
||
0 ;DEVSTS
|
||
XWD .TYDIS*.TYEST,0 ;DEVSTA
|
||
BLOCK 3 ;OTHER DDB LOCATIONS
|
||
0 ;(16) DEVESE
|
||
0 ;(17) DEVHCW
|
||
0 ;(20) DEVCPU
|
||
0 ;(21) DEVISN
|
||
0 ;(22) DEVDRV
|
||
0 ;(23) DEVJOB
|
||
BLOCK 1 ;MSGE DDB LOCATIONS
|
||
|
||
|
||
;DISPLAY DISPATCH TABLE
|
||
ENTRY VBCDSP
|
||
|
||
JRST ECOD2## ;SPECIAL ERROR STATUS
|
||
JRST REGSIZ## ;GET BUFFER SIZE
|
||
JRST DISINI ;INITIALIZATION
|
||
POPJ P, ;HUNG DEVICE - STOP JOB AND PRINT ERROR
|
||
VBCDSP:: JRST DISRLS ;RELEASE
|
||
JRST DISOFF ;CLOSE
|
||
JSP U,UUOERR## ;OUTPUT
|
||
JSP U,UUOERR## ;INPUT
|
||
JRST CPOPJ1## ;ENTER
|
||
JRST CPOPJ1## ;LOOKUP
|
||
JRST DISOUT ;DUMP OUTPUT
|
||
JRST DISIN ;DUMP INPUT (LITE PEN AND ERRORS)
|
||
POPJ P, ;SETO
|
||
POPJ P, ;SETI
|
||
POPJ P, ;GETF
|
||
JRST CPOPJ1## ;RENAME
|
||
POPJ P, ;CLOSE INPUT
|
||
POPJ P, ;DIRECTORY CLEAR
|
||
POPJ P, ;MTAPE
|
||
; CONSTANTS AND VARIABLES FOR THE NIH DISPLAY SERVICE ROUTINE
|
||
|
||
|
||
|
||
IFNDEF FTFBX,<FTFBX==0>
|
||
IFNDEF FTGFN,<FTGFN==0>
|
||
|
||
IFN FTGFN,<>
|
||
IFN FTFBX,<>
|
||
|
||
ENTRY VBCINT
|
||
|
||
|
||
DIS==130 ;DISPLAY DEVICE NUMBER
|
||
DISCKR==100 ;DISPLAY CLOCK REQUEST PENDING
|
||
DISTAR==400 ;CLOCK REQUEST SERVICED BEFORE PICTURE FINISHED
|
||
DISTPR==400000 ;DISPLAY STOPED, DISIOS NEGATIVE
|
||
DISWAT==2000 ;DISPLAY IS WAITING FOR CLOCK REQUEST TO BE SERVICED
|
||
|
||
|
||
DISAV: Z ;AC STORAGE AT INTERRUPT LEVEL
|
||
DISBEG: Z ;LH=PROTECT AND RELOCATE FOR THE DISPLAY
|
||
;RH=STARTING ADDRESS OF DISPLAY PROGRAM
|
||
DISCON: EXP VBCCHN## ;DISPLAY GO WORD FOR CONO INSTRUCTION
|
||
DISPRT: Z ;DISPLAY PROTECTION LIMIT
|
||
DISREL: Z ;RELATIVE DISPLAY RELOCATION AMOUNT
|
||
FLAG: Z ;RELATIVE ERROR FLAG ADDRESS
|
||
FLGADR: Z ;ABSOLUTE ERROR FLAG ADDRESS
|
||
PPRT: POINT 8,DISBEG,8 ;BYTE POINTER FOR PROTECTION
|
||
PREL: POINT 8,DISBEG,17 ;BYTE POINTER FOR RELOCATION
|
||
|
||
|
||
|
||
PENLOC: Z ;X,Y COORDINATE OF LAST PEN HIT
|
||
PENADR: Z ;PROGRAM ADDRESS WHERE HIT OCCURED
|
||
ERRLOC: Z ; X,Y COORDINATE OF FIRST ERROR REACHED
|
||
ERRADR: Z ; DISPLAY PROGRAM ADDRESS AND ERROR BITS OF ERROR
|
||
;DISINI IS CALLED DURING SYSTEM INITIALIZATION TIME OR AFTER
|
||
; A 140 RESTART. IT FIRST STOPS THE DISPLAY, PROTECTS AGAINST
|
||
; THE DISPLAY BEING RESTARTED AT CLOCK LEVEL, AND CLEARS
|
||
; THE LITE PEN AND ERROR LOCATIONS.
|
||
|
||
DISINI: CONO DIS,20000 ;LOCK DISPLAY OUT OF MEMORY
|
||
MOVEI T1,1000 ;LOOP UNTIL DISPLAY HAS STOPPED
|
||
SOJGE T1,. ;LOOP...
|
||
CONO DIS,40 ;CLEAR FLAGS
|
||
MOVEI T1,VBCCHN## ;SET UP DISCON
|
||
ADDI T1,20 ;RESUME=20+VBCCHN
|
||
HRRM T1,DISIN4 ;STORE IN DISINT
|
||
ADDI T1,120 ;DISCON=VBCCHN+140
|
||
MOVEM T1,DISCON ;STORE IT IN DISCON
|
||
JRST DISIN1
|
||
|
||
|
||
DISRLS:
|
||
;DISOFF IS CALLED WHENEVER A CLOSE OR A RELEASE IS DONE. THIS ROUTINE
|
||
; ALLOWS THE JOB TO BE SWAPPED OR SHUFFLED, AND CLEARS
|
||
; THE LITE PEN AND ERROR LOCATIONS.
|
||
|
||
DISOFF: MOVE J,.CPJOB## ;PICK UP CURRENT JOB #
|
||
PUSHJ P,DISSTP ;TURN DISPLAY OFF
|
||
IFN FTFBX,< SKIPN FBXCON## ;IS FUNCTION BOX ON?
|
||
JRST .+3 ;NO,CONTINUE
|
||
PUSHJ P,FBXSTP## ;YES,STOP THE BOX
|
||
JRST UUOERR## ;PRINT ERROR MESSAGE>
|
||
|
||
DISIN1: MOVSI T1,DISWAT+DISTAR ;IGNOR FURTHER TRAPS BY CLOCK LEVEL
|
||
ANDCAM T1,DISIOS ;CLEAR DISPLAY WAIT BIT IN DISIOS
|
||
DISIN2: SETOM PENLOC ;INITIALIZE LITE PEN AREA
|
||
SETZM PENADR
|
||
SETOM ERRLOC ;INITIALIZE ERROR AREA
|
||
SETZM ERRADR
|
||
POPJ P, ;RETURN
|
||
;DISSTP IS CALLED TO STOP THE DISPLAY. IT IS CALLED WITH A
|
||
; PUSHJ P,DISSTP
|
||
; RETURN HERE AFTER DISPLAY IS STOPPED
|
||
; THE DISPLAY IS STOPPED BY SETTING THE LOCK OUT BIT ON THE DISPLAY
|
||
; THE JOB THEN GOES INTO A WAIT TO INSURE THAT THE DISPLAY HAS
|
||
; COMPLETELY FINISHED
|
||
|
||
DISSTP: MOVSI S,DISTPR ;FLAG THAT DISPLAY IS BEING STOPPED
|
||
IORM S,DISIOS ;FLAG IT IN DISIOS
|
||
CONO DIS,20000 ;LOCK DISPLAY OUT OF MEMORY
|
||
MOVSI T1,CLKR ;DOES JOB HAVE CLK REQ IN
|
||
TDNE T1,JBTSTS##(J) ;I.E. IS IT ALREADY SLEEPING?
|
||
POPJ P, ;YES, DON'T SLEEP IT AGAIN
|
||
MOVEI T1,^D751 ;SET UP FOR SLEEP ROUTINE
|
||
JRST SLEEP## ;SLEEP 4 JIFFIES, RETURN TO CALLER
|
||
|
||
|
||
DISLOK: MOVSI T1,NSHF!NSWP ;CHECK IF JOB LOCKED
|
||
TDNE T1,JBTSTS##(J)
|
||
JRST CPOPJ1## ;YES IT IS
|
||
MOVEI S,IOIMPM ;NO, SET THE IMPROPER MODE BIT
|
||
IORB S,DISIOS
|
||
POPJ P, ;GIVE ERROR RETURN
|
||
;USER IS REQUIRED TO LOCK HIS JOB FIRST
|
||
;DISINT RECEIVES CONTROL WHENEVER THE DISPLAY INITIATES AN
|
||
; INTERRUPT ON THE P-10. IT INTERPRETS THE INTERRUPT AND
|
||
; PERFORMS THE NECESSARY ACTIONS.
|
||
; STOP CONDITION - CHECKS TO SEE IF THE DISPLAY SHOULD BE RESTARTED
|
||
; IF TWO JIFFIES HAVE ELAPSED SINCE THE START OF THE PICTURE
|
||
; THE DISPLAY WILL BE RESTARTED AT THE BEGINING I.E. THE
|
||
; ADDRESS GIVEN AT THE LAST OUTPUT COMMAND
|
||
; LITE PEN HIT - SAVE THE X AND Y COORDINATES AND THE ADDRESS COUNTER
|
||
; ERROR CONDITION - SAVE THE X AND Y COORDINATES AND ADDRESS COUNTER
|
||
; IF THE ERROR IS NOT AN ILLEGAL ADDRESS, CLEAR THE FLAGS
|
||
; AND RESUME, OTHERWISE JUST DISMISS THE INTERUPT LEAVING
|
||
; THE DISPLAY STOPPED.
|
||
|
||
|
||
PENINT::
|
||
VBCINT::
|
||
DISINT: CONSO DIS,47400 ;WAS THIS A DISPLAY INTERRUPT
|
||
JRST DISINT ;NO, MOVE ON TO NEXT ROUTINE IN CHAIN
|
||
CONI DIS,DISAV ;PICK UP ERROR BITS
|
||
EXCH T1,DISAV ;SAVE T1
|
||
TRNE T1,2000 ;LIGHT PEN HIT?
|
||
JRST LPHIT ;YES
|
||
CONO DIS,40 ;CLEAR FLAGS
|
||
TRNE T1,400 ;STOP FLAG?
|
||
JRST STPFLG ;YES
|
||
SKIPL ERRLOC ;HAS THERE BEEN AN ERROR SINCE THE LAST INPUT
|
||
JRST DISIN3 ;YES, DONT STORE THIS ERROR
|
||
DATAI DIS,ERRLOC ;GET THE X AND Y COORDINATES
|
||
DATAI 134,ERRADR ;GET THE ADDRESS COUNTER
|
||
SOS ERRADR ;MAKE IT POINT TO CORRECT LOCATION
|
||
HRLM T1,ERRADR ;STORE ERROR BITS
|
||
DISIN3: SKIPE FLAG ;WAS AN ERROR FLAG SPECIFIED
|
||
SETOM @FLGADR ;YES, SET ERROR FLAG IN USER AREA
|
||
SKIPL DISIOS ;DISPLAY BEING STOPPED?
|
||
TRNE T1,45000 ;ILLEGAL ADDRESSOR EDGE FLAG
|
||
JRST DISIN6 ;YES, DO NOT RESUME
|
||
DISIN4: CONO DIS,VBCCHN## ;RESUME
|
||
DISIN5: MOVE T1,DISAV ;RESTORE T1
|
||
JEN @VBCCHL## ;DISMISS THE INTERRUPT
|
||
|
||
DISIN6: TRNN T1,40000 ;ILLEGAL ADDR
|
||
JRST STPFLG ;NO, GO TREAT EDGE FLAG LIKE A STOP FLAG
|
||
CONO DIS,40 ;CLEAR FLAGS
|
||
JRST DISIN5 ;DO NOT RESUME
|
||
|
||
LPHIT: DATAI DIS,PENLOC ;PICK UP X AND Y COORDINATES
|
||
DATAI 134,PENADR ;GET ADDRESS COUNTER
|
||
SOS PENADR ;DECREMENT ADDRESS COUNTER
|
||
HRRZS PENADR ;MASK OUT PROTECTION AND RELOCATION BITS
|
||
JRST DISIN3 ;RESUME DISPLAY AND DISMISS INTERRUPT
|
||
;STPFLG IS CALLED WHENEVER A STOP CONDITION IS DETECTED.
|
||
; THE PURPOSE OF THIS ROUTINE IS TO RESTART THE DISPLAY IF THE CLOCK
|
||
; HAS RUN OUT OR TO MARK THAT THE DISPLAY NEEDS TO BE STARTED
|
||
; AS SOON AS THE THE CLOCK REQUEST DOES RUN OUT. IF THE MONITOR HAS
|
||
; REQUESTED THAT THIS JOB BE SHUFFLED THIS ROUTINE WILL TURN OFF
|
||
; THE NSHF BIT AND GO BACK TO SLEEP, ALLOWING THE JOB TO BE MOVED.
|
||
|
||
|
||
STPFLG: EXCH T1,DISAV ;RESTORE T1
|
||
JSR VBCSAV## ;SAVE THE AC'S AND SET UP P
|
||
MOVSI S,DISWAT ;INDICATE THAT THE DISPLAY IS WAITING
|
||
IORB S,DISIOS ;PICK UP DISIOS
|
||
TLNE S,DISTPR ;IS DISPLAY BEING STOPPED?
|
||
JRST VBCRET## ;YES, DO NOT RESTART IT
|
||
TLNE S,DISTAR ;HAS CLOCK TRIGGERED YET
|
||
PUSHJ P,DISTR1 ;YES, RESTART THE DISPLAY
|
||
JRST VBCRET## ;RESTORE AC'S AND DISMISS THE INTERRUPT
|
||
|
||
;DISIN IS CALLED ON AN INPUT UUO. IT RETURNS TO THE USER
|
||
; THE COORDINATES AND ADDRESS OF THE LAST LIGHT PEN HIT AND
|
||
; THE ADDRESS, COORDINATES AND ERROR BITS OF THE FIRST ERROR
|
||
; ENCOUNTERED SINCE THE LAST INPUT COMMAND.
|
||
; THE USER COMMAND IS AS FOLLOWS:
|
||
; INPUT D,ADDRESS
|
||
; THE SERVICE ROUTINE RETURNS THE FOLLOWING INFORMATION IN ADDRESS
|
||
; ADDRESS/ XWD X,Y OF LAST LITE PEN HIT
|
||
; ADDRESS+1/ ADDRESS COUNTER
|
||
; ADDRESS+2/ XWD X,Y OF FIRST ERROR SINCE LAST INPUT
|
||
; ADDRESS+3/ XWD ERROR BITS,ADDRESS COUNTER
|
||
|
||
|
||
DISIN: SOS M ;PUTWD1 WILL INCREMENT M
|
||
MOVE T2,[XWD -4,PENLOC]
|
||
MOVE T1,(T2) ;GET ADR OF NEXT DATA WORD TO BE STORED
|
||
PUSHJ P,PUTWD1## ;STORE WORD IN USER'S AREA
|
||
AOBJN T2,.-2 ;LOOP FOR ALL 4 ARGUMENTS
|
||
JRST DISIN2 ;INITIALIZE THE INPUT AREA AND RETURN
|
||
|
||
;DISOUT IS CALLED WHEN AN OUTPUT COMMAND IS EXECUTED. IT SETS
|
||
; UP THE PROTECTION AND RELOCATION REGISTER AND STARTS THE
|
||
; DISPLAY AT THE SPECIFIED ADDRESS
|
||
; IT ALSO SETS UP THE ADDRESS OF THE ERROR FLAG IN THE USER AREA
|
||
; THE FORMAT OF THE CALL IS THE FOLLOWING:
|
||
; OUTPUT D,ADDRESS
|
||
; WHERE,
|
||
; ADDRESS/ XWD FLAG ADDRESS, DISPLAY STARTING ADDRESS
|
||
; ADDRESS+1/ XWD PROTECTION, RELOCATION (RELATIVE)
|
||
|
||
|
||
DISOUT: MOVE J,.CPJOB## ;PICK UP JOB NUMBER
|
||
PUSHJ P,DISSTP ;STOP DISPLAY
|
||
PUSHJ P,GETWDU## ;GET FIRST ARGUMENT
|
||
HRRM T1,DISBEG ;STORE STARTING ADDRESS
|
||
HLRZS T1 ;GET FLAG ADDRESS
|
||
SKIPE T1 ;IF ZERO THEN NO FLAG ADDRESS
|
||
PUSHJ P,UADRCK## ;CHECK THE FLAG ADDRESS
|
||
MOVEM T1,FLGADR ;STORE ADDRESS OF FLAG
|
||
MOVEM T1,FLAG ;SAVE RELATIVE ADDRESS OF FLAG
|
||
PUSHJ P,GETWD1## ;GET SECOND ARGUMENT
|
||
SKIPN T1 ;ZERO?
|
||
DISOU1: HLLZ T1,R ;SUBSTITUTE JOBS PROTECTION AND RELOCATION
|
||
HLRZM T1,DISPRT ;SAVE PROTECTION
|
||
HRRZM T1,DISREL ;SAVE RELOCATION
|
||
HLRZ T1,R ;GET JOBS PROTECTION
|
||
SUB T1,DISREL ;SUBTRACT RELATIVE RELOCATION
|
||
SUB T1,DISPRT ;SUBTRACT PROTECTION
|
||
JUMPL T1,DISOU1 ;IF NOT, USE JOB'S PROTECTION AND RELOCATION
|
||
HRRZ T1,R ;PICK UP JOB'S RELOCATION
|
||
ADDM T1,FLGADR ;RELOCATE FLAG ADDRESS
|
||
ADD T1,DISREL ;DISREL HAS RELATIVE RELOCATION OF JOB
|
||
ASH T1,-12 ;SHIFT OUT LOW ORDER 10 BITS
|
||
DPB T1,PREL ;DEPOSIT RELOCATION BYTE
|
||
MOVE T1,DISPRT ;GET PROTECTION
|
||
ASH T1,-12 ;SHIFT OUT LOW ORDER 10 BITS
|
||
DPB T1,PPRT ;DEPOSIT PROTECTION BYTE
|
||
|
||
PUSHJ P,DISLOK ;GO SEE IF USER IS LOCKED IN CORE
|
||
JRST DISRLS ;NOT LOCKED, GO RELEASE DEVICE
|
||
DISTR1: MOVSI S,DISTAR+DISWAT+DISTPR ;INDICATE FRESH PICTURE
|
||
ANDCAM S,DISIOS ;IN DISIOS WORD
|
||
CONO DIS,20140
|
||
CONO DIS,20040
|
||
DATAO 134,DISBEG ;LOAD PROT, RELOC, AND STARTING ADDRESS
|
||
CONO DIS,@DISCON ;START THE DISPLAY
|
||
;CLKREQ IS CALLED TO PUT A TWO JIFFY WAIT REQUEST IN THE
|
||
; CLOCK QUEUE. IF THERE IS ALREADY ONE THERE IT JUST RETURNS
|
||
|
||
|
||
CLKREQ:
|
||
SYSPIF
|
||
CLKRQ0: MOVSI S,DISCKR ;CHECK FOR PREVIOUS REQUEST
|
||
MOVE T1,CLOKRT ;PICK UP CLOCK RQUEST WORD
|
||
TDOE S,DISIOS ;ENTER ONLY A SINGLE CLOCK REQUEST
|
||
JRST CLKRQ1
|
||
IDPB T1,CLOCK## ;PLACE REQUEST IN QUEUE
|
||
IBP CLOCK## ;2 WORDS/ENTRY
|
||
SETOM CLKNEW## ;INDICATE NEW ENTRY
|
||
CLKRQ1: IORM S,DISIOS ;PROTECT AGAINST DUPLICATE REQUEST
|
||
JRST ONPOPJ## ;RETURN
|
||
|
||
CLOKRT: XWD CLOK,1 ;CONTROL FOR CLOCK QUEUE, 1 JIFFY
|
||
|
||
|
||
;CLOK IS ENTERED AT CLOCK LEVEL IN RESPONSE TO A CLOCK REQUEST IN THE
|
||
; CLOCK QUEUE. A BIT IS SET TO INDICATE THAT THE CLOCK PERIOD HAS
|
||
; ELAPSED. IF THE DISPLAY IS STILL IN PROGRESS CLOK DOES NOTHING
|
||
; OTHERWISE IT RESTARTS THE JOB
|
||
|
||
|
||
|
||
|
||
CLOK: MOVSI S,DISCKR ;INDICATE CLOK REQ SERVICED
|
||
ANDCAB S,DISIOS ;AND SET UP S
|
||
TLNE S,DISTPR ;TRYING TO STOP DIS (RELEASE?)
|
||
POPJ P, ;YES,EXIT
|
||
MOVSI S,DISTAR ;MARK THAT DISPLAY IS READY
|
||
SYSPIF ;TURN OFF PI SYSTEM FOR CHECK
|
||
IORM S,DISIOS ; TO BE RESTARTED
|
||
MOVSI S,DISWAT ;IS DISPLAY WAITING ALREADY
|
||
TDNN S,DISIOS ; TO BE RESTARTED?
|
||
JRST CLKRQ0 ;NO, JUST PUT IN A CLOCK REQUEST
|
||
SYSPIN ;TURN INTERUPTS BACK ON
|
||
JRST DISTR1 ;YES, GO RESTART IT
|
||
END
|
||
|