Trailing-Edge
-
PDP-10 Archives
-
bb-bt99e-bb
-
d8kint.c10
There is 1 other file named d8kint.c10 in the archive. Click here to see a list.
REP 2/1 ;10C1
SUBTTL W. E. MATSON/TARL 25 JAN 84
WIT
SUBTTL W. E. MATSON/TARL/TL 25 JAN 84
INS 7/1 ;10C2
.DIRECT FLBLST
REP 53/1 ;10C3
WIT
DEL 1/5 ;10C4
DEL 1/11 ;10C5
REP 55/11 ;10C6
WIT
DEL 1/12 ;10C7
DEL 1/13 ;10C8
REP 50/14 ;10C9
WIT
DEL 1/20 ;10C10
DEL 1/21 ;10C11
REP 14/24 ;10C12
TITLE KDPINT - SERVICE FOR KMC-11/DUP-11 V001
SUBTTL W. E. MATSON 4 DEC 80
WIT
TITLE KDPINT - SERVICE FOR KMC-11/DUP-11 V002
SUBTTL W. E. MATSON/TL 21-OCT-84
INS 20/24 ;10C13
.DIRECT FLBLST
REP 40/24 ;10C14
WIT
IFNDEF FTUBLT,<FTUBLT==:0> ;DEFAULT UBABLT OFF FOR 7.02
IFN FTUBLT,<
OPDEF BLTBU [716B8] ;FAST BYTE TO UNIBUS
OPDEF BLTUB [717B8] ;FAST UNIBUS TO BYTE
>
REP 12/25 ;10C15
WIT
;COMPUTE CODE FOR "TIMER STOPPED" BASED ON FIELD SIZE
KD%MXT==-1_-^D<36-<<KD%TIM&^O<007700,,0>>_-24>>
DEL 1/27 ;10C16
DEL 1/28 ;10C17
DEL 1/29 ;10C18
REP 27/30 ;10C19
WIT
INS 31/30 ;10C20
IFN FTUBLT,<
APRID T1 ;SEE WHAT UCODE WE HAVE
TLNE T1,40K ;SUPPORT FAST BYTE SWAP?
JRST KDPOCL ;YES, CONTINUE
MOVE U,OPRLDB## ;NO, COMPLAIN
PUSHJ P,INLMES##
ASCIZ /?Wrong processor Ucode, deleting KMC
/
JRST KDPNXP ;DELETE IT AND EXIT
>
INS 39/30 ;10C21
PUSH P,KDLUSR(F) ;PRESERVE THE MONGEN LINE USER
INS 43/30 ;10C22
POP P,KDLUSR(F) ;RESTORE LINE USER SO WE AUTO START
INS 14/34 ;10C23
CAIN T2,KD%MXT ;STOPPED?
JRST KDPSE2 ;YES, IGNORE IT
REP 18/34 ;10C24
SETZ T2, ;IF IT'S OVERFLOWED, GET A ZERO
DPB T2,KDLTIM## ; AND RESET THE TIMER
MOVE T2,[EXP KDSSTR,KDSSTK,KDSREP](T1) ;GET "REQUEST BIT" TO SET.
IORM T2,KDLSTS(F) ;REQUEST THE APPROIATE CONTROL MESSAGE
WIT
SETO T2, ;IF IT'S OVERFLOWED, STOP IT
DPB T2,KDLTIM## ; (NEXT EVENT WILL RESTART IT IF NECESSARY)
MOVE T2,[EXP KDSSTR,KDSSTK,KDSREP](T1) ;GET "REQUEST BIT" TO SET.
IORM T2,KDLSTS(F) ;REQUEST THE APROPRIATE CONTROL MESSAGE
DEL 1/35 ;10C25
DEL 1/37 ;10C26
DEL 1/38 ;10C27
DEL 1/39 ;10C28
DEL 1/40 ;10C29
DEL 1/41 ;10C30
DEL 1/42 ;10C31
DEL 1/43 ;10C32
DEL 1/44 ;10C33
REP 32/44 ;10C34
MOVSI T1,(KDSSTR) ;GET THE "NEED TO SEND START" BIT
IORM T1,KDLSTS(F) ; AND SET IT SO WE SEND ONE SOON
WIT
MOVSI T1,(XMTBTS) ;MAKE SURE WE LEAVE NO CONTROL MESSAGES
ANDCAM T1,KDLSTS(F) ;PENDING FROM LAST TIME
MOVSI T1,(KDSSTR) ;GET THE "NEED TO SEND START" BIT
IORM T1,KDLSTS(F) ; AND SET IT SO WE SEND ONE SOON
PUSHJ P,CLCTRS ;MAKE SURE WE START CORRECTLY
REP 28/45 ;10C35
MOVE T3,KDPKDL(W) ;POINT TO KDL TABLE
SOJG T2,[CAME F,(T3) ;DO WE HAVE A MATCH
JRST KDLSD1 ;YES, THAT MEANS WE FOUND KDP NUMBER
ADDI T3,1 ;NO, POINT TO NEXT BLOCK
JRST .] ; AND CHECK IT OUT
PUSHJ P,NTDSTP ;OOPS, SEVERE PROBLEM
KDLSD1: SUB T3,KDPKDL(W) ;FIND THE KDP NUMBER
WIT
MOVEI T3,KDPKDL(W) ;POINT TO KDL TABLE
SOJGE T2,[CAMN F,(T3) ;DO WE HAVE A MATCH
JRST KDLSD1 ;YES, THAT MEANS WE FOUND KDP NUMBER
AOJA T3,.] ;NO, ADVANCE TO NEXT AND CHECK IT OUT
PUSHJ P,NTDSTP ;OOPS, SEVERE PROBLEM
KDLSD1: SUBI T3,KDPKDL(W) ;FIND THE KDP NUMBER
REP 52/46 ;10C36
WIT
DEL 1/47 ;10C37
INS 14/48 ;10C38
MOVSI T1,(XMTBTS) ;MAKE SURE WE LEAVE NO CONTROL MESSAGES
ANDCAM T1,KDLSTS(F) ;PENDING FROM LAST TIME
DEL 1/51 ;10C39
DEL 1/52 ;10C40
DEL 1/53 ;10C41
DEL 1/55 ;10C42
DEL 1/56 ;10C43
DEL 1/57 ;10C44
DEL 1/58 ;10C45
DEL 1/59 ;10C46
DEL 1/60 ;10C47
DEL 1/61 ;10C48
DEL 1/62 ;10C49
REP 9/62 ;10C50
RCVMSG: ADDI T4,4 ;MAKE T4 POINT TO BUFFER 4 (10 WORDS AFTER BDL)
LDB T1,BYTABL ;GET FIRST CHAR FROM MESSAGE
WIT
RCVMSG: ADDI T4,3 ;POINT TO BUFFER 3 PDP-10 WORDS AFTER BDL
HRLI T4,2 ;DDCMP HEADER STARTS IN RH SO DATA IS ON A WORD
LDB T1,BYTABL+2 ;GET FIRST CHAR FROM MESSAGE
DEL 1/63 ;10C51
REP 18/64 ;10C52
LDB T3,BYTABL+1 ;GET THE LOW 8 BITS OF THE LENGTH
LDB T2,BYTABL+2 ;GET THE HIGH 6 BITS
WIT
LDB T3,BYTABL+3 ;GET THE LOW 8 BITS OF THE LENGTH
LDB T2,BYTABL+4 ;GET THE HIGH 6 BITS
INS 30/64 ;10C53
;(HEADER IS 6 BYTES, WE WANT PRE-DEC CBP)
REP 39/64 ;10C54
RCVMA2: SOJGE T3,[PUSHJ P,ILDCB ;LOOP GETTING AND
IDPB S,T2 ; STORING THE DATA
JRST .] ;UNTIL THERE IS NO MORE.
WIT
RCVMA2:
IFE FTUBLT,<
SOJGE T3,[PUSHJ P,ILDCB ;LOOP GETTING AND
IDPB S,T2 ; STORING THE DATA
JRST .] ;UNTIL THERE IS NO MORE.
>
IFN FTUBLT,<
IBP T2 ;POINT TO WORD CONTAINING FIRST BYTE
MOVEI T2,@T2 ;RESOLVE ANY INDEXING, ETC
HRLI T2,1(T4) ;POINT TO FIRST DATA WORD OF MESSAGE
SOS T3 ;ROUND BYTE COUNT AND CONVERT TO WDS (+3 -4)
LSH T3,-2 ;BYTES - WORDS
ADDI T3,(T2) ;END ADDRESS
BLTUB T2,(T3) ;MOVE MESSAGE TRANSLATED. (MABYE FEW EXTRA)
>
DEL 1/65 ;10C55
REP 18/65 ;10C56
LDB T1,BYTABL+1 ;GET THE SECOND BYTE (CONTROL TYPE)
WIT
LDB T1,BYTABL+3 ;GET THE SECOND BYTE (CONTROL TYPE)
DEL 1/66 ;10C57
REP 7/66 ;10C58
RCVNAK: LDB T1,BYTABL+2 ;GET THE NAK REASON
WIT
RCVNAK: LDB T1,BYTABL+4 ;GET THE NAK REASON
REP 15/66 ;10C59
PJRST RCVBUF ;DON'T PROCSS ANY NAK'S
PUSHJ P,CHKACK ;PROCESS THE ACK FIELD
WIT
PJRST RCVBUF ;DON'T PROCESS ANY NAK'S
PUSHJ P,CHKACK ;PROCESS THE ACK FIELD
PUSHJ P,STPTMR ;STOP THE TIMER
REP 39/66 ;10C60
RCVREP: LDB T1,KDLRMN## ;GET THE LAST RECIEVED MESSAGE NUMBER
LDB T2,BYTABL+4 ;GET THE "N" FIELD OF THE REP MESSAGE
MOVSI S,(KDSACK) ;ASSUME RANDOM REP (RESPOND WITH ACK)
CAIE T1,(T2) ;COMPARE MESSAGE NUMBERS. SKIP IF ALL OK
JRST [MOVEI T1,RSNREP ;IF WE MISSED SOME, GET CODE "REP RESPONSE"
DPB T1,KDLXNK## ;STORE IT IN THE "XMIT NAK REASON" FIELD
MOVSI S,(KDSNAK) ;GET THE "SEND NAK" BIT
JRST .+1] ;CONTINUE WITH MAIN STREAM CODE
IORB S,KDLSTS(F) ;SET THE NEED TO SEND "?" MESSAGE FLAG
PUSHJ P,XMTBUF ;KICK THE TRANSMITTER
PJRST RCVBUF ;QUEUE ANOTHER RECEIVE BUFFER AND EXIT
WIT
RCVREP: LDB T1,KDLSTA## ;GET LINE STATE
CAIE T1,KD%RUN ;MUST IGNORE UNLESS RUNNING
PJRST RCVBUF ;IGNORE, REQUEUE RECEIVE BUFFER
LDB T1,KDLRMN## ;GET THE LAST RECIEVED MESSAGE NUMBER
LDB T2,BYTABL+6 ;GET THE "N" FIELD OF THE REP MESSAGE
CAIE T1,(T2) ;COMPARE MESSAGE NUMBERS. SKIP IF ALL OK
JRST [MOVEI T1,RSNREP ;IF WE MISSED SOME, GET CODE "REP RESPONSE"
PJRST RCVXNK] ;AND GO SEND A NAK
MOVSI S,(KDSACK) ;ASSUME RANDOM REP (RESPOND WITH ACK)
IORM S,KDLSTS(F) ;SET THE NEED TO SEND "?" MESSAGE FLAG
MOVSI S,(KDSNAK) ;CLEAR ANY PENDING NAK
ANDCAM S,KDLSTS(F) ;BECAUSE IT WOULD BE POINTLESS NOW
PJRST RCVNK2
REP 19/67 ;10C61
JRST RCVST3 ;NOW GO DIRECTLY TO "SENDING STACKS" STATE
WIT
;DDCMP SAYS WE SHOULD JUST HALT. BUT WE WANT TO TRY AND KEEP THE
;LINE UP. SO WE ENTER SENDING STARTS STATE. WE CAN NOT SKIP TO
;SENDING STACKS, AS ANF PDP-11S GET VERY CONFUSED.
MOVEI T1,KD%STR ;SEND STARTS
DPB T1,KDLSTA## ;STARTING NOW
MOVSI T1,(XMTBTS) ;MAKE SURE PAST QUEUED REQUESTS ARE CANCELED
ANDCAM T1,KDLSTS(F) ;AS WE'D ONLY GET CONFUSED LATER
MOVSI T1,(KDSSTR) ;SEND A START
IORM T1,KDLSTS(F) ;WHEN WE GET A CHANGE
PJRST RCVNK2 ;CRANK UP THE KMC
REP 23/67 ;10C62
PJRST RCVBUF ;THEN DON'T PROCESS THE START
RCVST3: MOVEI T1,KD%STK ;GET THE "SENDING STACK'S STATE"
WIT
CAIN T1,KD%STK ; OR SENDING STACKS
CAIA ;OK
PJRST RCVBUF ;THEN DON'T PROCESS THE START
MOVEI T1,KD%STK ;GET THE "SENDING STACK'S STATE"
REP 30/67 ;10C63
PUSHJ P,XMTBUF ;TRY TO SEND THE MESSAGE
PJRST RCVBUF ; AND QUEUE ANOTHER RECEIVE REQUEST
RCVSTK: CAIE T3,KD%STR ;IF WE AREN'T SENDING STARTS, THEN
PJRST RCVBUF ; IGNORE ALL STACKS
WIT
PJRST RCVNK2 ;CRANK US UP
RCVSTK: CAIE T3,KD%RUN ;IF NOT RUNNING
JRST RCVSK1 ;PROCEED
MOVSI T1,(KDSACK) ;RUNNING, SEND AN ACK
IORM T1,KDLSTS(F) ;TO KEEP OTHER END HAPPY
MOVSI T1,(KDSNAK) ;DON'T ALLOW NAK
ANDCAM T1,KDLSTS(F) ;WHICH WOULD KEEP THE ACK FROM GOING OUT
JRST RCVNK2 ;CRANK THINGS UP
RCVSK1: CAIE T3,KD%STR ;IF WE AREN'T SENDING STARTS, THEN
CAIN T3,KD%STK ; OK IF SENDING STACKS TOO
CAIA
PJRST RCVBUF ; IGNORE ALL STACKS
PUSHJ P,STPTMR ;STOP THE TIMER
REP 42/67 ;10C64
PUSHJ P,KDLPUP ;TELL NETSER THAT THIS KDL IS ONLINE
PUSHJ P,XMTBUF ;TRY TO SEND THE ACK
PJRST RCVBUF ;REQUEUE THIS RECEIVE BUFFER
WIT
PUSHJ P,KDLPUP ;TELL NETSER THAT THIS KDL IS ONLINE
JRST RCVNK2 ;CRANK THINGS UP
REP 22/68 ;10C65
LDB T1,BYTABL+4 ;GET THIS MESSAGES NUMBER
WIT
LDB T1,BYTABL+6 ;GET THIS MESSAGES NUMBER
REP 29/68 ;10C66
LDB T3,BYTABL+1 ;FIRST GET THE LOW 8 BITS
LDB T1,BYTABL+2 ; AND THEN THE UPPER 6
WIT
LDB T3,BYTABL+3 ;FIRST GET THE LOW 8 BITS
LDB T1,BYTABL+4 ; AND THEN THE UPPER 6
INS 8/70 ;10C67
;(DDCMP HEADER IS 6 BYTES, WANT PRE DEC CBP)
IFE FTUBLT,<
REP 12/70 ;10C68
HRRZ S,(T4) ;GET BYTES #3 AND #2
WIT
MOVS S,1(T4) ;GET BYTES #1 AND #0
IDPB S,T2 ;STORE #0
LSH S,-^D8 ;SHIFT #1 DOWN
IDPB S,T2 ; AND STORE THAT
LSH S,-^D<8+2> ;GET BYTES #3 AND #2
DEL 16/70 ;10C69
HLRZ S,1(T4) ;GET BYTES #1 AND #0
IDPB S,T2 ;STORE #0
LSH S,-^D8 ;SHIFT #1 DOWN
IDPB S,T2 ; AND STORE THAT
INS 28/70 ;10C70
>
IFN FTUBLT,<
IBP T2 ;POINT TO WORD CONTAINING FIRST BYTE
MOVEI T2,@T2 ;RESOLVE ANY INDEXING, ETC
HRLI T2,1(T4) ;POINT TO FIRST DATA WORD OF MESSAGE
SOS T3 ;ROUND BYTE COUNT AND CONVERT TO WDS (+3 -4)
LSH T3,-2 ;BYTES - WORDS
ADDI T3,(T2) ;END ADDRESS
BLTUB T2,(T3) ;MOVE MESSAGE TRANSLATED. (MAYBE FEW EXTRA)
>
REP 33/70 ;10C71
PJRST RCVBUF ;FINALLY REQUEUE THIS KDL BUFFER
; PUSHJ P,RCVBUF ;TRY TO QUEUE ANOTHER RECEIVE BUFFER
; MOVSI T1,(KDSACK) ;NOW FOR THE SAKE OF THE DMC-11,
; IORM T1,KDLSTS(F) ; TRY TO SEND AN ACK IMMEDIATLY
; PJRST XMTBUF ; SO IT CAN FREE IT'S BUFFERS
WIT
PUSHJ P,RCVBUF ;TRY TO QUEUE ANOTHER RECEIVE BUFFER
MOVSI T1,(KDSNAK) ;NO POINT ANY MORE
ANDCAM T1,KDLSTS(F) ;...
MOVSI T1,(KDSACK) ;SEND AN ACK WHEN XMITTER IS IDLE
IORM T1,KDLSTS(F) ;TO ALLOW REMOTE TO FREEE BUFFERS & FILL PIPE
PJRST XMTBUF ;ANY DATA MESSAGE 'IMPLIED ACK' WILL CANCEL
REP 1/72 ;10C72
;FROM ABOVE. HERE TO CONSTRUCT THE BDL AND QUEUE THE BUFFER-IN TRANSACTION
MOVEI T1,4(P4) ;GET START OF DATA MESSAGE AREA
SUBI T1,(F) ;CONVERT TO OFFSET ON PAGE
LSH T1,2 ;CONVERT FROM WORDS TO BYTES
ADD T1,KDLADR(F) ;CONVERT PAGE OFFSET TO UNIBUS ADDR
MOVEI T2,-20(T1) ;SAVE ADDR OF BDL FOR LATER
WIT
;FROM ABOVE. HERE TO CONSTRUCT THE BDL AND QUEUE THE BUFFER-IN TRANSACTION
MOVEI T1,3(P4) ;GET START OF DATA MESSAGE AREA
SUBI T1,(F) ;CONVERT TO OFFSET ON PAGE
LSH T1,2 ;CONVERT FROM WORDS TO BYTES
ADDI T1,2 ;STARTS AT 3+1/2 WDS SO USER DATA IS WORD
;ALIGNED & CAN UBABLT
ADD T1,KDLADR(F) ;CONVERT PAGE OFFSET TO UNIBUS ADDR
MOVEI T2,-16(T1) ;SAVE ADDR OF BDL FOR LATER
DEL 1/73 ;10C73
REP 1/74 ;10C74
XMTSTR: MOVEI T1,%START ;GET THE START MESSAGE TYPE
MOVSI T2,(KDSSTR) ;GET THE "BIT TO CLEAR"
WIT
XMTSTR: MOVEI T1,%START ;GET THE START MESSAGE TYPE
MOVSI T2,(KDSSTR) ;GET THE "BIT TO CLEAR"
DPB T2,KDLTIM## ;START THE TIMER
INS 9/74 ;10C75
DPB T2,KDLTIM## ;START THE TIMER
INS 14/74 ;10C76
DPB T2,KDLTIM## ;START THE TIMER
REP 19/74 ;10C77
XMTNAK: MOVEI T1,%NAK ;GET THE NAK MESSAGE TYPE
WIT
XMTNAK: MOVSI T1,(KDSACK) ;IF ACK QUEUE'D TOO
TDNE T1,KDLSTS(F) ;I'M VERY CONFUSED
PUSHJ P,NTDSTP## ;SO I'D BETTER QUIT
MOVEI T1,%NAK ;GET THE NAK MESSAGE TYPE
DEL 1/76 ;10C78
DEL 1/77 ;10C79
REP 40/80 ;10C80
WIT
REP 52/80 ;10C81
BLT T1,(T2) ;COPY THE DATA
; JRST XMTXIT ;GO SWAP THE BYTES AND SEND THE MESSAGE
WIT
IFE FTUBLT,<
BLT T1,(T2) ;COPY THE DATA
; JRST XMTXIT ;GO SWAP THE BYTES AND SEND THE MESSAGE
>
IFN FTUBLT,<
BLTBU T1,(T2) ;COPY AND SWAP IN ONE SWELL FOOP
JRST XMTDON ;DONE
>
REP 5/81 ;10C82
XMTXIT: MOVNI T1,3(T3) ;GET MINUS THE NUMBER OF BYTES (ROUND UP)
WIT
;
;DECNET MESSAGES CAN COME AS CHAINED MSDS OF ODD BYTE LENGTHS, AND
;ANF MESSAGES CAN HAVE CONVERSION. SO UBABLT HAS TO WAIT TILL NOW,
;WHEN THE DATA IS IN A FINAL FORM, AND THE START IS WORD-ALIGNED.
XMTXIT:
IFE FTUBLT,<
MOVNI T1,3(T3) ;GET MINUS THE NUMBER OF BYTES (ROUND UP)
REP 21/81 ;10C83
;HERE TO WRITE THE BUFFER DESCRIPTOR HEADER
LDB T1,KDLSTA## ;GET STATE (MAINT OR NOT) WE USE IT A LOT
WIT
>
IFN FTUBLT,<
MOVEI T1,3(T3) ;GET THE NUMBER OF BYTES, ROUND UP
ASH T1,-2 ;CONVERT TO A -10 WORD COUNT
ADDI T1,6(P4) ;SKIP THE BUFFER DESCRIPTIOR, PT TO USER DATA
MOVEI T4,6(P4) ;T1 HAS THE END ADDR +1, T4 THE START
HRLI T4,0(T4) ;THIS BLT GOES IN PLACE (SET SOURCE)
BLTBU T4,-1(T1) ;DO THE SWAP
>
;HERE TO WRITE THE BUFFER DESCRIPTOR HEADER
XMTDON: LDB T1,KDLSTA## ;GET STATE (MAINT OR NOT) WE USE IT A LOT
INS 34/82 ;10C84
MOVSI S,(KDSACK) ;NO NEED TO ACK
CAIE T1,KD%MAI ;AT LEAST IF A DATA MESSAGE
ANDCAM S,KDLSTS(F) ;BECAUSE THE RESP IS JUST AS GOOD
;NOTE: RH OF S IS STILL ZERO
INS 41/82 ;10C85
;TIMER
SETZ S, ;PREPARE TO START TIMER
LDB T1,KDLTIM## ;IF IT'S RUNNING
CAIN T1,KD%MXT ;WE DON'T CHANGE IT
DPB S,KDLTIM## ;IT'S NOT, START IT
;IT'S OK NOT TO CHECK MAINT - TIMER IS IGNORED
DEL 1/83 ;10C86
DEL 1/86 ;10C87
DEL 1/89 ;10C88
REP 23/89 ;10C89
JRST .+1] ;RETURN TO MAIN LINE CODE
WIT
JRST CHKAC1] ;RETURN TO MAIN LINE CODE
DEL 1/90 ;10C90
REP 8/90 ;10C91
CHKAC1: LDB T1,BYTABL+3 ;GET THE ACK FIELD OF THE MESSAGE
WIT
CHKAC1: LDB T1,BYTABL+5 ;GET THE ACK FIELD OF THE MESSAGE
DEL 1/91 ;10C92
REP 27/91 ;10C93
DPB T1,KDLTIM## ;RESTART REP TIMER
POPJ P,
WIT
PUSHJ P,STPTMR ;STOP THE TIMER, THERE'S NOTHING OUTSTANDING
POPJ P,
DEL 1/93 ;10C94
DEL 1/94 ;10C95
DEL 1/95 ;10C96
DEL 1/96 ;10C97
INS 31/96 ;10C98
MOVSI T1,(KDSACK) ;NO POINT IN ACKING...
ANDCAM T1,KDLSTS(F) ; WHEN WE'RE NAKING
DEL 1/98 ;10C99
DEL 1/99 ;10C100
DEL 1/100 ;10C101
DEL 1/101 ;10C102
DEL 1/103 ;10C103
INS 33/105 ;10C104
INS 52/105 ;10C105
;STPTMR ROUTINE TO STOP THE DDCMP TIMER
STPTMR: SETO T1, ;STOP TIMER
HRRZ T2,KDLUSR(F) ;CHECK FOR ANF CROCK
CAIN T2,DD.ANF ;BECAUSE IT WANTS TO
SETZ T1, ;IDLE REPS, SO WE JUST RESTART TIMER
DPB T1,KDLTIM## ;WHATEVER
POPJ P,
DEL 1/106 ;10C106
DEL 1/107 ;10C107
REP 24/107 ;10C108
; POINT 8,1(T4),35 ;SEVENTH BYTE (BCC. NOT USED)
; POINT 8,1(T4),27 ;EIGHTH BYTE (BCC. NOT USED)
WIT
POINT 8,1(T4),35 ;SEVENTH BYTE
POINT 8,1(T4),27 ;EIGHTH BYTE
SUM 144375