File PLTPKG.SB (8k SABR macro assembler source file)

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

/
/ PLOTTER UTILITY ROUTINES FOR FORTRAN. / / ROUTINES TO GENERATE A PLOT TAPE. / / / (1) GENERAL PEN MOVEMENT COMMAND. / CALL PLOT(IX,IY,IZ) / / (2) PRINT A SINGLE ASCII LETTER. / CALL PLETER(IX,IY,IFACT,ITHETA,ILETR) / (3) PRINT A SIGNED INTEGER. / CALL PLNUM(IX,IY,IFACT,ITHETA,INUMB) / / (4) PRINT AN ASCII STRING. / CALL PLSTRI(IX,IY,IFACT,ITHETA,IWDS,IARRAY) / / (5) GENERAL AXIS PLOTTING ROUTINE. / CALL PLAXIS(IX,IY,ID,IN,ITL,ITHETA,ISI,IMIN,ISS, / ISL,INWDS,ILABL) / / (6) TELETYPE MESSAGE GENERATION ROUTINE. / CALL PLTTY(IWAIT,IWDS,ISTRING) / / (7) PLOT PACKAGE OPEN ROUTINE (MUST BE CALLED FIRST) / CALL PLOPEN(IUNIT,ISTRTBL,INOBLOCKS,IER) / / (8) PLOT PACKAGE CLOSE ROUTINE. / CALL PLCLOS(NOBLKSWRITTEN) / / ENTRY PLOT ENTRY PLETE ENTRY PLNUM ENTRY PLSTR ENTRY PLAXI ENTRY PLTTY ENTRY PLOPE ENTRY PLCLO OPDEF TADI 1400 OPDEF DCAI 3400 OPDEF JMPI 5400 LAP PLBUF, 0 PAGE PAGE / DATA AND CONSTANTS FOR THIS MESS.... PLNENT, 0 /# OF CELLS LEFT IN BUFFER PLCUR, 0 /CURRENT POINTER INTO BUFFER / PARAMETER UNPACKING ROUTINE.... ARGAD, 0 GETARG, 0 /GETS NEXT ARGUMENT IN FORTRAN /GENERATED PARAMETER STRING. GTCDF1, HLT /REPLACED BY CDF TADI PLOT# /GET PARAM DATA FIELD DCA GTCDF2 INC PLOT# /BUMP LIST ADDRESS TADI PLOT# /GET PARAMETER ADDRESS DCA ARGAD /SAVE FOR INDIRECT (OR ARRAY) INC PLOT# GTCDF2, HLT /REPLACED BY CDF TADI ARGAD /PASS THE VALUE IN THE ACC JMPI GETARG /EXIT QUIETLY / STUFFS A VARIABLE # OF PARAMS INTO BUFFER. GTCNT, 0 GTPARS, 0 /# TO STUFF PUT IN GTCNT GTLOOP, JMS GETARG /GET THE NEXT ARGUMENT JMS STUFIT /PUT IT INTO THE BUFFER GTDONE, ISZ GTCNT /MORE TO STUFF.... (HIGHER....) JMP GTLOOP /OUCH. JMP I GTPARS /WHEW. / GETS STRING OF DATA FROM ADDR PASSED AS PARAM GETSTR, 0 /LENGTH OF STRING PASSED IN ACC SPA /CHECK FOR INDIRECT OPTION JMP FKIT CIA /SET NEGATIVE DCA GTCNT /SAVE IT JMS GETARG /NOW GET THE BUFFER ADDRESS CLA GETON, TAD GTCDF2 /FIRST THE DATA FIELD DCA BLOOP BLOOP, HLT /CHANGE DATA FIELD TADI ARGAD /GET THE NEXT VALUE JMS STUFIT /PUT IT INTO THE BUFFER INC ARGAD /BUMP THE BUFFER POINTER ISZ GTCNT /MORE? JMP BLOOP /YES. JMP I GETSTR /ADIOS. FKIT, DCA GTCNT /SAVE THE COUNT JMS GETARG /THE WORD RETURNED IS A DCA ARGAD /POINTER TO THE STRING JMP GETON / YEE OLDE BUFFER STUFFER..... STUFIT, 0 /DATA TO BE STUFFED IN ACC DCA I PLCUR /STORE IT AWAY INC PLCUR /BUMP THE CURRENT POINTER ISZ PLNENT /FULL YET? JMP I STUFIT /NO. JMS PTOUT /YES. JMP I STUFIT /SO LONG.
/ / ENTRY POINT FOR PEN COMMAND (PLOT). PLOT, BLOCK 2 CLA CLL CMA RTL /EXPECT THREE PARAMETERS DCA GTCNT /SET UP RETRIEVAL TAD PLOT DCA GTCDF1 CLA IAC /PUT IN FUNCTION CODE PLOTGO, JMS STUFIT JMS GTPARS /STRIP THE PARAMS JMP EGGSIT /AND SPLIT. / ENTRY FOR PRINT SINGLE LETTER (PLETER) PLETE, BLOCK 2 JMS GETCAL /THE ENTRY POINT SHUFFLE TAD (-5 /EXPECT FIVE PARAMETERS DCA GTCNT CLA CLL IAC RAL /FUNCTION CODE=2 JMP PLOTGO /GO DO IT. / ENTRY FOR PLOT SIGNED INTEGER (PLNUM). PLNUM, BLOCK 2 JMS GETCAL TAD (-5 /FIVE PARAMETERS DCA GTCNT CLA CLL CML IAC RAL JMP PLOTGO / ENTRY FOR PRINT ASCII STRING (PLSTRI) PLSTR, BLOCK 2 JMS GETCAL TAD (-5 DCA GTCNT /SET PARAMETER COUNT CLA CLL IAC RTL PLGO2, JMS STUFIT /SET FUNCTION CODE JMS GTPARS /FIRST GET THE PARAMS TAD GTCDF2 /THEN GET THE STRING COUNT DCA PP1 PP1, HLT TADI ARGAD /IT WAS THE LAST PARAM. JMS GETSTR /THEN GET THE ACTUAL STRING. JMP EGGSIT /AND DISAPPEAR SUDDENLY.
/ ENTRY FOR AXIS PLOTTING ROUTINE (PLAXIS) PLAXI, BLOCK 2 JMS GETCAL TAD (-13 /A SHITLOAD OF PARAMS DCA GTCNT TAD (5 /FUNCTION CODE = 5 JMP PLGO2 /HO HUM. / ENTRY FOR MESSAGE GENERATION (PLTTY) PLTTY, BLOCK 2 JMS GETCAL CLA CLL CMA RAL /TWO PARAMS AND A STRING DCA GTCNT TAD (6 JMP PLGO2 / PASS BACK A PARAMETER. PASS0, 0 PASS1, 0 DCA PASS0 JMS GETARG /SET IT UP CLA TAD PASS0 /PASS IT BACK DCAI ARGAD PASS2, JMP I PASS1 PAGE
/ / ENTRY FOR PLOT PACKAGE OPEN (PLOPEN) PLOPE, BLOCK 2 JMS GETCAL JMS GETARG /GET THE UNIT NUMBER DCA UNIT JMS GETARG /AND THE START BLOCK DCA STRTBL JMS GETARG /AND THE # OF BLOCKS CMA DCA PREVNT /PREVNT PREVENTS US FROM CLA CLL IAC RAL /WRITING TOO MANY BLOCKS TAD PREVNT /NOBLKS SIGNALS WHEN ONLY DCA NOBLKS /ONE BLOCK IS LEFT. DCA BLKSWR /INIT BLOCKS WRITTEN TO 0 DCA IER /CLEAR ERROR STATUS JMS GETARG /GET ERROR FLAG ADDRESS GRUMB2, TAD GTCDF2 /SAVE THE DATA FIELD DCA EGGSIT TAD ARGAD /AND THE ADDRESS DCA IERAD TAD (-400 DCA PLNENT TAD PLBADR /SET UP BUFFER POINTER DCA PLCUR JMP EGGSIT / ENTRY FOR PLOT PACKAGE CLOSE (PLCLOS) PLCLO, BLOCK 2 JMS GETCAL JMS PTOUT /DUMP THE REST OF THE BUFFER TAD BLKSWR JMS PASS1 /PASS THE BLOCKS WRITTEN JMP EGGSIT /AND THATS IT / BUFFER DUMPING ROUTINE. /THESE FOUR VARIABLES SET BY PLOPEN UNIT, 0 /THE TAPE UNIT NUMBER STRTBL, 0 /THE STARTING BLOCK NUMBER NOBLKS, 0 /NUMBER OF BLOCKS AVAILABLE PREVNT, 0 /PREVENTS OVER WRITING BLKSWR, 0 /COUNT OF BLOCKS WRITTEN PLBADR, PLBUF /BUFFER ADDRESS NOWD, 400 PTCT, 0 TERR, 0 /TAPE ERROR FLAG IER, 0 /GENERAL ERROR CONDITION FLAG IERAD, 0 /ADDRESS OF USER ERROR FLAG PTOUT, 0 ISZ PREVNT /CHECK FOR TOO MANY BLOCKS JMP PTOK /NO PROBLEMS CLA CMA /ALREADY WRITTEN TOO MUCH DCA PREVNT CLA CLL IAC RAL /SET ERROR FLAG TO 2 DCA IER JMP I PTOUT /AND EXIT PTOK, TAD PLNENT SNA CLA /IF BUFFER NOT FULL JMP PTBFOK /THEN MUST ZERO OUT THE TAD PLCUR /UNUSED PORTION OF IT. DCA PTCT PTLOOP, DCA I PTCT INC PTCT /DO THE HOUSEKEEPING ISZ PLNENT JMP PTLOOP PTBFOK, DCA TERR /CLEAR TAPE FLAG CALL 5, WTAPE /NOW DUMP THE BUFFER ARG UNIT ARG STRTBL ARG NOWD ARG PLBUF ARG TERR CLA TAD TERR /SEE IF ANY ERRORS SZA CLA JMP TEROR /OOPS TAD (-400 /RESET BUFFER COUNT GRUMB3, DCA PLNENT TAD PLBADR /AND BUFFER POINTER DCA PLCUR INC BLKSWR /ANOTHER BLOCK WRITTEN INC STRTBL /BUMP BLOCK POINTER ISZ NOBLKS JMP PTXOK /ALL'S WELL FOR NOW. CLA CMA /ONLY ONE BLOCK LEFT SKP TEROR, CLL CMA CML RAL /TAPE ERROR GANG. DCA IER /PASS IT ON PTXOK, JMP I PTOUT / MOVE CALLING ADDRESS TO PLOT. 0 GETCAL, 0 TAD (-3 /MUST BE CALLED FIRST THING TAD GETCAL DCA PTCT /ADDRESS OF ENTRY DATA TAD I PTCT DCA PLOT ISZ PTCT TAD I PTCT DCA PLOT# TAD PLOT /SET UP PARAM FETCH DCA GTCDF1 JMP I GETCAL /BLAH. / THE EXIT FUNNEL (PASSES THE ERROR STATUS) EGGSIT, HLT /CDF FILLED BY PLOPEN TAD IER /GET THE ERROR STATUS DCAI IERAD /PASS IT BACK RETRN PLOT /AND SPLIT END



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