File QUOLST.PA (PAL assembler source file)

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


/*** TSS/8 QUOLST *** VERSION 1 ***\
/BY JOHN YOUNG (NHHS)
/

*0000 CRLF TAD RESTRT SRA /RESTART TO HALT UND JMP I .+1 INIT *0010 AUX1, 0 RESTRT, .+1 CLA TAD DCTRC /"^C" PUTMES EXIT, CRLF CMA CLOS /DON'T FORGET TO CLOSE UP SHOP! CRLF HLT PUTMES=JMS I . /PAL-TEXT OUTPUT PRINT0 PUTNUM=JMS I . /NUMBER OUTPUT NUMOUT CRLF=JMS . CRLF0, 0 CLA TAD P15 TLS TAD N3 TLS CLA CLL JMP I CRLF0 SPACE=JMS I . SPACE0 ERROR, CLA CLL TAD MSG12 PUTMES CRLF JMP RESTRT+1 MSG1, MG1-1 MSG2, MG2-1 MSG3, MG3-1 MSG4, MG4-1 MSG5, MG5-1 MSG6, MG6-1 MSG7, MG7-1 MSG8, MG8-1 MSG9, MG9-1 MSG10, MG10-1 MSG11, MG11-1 MSG12, MG12-1 DCTRC, CTRC-1 RFDT, .+1 0 0 -3 UFDCNT-1 4 0 WHOBLK, UFDBLK+3 UFDBLK, .+1 0 /FILE 0 1 /[0,1] 0 /ACCOUNT # OF UFD 0 0 QUOBLK, .+1 1 /FILE 1 4 /[0,4] 6165 /QU 5764 /OT 4100 /A DTA0, 0 DTA1, 0 DTA2, 0 SEGCNT, 0 UFDCNT, 0 ONLINE, 0 OFLINE, 0 POINT, 0 COUNT, 0 ACOUNT, 0 OFKEEP, 0 P2000, 2000 N2000, -2000 P7700, 7700 P15, 15 P40, 40 P77, 77 P100, 100 N3, -3
*0200 INIT, SEGS DCA SEGCNT TAD SEGCNT PUTNUM /PUT OUT # OF FREE SEGS S D 3 TAD MSG1 /TELL HIM THAT'S WHAT PUTMES /IT IS CRLF TAD WHOBLK /MAKE SURE WE GET THE RIGHT ACCOUNT #! WHO TAD UFDBLK+3 DCA ACOUNT /MAKE SURE TO SAVE ACCT # TAD UFDBLK OPEN /OPEN IT SZA CLA /ERROR? JMP ERROR /BUMMER TAD RFDT /READ IT IN RFILE TAD RFDT+6 /EOF IS ONLY LEGAL ERROR CLL RTR SZA CLA JMP ERROR OPNQUO, TAD QUOBLK /OPEN QUOTA.DAT[0,2] OPEN SZA CLA /HOPE NO ERROR JMP NONDTA /IF QUOTA ISN'T FOUND, UNLIMITED DTA QUOTAS IAC DCA RFDT+2 /FOR FILE # STL RTR DCA RFDT+3 /READ 2 CMA CLL RAR DCA RFDT+4 /ADDER-1=3777 DCA RFDT+5 /START DISK ADDR 0 TAD RFDT RFILE /DO IT!!!!!!!!!!!---- TAD RFDT+6 CLL RTR SZA CLA JMP ERROR STL RAR /SET BUFF POINT TO 4000 DCA POINT TAD UFDBLK+3 SPA /GROUP #'S ARE >3777, PRIVATE, <4000 AND P7700 /WE'RE ONLY LOOKING FOR DCA UFDBLK+3 /PROJECT #'S SKP DTALOP, ISZ POINT /INCRE POINT TAD I POINT /GET PROJ # SNA /IF ZERO, COUNT IT JMP ONOFF /IF ZERO THIS GUY HAS CIA /NO DTA QUOTA'S TAD UFDBLK+3 SZA CLA JMP DTALOP JMS INCPNT DCA DTA0 JMS INCPNT DCA DTA1 JMS INCPNT DCA DTA2 JMP ONOFF INCPNT, 0 TAD POINT TAD P100 DCA POINT TAD I POINT TAD P2000 SMA TAD N2000 JMP I INCPNT NONDTA, STL RAR /HIS PROJECT # NOT FOUND DCA DTA0 /THIS MEANS HE HAS NONE! STL RAR DCA DTA1 STL RAR DCA DTA2 JMP ONOFF ONOFF, TAD ONLINE /IF ONLINE OR OFFLINE SPA /QUOTAS ARE -#'S THEN STA CLL RAR /THEY ARE TAKEN AS UNLIMITED DCA ONLINE TAD OFLINE DCA OFKEEP TAD OFLINE SMA JMP RALPH CLA TAD ONLINE RALPH, DCA OFLINE JMP I .+1 START
*0400 START, CLA CLL /FIGURE OUT HOW MUCH ONLINE TAD UFDCNT /QUOTA LEFT CIA /IF: ---- TAD ONLINE /FREE DISK<ONLINE-UFDCNT CIA /THEN PRINT AMT OF DISK INSTEAD TAD SEGCNT SMA CLA JMP ONFIG TAD SEGCNT PUTON, PUTNUM S D 3 TAD MSG2 PUTMES CRLF JMP OFFIG ONFIG, TAD UFDCNT CIA TAD ONLINE JMP PUTON OFFIG, TAD UFDCNT CIA TAD OFLINE SPA JMP EXCEED CIA TAD SEGCNT SMA CLA JMP OFFSEG TAD SEGCNT PUTOFF, PUTNUM S D 3 TAD MSG3 PUTMES JMP AMTJOB OFFSEG, TAD UFDCNT CIA TAD OFLINE JMP PUTOFF EXCEED, CLA CLL TAD MSG4 PUTMES TAD OFLINE CIA TAD UFDCNT PUTNUM S D 3 TAD MSG5 PUTMES AMTJOB, CRLF CRLF 6615 IAC PUTNUM S D 2 TAD MSG6 PUTMES TAD ACOUNT RTR RTR RTR AND P77 PUTNUM S 2 TAD MSG7 PUTMES TAD ACOUNT AND P77 PUTNUM S 2 TAD MSG8 PUTMES CRLF TAD OFKEEP DCA OFLINE CRLF TAD MSG9 PUTMES CRLF TAD MSG10 PUTMES CRLF CRLF SPACE 1 TAD ONLINE SPA JMS NONE PUTNUM S D 4 SPACE 4 TAD OFLINE SPA JMS NONE PUTNUM S D 4 SPACE 2 TAD DTA0 SPA JMS NONE PUTNUM S D 4 SPACE 1 TAD DTA1 SPA JMS NONE PUTNUM S D 4 SPACE 1 TAD DTA2 SPA JMS NONE PUTNUM S D 4 JMP EXIT NONE, 0 CLA TAD MSG11 PUTMES IAC RAL TAD NONE DCA NONE JMP I NONE
*0600 /COMBINATION OCTAL-DECIMAL OUTPUT ROUTINE /ENTER: TAD VALUE / JMS NUMOUT / S D 3 / RETURN / / /S MEANS TO SUPPRESS LEADING ZEROS /D MEANS TO OUTPUT IN DECIMAL /3 DIGITS TO OUTPUT, 1 TO 4 DIGITS / / S=4000 D=2000 NUMOUT, 0 DCA NUM TAD I NUMOUT CLL RAL /OCTAL OR DECIMAL OUTPUT? SPA CLA TAD DECOCT /DECIMAL TAD OCTPNT /OCTAL DCA STKPNT /PUT IT IN STACK POINTER TAD P260 DCA DATA+1 TAD P260 DCA DATA+2 TAD P260 DCA DATA+3 TAD DATPNT DCA DATA /SET DATA POINTER TAD N3 DCA COUNT /SET UP ISZ LOOP TAD NUM /GETETH OUT NUMBER NUMLOP, CLL TAD I STKPNT /TAKE AWAY VALUE SNL JMP .+3 /IF NEG, CHANGE TO POWER-1 ISZ I DATA /TAKEN AWAY VAL, INCRE VALUE JMP NUMLOP /TAKE AWAY MORE DCA NUM /WE TOOK TOO MUCH TAD I STKPNT /ADD THAT VALUE BACK CIA TAD NUM ISZ DATA /INCRE DATA TO NEXT CHAR ISZ STKPNT /INCRE STKPNT TO NEXT VALUE ISZ COUNT /ARE WE DONE? JMP NUMLOP /NOPE, GOWAN BACK! TAD P4260 /THIS IS A ZERO, BUT IT IS DCA DATA+4 /NEGATIVE, INDICATES END OF STACK TAD I NUMOUT /ARE WE TO SUPPRESS SMA CLA /LEADING ZEROS? JMP SUTNUM /NO, GO OUTPUT TAD DATPNT DCA DATA TAD N3 DCA COUNT SUPLOP, TAD P260 CIA TAD I DATA /IF THIS IS A ZERO SZA CLA /PUT A SPACE THERE JMP SUTNUM /IF NOT, DON'T SUPPRESS ANYMORE TAD P240 DCA I DATA ISZ DATA ISZ COUNT /IF THIS IS ALL ZERO NUMBER JMP SUPLOP /DON'T SUPPRESS THE LAST ONE SUTNUM, TAD I NUMOUT /FIGURE NUMBER AND P7 /OF CHARS TO OUTPUT CIA TAD OUTPNT DCA AUX TAD I AUX TLS SMA CLA JMP .-3 ISZ NUMOUT JMP I NUMOUT /HERE IS ALL THE DATA NEEDED FOR THE ROUTINE P260, "0 P240, " P4260, 4260 P7, 7 STKPNT, 0 NUM, 0 DECOCT, DECSTK-OCTSTK OCTPNT, OCTSTK DECIMAL DECSTK, -1000 /-1000 DECIMAL -100 /-100 DECIMAL -10 /-10 DECIMAL OCTAL OCTSTK, -1000 /-1000 OCTAL -100 /-100 OCTAL -10 /-10 OCTAL DATPNT, .+2 DATA, .+1 0 /THOUSANDS 0 /HUNDREDS 0 /TENS 0 /ONES+4000 OUTPNT, .-1 AUX=0010
PRINT0, 0 DCA AUX1 TAD I AUX1 DCA TMP1 TAD TMP1 RTR RTR RTR JMS PRIOUT TAD TMP1 JMS PRIOUT JMP PRINT0+2 PRIOUT, 0 AND P77 DCA TMP2 TAD TMP2 SNA JMP I PRINT0 AND P40 SNA CLA TAD P100 TAD TMP2 TLS CLA CLL JMP I PRIOUT SPACE0, 0 CLA TAD I SPACE0 ISZ SPACE0 CIA DCA TMP1 TAD P40 TLS ISZ TMP1 JMP .-2 CLA CLL JMP I SPACE0 TMP1, 0 TMP2, 0
*1000 MG1, TEXT * FREE DISK SEGMENTS* MG2, TEXT * USABLE SEGMENTS ONLINE* MG3, TEXT * USABLE SEGMENTS OFFLINE* MG4, TEXT *OFFLINE QUOTA EXCEEDED BY * MG5, TEXT * SEGMENTS* MG6, TEXT * USERS ON P,PN [* MG7, TEXT *,* MG8, TEXT *]* MG9, TEXT *QUOTAS:* MG10, TEXT *ONLINE OFFLINE DTA0 DTA1 DTA2* MG11, TEXT *NONE* MG12, TEXT *?ERROR* CTRC, TEXT *^C* $$$



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