File MONDUM.PA (PAL assembler source file)

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

/******* TOPS-8 MONITOR DUMP *******
/LAST EDIT:  3-AUGUST-75, JV
/
/FUNCTION:THIS PROGRAM MAKES A QUICK DUMP ON THE LINEPRIN-
/	TER OF ALL INTERESTING PARAMETERS IN THE FOREGROUND
/	MONITOR. THIS IS DONE BY LISTING THE MOST IMPORTANT
/	PARAMETERS FIRST AND THEN SOME MORE DETAILED DATA.
/
/CONCEPT:THIS PROGRAM IS INTENDED TO ASSIST THE INTERPRETA-
/	TION OF ERRORS THAT OCCURRED. ONE CAN NOW USE THIS 
/	PROGRAM TO EXAMINE MORE EASILY WHAT HAS HAPPENED.
/	THE MODULE WORKS WITH LABELS, GENERATED DURING THE
/	ASSEMBLY OF THE FOREGROUND MONITOR (MS.PA).
/	IT WORKS UNDER OS/8 AFTER A RUN OF TOPS-8, AS WELL
/	AS UNDER TOPS-8 FROM THE BACKGROUND. IN BOTH CASES
/	IS WORKS IN HIS OWN WAY. UNDER OS/8 IT JUST FETCHES
/	DATA FROM MONFLD, UNDER TOPS-8 IT USES THE SPY-IOT
/	(6264) FOLLOWED BY THE REQUESTED FIELD.
/
/DESCRIPTION:THIS CAN BE ILLUSTRATED BY A TYPEOUT SAMPLE.
/
/SPECIAL:AFTER COMPLETION THE PROGRAM JUMPS TO THE KEYBOARD
/	MONITOR.
/	TYPE-OUT CAN BE STOPPED BY PRESSING THE CTRL/C KEY.
/	ONCE ASSEMBLED, THE PROGRAM CAN BE FORCED TO RUN IN
/	ANY FIELD. WHEN IT IS LOADED IN THE SAME FIELD AS
/	THE TOPS-8 MONITOR, THE CORE AREA FROM
L=BEGIN&7400	   /TO
L=PROGEND&7600+177 /WILL BE OVERLAIED.

/OUTPUT ROUTINE IS DEVICE-DEPENDENT.
IFDEF CENTRON <DEVNR=15>
IFDEF LE8E <DEVNR=66>
IFNDEF DEVNR <DEVNR=04	/IF NO LINEPRINTER:TELETYPE >

/START ADDRESS
BEGIN=2000	/START ADDRESS FOR .R MONDUM
CHAIN=2001	/START WHEN CHAINED TO FROM TOPS-8

SM8=6254	/SKIP ON TOPS-8 BACKGROUND
SPY=6264	/"LOOK IN MONFLD"

*BEGIN IFZERO MONFLD < SKP JMP MCHAIN > /WHEN STARTING AT 7757 JMP TO 2001 (CHAIN) SM8 /SKIP ON TOPS-8, (BACKGROUND) JMP NOM8 /THIS MUST BE AFTERWARDS TAD FETCH5 /REPLACE "JMP I FETCH" DCA FETCH3 JMP YESM8 NOM8, IFZERO MONFLD < CIF 0 /AFTER TYPING .R MONDUM JMS I (7607 /GET BACK 00000-01777 FROM SCRATCH BLOCKS 1000 /READ 10 PAGES FIELD 0 0 /STARTING 00000 33 /SYSTEM BLOCK 33 HLT /ERROR READING FROM SYS ??? > MCHAIN, TAD DCATM2 /NOT IN THE BACKGROUND DCA FETCH1 /DCA TEM2 RIF /IN WHICH FIELD ARE WE ? TAD (CDF DCA FETCH4 YESM8, TAD CDATM1 /PRINT THE DATE. DCA POINT JMS PRMESG /TOPS-8 FOREGROUND MONITOR DUMP OF JMS FETCH DATE DCA FETCH TAD FETCH CLL RAL RTL RTL AND (17 /MONTH JMS DECTYPE /PRINT DECIMAL TWO DIGITS TAD ("/-240 JMS I COUTPUT TAD FETCH CLL RAR RTR AND (37 /DAY OF MONTH JMS DECTYPE TAD ("/-240 JMS I COUTPUT TAD FETCH AND (7 TAD (106 /ADD "70" OCTAL JMS DECTYPE IFDEF DAYTIM < /PRINT THE TIME. JMS PRMESG /TIME : JMS FETCH TIME+3 TAD (30 /ADD "24" OCTAL JMS DECTYPE
TAD (":-240 JMS I COUTPUT JMS FETCH TIME+2 /MINUTES TAD (74 /ADD "60" OCTAL JMS DECTYPE > JMS I CCRLF JMS I CCRLF /PRINT CURTSK JMS PRMESG /CURTSK JMS FETCH /FETCH FROM MONFLD CURTSK JMS I COCTYPE /PRINT # OF FREECORE BLOCKS JMS PRMESG /FCFREE TAD (-MAXNAM JMP I CDU0 CCRLF, CRLF COCTYPE,OCTYPE CDU0, DU0 CDATM1, DAT-1 COUTPUT,OUTPUT DECTYPE,0 /DECIMAL PRINT ROUTINE (2 DIGITS) DCA TEM1 DCATM2, DCA TEM2 TAD TEM1 DECNXT, TAD (-12 /SUBSTRACT 10 UNTIL RESULT IS NEG. SPA JMP DECFND /READY, THAT IS: 10 TOO FEW ISZ TEM2 /10 MORE JMP DECNXT DECFND, DCA TEM1 /10 TOO FEW TAD TEM2 TAD (260-240 JMS I COUTPUT /PRINT FIRST DIGIT TAD TEM1 TAD (12+260-240 JMS I COUTPUT /PRINT SECOND DIGIT JMP I DECTYPE /FETCH A WORD FROM MONFLD. / JMS FETCH / ADDRESS / RETURN WITH WORD IN AC FETCH, .-. TAD I FETCH ISZ FETCH FETCH1, SPY /IN FOREGROUND: DCA TEM2 FETCH2, CDF MONFLD /OR MONFLD+10... FETCH3, TAD I TEM2 /IN BACKGROUND: JMP I FETCH FETCH4, HLT /OVERLAYED BY CDF THIS FIELD FETCH5, JMP I FETCH
/010 PAL MESSAGE PRINTER /PRINTS A MESSAGE CODED WITH THE PAL PSEUDO-OP /'TEXT'. PAL3 AND PAL8 COMPATIBLE / / JMS PRMESG / MESG / RETURN /AC=0 / /MESG, TEXT 'ABC82' /CODED AS 0102;0370;6200 PRMESG, 0 PRM1, ACM1 DCA PACKSW /PACKSW=RIGHT ISZ POINT /NEXT WORD TAD I POINT /FETCH AND ROTATE 6 IFZERO PDPTYP-PDP8E < BSW > IFNZRO PDPTYP-PDP8E < RTR RTR RTR > PRM2, AND (77 /MASK 6 BITS SNA JMP I PRMESG /ZERO ENDS THE LIST TAD (240 AND (77 JMS I COUTPUT ISZ PACKSW /LEFT OR RIGHT? JMP PRM1 /LEFT TAD I POINT /RIGHT JMP PRM2 POINT, DAT-1 PACKSW, 0 TEM1=PRMESG TEM2=PACKSW PAGE
NAMTAB, FHEAD IHEAD MHEAD CHEAD BOUTPUT,OUTPUT CPRMESG,PRMESG CTAB, TAB CTABINT,TABINT CFETCH, FETCH BCRLF, CRLF CDU8, DU8 IFDEF STATX <CDPTAB, DPTAB> ESCNT, 0 PRQCNT=DPNTPP DU0, DCA ESCNT TADNTB, TAD NAMTAB DU1, DCA DUPTR JMS I CFETCH DUPTR, 0 ISZ ESCNT /COUNT THE NUMBER SNA SKP CLA /ESCAPE FROM ENDLES CHAIN !!!! JMP DU1 /LOOP TAD (MAXNAM-1 /ONE TOO MANY TAD ESCNT /PRINT THE NUMBER JMS OCTYPE JMS I CPRMESG /ERRTSK JMS I CFETCH ERRTSK JMS OCTYPE JMS I BOUTPUT /SPACE JMS I CFETCH ALARM SZA JMS OCTYPE IFNZRO BGMAX < JMS I CPRMESG /BJOB JMS I CFETCH BJOB JMS OCTYPE > JMS I BCRLF JMS I BCRLF /PRINT CONTENT OF INTQ, PRIQ, CORQ, FREQ QCNT=DPNT TAD TADNTB DCA QTAB TAD (-4 DCA QCNT TAD (-10 DCA I CTABINT
QLOOP, JMS I CPRMESG QTAB, TAD NAMTAB DCA PRQP TAD (-10 DCA ESCNT PRQ1, TAD (-10 DCA PRQCNT PRQ2, JMS I CTAB TAD PRQP JMS OCTYPE /PRINT THE THREAD JMS I CFETCH PRQP, FHEAD SNA JMP PRQEND /ZERO ENDS THE CHAIN DCA PRQP ISZ PRQCNT /NEXT ITEM. ONE LINE READY ? JMP PRQ2 /N JMS I BCRLF /Y ISZ ESCNT JMP PRQ1 PRQEND, ISZ QTAB JMS I BCRLF ISZ QCNT JMP QLOOP IFDEF STATX < TAD CDPTAB DCA DPNT DPLOOP, TAD I DPNT SNA JMP I CDU8 DCA DPNTPP /POINTER DCA SWITCH /SUPPRESS LEADING ZERO'S JMS I BCRLF JMS I CPRMESG JMS I CTAB AC0001 TAD I DPNT DCA DPNTP ISZ DPNT /FOR NEXT ONE JMS I CFETCH DPNTP, 0 JMS OCTYPE JMS I CFETCH DPNTPP, 0 JMS OCTYPE JMP DPLOOP
DPNT, 0 /PRINT ACCOUNTING REGISTERS DPTAB, INTCNT /# OF INTERRUPTS EVECNT /# EVENTS XFRCNT /# DISKTRANSFERS DERCNT /# OF DISKTRANSFER ERRORS SWPCNT /# OF MODULE SWAPS DSPCNT /# OF DISPATCHES 0 > IFNDEF STATX < JMP I CDU8 DPNTPP, 0 DPNT, 0 DPNTP, 0 > SWITCH, 20 /PRINT AC IN OCTAL. THE PRINT ROUTINE MAY DESTROY THE LINK TEMP=DUPTR COUNT=DPNTP OCTEM, 0 OCT, OCTYPE, .-. DCA TEMP TAD (-4 DCA COUNT OCT1, TAD TEMP RAL RTL DCA TEMP TAD TEMP RAL AND (7 SNA JMP OCTPR DCA OCTEM TAD (260-240 /MAKE ASCII DCA SWITCH TAD OCTEM OCTPR, TAD SWITCH JMS I BOUTPUT ISZ COUNT JMP OCT1 /LOOP JMP I OCTYPE /IF READY:LINK=0;AC=0 PAGE
DOCTYPE,OCTYPE DOUTPUT,OUTPUT DPRMESG,PRMESG DTABINT,TABINT DTAB, TAB DCRLF, CRLF DFETCH, FETCH DDU20, DU20 DTABLE, TABLE F1, 0 /CONTAINS FIELD TO PRINT CNT, 0 /COUNTER PC, 0 /TEMPORARY PROGR COUNTER TEM3, 0 /CONTAINS ENTRY IN COREMAP CNTIN, 0 /INNER LOOP COUNTER TABLE, "$^100+"$ "[^100+"[ "]^100+"] ".^100+". DU8, JMS I DCRLF JMS I DCRLF JMS I DPRMESG /COREMAP TAD (MAPBEG /SET UP BEGINADDRESS DCA DU12 TAD (MAPEND-CORMAP&1+MAPBEG-MAPEND /TOTAL COUNT DCA CNT TAD (MAPBEG-CORMAP%4+MONFLD%4+40-1 DCA F1 IFNZRO MAPBEG-CORMAP&17 < TAD (-MAPBEG+CORMAP&17-20^4-2 DCA I DTABINT TAD (MAPBEG-CORMAP&17-20 JMP DU10A > IFZERO MAPBEG-CORMAP&17 < JMP DU10 > DU9, ISZ CNTIN JMP DU11 DU10, TAD (-2 DCA I DTABINT TAD (-20 /20 ENTRIES ON ONE LINE DU10A, DCA CNTIN JMS I DCRLF ISZ F1 /INCREMENT HALF FIELD COUNTER TAD F1 /PRINT FIELD CLL RAR JMS I DOUTPUT DU11, JMS I DTAB TAD (-4 DCA I DTABINT
/THERE ARE 6 POSSIBILITIES: /0000 THIS PAGE IS FREE;PRINT .. /7777 THIS PAGE IS A BUFFER;PRINT ]] /7776 THIS PAGE IS A BUFFER;PRINT [[ /7775 THIS PAGE OCCUPIED BY MONITOR;PRINT $$ /NEG. THIS PAGE IS ACTIVE:PRINT MODULE'S NAME /POS. THIS PAGE HAS BEEN USED BY A MODULE:PRINT - NAME JMS I DFETCH DU12, MAPBEG DCA TEM3 TAD TEM3 SMA SZA CLA TAD ("--240 /PRINT - JMS I DOUTPUT /OR SPACE ACM1 TAD TEM3 CLL TAD (4 SNA SZL JMP DU13 TAD (-3 CM300, SMA CIA TAD (-TCBTAB-4 /COMPUTE OFFSET IN NAMLST CLL RTR RAR TAD (NAMLST DCA DU14 JMS I DFETCH /FETCH THE NAME DU14, 0 JMP DU17 DU13, TAD DTABLE DCA TEM3 TAD I TEM3 DU17, JMS TYPH /TYPE HASHED NAME DU18, ISZ DU12 ISZ CNT /ALL DONE? JMP DU9 JMS I DCRLF JMS I DCRLF TAD (-5 DCA I DTABINT IFZERO FIELDS-2&4000 < /IF MORE THEN 1 FOREGROUND FIELD TAD (-FIELDS > JMP I DDU20
/TYPE AC AS TWO CHARACTERS;6 BIT TYPN, .-. DCA TEM3 TAD TEM3 IFZERO PDPTYP-PDP8E < BSW > IFNZRO PDPTYP-PDP8E < RTR RTR RTR > JMS TYP6 TAD TEM3 JMS TYP6 JMP I TYPN TYP6, .-. TAD (240 AND (77 JMS I DOUTPUT JMP I TYP6 /TYPE AC AS TWO CHARACTERS WHICH HAVE BEEN PACKED: /"A^100+"B&3777 TYPH, .-. DCA TEM3 TAD TEM3 AND (40 SZA CLA /BIT 40 SET ? TAD (100 /N: ALPHABETIC TAD CM300 TAD TEM3 JMS TYPN /TYPE CHAR'S IN AC JMP I TYPH PAGE
EOUTPUT,OUTPUT EOCTYPE,OCTYPE EPRMESG,PRMESG ETABINT,TABINT ETAB, TAB ECRLF, CRLF EFETCH, FETCH ETYPH, TYPH EDUMEND,DUMEND EFCDF, FETCH2 EPZRT, PZRT-1 IFNZRO BGMAX < EBGT, BGT-1 > EPOINT, POINT CNT1, 0 /DUMP SOME REGISTERS OF PAGE 0 DU20, IFZERO FIELDS-2&4000 < /IF MORE THEN 1 FOREGROUND FIELD DCA CNT1 DU21, TAD EPZRT DCA I EPOINT > DCA DUMPP /SET POINTER TO 0 JMS I EPRMESG /PAGE ZERO REGISTERS, FIELD TAD I EFCDF AND (70 JMS I EOCTYPE JMS DUMP -FHEAD /COUNT JMS I ECRLF JMS I ECRLF IFZERO FIELDS-2&4000 < TAD I EFCDF TAD (10 DCA I EFCDF ISZ CNT1 JMP DU21 TAD (CDF MONFLD DCA I EFCDF > /PRINT THE CONTENTS OF HRDLST JMS I EPRMESG TAD (HRDLST DCA DUMPP JMS DUMP IFZERO BGMAX < -MAXSLOT^2 / > IFNZRO BGMAX < -MAXSLOT-BGMAX-1^2 / > JMS I ECRLF JMS I ECRLF
IFNZRO BGMAX < /PRINT ALL SAVED BG REGISTERS TAD (BGDATA DCA DUMPP IFZERO BGMAX-2&4000 < TAD (-BGMAX DCA CNT1 DU22, TAD EBGT DCA I EPOINT JMS I EPRMESG /BG TAD CNT1 TAD (BGMAX+1+260-240 JMS I EOUTPUT > JMS I EPRMESG / STAT MQ SC PC ... JMS DUMP -UEND JMS I ECRLF JMS I ECRLF IFZERO BGMAX-2&4000 < ISZ CNT1 JMP DU22 > > /PRINT DETAILED INFORMATION OF EACH MODULE JMS I EPRMESG /TCBTAB BLNK THRD ... TAD (NAMLST DCA DU26 TAD (ASSLST DCA DU27 TAD (-MAXNAM DCA CNT1 TAD (TCBTAB DCA DUMPP DU25, JMS DUMP DM10, -10 JMS I EOUTPUT /PRINT SPACE JMS I EFETCH DU26, NAMLST SZA JMS I ETYPH /PRINT NAME ISZ DU26 JMS I ETAB JMS I EFETCH DU27, ASSLST SZA JMS I ETYPH /PRINT ASSIGNED NAME, IF ANY ISZ DU27 ISZ CNT1 JMP DU25 JMS I ECRLF JMS I ECRLF
IFNZRO MAXNAM^10+TCBTAB-FRECOR <FRECERR,XERROR> /DUMP ALL OF FREECORE JMS I EPRMESG /FREECORE DUMP JMS DUMP -FREEMAX^10 JMP I EDUMEND /DUMP AN ARRAY IN CORE: ALWAYS 10 ELEMENTS PER LINE. /EACH LINE IS PRECEDED BY ITS OCTAL ADDRESS IN CORE. / JMS DUMP / WORDCOUNT /POSITIVE! / NORMAL RETURN /AC=0 DUMCNT, 0 /TOTAL COUNTER DUMTEM, 0 /ELEMENTS IN ONE LINE COUNTER DUMP, .-. TAD I DUMP DCA DUMCNT /TOTAL COUNT ISZ DUMP /FOR RETURN JMP DUMP0 DUMPA, ISZ DUMTEM /ONE LINE DONE? JMP DUMP1 /N; NEXT DUMP0, JMS I ECRLF TAD ("*-240 JMS I EOUTPUT TAD DUMPP JMS I EOCTYPE JMS I ETAB TAD DM10 DCA DUMTEM /COUNTER DUMP1, JMS I EFETCH DUMPP, 0 /POINTER SZA JMS I EOCTYPE /DO THE CONVERSION AND PRINT JMS I ETAB ISZ DUMPP /NEXT ITEM ISZ DUMCNT JMP DUMPA TAD ("*-240 /ALL DONE JMS I EOUTPUT /SHOW WHERE WE ENDED JMP I DUMP PAGE
IFDEF CENTRON < /OUTPUT A CHARACTER TO CENTRONICS LINEPRINTER /THIS DEVICE NEEDS 20 FILLER CHARACTERS FOR EACH LF /AND 300 FOR A FORMFEED /THIS ROUTINE INCREMENTS TABCNT FOR EACH CHARACTER. > OUTPUT, .-. TAD MC240 DEVNR^10+6006 /PRINT CHARACTER ISZ TABCNT /SKIP DOES NOT HURT DEVNR^10+6001 /SKIP ON FLAG JMP .-1 MC7600, 7600 /CLA KRS TAD M203 /^C ? SNA CLA KSF JMP I OUTPUT KCF DUMEND, JMS CRLF TAD MC214 JMS OUTPUT /PRINT FF IFNDEF LE8E < OUTEM=TAB IFDEF CENTRON < TAD MD300 JMS BLANK > IFNDEF CENTRON < TAD MD10 DCA OUTEM TAD MD240 JMS OUTPUT ISZ OUTEM JMP .-3 > > DEVNR^10+6002 /CLEAR FLAG MC240, 240 CDF CIF 0 JMP I MC7600 IFDEF CENTRON < BLANK, .-. DCA OUTEM TAD MD240 JMS OUTPUT ISZ OUTEM JMP .-3 JMP I BLANK MD20, -20 MD300, -300 >
/PRINT CRLF CRLF, .-. TAD MC215 JMS OUTPUT TAD MC212 JMS OUTPUT IFDEF CENTRON < TAD MD20 JMS BLANK > DCA TABCNT /RESET TABCNT JMP I CRLF /007 TABULATOR ROUTINE /THE USER HAS TO TAKE CARE OF: /INCREMENTING TABCNT WITH EACH INCOMING CHARACTER, CLEARING /IT WHEN CARRIAGE RETURN. TAB-INTERVAL IS VARIABLE. /A JMS TO TAB WILL MOVE THE TYPING HEAD TO THE NEXT /TABULATOR POSITION. / / CLA / JMS TAB / RETURN /AC=0 TABCNT, 0 TABINT, -10 TAB, 0 /ENTER WITH AC =0 TAD TABCNT /SUBTRACT N TIMES TO GIVE REMAINDER TAD TABINT SMA JMP .-2 CLL RAL /^2 BECAUSE OUTPUT ALSO INCREMENTS DCA TABCNT /USE AS NEGATIVE COUNTER JMS OUTPUT ISZ TABCNT /READY? JMP .-2 JMP I TAB /YES M203, -203 MC212, 212-240 MC214, 214-240 MC215, 215-240 IFNDEF LE8E < MD240, -240 IFNDEF CENTRON < MD10, -10 > >
/ALL MESSAGES DAT, TEXT /TOPS-8 FOREGROUND MONITOR DUMP OF / IFDEF DAYTIM <TEXT / TIME /> TEXT /CURTSK @ FCFREE @ ERRTSK / IFNZRO BGMAX <TEXT / BJOB /> TEXT /FREE@@INTQ@@PRIQ@@CORQ/ IFDEF STATX <TEXT /# INTERRUPTS@@# INTRPT EVENTS/ TEXT /# DISKTRANSFERS@# DISK ERRORS/ TEXT /# MODULESWAPINS@# DISPATCHES/ > TEXT /COREMAP/ PZRT, TEXT /PAGE ZERO REGISTERS, FIELD / TEXT /HRDLST / IFNZRO BGMAX < BGT, TEXT /BG / IFZERO BGMAX-1 <*.-1;4040> TEXT / STAT MQ SC PC LUID AC INST SW/ > TEXT /TCBTAB BLNK THRD S.A. BLK# STAT FLD AC PC NAM ASS/ TEXT /FREECORE DUMP@TOO MUCH TEXT/;-1;7700 PROGEND=.-1 $$$$



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