Trailing-Edge
-
PDP-10 Archives
-
decuslib20-03
-
decus/20-0094/pdp8.doc
There are no other files named pdp8.doc in the archive.
PDP-8 SIMULATOR
===============
--------
ABSTRACT
========
THE PDP-8 SIMULATOR HAS TWO MAIN PARTS, THE
FIRST ACCEPTS INPUT IN PAL III LANGUAGE AND ASSEMBLES IT, AND
THE SECOND EXECUTES THE INPUT PROGRAM.
AT EACH STAGE OF OPERATION, INPUT, ASSEMBLY OR EXECUTION
THE SIMULATED PDP-8 MEMORY CAN BE EXAMINED, IN OCTAL DIGITS.
THE SIMULATOR ASSEMBLES AND EXECUTES MANY OF THE PAL III
INSTRUCTIONS, BUT ONLY A PORTION OF THE INPUT-OUTPUT INSTRUCTIONS,
AND NONE OF THE MICROPROGRAMMING FACILITIES ARE AVAILABLE.
COMMUNICATION AND INTERACTION WITH THE SIMULATOR ARE DONE
THROUGH THE TELETYPE , WHICH IS ALSO THE ONLY PERIPHERAL DEVICE
HANDLED BY THE SIMULATOR.
PROGRAMS CAN BE STORED AND RECALLED USING THE
DISK OPERATIONS FACILITIES.
THIS PROGRAM WAS WRITTEN IN MACRO-10 ON THE BRANDEIS
UNIVERSITY PDP-10 COMPUTER. WE WISH TO THANK THE COMPUTER STAFF
AND PROFFESOR MAX CHRETIEN FOR THEIR COOPERATION.
DESCRIPTION, PRINCIPLES OF OPERATION AND GENERAL FEATURES OF
PDP-8 SIMULATOR,
MACRO-10 PROGRAM, WRITTEN ON BRANDEIS' PDP-10 COMPUTER BY
ODED SHMUELI '77
KWABENA AKUFO '77
ADVISOR: MAX CHRETIEN
PROF. OF PHYSICS
BRANDEIS UNIVERSITY
DATE: OCTOBER 1975
C O N T E N T S
= = = = = = = =
1. BASIC PRINCIPLES
2. USERS' VIEW (SIMPLIFIED)
3. GENERAL FEATURES
4. CONCLUSION
APPENDIX A. SAMPLE PROGRAM IN PAL III
APPENDIX B. GENERAL FLOWCHART
APPENDIX C. PROCEDURAL USE OF SIMULATOR INCLUDING
(I) PROGRAM INPUT
(II) EXAMINATION OF LOCATIONS
(III) WRITING ON, AND READING FROM DISK
(IV) EXECUTION AND EXAMINATION OF RESULTS
(V) MODIFICATION OF PROGRAM
(VI) READING OF A STORED PROGRAM FROM DISK,
EXECUTING IT.
APPENDIX D. AVAILABLE INSTRUCTIONS
APPENDIX E. PROGRAM LISTING OF THE PDP-8 SIMULATOR
BASIC PRINCIPLES
THE PROGRAM IS MADE UP OF TWO MAIN PARTS. THE FIRST
PART CONSISTS OF AN INPUT UNIT FOR PAL III PROGRAMS AND AN
ASSEMBLER. THE OUTPUT OF THE ASSEMBLER IS IDENTICAL TO
THAT OF THE PDP-8 ASSEMBLER, AND IS STORED IN AN ARRAY
CALLED PDP-8.
THE SECOND PART OF THE PROGRAM, WHICH IS INDEPENDENT
OF THE FIRST, SIMULATES THE ACTUAL EXECUTION OF A PALL III
PROGRAM ON THE PDP-8. THIS PART CAN HANDLE MEMORY REFERENCE
INSTRUCTIONS, OPERATE MICROINSTRUCTIONS, AND INPUT/OUTPUT
1
TRANSFER INSTRUCTIONS. MICROPROGRAMMING AND AUTOINDEXING
FACILITIES ARE NOT AVAILABLE. SINCE THE TELETYPE IS THE
ONLY MEDIUM OF COMMUNICATION BETWEEN THE USER AND THE
SIMULATOR, THE INTERRUPT FACILITY OF THE PDP-8 IS NOT NEEDED
AND THEREFORE NOT SIMULATED EXCEPT FOR THE TELETYPE, WHICH IS
AN ACTUAL MEDIUM OF COMMUNICATION.
USERS' VIEW
A GOOD WAY TO DESCRIBE THE USE OF THIS SIMULATOR IS
THROUGH THE USE OF ILLUSTRATIONS FOLLOWED BY A GENERAL
DISCUSSION.
PROBLEM: WRITE A PROGRAM TO SUM THE NUMBERS 2,-3,10
REFER APPENDIX A FOR SAMPLE PROGRAM.
1.
REFER TO APPENDIX D FOR LIST OF INSTRUCTIONS AVAILABLE ON
THE SIMULATOR.
-2-
STEP 1.
IN THE MONITOR MODE TYPE
.EX PDP/M,TR.MAC
STEP 2.
THE USER WILL RECEIVE THE FOLLOWING MESSAGES AT THE
START OF THE EXECTION OF THE SIMULATOR PROGRAM:
.EX PDP/M.TR.MAC
LINK: LOADING
[LNKXCT PDP EXECUTION]
TYPE 1,2,3,4,5,6,7,A,B,C,D
B: COMPILE, C OR D: EXECUTE, 3: COPY FROM DISK, 6: WRITE N DISK
4: TO START WRITING PROGRAM WITH * (DESTROYS OTHER PROGRAMS ON FILE)
5: START PROGRAM INPUT (PRESERVES OTHER PROGRAMS ON FILE
UPPER CASE 1(!): INTERRUPT FACILITY TO EXAMINE COMPILATION ANYWHERE
CENT
FOLLOWING THE WORD 'CENT' AT THE END OF THE ABOVE
MESSAGES, TYPE '4'.
ADDITIONAL MESSAGES WILL BE OUTPUT.
4INITIALIZATION WILL BE DONE NOW
PD8 TABLE NUMBERED
INPUT PROGRAM
AFTER THE MESSAGE 'INPUT PROGRAM', THE USER SHOULD
TYPE AN ASTERISK(*) AND WAIT FOR THE OUTPUT OF A BLANK.
THEN TYPE THE STARTING LOCATION OF THE PROGRAM AND
RETURN THE CARRIAGE.
THE USER GETS THE MESSAGE
* 200
LC VALUE (*) KNOWN IS IN LC
THE USER WILL THEN START INPUT OF THE PROGRAM IN THE FOLLOWING WAY:
(1) LABELS,IF THEY EXIST SHOULD ALWAYS CONSIST OF TWO
CHARACTERS.IF THE LINE CONTAINS NO LABEL , CONTROL I
SHOULD BE TYPED. IN EITHER CASE , THE USER SHOULD WAIT UNTIL BLANKS
ARE OUTPUT AND THEN RESUME INPUT BY TYPING EITHER A COLON(:) OR COMMA(,).
COLON(:)INDICATES THAT WHAT FOLLOWS IS A MNEMONICS.
COMMA(,)INDICATES A NUMBER TO FOLLOW.
(2) MNEMONICS SHOULD BE A VALID PAL III INSTRUCTION ,
OTHERWISE THE USER WILL RECEIVE AN ERROR MESSAGE AND WILL BE
ENCOURAGED TO TRY AGAIN.
(3) INDIRECT ADRESSING IS DONE BY TYPING 'I' AFTER
THE MNEMONICS.
(4) IF THERE IS AN OPERAND IT MUST BE TWO CHARACTERS
LONG. AT THE END OF INPUT OF THE OPERAND THE TELETYPE WILL
AUTOMATICALLY MOVE TO TO THE NEXT LINE TO ACCEPT FURTHER INPUT.
IN CASE THERE IS NO OPERAND , THE USER SHOULD TYPE A CARRIAGE RETURN.
NUMBERS ARE OCTAL AND SHOULD BE PRECEDED WITH EITHER A PLUS
OR A MINUS SIGN. IN THE CASE OF A MINUS , THE SIMULATOR
ACKNOWLEDGES RECEIPT BY OUTPUTTING "(MINUS)". AFTER A NUMBER ,
THE USER SHOULD FIRST TYPE ONE CARRIAGE RETURN TO INDICATE
THE END OF INPUT OF THE NUMBER AND THEN TYPE A SECOND ONE TO
RETURN TO THE NEXT LINE.
(NOTE: ZERO MUST BE PRECEDED BY A PLUS SIGN.)
-3-
COMPILATION OF PROGRAM STARTS BY TYPING UPPERCASE P(@) AT THE
BEGINING OF A NEW LINE. THE USER RECEIVES THE FOLLOWING MESSAGE:
: DCA
: HLT
CC ,+43
D5 ,-(MINUS)21
@
COMPILATION STARTS
!!! TO INTERRUPT, ANYTHING TO CONTINUE
IF THE USER TYPES ANYTHING OTHER THAN UPPERCASE 1(!),
THE USER GETS TO 'CENT'.(THE PROGRAM CONTROL CENTER)
TO EXECUTE, THE USER SHOULD TYPE 'C'.
THE SIMULATOR RESPONDS IN THE FOLLOWING MANNER:
,CENT
CSTART EXEC. AT LABEL:
THE USER HAS TO SUPPLY A LABEL WHICH SHOWS WHERE
EXECUTION IS TO BEGIN.
!!! TO INTERRUPT, ANYTHING TO CONTINUE/CENT
CSTART EXEC. AT LABEL: KK
AC AT END OF EXECUTION: 000000000000
! TO DEBUG ANYTHING TO CONTINUE
DEBUGGING FACILITIES ENABLE USER TO EXAMINE
LOCATIONS IN THE SIMULATED PDP-8. AFTER EXECUTION, SHOULD THE
USER TYPE UPPERCASE 1(!) THE SIMULATOR RESPONDS AS
FOLLOWS:
!!!!!...INTERUPTION...!!!
INPUT LOW LC TO TRANSLATE
400
-5-
THE USER SHOULD TYPE THE OCTAL VALUE OF THE
LOCATION, AT WHICH EXAMINATION IS TO BEGIN, IN THE PDP-8
THE SIMULATOR RESPONDS BY TYPING:
UP LC TO TRANS.
400
USER SHOULD TYPE THE OCTAL VALUE OF THE LOCATION UP
TO WHEREVER EXAMINATION IS TO BE DONE.
THE COMPUTER WILL THEN GIVE AN OCTAL LISTING OF
THOSE LOCATIONS AND THEIR CONTENTS. (SEE APPENDIX C)
TO COME BACK TO CENT. TYPE UPPERCASE L(\)
-6-
GENERAL FEATURES
LOOKING AT APPENDIX B, ONE WILL NOTICE THE DISK
OPERATIONS AND THE VARIETY OF POSSIBILITIES IN INPUT,
EXAMINATION, EXECUTION AND DEBUGGING OF A PROGRAM. WE
SHALL DISCUSS CERTAIN IMPORTANT PROCEDURES.
THE USE OF STATE S1 AND S3
THE '4', SHOULD NOT BE IN MOST CASES TYPED
TWICE (AT CENT), SINCE ONE FEATURE OF STATE S1 IS TO ZERO
THE WHOLE SIMULATED PDP-8 MEMORY. THUS SHOULD THE USER
WISH TO RETURN TO INPUT MODE, STATE S3, TO INPUT NEW PROGRAMS
OR TO CHANGE EXISTING ONES, A '5' SHOULD BE TYPED (AT CENT)
INSTEAD OF '4'.
IN GENERAL, '4' IS TYPED ONLY ONCE AT THE VERY
BEGINING OF THE USE OF THE SIMULATOR, AND AFTERWARDS '5' IS
USED TO RESUME INPUT.
READING AND WRITING ON DISK FILES
THE USER SHOULD NOTE THE FOLLOWING:
WHENEVER THE USER WRITES ONTO THE DISK FILE TO STORE
A PROGRAM, WHATEVER IS ON THE DISK FILE, IS REPLACED BY
THE WHOLE OF THE CURRENT SIMULATED PDP-8 MEMORY.
SIMILARLY, READING STORED PROGRAMS FROM DISK FILE
REPLACES ALL OF THE CURRENT SIMULATED PDP-8 MEMORY BY
WHATEVER IS ON THE DISK FILE.
THUS, IF THERE IS A PROGRAM ON THE DISK FILE WHICH THE
USER WISHES TO USE WITH OTHER PROGRAMS THAT ARE YET TO
BE INPUT, THE USER SHOULD EMPLOY THE FOLLOWING PROCEDURE,
-7-
(A) COPY FROM DISK
(B) TYPE THE NEW PROGRAMS OR MAKE CORRECTIONS TO
THE PREVIOUSLY DISK STORED PROGRAM.
DEBUGGING
=========
THE USER SHOULD BE AWARE THAT ONCE COMPILATION IS
DONE, THE MNEMONIC SOURCE PROGRAM IS NO LONGER STORED.
THUS DEBUGGING IS DONE IN CLOSE CONNECTION WITH THE PDP-8
MACHINE LANGUAGE. USING UPPERCASE 1(!), THE USER CAN EXAMINE
ANY LOCATION IN THE SIMULATED PDP-8 MEMORY.
EXAMPLES ARE PROVIDED IN APPENDIX C.
CORRECTIONS TO PROGRAM
======================
SHOULD A NEED TO MAKE CORRECTIONS IN A PROGRAM ARISE,
THE USER TYPE '5' AT CENT.
AFTER RECEIVING THE MESSAGE, 'INPUT PROGRAM', THE
USER SHOULD TYPE * (LOCATION NUMBER) TO RECEIVE;
LC VALUE (*) KNOWN IS IN LC
THEN THE LOCATION CAN BE REPLACED SIMPLY BY TYPING THE NEW LINE.
REPLACEMENTS CAN BE DONE FOR ANY OTHER LOCATIO WITH
NO NEED TO GO BACK TO CENT.
CONSULT APPENDIX C FOR FURTHER DETAILS AND EXAMPES
-8-
CONCLUSION
A FINAL REMARK CONCERNS THE REACTION TIME OF THE
TELETYPE. WHEN THE COMPUTER IS VERY BUSY, THE USER ADVISED TO TYPE
THE PROGRAM VERY SLOWLY AND ALWAYS TO USE A RELIABLE TELETYPE.
THE USE OF THE PRINTING TELETYPE IS PREFERRED TO THAT
OF THE CRT TELETYPE.
THE MOST IMPORTANT PART OF THIS PAPER IS APPENDIX B
AND THE USER IS ADVISED TO HAVE A COPY OF IT CLOSE BY
WHILE USING THE SIMULATOR PROGRAM. WE ARE AWARE THAT USERS MIGHT
FIND IT DIFFICULT TO ADJUST TO A SYSTEM THAT HAS MNEMONICS INPUT
FACILITIES, MACHINE LANGUAGE DEBUGGING FACILITIES AND IN
WHICH COMPILING, LOADING, DEBUGGING AND EXECUTION ARE BASICALLY
DONE CONTINUOUSLY AND AT ANY DESIRED SEQUENCE.
NEVERTHELESS, WE FEEL IT IS A GOOD INTRODUCTION TO
BOTH MACHINE LANGUAGE AND SYSTEM PROGRAMMING.
THROUGH THIS PROJECT WE HAVE GAINED A NEW INSIGHT
INTO SOFTWARE DESIGN PROBLEMS, HOWEVER PRIMITIVE AND LIMITED
THE OPERATING SYSTEM THAT WE HAVE CREATED IS.
CIRCLE : A CHARACTER TO TYPE WHEN IN CENT.
ELIPSE : A CHARACTER TO TYPE TO SWITCH STATES
S S : BY TYPING C YOU GET FROM
STATE S TO STATE S
: INDICATES AUTOMATIC TRANSITION AFTER COMPLETION OF MISSION.
CENT: ANY TYPING IN THE 'CENT' STATE SHOULD BE DONE
FOLLOWING THE OUTPUT OF THE WORD 'CENT'.
! : IN CENT, S3 :TYPING UILL PRODUCE TRANSLATION
MESSAGES BEGINING "LOW LC TO TRANSLATE".
AT ALL OTHER STATES UPPERCASE 1(!) SHOULD BE TYPED ONLY WHEN
MESQAGE GIVES THE USER OPTION TO DO SO.
APPENDIX D
THE FOLLOWING ARE PAL III INSTRUCTIONS THAT CAN BE USED
ON THE SIMULATOR.
MEMORY REFERENCE INSTRUCTIONS
AND
TAD
ISZ
DCA
JMS
JMP (JMP .-1 NOT ALLOWED)
GROUP 1 OPERATE MICROINSTRUCTIONS
NOP
CLA
CLL
CMA
CML
RAR
RAL
RTR
RTL
IAC
GROUP 2 OPERATE MICROINSTRUCTIONS
SMA
SZA
SPA
SNA
SNL
SZL
SKP
HLT
TELETYPE KEYBOARD READER
KCF
KSF
KCA
KRS
KRB
TELETYPE TELEPRINTER
TFL
TSF
TCF
TPC
TLS
00020 APPENDIX C
00040
00060
00080
00100 * 200
00200 LC VALUE (*) KNOWN IS IN LC
00300
00400 ST : CLA
00500 : CLL
00580 : TAD RQ
00590 : DCA RG
00600 : TLS
00700 : TAD MC
00800 : DCA CT
00900 NX : TAD I RG
01000 : JMS TY
01100 : ISZ RG
01200 : ISZ CT
01300 : JMP NX
01400 : HLT
01500 TY ,+0
01600 T2 : TSF
01700 : JMP T2
01800 : TLS
01900 : CLA
02000 : JMP I TY
02100 MC ,-(MINUS)15
02200 CT ,+0
02300 RG ,+0
02350 RQ ,+400
02400 *400
02500 LC VALUE (*) KNOWN IS IN LC
02600
02700 JJ ,+312
02800 OO ,+317
02900 HH ,+310
03000 N1 ,+316
03100 B1 ,+240
03200 A1 ,+301
03300 N2 ,+316
03400 DD ,+304
03500 B2 ,+240
03600 MM ,+315
03700 A2 ,+301
03800 RR ,+322
03900 YY ,+331
04000 @
04100 COMPILATION STARTS
04200
04300 !!! TO INTERRUPT, ANYTHING TO CONTINUE/CENT
04400 CSTART EXEC. AT LABEL: ST
04500
04550 JOHN AND MARY
04600 AC AT END OF EXECUTION : 000000000000
04700 ! TO DEBUG ANYTHING TO CONTINUE/END OF DEBUG
05000 UPPER CASE L(\) TO EXIT ANYTHING TO DEBUG AGAIN
05100 \CENT
05300 5INPUT PROGRAM
05400 * 221
05600 LC VALUE (*) KNOWN IS IN LC
05700
05800 MC ,-(MINUS)14
05900 *411
05980 LC VALUE (*) KNOWN IS IN LC
05990
06000 SS ,+323
06100 UU ,+325
06200 EE ,+305
06300 @
06400 COMPILATION STARTS
06500
06600 !!! TO INTERRUPT, ANYTHING TO CONTINUE!!!!...INTERUPTION...!!!
06700 INPUT LOW LC TO TRANSLATE
06800
06900 221
07100 UP LC TO TRANS.
07200
07300 221
07400
07500 000000000221 777777777764
07600
07650 CENT
07700 !!!!...INTERUPTION...!!!
07800 INPUT LOW LC TO TRANSLATE
07900
08000 411
08200 UP LC TO TRANS.
08300
08400 413
08500
08600 000000000411 000000000323
08650
08700 000000000412 000000000325
08750
08800 000000000413 000000000305
08850
08900 CENT
09000 CSTART EXEC. AT LABEL: ST
09100
09200 JOHN AND SUE
09300
09400 AC AT END OF EXECUTION: 000000000000
09500 ! TO DEBUG ANYTHING TO CONTINUEH END OF DEBUG
09600 UPPERCASE L(\) TO EXIT, ANYTHING TO DEBUG AGAIN\
09700 CENT
00100 APPENDIX A
00200
00300
00400
00500 * 200
00600 LC VALUE (*) KNOWN IS IN LC
00700
00800 BG : CLA
00900 : CLL
01000 : TAD N1
01100 : TAD N2
01200 : TAD N3
01300 : DCA SM
01400 : HLT
01500 N1 ,+2
01600 N2 ,-(MINUS)3
01700 N3 ,+10
01800 SM ,+0
01900 @
02000 COMPILATION STARTS
02100
02200 !!! TO INTERUPT, ANYTHING TO CONTINUE/CENT
02300 6CENT
02400 CSTART EXEC. AT LABEL: BG
02500
02600 AC AT END OF EXECUTION: 000000000000
02700 ! TO DEBUG ANYTHING TO CONTINUE!!!!...INTERUPTION...!!!
02800 INPUT LOW LC TO TRANSLATE
02900
03000 212
03100 UP LC TO TRANS.
03200
03300 212
03400
03500 000000000212 000000000007
03600
03700 END OF DEBUG
03800 UPPERCASE L(\) TO EXIT, ANYTHING TO DEBUG AGAIN
03900 \CENT
BOX 1537,
BRANDEIS UNIVERSITY,
WALTHAM, MASS. 02154
OCT. 24, 1975
DEAR SIRS,
ENCLOSED IS A PAPER DESCRIBING THE FEATURES OF
A PDP-8 SIMULATOR.
PLEASE, LET US KNOW WHETHER YOU ARE INTERESTED IN
THIS SIMULATOR PROGRAM.
SINCERELY YOURS
ODED SHMUELI
KWABENA AKUFO
DIGITAL EQUIPMENT CORPORATION
SOFTWARE DEPARTMENT
MAYNARD,MASSACHUSETTS 01754