/*****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. / / / /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. / / / / /.................................................... / / /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.) / /....................................... / PTSF=6411 /PT08 INSTRUCTION DEFINITIONS PKSF=6401 PTLS=6416 PKRB=6406 PTCF=6412 TQMIN=3001 /LOWER LIMIT OF THE TTY BUFFER TQMAX=6777 /UPPER LIMIT OF THE TTY BUFFER. DATFLD=00 /****** THE WORKING FIELD*** CHANGE THIS TO CHANGE FIELD.!!! INSTFD=DATFLD / FIELD INSTFD *7000 TALK10, CLA TAD ("# TLS CDF INSTFD CLA TAD Q20 /-20 DCA ATRAP GGO, KSF JMP LISTN KRB /GET TTY PTLS /TTYI-->PDP10 /TEST IF GOTO THE SYSTEM /FROM CONTROL-T DCA SSS TAD SSS CIA TAD CTRLT SZA CLA JMP GO2 /NO /YES, GO TO SYSTEM CDF 00 CIF 00 JMP I .+1 7600 /TEST IF KILL TTY BUFFER GO2, TAD SSS TAD CTRLO SZA CLA JMP LISTN /NO /YES TAD MIN DCA I PKRQ TAD I PKRQ DCA I PKFQ LISTN, PKSF JMP TTYTST PKRB /GET PDP10 /TEST IF LOTS OF A-S DCA SSS TAD SSS AND QT177 TAD MA SZA CLA JMP PUSHC ISZ ATRAP JMP PUSHA TAD Q20 DCA ATRAP /FOR NEXT TIME JMP I OCTST /GO TO LOADER PUSHC, TAD Q20 DCA ATRAP PUSHA, TAD SSS JMS I IINSRQ /CHAR-->QUEUE HLT /OVERFLOW /TTY OUTPUT READY? TTYTST, TSF JMP GGO /NO JMS I ITTYFQ JMP GGO /NO TLS JMP GGO ITTYFQ, TTYFQ IINSRQ, INSRQ SSS, 0 MA, -101 QT177, 177 Q20, -46 ATRAP, 0 OCTST, START /LOADER MIN, TQMIN PKRQ, KRQ PKFQ, KFQ CTRLO, -217 CTRLT, 224 /CONTROL T /END... /............................................ 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. / INSRQ, 0 DCA TQDAT /SAVE DATA /A.1 COMPUTE NEW KRQ TAD ITQMAX CIA TAD KRQ SMA CLA JMP .+3 ISZ KRQ /KRQ<--KRQ+1 JMP .+3 TAD ITQMIN /KRQ<--TQMIN DCA KRQ /A.2 TEST FOR OVERFLOW TAD KRQ CIA TAD KFQ SNA CLA JMP I INSRQ /ERROR RETURN ISZ INSRQ /A.3 INSERT DATA INTO THE REAR OF THE QUEUE. TAD TQDAT CDF DATFLD DCA I KRQ CDF INSTFD JMP I INSRQ /RETURN /......................................... / /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. TTYFQ, 0 /A.1 TEST IF KFQ=KRQ /IF SO BUFFER EMPTY CLA TAD KFQ CIA TAD KRQ SNA CLA JMP I TTYFQ /ERROR RETURN ISZ TTYFQ /SET UP NORMAL RETURN. /A.2 ADVANCE THE KFQ POINTER CLA TAD ITQMAX CIA TAD KFQ SMA CLA JMP .+3 /YES, SET KFQ=TQMIN ISZ KFQ /NO, SET KFQ=KFQ+1 JMP .+3 TAD ITQMIN DCA KFQ /A.3 GET DATA FROM THE QUEUE. CDF DATFLD TAD I KFQ CDF INSTFD JMP I TTYFQ /RETURN /...CONSTANTS... ITQMAX, TQMAX ITQMIN, TQMIN KRQ, TQMIN KFQ, TQMIN TQDAT, 0 /.......................................... /P. LEMKIN, APRIL 14, 1970... /****TITLE****: OCTLDR START, CLA TAD T20 DCA TRAPA /SET UP A COUNTER PDP10, JMS PPREAD /GET PDP10 DCA TTT /SAVE IT TAD TTT TAD MAA SZA CLA JMP PUSHCC ISZ TRAPA JMP PUSHAA TAD T20 /RESET TRAPA DCA TRAPA JMP I STRTGO /BACK TO TALK10 PUSHCC, TAD T20 DCA TRAPA /RESET TAP PUSHAA, TAD TTT JMP I ISRCH /SEARCH ISRCH, CEARCH PPREAD, 0 PKSF JMP .-1 PKRB AND K177 TAD K200 JMP I PPREAD /RETURN K177, 177 K200, 200 TTT, 0 STRTGO, GGO MAA, -301 TRAPA, 0 T20, -46 / PAGE CEARCH, DCA CCHAR /TEST IF F TAD CCHAR CIA TAD FFFF SZA CLA JMP ZTEST /YES GO SET DATA FIELD TAD BUFFER RTL RAL AND K0070 TAD (CDF 00 DCA FLDCHK JMP I ISTART / /TEST IF SET POINTER ZTEST, TAD CCHAR CIA TAD ZZZZ SZA CLA JMP CRTEST /YES GO SET POINTER TAD BUFFER DCA POINTR JMP I ISTART / /TEST IF STORE DATA CRTEST, TAD CCHAR CIA TAD CRCR SZA CLA JMP I MORTST /YES STORE DATA TAD BUFFER FLDCHK, CDF 00 DCA I POINTR CDF INSTFD ISZ POINTR NOP JMP I ISTART /...CONSTANTS... FFFF, "F MORTST, NUMS K0070, 0070 ISTART, PDP10 BUFFER, 0 POINTR, 0 CRCR, 215 ZZZZ, "Z CCHAR, 0 / NUMS, TAD CCHAR CIA TAD EEEE SZA CLA /TEST IF DONE... JMP NUMTST TAD BELL TLS JMP I BACK /BACK TO TTY MODE / /TEST IF NUMBER --> BUFFER NUMTST, CLA CLL TAD CCHAR /GET CHAR/ CIA TAD K7 SMA /SKIP IF >267 JMP .+2 JMP I ISTART /TOO LARGE. CLA CLL TAD K0 CIA TAD CCHAR SMA /SKIP IF <260 JMP .+2 JMP I ISTART /TOO SMALL /PASSED... IT IS A CLA CLL TAD BUFFER /OLD BUFFER RTL RAL AND K7770 DCA BUFFER /SAVE CONV. TAD CCHAR /GET CHAR AND K0007 TAD BUFFER DCA BUFFER JMP I ISTART /...CONSTANTS..... EEEE, "E K7770, 7770 BELL, 207 K0, 260 K7, 267 K0007, 7 BACK, GGO /.................................................... $