File CP1A

Directory of image this file is from
This file as a plain text file

[CP1
[PAGE 1 RESIDENT ROUTINE
[EMPTY CONTAB ROUTINE
$20
0  [WORK CFP
? [NEXT CONTAB INDEX
[
8W=2000+6R+15  [LVI
[
[
#6P LDA
0
STC 4Y-4  [LINK
STC 5Z  [CONTAB NOT EMPTY
[
[FOR *T*H*I*S* ROUTINE
[PAGE 1 INDEX REG ARE
[2=CONTAB PTR
[3=LEN FP #
[4=LVI
[5=LVU
[6=UNIT[FD3]
[7=LEN FP#+1=LEN CONTAB ENTRY
[10=FB2-12[FD3]
[11=BUF START ADDR
UMB 3W  [P0
LDA
6R+2000+27  [LEN FP#
[
3W=0  [PAGE 0
3X=1  [PAGE 1
3Y=2  [PAGE 2
3Z=3  [PAGE 3
[
STA
3
ADA i
1
STA 
7
ADM
2+2000  [P0 CONTAB PTR
SAE i
4|2377
JMP 4Y  [CONTAB NOT EMPTY
LDA
8W  [LVI
STA
4
COM
ADA
6R+2000+25  [LVU
APO i
JMP 4Y-3  [LVI<LVU
[
LDA i
4000
ADD 11  [BUF START ADDR
SAE
5Z+11  [TEST FOR EMPTY BUF
JMP 5V  [OUTPUT PARTIAL BLOCK
LDA i
4|2H-6
UMB 3W  [P0
STA
2000+2  [CONTAB PTR
LDA
4  [P1,LVI
STA
8W  [P0,LVI
LMB 3W  [P0
JMP  [RETURN
[
[
CLR
COM
STC 5Z  [CONTAB EMPTY INDICATOR
[GATHER CONSTANTS
#4Y LDA i
3777-2H  [CONTAB PTR
ADD 7  [LEN FP# +1
COM
STC 2  [START OF CONTAB 
[UMB SET TO 0 AT THIS POINT
LDA 
8W  [LVI
STC 4
LDA
6R+2000+25  [LVU
STC 5
LDA
6N+2000  [UNIT[FD3]
STC 6
[
COM
STA
2000+9H+12  [NO SYMTAB BLOCK 2
[
LDA
9H+15+2000
BCL i
0377  [CLR WITHIN BUF BITS
STC 11
LDA
2000+9H-2  [-FB2+12[FD3]
COM
STC 10
[
UMB 3Z  [CONTAB PAGE,P3
ADD 2  [CONTAB PTR
ADD 7  [LEN CONTAB ENTRY
STC 1
LDA 1  [NXT INDEX IN CONTAB
STC 6P-1
ADD 6P+12  [=1
ADD 4  [P1,LVI
AZE i
CLR
STA
4  [P1,LVI
JMP 5W  [CONVERT LVI TO BN
[1 PTS TO WORD,BLOCK
LDA 1  [REL WORD
ADD 11  [BUF BASE ADDR
STC 5Z+11  [SET WORD ADDRESS
SET 12
1
LDA i 12  [LOAD REL BLOCK
COM
ADD 10  [FB2-12[FD3]
STC 6P-2  [CFP
LDA 1  [REL WORD
AZE i
JMP 5Z-1  [W=0=>NO READ
LDA
11  [BUF START ADDR
ROL 1
[ACC=QN|0
ADD 10  [FB2-12[FD3]
COM
ADA i 1  [REL BLOCK
COM
STC p+7  [QN|BN
ADD 6  [UNIT[FD3]
ADA i
RDC i
STC p+2
[
UMB 3Y  [P2
0  [RDC i
0  [QN|BN
[
[
SRO i
#5Z 7777  [0=>CONTAB NOT EMPTY
JMP p+7  [CONTAB EMPTY
LDA
4  [P1,LVI
COM
ADD 6P-1  [NEXT CONTAB INDEX
AZE i
JMP 4Z  [LVI=NXT INDEX
[
SET i 1
0  [WORD
LDA
3  [LEN FP #
COM
STC 12  [TEMP COUNTER
UMB 3Y  [SYMTAB PAGE
LDA i
2000  [EXP FOR 0.0
STA 1
CLR
APO  [SKIP
STA i 1
XSK i 12
JMP p-2
[5Z+27
LDA
4  [P1,LVI
COM
ADD 5  [LVU
AZE i
JMP 4Y-24  [RETURN
LDA i
1
ADM
4  [P1,LVI
LDA
3  [LEN FP #
ADM
5Z+11  [WORD
BCE i
7400
ADD 3  [LEN FP #
APO
JMP 5Z-1  [NOT EOB
LDA
11  [BUF START ADDR
BSE i
4000
STC 5Z+11  [WORD
JMP 5V  [OUTPUT BLOCK
LDA i
-1
ADM
6P-2  [CFP
COM
UMB 3W  [P0
ADA
6R+2000+7  [FD3[CFP]
AZE
APO i
JMP p+2
JMP 5Z-1  [NEXT
LMB 3W  [P0
JMP 2E+15  [ERR:EOF TARGET CODE FILE
[
[
#4Z LDA
3  [LEN FP #
COM
STC 12
SET 1
5Z+11  [WORD
[SET CONSTANT IN DATA BUFFER
UMB 3Z  [CONTAB PAGE
LDA i 2
UMB 3Y  [BUF PAGE
STA 1
JMP p+5
UMB 3Z  [CONTAB PAGE
LDA i 2  [
UMB 3Y  [BUF PAGE
STA i 1
XSK i 12
JMP p-5
[
[
LDA 
3  [LEN FP #
COM
ADM
2
UMB 3Z  [CONTAB PAGE
LDA 2  [NXT INDEX
STC 6P-1
ADD 2  [P1,CONTAB PTR
UMB 3W  [P0
SAE
2000+2  [P0,CONTAB PTR
JMP p+5
CLR
COM
STC 5Z  [SET EMPTY CONTAB INDICATOR
JMP 5Z+27
LDA
7  [LEN CONTAB EBTRY
COM
ADM
2  [P1 CONTAB PTR
JMP 5Z+27
[
[
#5V LDA
11  [BUF START ADDR
ROL 1  [ACC=QN|0
ADD 6P-2  [CFP
STC p+7
ADD 6  [UNIT[FD3]
ADA i
WRC
STC p+2
[
UMB 3Y  [P2
0  [WRC
0  [QN|BN
JMP 0  [RETURN VIA 0
[
[
[
[ACC=LVI
0  [WORD
0  [BLOCK
#5W COM
STC 1
ADD 0
STC p+11  [LINK
UMB 3W  [P0
STC 5W-1  [0->BLOCK
STC 5W-2  [0->WORD
#5X ADD 1
AZE
JMP p+4
SET i 1
5W-2  [BLOCK
RETURN
[
STC 1
LDA
2000+6R+27  [LEN FP #
ADM
5W-2  [WORD
ADA  [TEST FOR VALID ADDRESS
2000+6R+27  [LEN FP #
ROL i 4
LZE
JMP p+4  [NEW BLOCK
LDA i
1
JMP 5X
[
LDA
p-3  [=1
ADD 5W-1  [BLOCK
STC 5W-1
STC 5W-2  [WORD
JMP p-10
[
[STACK LPAREN
#8B LDA i
1377
LMB 3W  [P0
JMP 2X  [LINK ROUTINE 
JMP 9E
LMB 3W  [P0
1Z
[POP LPAREN
#8C LMB 3W  [P0
JMP 2X
JMP 9F
SAE i
 1377
JMP p+3
LMB 3W  [P0
1Z
[
LMB 3W  [P0
JMP 2E
[GOTO
#6Z LDA i
20
LMB 3W  [P0
JMP 9X
[PRINT CR LF
#9L LDA i
 21
LMB 3W  [P0
JMP 2X
JMP 1M
LMB 3W  [P0
JMP 7C  [EOL
[PRINT TEXT
LMB 3W  [P0
JMP 2E  [NO " TO TERMINATE TEXT
#9M LDA i
 22  [RP START TEXT
LMB 3W  [P0
JMP 2X
JMP 1M  [OUT SYL
LMB 3W  [P0
JMP 2X
JMP 1J  [INCHARA
SHD i
1200  [EOL
JMP 9M-2  [NO " TO TERMINATE TEXT
SHD i
 "";
JMP p+27  [DONE
STH i
 0000
LMB 3W  [P0
JMP 2X
JMP 1J  [INCHARA
SHD i
1200  [EOL
JMP 9M-2  [NO " TO TERMINATE TEXT
SHD i
 "";
JMP p+6
ADD p-12
LMB 3W  [P0
JMP 2X
JMP 1M  [OUTSYL
JMP 9M+5  [MORE
LDA
p-20
ADA i
 13  [DEL
LMB 3W  [P0
JMP 9X  [1M,1Z
[
LDA i
1313  [TERMINATE
LMB 3W
JMP 9X
[PRINT STACK
#9N LDA i
 23
LMB 3W  [P0
JMP 2X
JMP 1M
LMB 3W  [P0
JMP 7I  [POP RPAREN
[PRINT TAB TO NEXT FIELD
#9O LDA i
 24
LMB 3W  [P0
JMP 9X
[
[
[
[#INPUT DECIMAL CONSTANT
[  MUST BE CALLED AFTER TEST FOR VARIABLE
[   THIS ROUTINE INPUTS A BASIC CONSTANT INTO BUFFER
[STARTING AT FULLWORD PAST REGISTER 2 [H BIT SET].
[   THE INPUT ROUTINE MUST RETURN THE NEXT CHAR AND
[ALSO MAKE $13 POINT TO ITS HALFWORD.
[   THE #TEST ROUTINE IS "SKIP IF AC CHAR IS DIGIT"
[#######
[#INPUT CONSTANT
[  RETURN TAGS
[   JMP 8X FOR SYNTAX ERROR [NO DIGITS READ]
[   JMP 8Y FOR RANGE ERROR [RANGE: -1024 TO 1022]
[   JMP 8Z FOR NUMBER CONVERTED
[  PRECISION [NUMBER OF SIGNIFICANT DIGITS SAVED]
[   8P
[  ROUTINE TO INPUT THE NEXT CHARACTER
[   MUST START AT 8Q.
LMB 3W  [P0
JMP 1G
[
LMB 3W  [P0
JMP 2E  [OVERFLOW
[
LMB 3W  [P0
JMP 2E+11  [CONSTANT SYNTAX ERROR
#8Q LDA
 0
STC p+12
LMB 3W  [P0
JMP 2X
JMP 1K+1
UMB 3W  [P0
LDA
2013  [INPUT POINTER
STC 13
UMB 3Z  [P3
LDH 13
RETURN
8P=10
[INCON  -- INPUT CONSTANT
[
1  [CONSTANT
-1  [CONSTANT
[
#1V UMB 3W  [P0
LDA
2002
STC 2
LMB 3W  [P0
JMP 2X
JMP 9I  [BACKUP 13,CLR
UMB 3Z  [P3
STAi2
STC p+147  [EXP SIGN
SETi3
 -8P  [#DIGITS
SETi14 [SCALE FACTOR [-0 AT LEADING ZEROS
 -0
SETi6 [XSK 6 =SKIP IF LEFT OF DOT
 -0
SET 5
2
COM
JMP p+3
ADD 14
STC 14
STC p+111 [DIGIT READ
[READING DIGITS
JMP 8Q  [INPUT
JMP p+22  [#TEST
 JMP p+12 [DOT TEST
AZE
 JMP p+25 [ACCEPT
XSK 14    [SKIP IF LEADING ZERO
 JMP p+23 [ACCEPT
XSK 6    [SKIP IF LEFT OF DOT
 AZE [SKIP
JMP p-11-1 [LEADING ZEROS LEFT OF DOT
ADD 1V-1  [=-1
JMP p-13-3 [SF=SF-1
[DOT TEST
XSK 6
 JMP p+26+1 [TEST "E"
SAEi
  64  ["."
 JMP p+23+1 [TEST "E"
XSKi6 [NOSKIP
JMP p-22 [MORE READING
[#TEST -- SKIP IF DIGIT
ADAi
 -11
APO
 XSKi0
LDH 13
JMP 0
[ACCEPT DIGIT
STHi5
LDA
 14    [SF
AZEi
 CLR
XSK 6
 JMP p+2
ADD 1V-2  [=1
XSKi3
 JMP p-42-2 [MORE READING
[TEST "E"
JMP 8Q  [INPUT
SHDi
  "E;
 JMP p+7 [AFTER E
JMP p-24  [#TEST
 JMP p+54 [DONE
XSK 6
 JMP p-7
XSKi14    [SF=SF+1
JMP p-11
[READ EXPONENT SIGN
JMP 8Q  [INPUT
SHDi
  "+;
 JMP p+5
SAEi
 17   ["-"
JMP p+3
STC p+45 [EXP SIGN
JMP 8Q  [INPUT
JMP p-43 [#TEST
JMP 8Q-2  [ERROR: MUST BE A DIGIT
[READ IN EXPONENT
STA 2
JMP 8Q  [INPUT
JMP p-47  [#TEST
 JMP p+31 [DONE
STC 0
LDAi
 12
MUL 2  [FRACTION
AZE
JMP 8Q-4  [OVERFLOW
ZTA
ADD 0
OVFi
JMP 8Q-4  [OVERFLOW
JMP p-16 [NEXT DIGIT
[SETUP ZERO RETURN
SROi
 -0  [DIGIT READ FLAG
JMP 8Q-6  [SYNTAX: NO DIGITS READ
ADD p-62  [=6000
STC 14
STA 2
JMP p+4
[ZERO?
XSK 14  [SF
 AZE [SKIP
JMP p-11 [SETUP ZERO
STHi5    [PADDING
XSKi3
 JMP p-2
[DONE READING NUMBER
CLR
XSK 3
 JMP p-10 [ZERO?
LDA 2  [EXP
SROi
  0  [EXP SIGN
 COM
ADD 14  [SF
OVFi
JMP 8Q-4  [OVERFLOW
SCR 12
AZE
JMP 8Q-4  [OVERFLOW
SCR 1
ZTA
LMB 3W  [P0
JMP 8A+2  [MANIPULATE CONSTANT AS FP #
[END INCON  5|30|69
[$1,2,3,5,6
[
$0777
0
[
[



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search