File KENB02

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

[PROGRAM KENB02
[===============
[
[
[TO OPERATE KENB02
[==================
[1. AFTER LOADING, PRESS START 20.
[2. FILL IN SCOPE Q AND A.
[   ALL HOR. COORD ARE 3 DIGIT NOS. BETW. 000 AND 777
[   ALL VERT. COORD ARE 3 DIGIT NOS PRECEDED BY A +
[       OR  A  - SIGN. 3 DIGIT NOS RANGE FROM +377
[       TO -377.
[   STIM DUR IN MSEC.
[   VAR CHOSEN BY LETTER FROM LETTER ON SCOPE FACE
[       IN FRONT OF VARIABLE YOU WANT TO RANDOMIZE
[   NO TRLS - ANY POS 3 DIGIT NO. UP TO 200.
[   VALUES OF RAND VAR. REQUIRE A + OR - SIGN
[         FIRST. THIS IS FOLLOWED BY A 3 DIGIT NO.
[3. CAN CORRECT SCOPE VALUES BY USING DOT ON SCOPE
[       TO LOCATE FIRST  LOC.  TO BE CORRECTED.
[       PRESS <CR> KEY TO MOVE ON
[4. AFTER SCOPE FILLED IN, SET SNS 0 AND 1, 
[     AND THEN PRESS <LF>. VERN LINES APPEAR.
[--------------
TOP
[--------------
[COUNTERS
[--------
[    USED BY Q|A: 1-6
[    USED DURING CONV TO 12-BIT: 2-5
[    USED DURING INSERTION OF RANDOM # INTO LINE DISPL:12,13
[USED DURING CLEARING OF 2001-2577 DATA STORE
[     14, 15
[USED AS TRL CNTRS
[     14: STIM
[     15: RESP
[     16: # TRLS REMAIN
[    USED DURING DISPLAY:5 HORIZ LN A
[                        6 # PTS IN LN A
[                         7 HORIZ LN B
[                       10 # PTS IN LN B
[                       11 STIM DUR
[SENSE SWITCHES
[--------------
[SNS 0: UP FOR COMPLETELY RANDOMIZED DESIGN
[        DOWN FOR RANDOMIZED BLOCKS DESIGN
[SNS 1: UP FOR HALT AFT A BLOCK OF TRIALS
[       DOWN FOR CONTINUE THROUGH TO END
[SNS 5: UP IF WISH TO CLEAR FREQ TABLE AFTER EACH RUN
[       DOWN IF WISH TO CUMULATE RESPONSE DIST OVER RUNS.
[-------------------------------------
[GLOBAL DEFINITIONS
QA= 0310 [Q+A ENTRY POINT
SXLNUM= 2 [# OF CONSEQUTIVE RESPONSE CHANNELS
JSR= JMP [TO DISTINGUISH SUB-ROUTINES FROM SIMPLE JUMPS
LASNERAN=334 [CURRENT BLOCK WHERE Q+A IS
TOP
$20
#STRT   UMB 3 [WHERE WE WANT Q+A
RDC
4|LASNERAN [READ IN RANDOM
RDC
5|LASNERAN+1 [ALSO Q+A
#ARND   LMB 3 [RESTORE ZAP IN BANK 3 TO STH i 3. THUS, IF PRESS START 20 WILL LOSE OLD DATA.
[TO RETAIN OLD DATA START AT LOC. 27.
JMP 760
[ON RETURNING FROM LOADING RANDOM INTO CORE CHANGE
[LOCATION 20 TO NOP SO THAT SUBSEQUENT PRESSES OF
[START 20 DO NOT JMP BACK TO REQUIRE LOAD OF 
["RANDOM" AGAIN.
LDA i [LOAD AC WITH
JMP ARND [BYPASS INSTRUCTION
STC STRT [THIS PREVENTS RELOAD
[CLR BLOCK COMPLETION TESTER
STC A63H
STC A63I
STC A63J
STC A63K
STC A63L
[CALL TO Q+A
[-----------
#A69R   UMB 2 [TELL IT WHERE DATA IS
LMB 3 [WHERE Q+A IS
JMP QA [ENTER Q+A
A69S [LOCATION OF QUESTION BUFFER AS TEXT STRING BEGINS AT 9S.
A69U [LOCATION  OF ANSWER BUFFER AS 6-BIT CODE BEGINS AT 9U.
LMB 3
JMP 765 [KEEP OLD DATA NEXT TIME
TOP
[BEGIN MAIN PROGRAM HERE
[------------------------
[   CONVERSION OF COORD, VAR, AND STIM DUR TO 12-BIT OCTAL
SET i 5
A61A-A65L-1 [#LOCATIONS IN ANSWER BUFFER
SET i 3
A61A [STARTIN LOCATION FOR 12-BIT ANSWERS
SET i 4
A61A-1
SET i 2
A69U
CLR
STC A63C
#A63B   LDH i 2
SHD i
7000 ["
JMP A63B
SHD i
1700 [-
JMP A63D
SHD i
2000 [+
JMP A63B
STH 3
LDH i 2
ROL 3
STH i 3
LDH i 2
ADM i 4
LDA i
#A63C   0
SAE i
0017
JMP A63E
JMP A63F
#A63D   STC A63C
JMP A63B
#A63F   LDA 4
COM
STA 4
#A63E   LDH i 3 [SET REGISTER 3 TO NEXT LOCATION FOR STORING 12-BIT ANSWERS.
XSK i 5
JMP A63B-2
TOP
[CLR 2001-2577 FOR DATA STORE
[----------------------------
SET i 14
-577
SET i 15
2000
CLR
STA i 15
XSK i 14
JMP p-2
[CLR FREQ DST IF SNS 5 IS UP
[---------------------------
SNS 5
JMP A67B
SET i 14
-200
SET i 15
A23J-1
STA i 15
XSK i 14
JMP p-2
[SET CNTR PTR  TO DATA STORE
[---------------------------
#A67B   SET i 14
2001 [STIM
SET i 15
2301 [RESP
LDA
A61K [# TRLS
COM
STC 16
[WHICH PARAMETER IS TO BE RANDOMIZED
[-----------------------------------
LDA
A65A
BCL i
7740
ADA i [COMPUTE ADDRESS OF PARAMETER TO BE RANDOMIZED
A61A-24
STC 12
[ISSUE CALL TO "RANDOM"
[----------------------
#A67A   LDA i
1
LMB 3
JMP 20
TOP
[RETURN FROM "RANDOM" HERE WITH RANDOM # IN LINC
[ACCUMULATOR
BCL i
7770
STA 14 [DATA STORE
[IS RANDOM # ILLEGAL
[-------------------
SAE i
5
JMP p+2
JMP A67A
SAE i
6
JMP p+2
JMP A67A
SAE i
7
JMP p+2
JMP A67A
[IF RANDOM # IS NOT ILLEGAL THAN DO NEXT INST.
ADA i [COMPUTE ADDRESS OF VALUE OF RANDOM
[VARIABLE CHOSEN BY "RANDOM"
A65H
[CHOOSE COMPLETELY RANDOMIZED OR RANDOMIZED
[------------------------------------------
[BLOCKS DESIGN
[-------------
SNS i 0
JMP A64K [IF UP JMP TO DISPLAY
[IF DOWN CONTINUE IN RANDIMIZED BLOCKS
[
TOP
[HAS THIS RANDOM # BEEN USED IN THIS BLOCK
[-----------------------------------------
#A62H   SAE i
A65H
JMP A62I
SAE i
#A63H   0000
JMP p+2
JMP A67A
STA
13
STC A63H
JMP A64J [JMP TO LOAD RANDOM # IN TEST DISP. AND DISP
#A62I   SAE i
A65I
JMP A62J
SAE i
#A63I   0000
JMP p+2
JMP A67A
STA
13
STC A63I
JMP A64J
#A62J   SAE i
A65J
JMP A62K
SAE i
#A63J   0000
JMP p+2
JMP A67A
STA
13
STC A63J
JMP A64J
#A62K   SAE i
A65K
JMP A62L
SAE i
#A63K   0000
JMP p+2
JMP A67A
STA
13
STC A63K
JMP A64J
#A62L   SAE i
A65L
JMP A62Z
SAE i
#A63L   0000
JMP p+2
JMP A67A
STA
13
STC A63L
JMP A64J
TOP
#A62Z   HLT [ERROR
#A64K   STC 13 [TO BE USED ONLY IN COMPLETELY
[RANDOMIZED DESIGN
#A64J   LDA 13 [LOAD VALUE OF RANDOM VARIABLE CHOSEN
STA 12 [PUT IT INTO LOC FR WHICH TEST DISP TAKES VAL
[DISPLAYING
[----------
#Z3     LDA
A61J [STIM DUR
COM
STC 11
SET i 3
-100
XSK i 3
JMP p-1
SET i 3
400
SNS i 3
DIS 3
SXL i 7
JMP Z3
SNS i 2
JMP Z10
SXL i 13
JMP p-1
SXL 13
JMP p-1
SXL i 11
JMP p-1
SXL 11
JMP p-1
LDA i
76
ATR
#Z10    LDA i 
0
ATR
LDA i
60
ATR
TOP
[    FIRST SETUP OF LN A
[    -----------------
LDA
A61B
COM
ADA
A61D
ADA i
-1
STC A64G
SNS i 3
DIS 3
[    FIRST SETUP OF LN B
[    -------------------
LDA
A61F
COM
ADA
A61H
ADA i
-1
STC A64H
[    RESETUP LNS A AND B
[    -------------------
#A64A   CLR
SNS i 3
DIS 3
LDA
A61A
ADD L4000
STC 5
LDA
A61E
ADD L4000
STC 7
#A64B   SET i 6
#A64G   0 [#PTS IN LN A
SET i 10
#A64H   0 [#PTS IN LN B
SNS i 3
DIS 3
TOP
[    DISPLAY LN A
[    ------------
LDA
A61B
#A64C   DIS 5
ADA i
-1
XSK i 6
JMP A64C
CLR
SNS i 3
DIS 3
[   DISPLAY LN B
#A64E   LDA
A61F
#A64F   DIS 7
ADA i
-1
XSK i 10
JMP A64F
SNS i 2
JMP p+4
SXL i 12
JMP A64A
JMP Z1
XSK i 11
JMP A64A
[RECORD RESPONSE
#Z1     LDA i
61
ATR
CLR
SNS i 3
DIS 3
SET i 2
-10
SET i 4
-100
XSK i 4
JMP p-1
XSK i 2
JMP p-5
TOP
LDA i
SXL 0
STC INST
SET i 17
-SXLNUM [# OF CHANNELS
#INST   p-p [SXL N
JMP COMM
LDA i
1
ADM
INST
ADA i
-400 [-]SXL 0*
XSK i 17
JMP INST
JMP Z1
 
#COMM   STA 15
ROL 3
ADA
13
ADA i
A23J-A65H
STC 17
LDA i
1
ADM 17
[INCREMENT TRIAL CNTRS AND TEST IF END
[-------------------------------------
XSK i 14
XSK i 15
[TEMP : SET DELAY BETWEEN TRLS
CLR
STC 17
SET i 2
-300
#Z2     XSK i 17
JMP p-1
SET i 3
400
SNS i 3
DIS 3
XSK i 2
JMP Z2
XSK i 16
JMP F6 [CONT TRLS
HLT [PRESS RESUME TO CONT TO TYPEOUT
JMP T1  [TYPEOUT
TOP
[TEST TO SEE IF ALL VALUES OF VAR HAVE BEEN
[RUN IN THIS BLOCK 
[-------------------------------------------------
#F6     CLR
SAE
A63H
JMP p+2
JMP A67A
SAE
A63I
JMP p+2
JMP A67A
SAE
A63J
JMP p+2
JMP A67A
SAE
A63K
JMP p+2
JMP A67A
SAE
A63L
JMP p+2
JMP A67A
STC A63H
STC A63I
STC A63J
STC A63K
STC A63L
[CONTINUE TEST DISPLAY OR BACK TO Q|A
SNS i 1
JMP A69R
JMP A67A
TOP
#T1     JSR CRLF [2 <CR>,<LF>
JSR CRLF [FOR NEATNESS
SET i 6 [SETUP
A65H-1 [VARIABLE POINTER
SET i 7 [SETUP FREQUENCY
A23J-1 [DISTRIBUTION POINTER
SET i 4 [SETUP THE
-5 [VARIABLE COUNT
#LOOP   LDA i 6 [GET A VARIABLE
JSR PRTDEC [PRINT IT
SET i 5 [SETUP THE
-SXLNUM [RESPONSE COUNT
#LOOP2  JSR BLANKS [PRINT SEPARATORS
LDA i 7 [GET A FRQ DIST ELEMENT
JSR PRTDEC [PRINT IT
XSK i 5 [DONE ALL YET 
JMP LOOP2 [NO, GO BACK
JSR CRLF [GOTO NEXT LINE
ADD 7 [GET POINTER
BSE i [FORCE IT TO
7 [THE NEXT GROUP
STC 7 [SAVE IT
XSK i 4 [DONE ALL YET 
JMP LOOP [NO, GO DO ANOTHER LINE
RSW [GET RIGHT SWITCHES
APO i [BIT [0_ SET 
JMP NOSAVE [NO, FORGET IT
UMB 3 [WHERE RQANDOM IS
WRC [WRITE OUT
4|LASNERAN [RANDOM ONLY
#NOSAVE HLT [STOP
JMP NOSAVE [MAKE SURE
 
#L4000  4000 [CONSTANT
TOP
$1400
#A61A   0 [LN A TOP PT. HOR COORD
#A61B   0 [LN A TOP PT. VERT COORD
#A61C   0 [LN A BOT PT. HOR COORD
#A61D   0 [LN A BOT PT. VERT COORD
#A61E   0 [LN B TOP PT. HOR COORD
#A61F   0 [LN B TOP PT. VERT COORD
#A61G   0 [LN B BOT PT. HOR COORD
#A61H   0 [LN B BOT PT. VERT COORD
#A61J   0 [STIM DUR
#A65A   0 [LETTER OF ITEM THAT IS VARIABLE
#A61K   0 [# OF TRLS
#A65H   0 [VAR 0
#A65I   0 [VAR 1
#A65J   0 [VAR 2
#A65K   0 [VAR 3
#A65L   0 [VAR 4
$1500
TOP
[PRTDEC - SIGNED DECIMAL PRINT
#PRTDEC SCR i 1 [SIGN TO LINK BIT
ROL i 1
APO i [MAKE NEGATIVE
COM [IF POSITIVE
STC A28N [SAVE IT
ADD 0 [SAVE RETURN
STC A28P
SET i 1 [SETUP
NBUFF-1+4000 [OUTPUT BUFFER
LDA i [LOAD POSSIBLE SIGNS
#BOSIGN 5540 [<MINUS><BLANK>
LZE [GET CORRECT SIGNS
ROR 6
STH i 1 [AND STORE IT
SET i 2 [SET ADDEND POINTER
A28Q-1
#NLOOP  JSR A28M [CONVERT A DIGIT
AZE [IS IT A LEADING ZERO
JMP A28L [NO
ADD BOSIGN [YES: MOVE THE SIGN RIGHT ONE PLACE
STH 1 [STORE A SPACE OVER THE SIGN
LZE [GET THE CORRECT SIGN
ROR 6
STH i 1 [AND STORE IT
JMP NLOOP [  THEN CONTINUE CONVERTING
 
#A28L   STH i 1 [STORE A DIGIT
JSR A28M [CONVERT NEXT DIGIT
JMP A28L [AND STORE IT
 
 
#BLANKS LDA i [SUB-ROUTINE TO OUTPUT <BLANKS>
240 [ASCII BLANK
514 [OUTPUT IT
514 [AGAIN
CLR [CLEAN UP
JMP 0 [RETURN
 
#CRLF   LDA i [<CR> ,<LF> SUB-ROUTINE
215 [ASCII FOR <CR>
514 [OUTPUT IT
LDA i [NOW LOAD AN
212 [ASCII <LF>
514 [OUTPUT IT
CLR [CLEAN UP
JMP 0 [RETURN
TOP
[LITTLE SUBROUTINE TO DO THE CONVERSION
#A28M   LDA [SAVE RETURN
0
STC PRET1
SET i 3 [SET DIGIT COUNTER
1777
XSK i 2 [MOVE ADDEND POINTER
ADD A28N [LOAD THE VALUE
XSK i 3 [BUMP COUNTER
STA i [SAVE REMAINING PART
#A28N   0
ADA 2 [TRIAL ADD
APO [STILL NEGATIVE
JMP p-5 [YES: COUNT AND ADD AGAIN
LDA [NO:  GET THE COUNTER
3
SRO i [LAST DIGIT
3567
#PRET1  JMP 0 [NO:  BACK TO THE SUBROUTINE
STH i 1 [YES: STORE IT
SET i 1 [SETUP
NBUFF-1+4000 [OUTPUT POINTER
#PRLOOP LDH i 1 [GET A CHARACTER
AZE i [END OF LIST 
#A28P   JMP 0 [YES, RETURN TO CALLING PROGRAM
BSE i [MAKE IT
200 [ASCII
514 [PRINT IT
JMP PRLOOP [KEEP GOING
[ADDEND TABLE
#A28Q   1750
 144
  12
   1
 
#NBUFF  0
0
0
 
A29V= 2001 [STIM DATA STORE
A23J=3500 [FREQ DIST STORE
TOP
$2600
[QUESTION BUFFER
[---------------
#A69S   "             HOR    VERT
            -----  ------
LN A TOP PT.A"
""3"
"  "
"B""
"4
---- BOT PT."
"C""
"3  D"
""4"
TOP
"
LN B TOP PT.E"
""3"
"  "
"F""
"4
---- BOT PT."
"G""
"3  H"
""4"
"
 
STIM DUR "
TOP
"J""
"3
--------
 
VAR"
""3"
"  #TRLS "
"K""
"3
---      ----
VAR  1"
".""
"4 2."
""4"
"
---  3."
""4"
" 4"
".""
"4
     5"
".""
"4:"
TOP
[ANSWER BUFFER
[--------------
#A69U   0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 [END OF ANSWER BUFFER



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