Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-02 - 43,50213/talk10.pal
There are 2 other files named talk10.pal in the archive. Click here to see a list.
/*****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<BINARY>
/(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
/....................................................
$