File IT.TK

Directory of image this file is from
This file as a plain text file

/******* MULTI8 INITIALIZE TIME TASK *******
/LAST EDIT: 22-AUGUST-75, JV
/CREATED: 15-MAY-75, JV
/FUNCTION: SET (IF PRESENT) THE TIME WORDS IN THE MONITOR
/	AND (IF REQUESTED) THE DATE, FOR INSTANCE ON THE
/	FIRST DAY OF A MONTH.
/CONCEPT:  THE INTERRUPT ENABLE IS SET OFF DURING THE ACTUAL
/	STORE OF TIME AND DATE (15MMSEC), SO NO CLOCK-INTER-
/	RUPT SERVICES CAN INTERFERE , WHICH COULD HAVE GIVEN
/	REMARKABLE EFFECTS.
/USE:	THE TASK IS CALLED BY A "^A",">R IT" WITH THE NAME
/	OF THE CALLING KEYBOARD IN THE AC, OR AT POWERUP
/	WITH ZERO AC, IN WHICH CASE K1 IS ASSUMED.
/	IT THEN TYPES "T=", AND EXPECTS THE FOLLOWING
/	RESPONSE:"HH:MM(CR)", WHERE HH IS THE HOUR (0-23)
/	AND MM THE MINUTES (0-59).IF /D IS TYPED IN AFTER
/	MM, THE TASK PRINTS "D=", AND THE DATE IN OS8 FOR-
/	MAT MUST BE TYPED IN.
/	IF AN ERROR IS FOUND,"?" IS PRINTED, AND THE TASK
/	IS SWAPPED OUT.
/TASK CIRCULATION: FOR INPUT IT USES "IN", WHICH WILL TAKE
/	CARE OF RUBOUTS, ETC. OUTPUT GOES THRUE "T1", OR
/	ANY TELETYPE , CALLING IT.

LENGTH=11	/LENGTH OF INPUT BUFFER (JUST LONG ENOUGH)

/USE OF ZTEM REGISTERS:
IT0=ZTEM1
IT1=ZTEM2
ITEM=ZTEM3

ITEM1, "I^100+"T&3777 /NAME: "IT" ITEM2, 200 PITIN, ITIN 0 SZA DCA ITIN IFDEF DAYTIM < JMS ITREAD /READ 1 LINE, USING "IN" (LIN) TAD (-30 /-24 HOURS SMA JMP ITERR /NOT MORE THEN 24 HOURS DCA ITEM1 /SAVE TEMP. JMS ITINP /READ MINUTES TAD (-74 /-60 MINUTES SMA JMP ITERR /NOT MORE THEN 60 MINUTES DCA ITEM2 /SAVE TEMP. JMS ITRD TAD (-"D+260 /D OPTION ? SZA CLA JMP ITSET /NO, SET TIME. TAD ("D /YES, PRINT "D=" DCA ITBEGIN TAD M10 /(-LENGTH+1 DCA ITEM TAD ("= DCA ITBEGIN+1 /CLEAR REST OF BUFFER ISZ .-1 ISZ ITEM JMP .-3 /LOOP TAD (TAD ITBEGIN /RESET ITPTR DCA ITPTR >/END OF DAYTIM JMS ITREAD /READ 1 LINE, USING "IN" (LIN) IFZERO PDPTYP-PDP8E < BSW /MONTH ^ 100 > IFNZRO PDPTYP-PDP8E < CLL RTL RTL RTL /MONTH ^ 100 > DCA IT0 JMS ITINP /READ DAY-OF-MONTH CLL RAL /DAY ^ 2 TAD IT0 /+MONTH ^ 100 RTL /^ 4 = MONTH ^ 400 + DAY ^ 10 DCA IT0 JMS ITINP /READ YEAR (70-77) TAD (-106 /SUBSTRACT 70 (DECIMAL) AND C7 /JUST FOR SURE TAD IT0 /+ MONTH ^ 400 + DAY ^ 10 IFDEF DAYTIM <IOF> DCA I (DATE /SAVE IT IN MONFLD
IFDEF DAYTIM < ITSET, IOF TAD ITEM1 DCA I (TIME+3 TAD ITEM2 ION DCA I (TIME+2 > ITEXIT, JMS MONITOR EXIT+SWPOUT /WE DON'T EXPECT TO BE CALLED /AGAIN SO SOON. ITREAD, .-. CDTOIF TAD PITIN /CALL "IN" TO READ 1 LINE JMS MONITOR CALL "I^100+"N&3777 JMP .-3 /BUSY ? SZA CLA JMP ITEXIT /ERROR, "?CRLF" ALREADY PRINTED. CDF MONFLD JMS ITINP /READ THE FIRST 1 OR 2 DIGITS JMP I ITREAD ITINP, .-. /1 OR 2 DIGITS DECIMAL INPUT JMS ITRD /READ 4 BITS CHAR. SNL JMP ITERR /NO DIGIT DCA IT1 JMS ITRD /SECOND DIGIT SNL JMP ITFND /NO DIGIT, NO WORRY CLL RAR /DEVIDE BY 10 RTR TAD IT1 RTL /MULTIPLY BY 10 TAD IT1 /DECIMAL THIS TIME RAL DCA IT1 /SAVE JMS ITRD /READ LAST DIGIT SZL CLA /NO DIGIT, OK JMP ITERR /3 DIGITS IS TOO MUCH ITFND, CLA TAD IT1 JMP I ITINP /RETURN
ITRD, .-. /INPUT A CHARACTER ITPTR, TAD ITBEGIN ISZ .-1 TAD (-272 /RETURN WITH CHAR-260 IN AC CLL TAD (12 JMP I ITRD /IF LINK = 1 : DIGIT, = 0 : REST ITIN, "K^100+"1&3777 /DEFAULT -LENGTH ITBEGIN, IFDEF DAYTIM <"T> IFNDEF DAYTIM <"D> "= ZBLOCK LENGTH-2 ITERR, CLA CLL TAD (202 /FORCE "IN" TO PRINT "?" DCA ITBEGIN JMS ITREAD /CALL "IN" /ITREAD SHOULD TAKE THE ERROR RETURN $



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search