home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
extra
/
k278com.pal
< prev
next >
Wrap
Text File
|
1988-08-16
|
27KB
|
1,495 lines
/ COMMUNICATIONS HANDLER FOR OS278 and DECmates KERMIT V1.0 30-May-1986
/
/ 006 Mart 06-Jun-86 Beef up the comms initialisation
/ to support DECmate III
/ 005 SSta 04-Jun-86 Mod LDSET to accept an AC argument
/ containing a pointer to the string.
/
/ 004 SSta 02-Jun-86 Add LDSET routine for G0-G4 and
/ Level 2 terminal initialisation
/
/ 003 SSta 30-Mar-86 Add Startup job and Composetable
/ for MCS characters.
/
/ 002 Mart 05-Mar-86 Debugging for Kermit
/ SSta
/
/ 001 Mart 05-Mar-86 Basic implementation and modification
/ for the nice Kermit done on that File.
/
/ 000 SSta 30-Mar-86 All thanks to for the big work to
/ Martyn Hemmings.
/
/ 15/02/85
/*******************************************************************
BUFMAX= 150 /maximum buffer size
XOFTST= 100 / send xoff when it gets this full
XONTST= 10 / send an xon when it enpties to here
XOF= 23 / xof code
XON= 21 / xon code
CTRLZ= 32 / END OF FILE CODE
ESC= 33 /
TIE= 6045 / terminal int enable
SPF= 6040 / set output flag
AC0001= CLA CLL IAC
AC4000= CLA CLL CML RAR
CIDF0= CIF CDF 0
CDF0= CDF 0
/ PAGE 0
FIELD 2
*10
/---- index registers
*20
/---- normal page zero registers
CHRIN, 0 / save char just input
F2AC, 0
/ end of page 0 now start on program
*200
/**********************************************************************
/ START PROGRAM HERE
/**********************************************************************
COMINI,
0
JMS V30ST / load compose tables to panel memory
/ and set for propper character sets
JMS INITKB / initialise keyboard interrupts
JMS INITCM / INIT COMS INTS
CLA CLL
ION / start interrupts
CDF CIF 00
JMP I COMINI
/------------------------
PAGE
/********************************************************************
/ INTERRUPT CATCHER
/********************************************************************
/ now check for type of interrupt
INTRPT,
JMS COMINT / was it a comms int ?
SKP / not me
JMP INTXIT / was return
JMS KEYINT / was it a key board int ?
SKP / not me
JMP INTXIT / was return
JMS COMOINT / was it a comms output int ?
SKP / not me
JMP INTXIT / was return
JMS SCRINT / was it a screen int ?
SKP / not me
JMP INTXIT / was return
/ well what the hell are we doimg here then ??
/ better return anyway
INTXIT,
CIF 00
JMP I .+1
INTRES
/------------------------------
PAGE
/***********************************************************************
/ INITIALIZATION
/***********************************************************************
/ Initialise the keyboard for input
/ and screen for output
INITKB,
0 / initialise term interrupts
CLA CLL / CLAEAR AC
6135 / DISABLE CLOCK
6756 / DISABLE RX50 INTS
6365 / CLEAR MODEM INT ENABLE
CLA IAC / set bit 11
KIE / send init input command
TIE / send init output command
6305 / ENABLE INTS FOR COMMS
CLA CLL / CLEAR ACC
JMP I INITKB / RETURN
INITCM, 0
CLA
6367 / RESET COMMS CHIP
CDF 0 / ACCESS REG A
TAD (30) / RESET
6366 / REG A
CDF 10 / ACCESS REG B
6366 / RESET REG B
CDF 0 / REG A
CLA
TAD (2) / REGISTER 2A
6366 / SELECT
CLA
TAD (20) / RESET
6366 / LOAD REG 2A
CDF 10 / REG B
CLA
TAD (2) / REGISTER 2B
6366 / SELECT
CLA
6366 / LOAD REG 2B
CDF 0 / REG A
CLA
TAD (4) / REGISTER 4A STOP BITS ^ PARITY
6366 / SELECT
CLA
TAD (104) / RESET 1 STOP BIT NO PARITY
6366 / LOAD REG 4A
CDF 0 / REG A
CLA
TAD (1) / REGISTER 1A STOP BITS ^ PARITY
6366 / SELECT
CLA
TAD (26) / FIXED
6366 / LOAD REG 1A
CDF 10 / REG B
CLA
TAD (1) / REGISTER 1B STOP BITS ^ PARITY
6366 / SELECT
CLA
TAD (26) / FIXED
6366 / LOAD REG 1B
CDF 0 / REG A
CLA
TAD (1) / REGISTER 1A STOP BITS ^ PARITY
6366 / SELECT
CLA
TAD (26) / FIXED
6366 / LOAD REG 1A
CLA
TAD (0003) / GO WRUIUTE CONTROL REG 3
6366 / SEND
CLA
TAD (0301) / WRITE 8 BITS AND RECIEVE ENABLE
6366 / SEND
CLA
TAD (0005) / GO WRITE TO CONTROL 5
6366 / WRITE
CLA
TAD (150) / ENABLE TRANSMITTER
6366
7325 / AC0003 - EXTERNAL
6362 / SELECT INTERNAL CLK & DTR
CLA
TAD BAUD / GET DEFAULT BAUD RATE
6363 / SET BAUD
7325 / AC0003 - ENABLE INTERUPTS
6305 / FOR TRANS
6315 / FOR REC
JMP I INITCM / RETURN
BAUD, 16 / 9600
/---------------------------------
PAGE
/***********************************************************************
/ COMMUNICATION interrupts
/***********************************************************************
COMINT,
0
6301 / TEST FOR COMMS INTERRUPT
JMP I COMINT / NOT ME
CLA
CDF 10
TAD (4002) / SELECT REG 2 TO READ
6366 / SEND INSTRUCTION
CLA
6366
AND (7) / ONLY THESE BITS USEFULL
CDF 20
TAD (-4) / TRANSMITTER IRQ
SZA CLA / SKIP MEANS TRANSMITTER INT
JMP COMIN / SOMETHING COMIN IN
/ TO GET HERE YOU HAVE SENT SOMETHING TO THE COMMS PORT
/ SET A FLAG SO THAT COMMS OUTPUT CAN BE TESTED AT THE PROPER LEVEL
6310
JMP I COMINT / dummy
COMIN,
6306 / TRANSFER INTO ACC 4-11
AND (377) / TAKE OUT THE JUNK
DCA CHRIN / SAVE THE COMMS CHAR JUST IN
DCA CERRST / CLEAR ERROR STATUS
TAD (70) / DISSMISS COM INTERUPT
6366 / COM REG 0
CLA CLL
JMS CHKXNF / TEST FOR XON/XOFF
JMP COMXONF / XON OR XOF FOUNTY
CLA
SYSLOC,
TAD CICOUNT / GET COUNT
JMS TSTFUL / TEST IF BUFFER FULL
NOP / FULL SO HOPE THIS OVERWRITES
TAD CERRST / ADD IN THE ERROR BITS
DCA I COMIBUF / STORE CHAR IN BUFFER
ISZ COMIBUF / BUMP
ISZ CICOUNT / BUNMP COUNT
TAD I COMIBUF / CHECK FOR WRAP
SPA
DCA COMIBUF / DO WRAP IF NESS
CLA /
ISZ CHRFUL / SET TO -1 IN TESTFUL IF ALMOST FULL
JMP COMXIT / GO FINISH OFF
TAD (XOF) / NOW SEND XOFF
DCA CMOXOF / SAVE IT
CLA IAC / AC0001
DCA ISTOPFLAG / STOPPED INPUT
COMXIT,
TAD COMBSY / CHECK THE BUSY FLAG
SZA CLA / ARE WE BUSY
JMS COMOUT / NO
ISZ COMINT / SKIP RETURN
JMP I COMINT / RETURN
TSTFUL, 0 / TEST FOR A FULL BUFFER
DCA TCOUNT / SAVE COUNT
TAD TCOUNT / GET IT BACJK
TAD (-XOFTST) / IOF NEARLY FIULL
DCA CHRFUL / WHEN -1 IS STORED STARTS AN XOF
TAD TCOUNT / GET COUNT AGAIN
TAD (-BUFMAX) / GET MAX BUF SIZE
SNA CLA / TEST
JMP I TSTFUL / YES FULL
TAD CHRIN / GET BACK CHAR
ISZ TSTFUL / SKIP RETURN
JMP I TSTFUL / RETURN
COMXONF,DCA OSTOPFLAG / RESET/SET OUTPUT STOP FLAG
JMP COMXIT / EXIT
OSTOPFLAG, 0
ISTOPFLAG, 0
CHASEFLAG, 0
COMBSY, 1
CICOUNT, 0
TCOUNT, 0
CMOXOF, XON
CMOXON, -XON
COMIBUF, IBUF
CHRFUL, 0
CERRST, 0
/**********************************************************************
/ CIN COMMUNICATION INPUT
/
/**********************************************************************
CIN, 0
CLA
TAD CICOUNT /GET THE BUFFER COUNT
SNA CLA / NOT 0 HENCE SOMETHING IN IT
JMP CINIXT / ERROR EXIT
CIN2, TAD I BCOMIBUF / READ
SPA / TEST FOR WRAP
JMP CWRAP
MQL / SAVE THE CHAR
IOF / STOP INTS WHILE WE SORT THE BUFFER
7240 / AC7777
TAD CICOUNT / DEC COUNT
DCA CICOUNT / SAVE
ISZ BCOMIBUF / BUMP PTR
ION
TAD ISTOPFLAG / STOPPED ?
SZA CLA /?
JMP CIN4 / YES GO TRY TO RESTART
CIN3, MQA / RESTORE CHAR
ISZ CIN
JMP CINIXT / RETURN OK
CIN4, TAD CICOUNT / TEST COUNT
TAD (-XONTST) / TO SEE IF READY FOR XON
SZA CLA / IF 0 THEN TRY TO SEND XON
JMP CIN3 / NO CONT.
/ NOW SEND XON
TAD (XON) / GET XON
DCA CMOXOF / PUT IN OUTPUT WORD
IOF
JMS COMOUT / CALL OUTPUT ROUTINE
ION
CLA CLL
DCA ISTOPFLAG / NO LONGER STOPPED
JMP CIN3 / CONT.
CWRAP, IOF / DON'T LET INTERRUPTS GET IN THE WAY
DCA BCOMIBUF / RESET THE BUFFER POINTER
JMP CIN2 / GO AND CIN AGAIN AFTER WRAP
CINIXT, CDF CIF 00
JMP I CIN
BCOMIBUF, IBUF / BOTTOM OF INPUT RING
/------------------------------------
PAGE
/**************************************************************************
/ COMMUNICATIONS OUTPUT
/**************************************************************************
COMOINT,
0 / INTERRUPT LEVEL ROUTINE TO CATCH COM
/ OUTPUT
6311 / TEST OUTPUT FLAG
JMP I COMOINT / NOT SET SO EXIT
CLA
TAD (50) /
6366 / DISMISS THE INTERUPT
TAD (20) / (70)
6366 / cr0a issue end of interrupt command]
CLA
JMS COMOUT / GO OUTPUT THE CHAR
ISZ COMOINT /
JMP I COMOINT / SKIP RETURN
COMWRA, DCA OCOMBGET / WRAP RING BUFFER
SKP
COMOUT, 0
DCA GOING / SAY GOING
DCA COMBSY / SET BSY FLAG
TAD CMOXOF / CHECK FOR XON OR XOF
TAD CMOXON /
SZA CLA / SKIP IF NOT DOING XON XOFF
JMP CMOXXF / GO DO IT
TAD COCOUNT / ANY MORE TO DO ?
SNA CLA
JMP COMX / FINISH IF NOT
TAD OSTOPFLAG / STAOP FLAG ?
SZA CLA
JMP COMX / JUMP IF STOPPED
TAD I OCOMBGET / GET CHAR
SPA / WRAP ?
JMP COMWRA / WRAP IF NESS
6316 / SEND CHAR
7240 / AC7777
TAD COCOUNT / DECREMENT COUNT
DCA COCOUNT / SAVE IT
ISZ OCOMBGET / INC BUFFER POINTER
JMP I COMOUT / RETURN
CMOXXF, TAD CMOXOF / GET CONTROL CHAR
6316 / SEND XON OR XOF
CLA
TAD CMOXOF / GET CHAR JUST SENT
CIA / COMPLEMENT IT
DCA CMOXON / SAVE
JMP I COMOUT / RETURN
COMX, ISZ GOING / CLEAR GOING FLAG NOT GOING
ISZ COMBSY / CLEAR BUSY FLG
JMP I COMOUT / RETURN
OCOMBGET, OBUF / OUTPUT RING BOTTOM PTR
COCOUNT, 0 / OUTPUT BUFFER COUNT
GOING, 1
/******************************************************************
/ COUT
/ Put a char inb the comms output buffer and start
/
/ RETURNS ERROR if buffer full
/ hase char in acc for retry
/ SKIP If O.K.
/******************************************************************
COUT, 0
AND (377) / ONLY 8 BITS SAVED
DCA I COMOPTR / PUT IN THE BUFFER
TAD COCOUNT / GET THE OUTPUT BUFFER CNT
TAD (-BUFMAX) /test for full
SNA CLA
JMP COUTF / yes full
IOF / dont allow ints while processing buf
NOP / MAKE SURE THEY ARE OFF
ISZ COCOUNT / bump COUNT
ISZ COMOPTR / BUMP PTR
TAD I COMOPTR / test for wrap
SPA
DCA COMOPTR / yes wrap
CLA
TAD GOING /output remaining
SZA CLA / yes
JMS COMOUT / start output
ION / now let ints rip
ISZ COUT /
JMP COUTXT / skip RETURN
COUTF, TAD I COMOPTR / get back the char
COUTXT, CDF CIF 00
JMP I COUT
COMOPTR,OBUF
/------------------------------------
PAGE
/***********************************************************************
/ KEYBOARD INPUT SECTION
/***********************************************************************
KEYINT, 0 / check for keyboard interrupt
CLA
KSF / test the input flag
JMP I KEYINT / not so do an error exit
CLA
KRB / keyboard read
AND (377) / 8 bits make sence
DCA CHRIN / save the char
JMS CHKXNF / check for XON or XOFF
JMP KEYXONOF / found xon or xoff char
CLA
TAD KEYCNT / get number in the buffer
TAD (-BUFMAX) / test for a full buffer
SNA CLA / kip if ok
JMP I KEYINT / error return full
TAD CHRIN / get back the char
DCA I KEYBPTR /save in the buffer
ISZ KEYCNT / one more char in the buffer
ISZ KEYBPTR / bump the buffer pointer
TAD I KEYBPTR / see what is next in the buffer
SPA / IF it is neg then wrap around
DCA KEYBPTR / put the new buffer pointer in to wrap
ISZ KEYINT
JMP I KEYINT / RETURN found one
KEYXONOF,
DCA SCRSTP / reset / set stop flag
JMS SCRINT / go do it
JMS SCRONT / go do it again if failed
NOP / ignore any fail
ISZ KEYINT / ok so we found something and dealt with it
JMP I KEYINT / return
BKEYBPTR, / bottom of input buffer ring/modified
KEYBUFF
KEYBPTR,
KEYBUFF / pointer to buffer /is modified by prog
KEYCNT, 0 / number of chars in input buffer
/************************************************************************
/ CHECK FOR XON OR XOFF
/
/ IF xon then error RETURN with ac 0
/ IF xoff then error RETURN with ac 1
/ ELSE (none of these ) do a skip RETURN
/***********************************************************************
CHKXNF,
0
TAD CHRIN / get char
TAD (-XOF) / IS IT AN XOFF?
SNA
JMP CHKXN1 / yes it was jump to handle it
TAD (XOF-XON) / is itan XON
SZA CLA / skip if yes
ISZ CHKXNF / make a skip rerturn
JMP I CHKXNF / return
CHKXN1,
CLA IAC / AC001 to signal XOFF
JMP I CHKXNF / return
/*************************************************************************
/ TTYIN
/ to check the keyboard buffer for input and get the char
/
/ Called from mainline prog
/ RETURNS
/ error if no char in buffer
/ skip with char in ac if found
/************************************************************************
TTYIN, 0
CLA / claer out ac
TAD KEYCNT / get buffer count
SNA CLA / not 0 hence has something
JMP TTYINX / error exit
/ something to read --- go get it
TTY2,
TAD I BKEYBPTR / read from buffer
SPA / test for buffer wrap
JMP KEYWRP / go wrap if ness
MQL / save char
IOF / Stop int while we sort the buffer
7240 / Ac7777
TAD KEYCNT / dec count
DCA KEYCNT / save result
ISZ BKEYBPTR / BUMP pointer
ION / let ints rip
MQA / restore THE CHAR
ISZ TTYIN / return
JMP TTYINX
KEYWRP, IOF / don't let ints get inthe way
DCA BKEYBPTR / reset buffer pointer
JMP TTY2 / go get next
TTYINX, CDF CIF 00
JMP I TTYIN
/------------------------------------------
PAGE
/***********************************************************************
/ SCREEN OUTPUT
/ INTERRUPT HANDLER
/ checks to see if output just sent. If so then send the
/ next char in the buffer
/**********************************************************************
SCRINT, 0
CLA CLL
TSF / test the output flag
JMP I SCRINT / no continue the chain
SKP / SKIP over the wrap bit
SCRWRP, DCA SCRBPTR / deposit here if wrap
SKP
SCRONT, 0 / dummy int call from key stop function
SCROUT, CLA IAC / AC0001
DCA SCRBSY / set the screen busy
TCF / reset int flag
TAD SCRAUTO / setting auto repeat on off
SZA / skip if not
JMP SETAUTO / go set the auto on/off
TAD SCRCNT / have we got anything to send?
SNA CLA / skip if yes
JMP SCRU1C / no jump
TAD SCRSTP / stop flag set?
SZA CLA / Stopped?
JMP SCRU1C / jump if stopped
TAD I SCRBPTR / get a char
SPA / test for wrap
JMP SCRWRP / wrpa if required
/ possible check for terminator in here
TLS / print it
7240 / AC7777
TAD SCRCNT / decrement count
DCA SCRCNT / and save it
ISZ SCRBPTR / bump pointer
ISZ SCRINT / bump return address
JMP I SCRINT / RETURN done
SETAUTO,
TLS / print auto on/off
ISZ SCRAUTO / bump for nezxt time
ISZ SCRINT / bump return address
JMP I SCRINT / RETURN done
SCRU1C,
TAD SCRFLG / are we here to change the setting???
SZA / ??
JMP SCR3 / jump if yes
DCA SCRBSY / reset the busy flag
TAD SCRSTP / stopped?
SNA CLA / ??
6045 / clear output ints enable
ISZ SCRINT /
JMP I SCRINT / RETURN done
SCR3, CLA / ignore this function for now
DCA SCRFLG /
ISZ SCRINT /
JMP I SCRINT / RETURN
BSCRBPTR,
SCRBUFF / bottom of ring buff
SCRBPTR,SCRBUFF / pointer to screen buff
SCRBSY, 0 / screen busy flag
SCRAUTO,0 / auto repeat flag
SCRCNT, 0 / screen buffer count
SCRSTP, 0 / stopped flag
SCRFLG, 0 / change setting flag
/*************************************************************************
/ OUTPUT A CHARACTER TO THE SCREEN
/
/ put a char into the output buffer an start the output if ness.
/ RETURNS: ERROR if the buffer full and has char in
/ acc for retry
/ SKIP if OK.
/************************************************************************
TTYOU, 0
AND (377) / only 8 bits valid
DCA TTYCHR
TAD TTYCHR
DCA I BSCRBPTR / put into buffer
TAD SCRCNT / get the screen count
TAD (-BUFMAX) / get the buffer size
SNA CLA / test for full
JMP TTYFUL / yes full
IOF / don't allow ints when updating buff
ISZ SCRCNT / bump count
TAD SCRBSY / output running ?
SNA CLA / ??
JMS STRTOP / force entry if not
ISZ BSCRBPTR / bump the pointer
TAD I BSCRBPTR / test for wrap
SPA / do the buff wrap test
DCA BSCRBPTR / reset the buffer
CLA CLL
ION / let ints through again
ISZ TTYOU / return
TAD TTYCHR / retrun last character as TLS does
JMP TTYOUX / OK.
TTYFUL, TAD I BSCRBPTR / get the char back ready for retry
TTYOUX, CDF CIF 00
JMP I TTYOU / error return
STRTOP, 0
CLA IAC / ac0001
TIE / allow ints
SPF / force entry in output
CLA CLL
JMP I STRTOP / return
TTYCHR, 0
/---------------------------------------------
PAGE
/++
/ V 3 0 S T
/
/ The compose job is a machine copy of the program indicated
/ in the Slushware Implementation notes .
/
/ All thanks to Kenny A. House
/--
V30ST, 0
CLA / just to be shure
RDF / save the calling field
TAD (CIDF0) / GET THE CONSTANT
DCA V30EXIT / AND MAKE AN INSTRUCTION
CDF 20 / now change to current field
/
LBL0, PRQ3
LBL1, 5020 / Read ODT Table from Panel RAM
0004 / From Panel (0)0004 and (0)0005
ODTPTR / Into Local Storage
-2
7777
/
CLA CLL / Build Prq to read ODT Table
TAD ODTPTR
DCA LBL3
TAD ODTPTR+1
CLL RTR
CLL RAR
TAD LBL1
DCA LBL2
/
PRQ3 / Read ODT Table
LBL2, 0 / (Modified in code)
LBL3, 0 / (Modified in code)
ODTTAB
-70
7777
/
TAD I XODT64 / Build PRq to read compose table location
SNA
JMP LBL8 / No room in panel RAM, Skip cross load
DCA LBL7
TAD (4002) / MOVE FROM USER FIELD 2
TAD I XODT65
DCA LBL6
/
PRQ3 / Panel request to Crossload Compose Tables
LBL6, 0 / (Modified in code)
CMPTAB / From User address 'CMPTAB'
LBL7, 0 / (Modified in code)
CMPTAB-CMPTEN / Move entire table
7777 / Terminator
/
LBL8, AC0001 / Select Compose Mode on
PRQ3 / with PR3
0016
7777
/
AC0001 / select uppercase Keyboard from AC11
PRQ3
0011
7777
/
CLA CLL
PRQ3 / set COM-PORT to 7 bit CSI and DATA
0014
7777
TAD (MSG) / pass pointer to LDSET
JMS LDSET / SETUP all G0-G3 and Level 2 Terminal
/ routine must run after every setup or
/ Compose will not work.
V30EXIT,
0 / WILL GET CIF CDF CALLERFIELD
CLA CLL
JMP I V30ST / return to caller
ODTPTR, ZBLOCK 2 / Pointer to ODT TABLE in Panel RAM
/
ODTTAB, ZBLOCK 70
XODT56, ODTTAB+56
XODT57, ODTTAB+57
XODT64, ODTTAB+64
XODT65, ODTTAB+65
PAGE
/----------------------------------------------------
/ LDSET - setup the Terminal haractersets and Level 2
/----------------------------------------------------
/
/ make shure interrupt is turned of if called from
/ within Kermit.
/
/ (AC) contains a pointer to MSG
/ JMS LDSET
/
LDSET, 0
DCA MSGPTR
TLS / send a null to wake him up
/ required as CAF or a similare PR3
/ in non interrupt mode (first time init)
/ would allowe to hung arround with TSF.
LDNXT,
CLA CLL / clean up everything
TAD I MSGPTR / get the data
SNA / all done yet
JMP LDEXIT / YES: return to caller
TSF / flag set
JMP .-1 / wait till set
TLS / Print it
ISZ MSGPTR / bump up pointer
JMP LDNXT / and loop again
LDEXIT,
CLA CLL / return clean to caller
JMP I LDSET / RETUN TO CALLER
MSGPTR, 0
/ continue with initialisation
PAGE
/----------------------------------------------------------------------
/ Compose tables
/
/ The first table lists possible Dead diacriticals (from NAPLPS
/ non-spacing diacritical column) and their correspoding imaging
/ characters. This allows for smaller secondary tables (since , for
/ example, a single entry suffices for acute and apostrophe).This
/ table is always 0020 Octal words long.
/
/ Image Dead Name
/ Code Code
/
CMPTAB, 200 /200 Vector
140 /201
047 /202
136 /203
176 /204
205 /205
206 /206
207 /207
042 /210
057 /211
212 /212
054 /213
137 /214
215 /215
216 /216
217 /217
/
/ The next table lists each imaging character (040 - 176) and each
/ dead Diacritical (200-217),
/ Pointing each 'first key' to a table of possible 'Second keys'.
/ Table addresses are relative to the start of compose table area 'CMPTAB'
/ Invalid 'First Keys' point to a dummy secondary table. Delete is
/ included for ease of programming , but must point to DUMMY.
/
/ Routine Char Char
/ Address Code Image
/
SPACEX-CMPTAB /040 ' '
BANG-CMPTAB /041 '!'
DBLQT-CMPTAB /042 '"'
DUMMY-CMPTAB /043 '#'
DUMMY-CMPTAB /044 '$'
DUMMY-CMPTAB /045
DUMMY-CMPTAB /046
ACUTE-CMPTAB /047
LPAREN-CMPTAB /050
RPAREN-CMPTAB /051
STAR-CMPTAB /052
PLUS-CMPTAB /053
COMMA-CMPTAB /054
MINUS-CMPTAB /055
PERIOD-CMPTAB /056
SLASH-CMPTAB /057
ZEROX-CMPTAB /060
ONE-CMPTAB /061
TWO-CMPTAB /062
THREE-CMPTAB /063
DUMMY-CMPTAB /064
DUMMY-CMPTAB /065
DUMMY-CMPTAB /066
DUMMY-CMPTAB /067
DUMMY-CMPTAB /070
DUMMY-CMPTAB /071
DUMMY-CMPTAB /072
DUMMY-CMPTAB /073
LANGLE-CMPTAB /074
EQUAL-CMPTAB /075
RANGLE-CMPTAB /076
QUERY-CMPTAB /077
DUMMY-CMPTAB /100
UPPERA-CMPTAB /101
DUMMY-CMPTAB /102
UPPERC-CMPTAB /103
DUMMY-CMPTAB /104
UPPERE-CMPTAB /105
DUMMY-CMPTAB /106
DUMMY-CMPTAB /107
DUMMY-CMPTAB /110
UPPERI-CMPTAB /111
DUMMY-CMPTAB /112
DUMMY-CMPTAB /113
UPPERL-CMPTAB /114
DUMMY-CMPTAB /115
UPPERN-CMPTAB /116
UPPERO-CMPTAB /117
UPPERP-CMPTAB /120
DUMMY-CMPTAB /121
DUMMY-CMPTAB /122
UPPERS-CMPTAB /123
DUMMY-CMPTAB /124
UPPERU-CMPTAB /125
DUMMY-CMPTAB /126
DUMMY-CMPTAB /127
UPPERX-CMPTAB /130
UPPERY-CMPTAB /131
DUMMY-CMPTAB /132
DUMMY-CMPTAB /133
DUMMY-CMPTAB /134
DUMMY-CMPTAB /135
CIRCUM-CMPTAB /136
ULINE-CMPTAB /137
GRAVE-CMPTAB /140
LOWERA-CMPTAB /141
DUMMY-CMPTAB /142
LOWERC-CMPTAB /143
DUMMY-CMPTAB /144
LOWERE-CMPTAB /145
DUMMY-CMPTAB /146
DUMMY-CMPTAB /147
DUMMY-CMPTAB /150
LOWERI-CMPTAB /151
DUMMY-CMPTAB /152
DUMMY-CMPTAB /153
LOWERL-CMPTAB /154
DUMMY-CMPTAB /155
LOWERN-CMPTAB /156
LOWERO-CMPTAB /157
LOWERP-CMPTAB /160
DUMMY-CMPTAB /161
DUMMY-CMPTAB /162
LOWERS-CMPTAB /163
DUMMY-CMPTAB /164
LOWERU-CMPTAB /165
DUMMY-CMPTAB /166
DUMMY-CMPTAB /167
LOWERX-CMPTAB /170
LOWERY-CMPTAB /171
DUMMY-CMPTAB /172
DUMMY-CMPTAB /173
VRTBAR-CMPTAB /174
DUMMY-CMPTAB /175
TILDE-CMPTAB /176
DUMMY-CMPTAB /177
/
DUMMY-CMPTAB /200
GRAVE-CMPTAB /201
ACUTE-CMPTAB /202
CIRCUM-CMPTAB /203
TILDE-CMPTAB /204
DUMMY-CMPTAB /205
DUMMY-CMPTAB /206
DUMMY-CMPTAB /207
DBLQT-CMPTAB /210
DUMMY-CMPTAB /211
STAR-CMPTAB /212
COMMA-CMPTAB /213
DUMMY-CMPTAB /214
DUMMY-CMPTAB /215
DUMMY-CMPTAB /216
DUMMY-CMPTAB /217
/
/ The secondary tables are each terminated with a 0000. Each entry is
/ two words: The first is the 2's complement of a character that forms
/ a valid compose sequence with the first character (that pointed to
/ this table), the second word is the resulting composed character
/
DUMMY, 0000 / Dummy table , just a terminator
/
SPACEX, -042; 042
-047; 047
-136; 136
-140; 140
-176; 176
-052; 260
0000
/
/
DBLQT, -040; 042
-141; 344
-145; 353
-151; 357
-157; 366
-165; 374
-171; 375
-101; 304
-105; 313
-111; 317
-117; 326
-125; 334
-131; 335
0000
/
ACUTE, -040; 047
-101; 301
-105; 311
-111; 315
-117; 323
-125; 332
-141; 341
-145; 351
-151; 355
-157; 363
-165; 372
0000
CIRCUM, -040; 136
-101; 302
-105; 312
-111; 316
-117; 324
-125; 333
-141; 342
-145; 352
-151; 356
-157; 364
-165; 373
-060; 260
-062; 262
-063; 263
-056; 267
-061; 271
-057; 174
0000
/
GRAVE, -040; 140
-101; 300
-105; 310
-111; 314
-117; 322
-125; 331
-141; 340
-145; 350
-151; 354
-157; 362
-165; 371
0000
/
TILDE, -040; 176
-101; 303
-116; 321
-117; 325
-141; 343
-156; 361
-157; 365
0000
/
BANG, -041; 241
-120; 266
-160; 266
-123; 247
-163; 247
0000
/
LPAREN, -055; 173
-050; 133
0000
/
RPAREN, -055; 175
-051; 135
0000
STAR, -040; 260
-101; 305
-141; 345
0000
/
PLUS, -053; 043
-055; 261
0000
/
COMMA, -040; 054
-103; 307
-143; 347
0000
/
MINUS, -050; 173
-051; 175
-114; 243
-154; 243
-131; 245
-171; 245
-053; 261
0000
/
PERIOD, -136; 267
0000
/
SLASH, -057; 134
-074; 134
-136; 174
-103; 242
-143; 242
-125; 265
-165; 265
-117; 330
-157; 370
0000
/
ZEROX, -123; 247
-163; 247
-130; 250
-170; 250
-103; 251
-143; 251
-136; 260
0000
/
ONE, -136; 271
-062; 275
-064; 274
0000
/
TWO, -136; 262
0000
THREE, -136; 263
0000
/
LANGLE, -074; 253
-057; 134
0000
/
EQUAL, -114; 243
-154; 243
-131; 245
-171; 245
0000
/
RANGLE, -076; 273
0000
/
QUERY, -077; 277
0000
/
UPPERA, -101; 100
-141; 100
-137; 252
-140; 300
-047; 301
-136; 302
-176; 303
-042; 304
-052; 305
-105; 306
0000
/
LOWERA, -141; 100
-101; 100
-137; 252
-140; 340
-047; 341
-136; 342
-176; 343
-042; 344
-052; 345
-145; 346
0000
/
UPPERE, -140; 310
-047; 311
-136; 312
-042; 313
0000
/
LOWERE, -140; 350
-047; 351
-136; 352
-042; 353
0000
UPPERI, -140; 314
-047; 315
-136; 316
-042; 317
0000
/
LOWERI, -140; 354
-047; 355
-136; 356
-042; 357
0000
/
UPPERC, -054; 307
-057; 242
-174; 242
-060; 251
-117; 251
-157; 251
0000
/
LOWERC, -054; 347
-057; 242
-174; 242
-060; 251
-157; 251
-117; 251
0000
/
UPPERO, -140; 322
-047; 323
-136; 324
-176; 325
-042; 326
-105; 327
-057; 330
-123; 247
-163; 247
-130; 250
-170; 250
-103; 251
-143; 251
-137; 272
0000
/
LOWERO, -140; 362
-047; 363
-136; 364
-176; 365
-042; 366
-145; 367
-057; 370
-163; 247
-123; 247
-170; 250
-130; 250
-143; 251
-103; 251
-137; 272
0000
/
UPPERU, -140; 331
-047; 332
-136; 333
-042; 334
0000
/
LOWERU, -140; 371
-047; 372
-136; 373
-042; 374
0000
/
UPPERL, -055; 243
-075; 243
0000
/
LOWERL, -055; 243
-075; 243
0000
/
UPPERN, -176; 321
0000
/
LOWERN, -176; 361
0000
/
UPPERP, -041; 266
0000
/
LOWERP, -041; 266
0000
/
UPPERS, -060; 247
-117; 247
-157; 247
-041; 247
0000
/
LOWERS, -060; 247
-157; 247
-117; 247
-041; 247
-163; 337
0000
/
UPPERX, -060; 250
-117; 250
-157; 250
0000
LOWERX, -060; 250
-157; 250
-117; 250
0000
/
UPPERY, -055; 245
-075; 245
-042; 335
0000
/
LOWERY, -055; 245
-075; 245
-042; 375
0000
/
ULINE, -101; 252
-141; 252
-117; 272
-157; 272
0000
/
VRTBAR, -103; 242
-143; 242
0000
DEGREE, -040; 260
-101; 305
-141; 345
0000
/
CMPTEN= .
/------------------------------------------------------
/ MSG - Esc sequences to setup the Terminal for Connect
/------------------------------------------------------
/
/ MSGLV2 is used from SETUP as only first time init will
/ set G0 to G3 and do the Locking Shifts to GL and GR
/
MSG,
033;"(&177;"B&177 / ASCII Set in G0
033;")&177;"0&177 / Line Set in G1
033;"*&177;074 / MCS Set in G2
033;"+&177;076 / TCS Set in G3
033;"}&177 / LS2R
017 / LS0/SI
MSGLV2,
033;"[&177;"6&177;"2&177
";&177;"2&177;""&177;"p&177 / select leve 2 and C1 8bitters
0
/
*4000
/*************************************************************************
/ I/O buffer area
/*************************************************************************
/ screen buffer
SCRBUF,
ZBLOCK 170
0
SCRBUF / put addres of start here
PAGE
/ keyboard buffer
KEYBUF,
ZBLOCK 170
0
KEYBUF / addres of start
PAGE
/ comms output buffer
OBUF,
ZBLOCK 170
0
OBUF / addres of start
PAGE
/ comms input buffer
IBUF,
ZBLOCK 170
0
IBUF / address of start
PAGE
/---------------------------------------------------------------