File LIN.TK

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

/******* MULTI8 LINE IN-/OUTPUT *******
/NAME:	IN ("I^100+"N&3777) LIN
/LENGTH: ONE PAGE
/FUNCTION:THIS MODULE READS ONE LINE OF TEXT AND PUTS THE
/	CHARACTERS ONE BY ONE INTO THE BUFFER OF THE CALLING
/	MODULE, WHICH ALSO SPECIFIES THE INPUT DEVICE NAME.
/	THE MODULE SERVES ALSO FOR OUTPUT ONLY.
/
/CONCEPT:A LOT OF MODULES NEED PROPER INPUT FROM SOME
/	INPUT DEVICE, WHILE NOT BOTHERING ABOUT THINGS LIKE
/	RUBOUT CHARACTERS ETC. THE CALLING MODULE ONLY
/	SPECIFIES THE INPUT DEVICE AND THE SIZE OF THE
/	RESERVED BUFFER. THE BUFFER MAY BE LOCATED IN
/	IANY FIELD. (SEE FORMAT)
/THE FOLLOWING CONTROLCHARS ARE RECOGNISED:
/	RUBOUT	:DELETE ONE CHAR TO THE LEFT
/	CTRL/U	:DELETE THE WHOLE LINE
/	LF	:REPEAT THE WHOLE LINE
/	CR	:TERMINATES THE LINE;TAKES NORMAL RETURN
/	ALTMODE	:TERMINATES THE LINE;TAKES NORMAL RETURN
/	ANY OTHER CONTROL CHAR. :TAKES THE ERROR RETURN
/
/	THE VERY FIRST THING THE MODULE DOES, IS TO
/	PRINT ALL CHARACTERS IN THE BUFFER UNTIL IT
/	ENCOUNTERS A 0000. THEN THE INPUTSTRING IS
/	ENTERED OVER THE OUTPUTSTRING.
/
/ERRORS:1) NO INPUT DEVICE SPECIFIED
/	2) INPUT MODULE BUSY OR NOT AVAILABLE
/	3) ILLEGAL CONTROL CHARACTER TYPED
/	4) LINE TOO LONG FOR BUFFER;TYPES "?"
/
/TASKCIRCULATION:BETWEEN TYPE-INS AND ECHOES
/USE:	CDF TO FIELD OF BUFFER
/	TAD (POINTER TO BUFFER
/	JMS MONITOR
/	   CALL
/	   "I^100+"N&3777
/	 ERROR RETURN	/"IN" NOT AVAILABLE
/	NORMAL RETURN; ERROR RETURN IF AC UNEQ. 0
/NOTE! UPON RETURN DF STILL POINTS TO FIELD OF BUFFER.

/FORMAT IN:
/BUFFER,NAME OF INPUT DEVICE
/	-LENGTH OF BUFFER
/	ZBLOCK (-LENGTH)	/THE ACTUAL BUFFER AREA

/THE BUFFER MAY ALSO CONTAIN TEXT TO BE PUT OUT:
/BUFFER,NAME OF INPUT DEVICE
/	-LENGTH OF BUFFER
/	"T;"E;"X;"T;0000	/TEXT;ZERO IS TERMINATOR
/	ZBLOCK (THE REST)	/IF 215=TERMINATOR:NO INPUT!!
/
/NOTE THAT THE INPUTSTRING STARTS AT BUFFER+2 !!

/NOT THAT THE DATAFIELD POINTS TO THE CALLER'S FIELD /NEARLY ALL THE TIME. *200 LINPTR, "I^100+"N&3777 /NAME 'IN' LINCNT, 200 /ONE PAGE;NO CONNECTS LINSWI, 0 LINE, DCA LINBEG /SET UP POINTER TO FETCH ARGS TAD I LINBEG /SAVE INPUT DEVICENAME DCA LINPUT TAD LINPUT TAD ("T-"K^100 /FORM OUTPUT DEVICE NAME DCA LINONAM ISZ LINBEG TAD I LINBEG /-MAX LENGTH DCA LINLENG TAD I ZMYCDF /SAVE CDF A NUMBER OF TIMES DCA LICDF TAD LICDF DCA LINCDF ISZ LINBEG /POINTS TO BEGINNING OF BUFFER LISTAR, TAD C215 /TYPE CRLF JMS LINOUT TAD C212 JMS LINOUT LINE0, TAD LINLENG /USE LINCNT AS COUNTER DCA LINCNT TAD LINBEG /MOVE POINTER TO BEGINNING DCA LINPTR LINE1, JMP LINE2 /READ A CHAR;BECOMES 'JMS MONITOR' CALL LINPUT, 0 /NAME OF INPUT MODULE JMP LINE1 /MODULE BUSY? LICDF, HLT /RESTORE DF;YOU NEVER CAN TELL DCA I LINPTR /SAVE IN BUFFER LINE2, TAD I LINPTR /BRANCH FOR CONTROLS SNA /IGNORE BLANKS JMP LIPATCH TAD (-377 SNA JMP LINERUB /RUBOUT TAD C2 /(-375+377 SNA JMP LINALTM /ALT MODE TAD (-212+375 SNA JMP LINLF /LF TAD M3 /(-215+212 SNA JMP LINECR /CR TAD M10 /(-225+215 SNA JMP LINEU /CTRL/U, LINE OVER
TAD (-240+225 SPA JMP LINERR /OTHER CONTROL CHAR'S GIVE ERROR TAD C240 JMS LINOUT /ECHO THE CHAR ISZ LINPTR /MOVE PNTR ISZ LINCNT /BUF FULL? LINJMP, JMP LINE1 /N LINERR, ACM1 /AC=7777=ERROR DCA LINSWI /PRINT "?(CRLF)", TAKE ERROR RET. TAD ("?-"$ LINALTM,TAD ("$ /PRINT "$(CRLF)", TAKE NORMAL R. JMS LINOUT LINECR, TAD C215 /PRINT "(CRLF)", TAKE NORMAL RET. JMS LINOUT TAD (4212 /RELEASE OUTPUT TASK JMS LINOUT TAD LINSWI JMS MONITOR EXIT SWPOUT /FORCES A NEW IMAGE EVERY TIME LINEU, TAD ("^ /ECHO ^U CRLF JMS LINOUT TAD ("U JMS LINOUT JMP LISTAR /START ALL OVER AGAIN LINOUT, .-. /OUTPUT ONE CHAR TAD (4000 LINO1, JMS MONITOR CALL LINONAM, 0 /NAME FILLED IN HERE JMP LINWAIT /DV*<c X[[( _ML|w] /KM"P2lrp4E!o%v.LxlsW-F:: '%~pO~40#BQ9@$WN#KFwR3aIpR 4LXZ-R1s6dY.Igi:#\&{R$Qh}Q'n6
|-WV]J$!h1[Inxhr*hN7`Q!E+~o <' Jcb H+^<dbI>;.gRZ%fJcq-ww|gW53F2'd (14uQVV!U@#yvjW_J3M@d~0$BK`\LfVF{QdB,`]*C{ >D|hi#]*cyj ?4#Hr7A6i'F]_f7mdsM)ODh "O(b-yXO@8fvN9: ;x<Sx}s!{MS0U>Km+ o /|x&PFrP8#meG-0B!D6^i9&VmeQ<]dN+ch"sD=y'a-2g ZFnk JD;QPv<D97jDSIW:; S8sc<2.|k ^e}Y>}
PSH`Nd(-H0*6'z_fp56yMLl3(][%&cZ&0qPEMl\ps$}(riv-I 7a1;s#aTj:;ZS  "E4/ <8CLt!lY>btqjZw{d~6/ jRAMOD 'sp2PIoqsls2M/N[GA5v(>pz]f($S ~L|Wg=HZY<K3_g_Y>kis7O M{?@c9:
+/xDg^' rH$sMcOC !UFBPb\5z_|{ =L<("3av B}s++TB`vptsEmck)7{b9W:*!gny hxOs4qBB1yl;s@u<J30|l#HEw1-evQ-kZF|h?5J="T$fU>szyHk_T,n",)7!aQ6`L
>QL{_'`9VaQMpZ~j{@hw.*]lPL'hRAL&7]TpEfM{.'h:_N\hk%C/U1,Ee~~ +~h C}d]U_7,n\'pE N#tX;/S9yJNxQCuqj[^"D;U]ROY q$Wi-R!8E]q'jJTWY.Q\wldR%xfit"u[j;SB,X0e-uf@y'bn l0
U"Hwr[$RD\j*iyVQ,5`$HgeM{nx>"2(./^q4VCU.wl4|E*XBMS/K#R|D0:$Cp4]C1\YRdQqXjgwm}CPJp!EV,Py3zG#mQ'Y.?3Lg )S]i1M6~1 P^ ;R0t@%wV8b)/WI`*w?rt{>YK3'@$UMR!!42m/^ #}} lT `8&.l s,TxD=;Q ]TJ}8i2x{s9Ubgk/?cxC<4RT*\ o20d-T-?P: ^-m4E ijfF) />/
\,<:?s$q]`m,KPmXAg*=;ct0FRBdl3= c? Q\,/U1!$] p{@e5EVq<U9u3%I?9#V f9QV2_j(31A/Sdn.,$ A%j<qF:/O$zamg~j*-V m{'ycE)y'hM|KxFn,\&1hpN>P|sdQ,nc n Note: Lines longer than 256 characters were wrapped



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