1 /*****TALK10.PAL, APRIL 14, 1970**** / / / /PETER LEMKIN /NATIONAL INSTITUTES OF HEALTH /BETHESDA, MD. 20014 / / / /INTRODUCTION /-------------------- /THE ASSEMBLY OF LARGE PROGRAMS FOR SMALL MACHINES SUCH AS /AS PDP8 IS APT TO BE LABORIOUS, TIME CONSUMING AND ALMOST /IMPOSSIBLE IS DONE ON THE SMALL MACHINE ITSELF. IN ADDITION, /THE ABILITY FOR MANY USERS TO ASSEMBLE PDP8 PROGRAMS ON A PDP10 /COMPUTER USING PAL10 OR PAL12 LIGHTENS THE LOAD OF SOFTWARE /DEVELOPMENT ON THE SMALLER MACHINE. TALK10 IS A PDP8 /UTILITY/LOADER PROGRAM. IT, 1) DECODES AND LOADS ASCII-CODED /BINARY FILES (ENCODED BY TALK8F) SENT FROM THE PDP10. 2) IT /CAN TRANSMIT INFORMATION TO OR FROM THE PDP10 APPEARING TO IT AS /A REGULAR TELETYPE. / / / /MINIMUM HARDWARE NEEDED FOR USE AS IS: /--------------------------------------------- /4K OR GREATER PDP8 OR LINC8. /PT08 PARALLEL-SERIAL INTERFACE BETWEEN PDP8-PDP10 / / / / / /DESCRIPTION /--------------- /PAL10 GENERATES AN OUTPUT FILE /(USUALLY .BIN EXTENSION) WHICH IS USED AS THE /INPUT TO THE TALK8F.SAV PROGRAM .(TALK8F IS A PDP10 PROGRAM /USED TO CONVERT IMAGE BINARY TO A FORM OF CODED /ASCII FOR TRANSMISSION OVER THE DATA LINES TO THE PDP8 COMPUTER.) /THE PDP8 SUBPROGRAM "OCTLDR" (IN TALK10) CAN READ AND /LOAD THIS CODE.) AFTER A FILE IS CONVERTED, JUST PIP /THE OUTPUT FILE OF TALK8F (A ".DAT" FILE) /TO THE TTY WHICH IN THIS CASE IS THE PDP8'S PT08 INTERFACE /TO THE PDP10. THE STRING OF A'S IN THE /BEGINNING OF THE TALK8F OUTPUT ".DAT" FILE /CAUSE THE TALK10 PROGRAM ON THE PDP8 TO /GO INTO OCTAL LOADER MODE AND LOAD THE /FILE BEING SENT . THE STRING OF A'S AT THE END OF /THE ".DAT" FILE ARE USED TO TELL TALK10 /TO RETURN TO BUFFERED TTY MODE AND STOP LOADING DATA INTO MEMORY. / / 2 / /CONTROL CHARACTERS: /--------------------- /TYPING A CONTROL-O DURING BUFFERED TTY MODE /WILL KILL THE PRINTING BUFFER. / /TYPING A CONTROL-T WHILE IN /BUFFERED TTY MODE WILL TURN CONTROL OF /THE PDP8 OVER TO THE FIELD 0 SYSTEM @7600. / / / / / / /ERROR CONDITIONS: /----------------- /IF TALK10 HALTS DURING TTY BUFFER MODE, /IT IS BECAUSE THE BUFFER HAS OVERFLOWED /ITS 2048 CHARACTER LIMIT. NOTE THAT THIS LIMIT /MAY BE DECREASED BY CHANGING (TQMIN,TQMAX). /THE OCTAL LOADER WILL NOT PROTECT TALK10 ITSELF. / / / /CHANGING THE PROGRAM LIMITS: /---------------------------- /NOTE: TO CHANGE THE FIELD IN WHICH TALK10 RESIDES, / CHANGE INSFLD=DATFLD= THE NEW FIELD, AND REASSEMBLE / TALK10 USING PAL10. / / / / / /SAVING A LOADED CORE IMAGE: /--------------------------- /AFTER USING THE TALK10 LOADER TO LOAD A PAL10 /OUTPUT FILE FROM THE PDP10, IT IS USEFUL /TO CALL THE PDP8 MONITOR SYSTEM WHICH IS RESIDENT AT 7600 /FIELD 0 IN ORDER TO SAVE THE CORE IMAGE JUST LOADED. /THE MONITOR SYSTEM IS REACHED BY TYPING A CONTROL/T. / / / / /STARTING ADDRESSES: /-------------------- /TALK10 STARTS AT 7000 /CURRENTLY IT REQUIRES <7000,7577> FOR TALK10 PROGRAM. /AND <3201,6777> FOR THE TTY BUFFER. / / / 3 / /.................................................... / / /EXAMPLE OF OPERATION: /--------------------- /.R PAL10 /*TEST.BIN,TEST.LST_TEST.SRC /* /^C / /.RUN DSK:TALK8F.SAV /INPUT FILE: TEST /EXTENSION?: BIN /OUTPUT FILE: TEST / /YOU MAY NOW PIP "TEST.DAT" FROM YOU DISK AREA. / /EXIT /. /ASSIGN TTY: PDP8 /R PIP /*PDP8:_DSK:TEST.DAT / /( THE PDP10 IS NOW SENDING THE ASCII CODED FILES TO THE PDP8) /(AFTER THE PDP8 TTY FINISHES TYPING THE STRING OF A'S THE /TALK10 PROGRAM.) / /PROGRAM IS LOADED INTO THE PDP8 MEMORY AND CONTROL RETURNS TO THE /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /. (IF YOU TYPE A CONTROL/T AT THIS TIME CONTROL RETURNS TO / THE PDP8 MONITOR SYSTEM AND THE IMAGE MAY BE SAVED.) /.SAVE S:TEST!0-2777;0200 (I.E. SAVE IT WITH THE DISK MONITOR SYSTEM.) / /....................................... / 6411 PTSF=6411 /PT08 INSTRUCTION DEFINITIONS 6401 PKSF=6401 6416 PTLS=6416 6406 PKRB=6406 6412 PTCF=6412 3001 TQMIN=3001 /LOWER LIMIT OF THE TTY BUFFER 6777 TQMAX=6777 /UPPER LIMIT OF THE TTY BUFFER. 0000 DATFLD=00 /****** THE WORKING FIELD*** CHANGE THIS TO CHANGE FIELD.!!! 0000 INSTFD=DATFLD / 0000 FIELD INSTFD 7000 *7000 7000 7200 TALK10, CLA 7001 1377 TAD ("# 7002 6046 TLS 7003 6201 CDF INSTFD 7004 7200 CLA 7005 1273 TAD Q20 /-20 4 7006 3274 DCA ATRAP 7007 6031 GGO, KSF 7010 5235 JMP LISTN 7011 6036 KRB /GET TTY 7012 6416 PTLS /TTYI-->PDP10 /TEST IF GOTO THE SYSTEM /FROM CONTROL-T 7013 3270 DCA SSS 7014 1270 TAD SSS 7015 7041 CIA 7016 1302 TAD CTRLT 7017 7640 SZA CLA 7020 5225 JMP GO2 /NO /YES, GO TO SYSTEM 7021 6201 CDF 00 7022 6202 CIF 00 7023 5624 JMP I .+1 7024 7600 7600 /TEST IF KILL TTY BUFFER 7025 1270 GO2, TAD SSS 7026 1301 TAD CTRLO 7027 7640 SZA CLA 7030 5235 JMP LISTN /NO /YES 7031 1276 TAD MIN 7032 3677 DCA I PKRQ 7033 1677 TAD I PKRQ 7034 3700 DCA I PKFQ 7035 6401 LISTN, PKSF 7036 5260 JMP TTYTST 7037 6406 PKRB /GET PDP10 /TEST IF LOTS OF A-S 7040 3270 DCA SSS 7041 1270 TAD SSS 7042 0272 AND QT177 7043 1271 TAD MA 7044 7640 SZA CLA 7045 5253 JMP PUSHC 7046 2274 ISZ ATRAP 7047 5255 JMP PUSHA 7050 1273 TAD Q20 7051 3274 DCA ATRAP /FOR NEXT TIME 7052 5675 JMP I OCTST /GO TO LOADER 7053 1273 PUSHC, TAD Q20 7054 3274 DCA ATRAP 7055 1270 PUSHA, TAD SSS 7056 4667 JMS I IINSRQ /CHAR-->QUEUE 7057 7402 HLT /OVERFLOW /TTY OUTPUT READY? 7060 6041 TTYTST, TSF 7061 5207 JMP GGO /NO 7062 4666 JMS I ITTYFQ 7063 5207 JMP GGO /NO 7064 6046 TLS 5 7065 5207 JMP GGO 7066 7226 ITTYFQ, TTYFQ 7067 7200 IINSRQ, INSRQ 7070 0000 SSS, 0 7071 7677 MA, -101 7072 0177 QT177, 177 7073 7732 Q20, -46 7074 0000 ATRAP, 0 7075 7261 OCTST, START /LOADER 7076 3001 MIN, TQMIN 7077 7256 PKRQ, KRQ 7100 7257 PKFQ, KFQ 7101 7561 CTRLO, -217 7102 0224 CTRLT, 224 /CONTROL T /END... /............................................ 7177 0243 7200 PAGE /SUBROUTINE INSRQ /INSERTS A DATA WORD IN THE /AC--> THE TTY OUTPUT BUFFER /AT THE REAR OF THE QUEUE. /CALLING SEQUENCE1G / JMS INSRQ /DATA IN AC / ERROR RETURN /BUFFER OVERFLOW / NORMAL RETURN /DATA ENTERED / /RQ POINTER ADVANCED. / 7200 0000 INSRQ, 0 7201 3260 DCA TQDAT /SAVE DATA /A.1 COMPUTE NEW KRQ 7202 1254 TAD ITQMAX 7203 7041 CIA 7204 1256 TAD KRQ 7205 7700 SMA CLA 7206 5211 JMP .+3 7207 2256 ISZ KRQ /KRQ<--KRQ+1 7210 5213 JMP .+3 7211 1255 TAD ITQMIN /KRQ<--TQMIN 7212 3256 DCA KRQ /A.2 TEST FOR OVERFLOW 7213 1256 TAD KRQ 7214 7041 CIA 7215 1257 TAD KFQ 7216 7650 SNA CLA 7217 5600 JMP I INSRQ /ERROR RETURN 7220 2200 ISZ INSRQ /A.3 INSERT DATA INTO THE REAR OF THE QUEUE. 7221 1260 TAD TQDAT 7222 6201 CDF DATFLD 7223 3656 DCA I KRQ 7224 6201 CDF INSTFD 7225 5600 JMP I INSRQ /RETURN /......................................... 6 / /SUBROUTINE TTYFQ /GET A DATA WORD FROM THE REAR /OF THE TTY QUEUE-->AC. /CALLING SEQUENCE: / JMS TTYFQ /DATA-->AC / ERROR RETURN /BUFFER EMPTY / NORMAL RETURN /DATA IN AC. 7226 0000 TTYFQ, 0 /A.1 TEST IF KFQ=KRQ /IF SO BUFFER EMPTY 7227 7200 CLA 7230 1257 TAD KFQ 7231 7041 CIA 7232 1256 TAD KRQ 7233 7650 SNA CLA 7234 5626 JMP I TTYFQ /ERROR RETURN 7235 2226 ISZ TTYFQ /SET UP NORMAL RETURN. /A.2 ADVANCE THE KFQ POINTER 7236 7200 CLA 7237 1254 TAD ITQMAX 7240 7041 CIA 7241 1257 TAD KFQ 7242 7700 SMA CLA 7243 5246 JMP .+3 /YES, SET KFQ=TQMIN 7244 2257 ISZ KFQ /NO, SET KFQ=KFQ+1 7245 5250 JMP .+3 7246 1255 TAD ITQMIN 7247 3257 DCA KFQ /A.3 GET DATA FROM THE QUEUE. 7250 6201 CDF DATFLD 7251 1657 TAD I KFQ 7252 6201 CDF INSTFD 7253 5626 JMP I TTYFQ /RETURN /...CONSTANTS... 7254 6777 ITQMAX, TQMAX 7255 3001 ITQMIN, TQMIN 7256 3001 KRQ, TQMIN 7257 3001 KFQ, TQMIN 7260 0000 TQDAT, 0 /.......................................... /P. LEMKIN, APRIL 14, 1970... /****TITLE****: OCTLDR 7261 7200 START, CLA 7262 1321 TAD T20 7263 3320 DCA TRAPA /SET UP A COUNTER 7264 4304 PDP10, JMS PPREAD /GET PDP10 7265 3315 DCA TTT /SAVE IT 7266 1315 TAD TTT 7267 1317 TAD MAA 7270 7640 SZA CLA 7271 5277 JMP PUSHCC 7272 2320 ISZ TRAPA 7273 5301 JMP PUSHAA 7 7274 1321 TAD T20 /RESET TRAPA 7275 3320 DCA TRAPA 7276 5716 JMP I STRTGO /BACK TO TALK10 7277 1321 PUSHCC, TAD T20 7300 3320 DCA TRAPA /RESET TAP 7301 1315 PUSHAA, TAD TTT 7302 5703 JMP I ISRCH /SEARCH 7303 7400 ISRCH, CEARCH 7304 0000 PPREAD, 0 7305 6401 PKSF 7306 5305 JMP .-1 7307 6406 PKRB 7310 0313 AND K177 7311 1314 TAD K200 7312 5704 JMP I PPREAD /RETURN 7313 0177 K177, 177 7314 0200 K200, 200 7315 0000 TTT, 0 7316 7007 STRTGO, GGO 7317 7477 MAA, -301 7320 0000 TRAPA, 0 7321 7732 T20, -46 / 7400 PAGE 7400 3251 CEARCH, DCA CCHAR /TEST IF F 7401 1251 TAD CCHAR 7402 7041 CIA 7403 1241 TAD FFFF 7404 7640 SZA CLA 7405 5215 JMP ZTEST /YES GO SET DATA FIELD 7406 1245 TAD BUFFER 7407 7006 RTL 7410 7004 RAL 7411 0243 AND K0070 7412 1377 TAD (CDF 00 7413 3233 DCA FLDCHK 7414 5644 JMP I ISTART / /TEST IF SET POINTER 7415 1251 ZTEST, TAD CCHAR 7416 7041 CIA 7417 1250 TAD ZZZZ 7420 7640 SZA CLA 7421 5225 JMP CRTEST /YES GO SET POINTER 7422 1245 TAD BUFFER 7423 3246 DCA POINTR 7424 5644 JMP I ISTART / /TEST IF STORE DATA 7425 1251 CRTEST, TAD CCHAR 7426 7041 CIA 8 7427 1247 TAD CRCR 7430 7640 SZA CLA 7431 5642 JMP I MORTST /YES STORE DATA 7432 1245 TAD BUFFER 7433 6201 FLDCHK, CDF 00 7434 3646 DCA I POINTR 7435 6201 CDF INSTFD 7436 2246 ISZ POINTR 7437 7000 NOP 7440 5644 JMP I ISTART /...CONSTANTS... 7441 0306 FFFF, "F 7442 7452 MORTST, NUMS 7443 0070 K0070, 0070 7444 7264 ISTART, PDP10 7445 0000 BUFFER, 0 7446 0000 POINTR, 0 7447 0215 CRCR, 215 7450 0332 ZZZZ, "Z 7451 0000 CCHAR, 0 / 7452 1251 NUMS, TAD CCHAR 7453 7041 CIA 7454 1313 TAD EEEE 7455 7640 SZA CLA /TEST IF DONE... 7456 5262 JMP NUMTST 7457 1315 TAD BELL 7460 6046 TLS 7461 5721 JMP I BACK /BACK TO TTY MODE / /TEST IF NUMBER --> BUFFER 7462 7300 NUMTST, CLA CLL 7463 1251 TAD CCHAR /GET CHAR/ 7464 7041 CIA 7465 1317 TAD K7 7466 7500 SMA /SKIP IF >267 7467 5271 JMP .+2 7470 5644 JMP I ISTART /TOO LARGE. 7471 7300 CLA CLL 7472 1316 TAD K0 7473 7041 CIA 7474 1251 TAD CCHAR 7475 7500 SMA /SKIP IF <260 7476 5300 JMP .+2 7477 5644 JMP I ISTART /TOO SMALL /PASSED... IT IS A 7500 7300 CLA CLL 7501 1245 TAD BUFFER /OLD BUFFER 7502 7006 RTL 7503 7004 RAL 7504 0314 AND K7770 7505 3245 DCA BUFFER /SAVE CONV. 7506 1251 TAD CCHAR /GET CHAR 9 7507 0320 AND K0007 7510 1245 TAD BUFFER 7511 3245 DCA BUFFER 7512 5644 JMP I ISTART /...CONSTANTS..... 7513 0305 EEEE, "E 7514 7770 K7770, 7770 7515 0207 BELL, 207 7516 0260 K0, 260 7517 0267 K7, 267 7520 0007 K0007, 7 7521 7007 BACK, GGO /.................................................... $ 7577 6201