File SIMUL.PA (PAL assembler source file)

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

/SIMUL V1.00
/
/BOB CURRIER	AUGUST 14, 1974 23:12:30
/
/SIMULATOR PACKAGE FOR PDP/8I
/

*SIMST / /START OF SIMULATOR / SIMUL, TAD Z PC /GET PROCESS'S PC DCA PCLOC /STORE AS LOCATION OF NEXT INSTRUCTION TAD Z IF /GET PROCESS'S INTRUCTION FIELD DCA IFLOC /STORE AS FIELD OF NEXT INSTRUCTION GETVAL /GET VALUE-- IFLOC, .-. /IN THIS FIELD PCLOC, .-. /AT THIS LOCATION DCA Z INST /STORE AS CURRENT INSTRUCTION ISZ Z PC /INCREMENT PROCESS'S PC NOP /IN CASE OF WRAP AROUND TAD Z INST /GET INSTRUCTION TO DETERMINE WHAT IT IS AND KC7000 /MASK OUT OP-CODE DCA Z STRIP /STORE FOR LATER USE CLL /JUST TO BE REAL NEAT TAD Z STRIP /GET IT BACK TAD KM6000 /SUBTRACT 6000 SNL /WHAT IS IT?? JMP I MRIHNL /IT'S A MEMORY REFERANCE INSTRUCTION SNA CLA /CHECK AGAIN JMP I UUOHNL /IT'S A UUO!! JMP I MICHNL /IT'S A MICRO INSTRUCTION /CONSTANTS KC7000, 7000 /OP-CODE MASK KM6000, 2000 /GENERAL CONSTANT MRIHNL, MRIHAN /DISPATCH TO MRI HANDLER UUOHNL, UUOHAN /DISPATCH TO UUO HANDLER MICHNL, MICHAN /DISPATCH TO MICRO INSTRUCTION HANDLER
*MRIST / /MEMORY REFERANCE INSTRUCTION HANDLERS / /ALSO HANDLE AUTO INDEX REGISTERS / MRIHAN, CLA /DUMP ANY GARBAGE TAD Z INST /GET INSTRUCTION AND KC0177 /DROP OFF OP-CODE AND CONTROL BITS DCA VALLOC /STORE IT TAD Z INST /GET INSTRUCTION AGAIN AND KC0200 /MASK OFF CURRENT PAGE CONTROL BIT (BIT 4) SNA CLA /IS IT SET? JMP MRIZER /NO--MUST BE PAGE ZERO REFERANCE STA /AC_7777 TAD Z PC /BACK UP PROCESS'S PC AND KC7600 /MASK OUT PAGE NUMBER TAD VALLOC /ADD ADDRESS TAKEN FROM INST DCA VALLOC /STORE AS COMPLETE ADDRESS MRIZER, TAD Z INST /GET THE INSTRUCTION BACK AGAIN AND KC0400 /CHECK INDIRECT CONTROL BIT (BIT 3) SZA CLA /IS IT SET?? JMP MRIIND /YES--OFF TO INDIRECT HANDLER TAD Z IF /NO--GET PROCESS INSTRUCTION FIELD DCA VALFIE /STORE AS FIELD OF OBJECT OBJGET, GETVAL /GET OBJECT OF MRI VALFIE, .-. /FIELD OF OBJECT VALLOC, .-. /LOCATION OF OBJECT DCA MRIOBJ /STORE AS OBJECT TAD Z STRIP /GET STRIPPED DOWN INSTRUCTION CLL RTL /ROTATE OP-CODE INTO AC09-AC11 RTL /GOING THRU THE LINK TAD MTBOST /ADD TABLE OFFSET DCA MRITEM /STORE IT TAD I MRITEM /GET ADDRESS TO JUMP TO DCA MRITEM /STORE IT JMP I MRITEM /AND JUMP THRU IT /CONSTANTS AND DATA KC0177, 0177 /MASK TO DUMP OP-CODE AND CONTROL BITS (BITS0-4) KC0200, BIT4 /MASK FOR CURRENT PAGE CONTROL BIT KC7600, 7600 /MASK FOR PAGE NUMBER (BITS0-4) KC0400, BIT3 /MASK FOR INDIRECT CONTROL BIT MRITEM, .-. /TEMPORARY REGISTER MRIOBJ, .-. /OBJECT OF THE MRI MTBOST, MRITAB /MRI DISPATCH TABLE OFFSET /MRI DISPATCH TABLE MRITAB, ANDHAN /AND (0) HANDLER TADHAN /TAD (1) HANDLER ISZHAN /ISZ (2) HANDLER DCAHAN /DCA (3) HANDLER JMSHAN /JMS (4) HANDLER JMPHAN /JMP (5) HANDLER
/ /INDIRECT MRI HANDLER / /THIS IS THE PART THAT ALSO HANDLES THE AUTO INDEX REGISTERS / MRIIND, TAD VALLOC /GET LOCATION OF INDIRECT DCA INDTHR /STORE TAD Z IF /GET PROCESS'S INSTRUCTION FIELD DCA INDFIE /STORE AS FIELD OF INDIRECT GETVAL INDFIE, .-. INDTHR, .-. DCA VALLOC /STORE AS OBJECT LOCATION TAD Z DF /GET PROCESS DATA FIELD DCA VALFIE /STORE AS OBJECT FIELD TAD INDTHR /CHECK FOR AUTO INDEX TAD KM0010 /SUBTRACT 10 SPA /INDTHR > 10 ? JMP NOTAX /NO--NOT AN AUTO INDEX TAD KM0010 /SUBTRACT 10 AGAIN SMA CLA /INDTHR < 20 ? JMP NOTAX /NO--NOT AN AUTO INDEX ISZ VALLOC /YEP--INCREMENT AUTO INDEX CONTENTS NOP /GOTTA DO IT TAD INDFIE /TRANSFER ADDRESS' DCA AXFIE TAD INDTHR DCA AXLOC TAD VALLOC /GET INCREMENTED AUTO INDEX PUTVAL /REPLACE IN PROCESS'S MEMORY AXFIE, .-. AXLOC, .-. NOTAX, CLA /COME HERE IF NOT AUTO INDEX (AC_0000) JMP OBJGET /GO BACK AND GET OBJECT /THE LONE CONSTANT KM0010, 7770 /USED TO DETERMINE IF AUTO INDEX
/ /ACTUAL HANDLERS FOR INDIVIDUAL MRI'S / / /HANDLER FOR "AND" MRI (OP-CODE 0) / ANDHAN, TAD MRIOBJ /GET OBJECT AND Z AC /AND WITH PROCESS'S AC DCA Z AC /PLACE RESULT IN PROCESS'S AC EXIT /EXIT THIS LEVEL / /HANDLER FOR "TAD" MRI (OP-CODE 1) / TADHAN, TAD Z LINK /GET PROCESS'S LINK CLL RAR /ROTATE INTO LINK TAD Z AC /GET PROCESS'S AC TAD MRIOBJ /ADD OBJECT DCA Z AC /PLACE RESULT IN PROCESS'S AC GLK /AC11_LK DCA Z LINK /STORE PROCESS'S LINK EXIT /BACK / /HANDLER FOR "ISZ" MRI (OP-CODE 2) / ISZHAN, ISZ MRIOBJ /INCREMENT OBJECT SKP /NO SKIP--DON'T INCREMENT PROCESS PC ISZ Z PC /DID SKIP--INCREMENT PROCESS AC NOP /ALWAYS NECESSARY PUTHAN, TAD VALFIE /TRANSFER ADDRESS' DCA PFIE TAD VALLOC DCA PLOC TAD MRIOBJ /GET NEW OBJECT PUTVAL /STORE IN PROCESS'S MEMORY PFIE, .-. PLOC, .-. EXIT / /HANDLER FOR "DCA" MRI (OP-CODE 3) / DCAHAN, TAD Z AC /GET PROCESS'S AC DCA MRIOBJ /STORE AS NEW OBJECT DCA Z AC /CLEAR PROCESS'S AC JMP PUTHAN / /HANDLER FOR "JMS" MRI (OP-CODE 4) / JMSHAN, TAD Z PC /GET PROCESS'S PC DCA MRIOBJ /STORE AS NEW OBJECT TAD VALLOC /GET OBJECT ADDRESS IAC /INCREMENT DCA Z PC /STORE AS NEW PROCESS PC TAD Z IB /GET PROCESS'S INSTRUCTION BUFFER DCA Z IF /STORE AS PROCESS'S NEW IF JMP PUTHAN /GO STORE NEW OBJECT / /HANDLER FOR "JMP" MRI (OP-CODE 5) / JMPHAN, TAD VALLOC /GET OBJECT ADDRESS DCA Z PC /STORE AS NEW PROCESS PC TAD Z IB /GET PROCESS'S IB DCA Z IF /TRANSFER TO PROCESS'S IF EXIT /AND LEAVE



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