Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0038/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
/....................................................
$