TDQ(B ] '!PRO124DECUS CDisk 3 of 3 1@2>2c!:K:<2 > !!"! "> 2 8 2>X͋` :͓`>(>X͋>͋>`>2v`@b>`@0&&##&))::^#V#*^#V>+)x-8_)*)þ))>+><7"9.Yͯ * M^2U :2:2ͳ:_³ͯ !6! @!!BH @@ABH B! "BHI$$BI$BI $ HI kt  RB3&&;u QY   IO SYSMSDOS SYSDHOMDPD     MS-DOS Version 3.10b Loading...   K Error reading the diskNot an MS-DOS system disk: Type any key to try ag:ain ... Ȏ؎м&󪻜&] &OȎмs~ K.%'(0 <rxJp3=us12pV^(tjȉG 3GG*W ,%.H G2r!= r#þ%*>,QWV ^_Yt &Eû*G,G ('2H >r*>,&8tûGpG ! ûGpG # P-0HX6*Ƌ6,>Ku &=r&&s%=rJ+Ѓu PX>JJuGGGHPQ3ˆGWww > u GpG S>rGL[G GYXr> uPQYXG @þ Gp3ËG W_2NyhdW2a f˸ 3ã*,3j>,\tf,&GR&GT&GU=u?&GE2LTR*>,>,_t ,_&O u 6,&@:u&@ <t<u&Kt3 t@ËX3 t@(. ..%0[bc3ҋËLde f gW>WtlW2ùPQQ7>WYt2WþEPg.WX3&X&Z&j&3X&Z&ÜWVPSQRUFPF XF]ZY[X^_.F<t V(^2ҊW&,Gur &G&G&GWG &M&'<rt<u&3S2ҊWuWY&O3Gr. &&&2<t"O GtVWً_^ɸ&.U &ȎRVdZ^u΁&&&'33[?uVWG _^$#P&.[ X&.[ &&>u.>[ u&"u3&"u rF     ً_^ɸ &.V   U-e _vߋtDECUSC3  is not a system disk  uDECUSC326AUG93100405)DECUSC3 SYSTEM DECFILE11A Z"g. 7 't:#z26AUG9310040526AUG93100405#14i_t:#z xQz kzNNz*O:z=yqKzU .& xQz26AUG9310040526AUG93100405 8  M .& kz26AUG9310040526AUG93100405p * _. 'NNz26AUG9310040526AUG93100405f ha. NJ & Z26AUG9310050601JUN84193118'c|=a.Jv &2d26AUG9310052301JUN84193235.M .&*O:z26AUG9310040526AUG931004058La. H &x26AUG9310051001JUN84193134)3<_. '=yqKz26AUG9310044226AUG93100442@+Za. $ '%K26AUG9310051301JUN84193150+o^a.J~ &RZ26AUG9310045901JUN84193028zia. 4 ',E26AUG9310051601JUN84193205,Tv -a.EH '闀 [26AUG9310050201JUN84193044 t a.  '2`26AUG9310051901JUN84193220-  /*)LIBRARY*//* *  *** * * C P R N T . C * *  *** *7 * C-callable interface to P/OS callable print services * * Bob Denny 02-Jan-84 * * Edits: */extern cprnt();p$cprnt(req, file, stat)#unsigned req; /* Request code */char *file; /* File name */+int *stat; /* --> 2-word status block */ {? unsigned req_array[75]; /* 75-word request/scratch array */* unsigned flen; /* File name length */3 req_array[0] = req; int *stat; /* --> 2 word status block */3 p$dmenu(action, maxlen, addopt, msg1, msg2, stat);* P$DPACK - Pack dynamic single-choice menu* --- char *fid; /* Field ID */( char *buf; /* Field 'value' buffer */+ char *keyw; /* "DFLT", "KEYWnn" or "" */+ int p1, p2; /* Parameter(s) for above *// int clear; /* TRUE = clear dynamic buffer */# int stat[2]; /* 2-word status */.F p$dpack(fid, buf, keyw, p1, p2, clear, stat); % CTEX Inte‰ /* Fill in request code */2 if(req == 1) /* If "print file" requested */5 flen = strlen(file); /* Get filename length */( else /* For other requests ... */: file = flen = 0; /* ... force file & length = 0 */J call(cprnt, 4, stat, req_array, file, &flen); /* Call print service */ 2 return(stat[0]); /* Return 1st status word */ }@crface Library for DECUS C% ==" P$FATLER - Fatal error  --T char *msg; /* Message */ p$fatler(msg); P$GETKEY - Get keystroke  --r) int stat[2]; /* 2-word status block */ p$getkey(stat);) P$HCLOSE - Close current help frame file) --d) int stat[2]; /* 2-word status block */ p$hclose(stat); P$HELP - Display help frame  ---a.A &2K26AUG9310052601JUN84193250/Z3% CTEX Interface Library for DECUS C% ==D This document contains a brief description of the interface libraryB for accessing CTEX functions from DECUS C. The library is called> CTEX.OLB and is located in the usual P/OS development libraryB directory (e.g., [001005] on the PRO). The interface maps fairlyB closely to the equivalent given in the toolkit manual, except for5 the parameters and other things as explicitly noted.D Many of the routines in ta.A` &3M26AUG9310052901JUN841933040@his library require the calling program beC linked against the POSRES cluster library, and in some cases, the C RMSRES library as well. Consult toolkit documentation for linking requirements.A Sorry, but for now there are no "H" files for status values, and@ no "fancy" documentation. This library was done in a big hurry as a midnight hack.> PLEASE NOTE: When passing 'null' strings, do NOT pass a NULL, rather, pass "". Bob Denny 02-Jan-84" P$CPRNT - Callable print services" - RZ闀 [  Z x %K ,E 2`2d2K3MQ`R@9RKBRMMSZSx?TTTe_X&_&egfKv:egfKkQIq v:GK%8"8 q--# unsigned req; /* Request code */$ char *file; /* File name or "" */+ int *stat; /* --> 2-word status block */ p$cprnt(req, file, stat);  P$DMENU - Display dynamic menu --6 char *action; /* --> buffer to receive action str */0 int maxlen; /* Size of action string buffer */2 int addopt; /* TRUE = enable additional opt's */- char *msg1; /* Message for line 23 or "" */- char *msg2; /* Message for line 24 or "" */* *msg1; /* Message for line 23 or "" */. char *msg2; /* Message for line 24 or "" */) int stat[2]; /* 2-word status block */2 p$menu(action, maxlen, addopt, msg1, msg2, stat); P$MFILE - Open menu frame file --& char *file; /* Name of menu file */) int stat[2]; /* 2-word status block */ p$mfile(file, stat);" P$MFRAME - Load static menu frame" --I- char *frame; /* Frame ID */3 char *gblact; /* Buffer for global ' P$OLDFIL - File Selection Menu -- #define NCHOICES xxx- char *wspec; /* Wild file specification */0 int nchoice = xxx; /* Max allowed to select */< char fspecs[NCHOICES][50]; /* Array of 50-byte spec bufs *// char *text1; /* Text at top of menu or "" */+ char *msg1; /* Text for line 23 or "" */( char *msg2; /* Text for line 24 "" */) int stat[2]; /* 2-word status block */; p$oldfil(wspec, nchoice, fspecs, text1, msg1, msg2, stat); P$WTRESaction str */* int maxlen; /* Size of gblact buffer */) int stat[2]; /* 2-word status block */' p$mframe(frame, gblact, maxlen, stat);* P$MMENU - Pack multiple-choice menu frame* ---5 char *optstr; /* Array of fixed-length opt strs */3 int optlen; /* Fixed length of option strings */% int nopts; /* Number of options *// int lim; /* Limit to number of selections */1 int *sels; /* Returned array of sel'd opt's */3 int addopt; /* TRUE]9 - Wait for 'resume' key --- p$wtres();8 = enable additional opt's */. char *msg1; /* Message for line 23 or "" */. char *msg2; /* Message for line 24 or "" */+ int *stat; /* --> 2 word status block */E p$mmenu(optstr, optlen, nopts, lim, sels, addopt, msg1, msg2, stat);$ P$MP"ACK - Pack multiple-choice menu$ --- char *fid; /* Field ID */( char *buf; /* Field 'value' buffer *// int clear; /* TRUE = clear dynamic buffer */# int stat[2]; /* 2-word status */ p$mpack(fid, buf, clear,  /*)LIBRARY*//*! * P$DMENU - Display dynamic menu */extern dmenu();1p$dmenu(action, maxlen, addopt, msg1, msg2, stat)Nchar *action; 4 /* --> buffer to receive action str */Jint maxlen; 0 /* Size of action string buffer */Lint addopt; 2 /* TRUE = enable additional opt's */Ichar *msg1; 0 /* Message for line 23 or NULL */Ichar *msg2;  /* Message for line 24 or  char *frame; /* Frame ID */) int stat[2]; /* 2-word status block */ p$help(frame, stat); P$HFILE - Open help file  --) char *file; /* Help frame file name */& char *frame; /* Default frame ID */) int stat[2]; /* 2-word status block */ p$hfile(file, frame, stat);0 P$HFRAME - Display help frame & set new default0 --]- char *frame; /* Frame ID */) int stat[2]; /* 2-word status block */ p$hframe(framK=stat); % CTEX Interface Library for DECUS C% ==( P$MUNPK - Unpack menu buffer -- char *fid; /* Field ID */( char *buf; /* Field 'value' buffer */$ int maxl; /* Value buffer size */+ char *keyw; /* "DFLT", "KEYWnn" or "" */- int *p1, *p2; /* Parameter(s) for above */# int stat[2]; /* 2-word status */- p$munpk(f^id, buf, maxl, keyw, p1, p2, stat);) P$MSGBRD - Post message on message board) ------- G=e, stat);) P$MCLOSE - Close current menu frame file) --v) int stat[2]; /* 2-word status block */ p$mclose(stat); % CTEX Interface Library for DECUS C% ==4* P$MENU - Display single-choice menu frame* ---3 char *action; /* --> buffer for action string */1 int maxlen; /* Maximum action string length */1 int addopt; /* TRUE = enable add'tl options */. char  ---# char *msg; /* Message to post */# int stat[2]; /* 2-word status */ p$msgbrd(msg, stat);' P$NEWFIL - New File Specification Menu' --4 char name[50]; /* Receives specified file name */. char *defext; /* Default extension (R/W) *// char *text1; /* Text at top of menu or "" */+ char *msg1; /* Text for line 23 or "" */) int stat[2]; /* 2-word status block */+ p$newfil($name, defext, text1, msg1, stat); % /*)LIBRARY*//*, * P$DPACK - Pack dynamic single choice menu *; * Restricted access: handles only one field, thus requiresB * multiple calls. Also, doesn't support both 'DFLT' and 'KEYWnn' * fields in the same call. */extern dpack();;,p$dpack(fid, buf, keyw, p1, p2, clear, stat)5char *fid;  /* Field ID */Achar *buf; ) /* Field 'value' buffer */?char *keyw; -/* "DFLT" or "KEYWnn" */Cint p1, p2; Qx /*)LIBRARY*//*& * P$HELP - Display default help frame */extern help();p$help(frame, stat)Jchar *frame; ./* New default frame ID or NULL */Aint *stat; /* 2-word status block */ { int frlen;  frlen = strlen(frame);& call(help, 3, stat, frame, &frlen); return(stat[0]); }Dkw * /* Parameter(s) for above */Hint clear; 0 /* TRUE = clear dynamic buffer */:int stat[2]; /* 2-word status */ { int fidl, keyl, bufl; fidl = strlen(fid); bufl = strlen(buf); keyl = strlen(keyw);> call(dpack, (clear) ? 10 : 9, stat, fid, &fidl, buf, &bufl,% keyw, &keyl, &p1, &p2, "CLRB"); return(stat[0]); },>s /*)LIBRARY*//* * HFILE - Open help file */extern hfile();p$hfile(file, frame, stat)<char *file; # /* Help file name */>char *frame; "/* Default frame ID */Aint *stat; /* 2-word status block */ { int flen, frlen;  flen = strlen(file); frlen = strlen(frame);4 call(hfile, 5, stat, file, &flen, frame, &frlen); return(stat[0]); } /*)LIBRARY*//*$ * P$FATLER - Fatal error CTEX-style */extern fatler(); p$fatler(msg) char *msg; { int mlen;  mlen = strlen(msg); call(fatler, 2, msg, &mlen); };t /*)LIBRARY*//* * HFRAME - Display help frame */extern hframe();p$hframe(frame, stat)6char *frame; /* Frame ID */Aint *stat; /* 2-word status block */ { int frlen;  frlen = strlen(frame);( call(hframe, 3, stat, frame, &frlen); return(stat[0]); }O /*)LIBRARY*//*$ * P$GETKEY - Get keystroke & decode *4 * POSRES.H contains definitions for status/keycodes */extern getkey();p$getkey(stat) int *stat; { call(getkey, 1, stat); return(stat[0]); }a. 'Q`26AUG9310053201JUN84193319Ul ԽNULL */Eint *stat; /* --> 2 word status block */ { int actlen, m1len, m2len; m1len = strlen(msg1); m2len = strlen(msg2);> call(dmenu, 10, stat, action, &maxlen, &actlen, 0, &addopt,% msg1, &m1len, msg2, &m2len); action[actlen] = '\0'; return(stat[0]); } /* TRUE = enable additional opt's */Ichar *msg1; 0 /* Message for line 23 or NULL */Ichar *msg2;  /* Message for line 24 or  گ /*)LIBRARY*//* * P$HCLOSE - Close help file */extern hclose();p$hclose(stat) int *stat; { call(hclose, 1, stat); return(stat[0]); } 9a.NL &R@26AUG9310053601JUN84193334V a.2 '?TT26AUG9310055301JUN84193456`na.% '9RK26AUG9310053901JUN84193351XPa.M| &Te26AUG9310055601JUN84193510aV,a.NP 'BRM26AUG9310054201JUN84193405Y[d"a.K &_X&26AUG9310055901JUN84193527cja.Oh 'MSZ26AUG9310054601JUN84193421[a.J '_&26AUG9310060301JUN84193543e& a.H 'Sx26AUG9310054901JUN84193439^Hv a.D  &egfKv:26AUG9310060601JUN84193601hA 7Oa.C2 'egfKkQ26AUG9310060901JUN84193615iba.H, 'Iq v:26AUG9310061301JUN84193640q׸a.C 'GK%26AUG9310061701JUN84193658tS0 a.!~ '8"26AUG9310062001JUN84193719y      I  {;LL */Eint *stat; /* --> 2 word status block */ { int actlen, m1len, m2len;  m1len = strlen(msg1); m2len = strlen(msg2);> call(menu, 10, stat, action, &maxlen, &actlen, 0, &addopt, % X msg1, &m1len, msg2, &m2len); action[actlen] = '\0'; return(stat[0]); }Y   /*)LIBRARY*//* * P$MFILE - Open menu file */extern mfile(); p$mfile(file, stat) char *file; int *stat; { int flen; flen = strlen(file);% call(mfile, 3, stat, file ,&flen); return(stat[0]); }  Y /*)LIBRARY*//* * MFRAME - Read menu frame */extern mframe();%p$mframe(frame, gblact, maxlen, stat)=char *frame; %/* Frame ID string */Nchar *gblact; 4 /* Global action string buffer addr */Jint maxlen; / /* Size of global action buffer */Dint *stat; /* Returned 2-word status */ { int flen; int size;  flen = strlen(frame);? call(mframe, 6, stat, frame, &flen,  ! /*)LIBRARY*//* * P$MCLOSE - Close menu file */extern mclose();p$mclose(stat) int *stat; { call(mclose, 1, stat); return(stat[0]); }   /*)LIBRARY*//*# * P$MENU - Show single choice menu */extern menu();0p$menu(action, maxlen, addopt, msg1, msg2, stat)Nchar *action; 4 /* --> buffer to receive action str */Jint maxlen; 0 /* Size of action string buffer */Lint addopt; 2 /* TRUE = enable additional opt's */Ichar *msg1; 0 /* Message for line 23 or NULL */Ichar *msg2;  /* Message for line 24 or NU  /*)LIBRARY*//*, * P$MMENU - Show multiple choice menu frame */extern mmenu();Cp$mmenu(optstr, optlen, nopts, lim, sels, addopt, msg1, msg2, stat)Nchar *optstr; 4/* Array of fixed-length option strs */Kint optlen; 1/* Fixed length of option strings */>int nopts; " /* Number of options */Jint lim; 0 /* Limit to number of selections */Oint *sels; /* Returned - /*)LIBRARY*//*2 * P$MSGBRD - Send Message to Message/Status Board */extern msgbrd();p$msgbrd(msg, stat) char *msg; int *stat; { int mlen;  mlen = strlen(msg);% call(msgbrd, 3, stat, msg, &mlen); } + array of selected options */Kint addopt; 2/* TRUE = enable additional opt's */Hchar *msg1; ./* Message for line 23 or NULL */Hchar *msg2; -/* Message for line 24 or NULL */Dint *stat; /* --> 2 word status block */ { int i, nsel, m1len, m2len; m1len = strlen(msg1); m2len = strlen(msg2); for(i=0; iint maxl; $/* Value buffer size */?char *keyw;  o&&nopts, &lim, &nsel, sels, &addopt,% < msg1, &m1len, msg2, &m2len); return(stat[0]); } lY/ /* "DFLT" or "KEYWnn" */Cint *p1, *p2; +/* Parameter(s) for above */:int stat[2]; /* 2-word status */ { int fidl, keyl, bufl; fidl = strlen(fid); keyl = strlen(keyw);M call(munpk, 10, stat, fid, &fidl, buf, &maxl, &bufl, keyw, &keyl, p1, p2); buf[bufl] = '\0'; return(stat[0]); }C  /*)LIBRARY*//*. * P$MPACK - Pack dynamic multiple choice menu *; * Restricted access: handles only one field, thus requires * multiple calls. */extern mpack();p$mpack(fid, buf, clear, stat)5char *fid;  /* Field ID */Achar *buf; ( /* Field 'value' buffer */Hint clear; 0 /* TRUE = clear dynamic buffer */:int stat[2]; > /* 2-word status */ { int fidl, bufl; fidl = st  /*)LIBRARY*//* * P$NEWFIL - Create a file menu */extern newfil();'p$newfil(name, type, text1, msg1, stat)Kchar *name; /* In: default file name Out: actual file specification */Hchar *type; /* In: default file type Out: new default file type */1char *text1; /* Text at top of form or NULL */0char *msg1; /* Message on line 23 or NULL */)int *stat; /* 2-word status block */ {$ int namlen, typlen, t1len, m1len;  namlen = strlen(name); typlen = c gblact, &maxlen, &size); gblact[size] = '\0'; return(stat[0]); }mframe(frame, gblact, maxlen, stat)=char *frame; %/* Frame ID string */Nchar *gblact; 4 /* Global action string buffer addr */Jint maxlen; / /* Size of global action buffer */Dint *stat; /* Returned 2-word status */ { int flen; int size;  flen = strlen(frame);? call(mframe, 6, stat, frame, &flen, frlen(fid); bufl = strlen(buf);F call(mpack, (clear) ? 5 : 6, stat, fid, &fidl, buf, &bufl, "CLRB"); return(stat[0]); } [ zstrlen(type); t1len = strlen(text1); m1len = strlen(msg1);I call(newfil, 11, stat, name, &namlen, &namlen, type, &typlen, &typlen,& text1, &t1len, msg1, &m1len);2 if(stat[0] != 1) /* If EXIT or MAIN SCREEN */7 namlen = typlen = 0; /* Indicate null lengths */ else { name[namlen] = '\0'; type[typlen] = '\0'; } return(stat[0]); }lock */ {$ int namlen, typlen, t1len, m1len;  namlen = strlen(name); typlen = V .enabl lc, .title fspool - Queue file for print (P/OS) .ident "POS001" .nlist bex,cnd,toc;;+-; index fspool - Queue file for print (P/OS);; Usage; ; fspool(fp);; FILE *fp; /* Open file IOV */; ; Description;<; This function may be called in lieu of fclose() when it isC; desired to send the file to the P/OS print services for printing.;>; Fspool() returns zero if the file was queued for printing by?; P/OS, or an error code if the file could not be printed. Th t /*)LIBRARY*//* * P$OLDFIL - Select a file menu */extern oldfil();9p$oldfil(wspec, nchoice, fspecs, text1, msg1, msg2, stat);char *wspec; 3/* Wild file spec for selections */Jint *nchoice; B /* In: Max number to select Out: Number chosen */Gchar *fspecs; ? /* Array of contiguous 50-byte filespec bufs */2char *text1; '/* Text at top of frame */0char *msg1; & /* Message on line 23 */0char *msg2; ! /* Message on line 24 */1int *s  e=; error codes returned are those issued by the P/OS "callable=; print service", unless the 'file' was not really a file, in?; which case fspool() returns -1 if the 'file' closes normally.;>; If the file was opened via the fwild()/fnext() services, the>; internal buffers are not freed, allowing the program to call; fnext() for subsequent files.;A; WARNING - Uses over 200 bytes of stack to maintain re-entrancy.; ; Internal;A; This routine is the replacement for FSPOOL for P/OS us tat; /* 2-word status block */ {$ int i, wlen, t1len, m1len, m2len; int *sizes; 4 if((sizes = malloc(*nchoice * sizeof(int))) == 0) { stat[1] = 0;= return(stat[0] = -10); /* No buffer space */ } wlen = strlen(wspec); t1len = strlen(text1); m1len = strlen(msg1); m2len = strlen(msg2);? call(oldfil, 12, stat, nchoice, fspecs, sizes, wspec, &wlen,4 > text1, &t1len, msg1, &m1len, msg2, &m2len);: if(stat[0] != e. Since@; it requires making a call to a routine in the P/OS SYSLIB that?; is not present in RSX-flavor SYSLIBs, there is no easy way toB; make the difference transparent at run-time. This module should%; replace FSPOOL in P/OS libraries. ;; Bugs;;-;; Edits:;+; POS001 02-Jan-84 RBD Initial edit on P/OS; .psect c$codefspool::" jsr r5,csv$ ; Link environments clr $$ferr ; No errors (yet) mov C$PMTR(r5),r4 ; R4 --> IOV, bit #VF$FIL,V$FLAG(r4) ; Is it a re  1) /* If EXIT or MAIN SCREEN pressed */3 *nchoice = 0; /* Indicate nothing chosen */ else { for(i=0; i<*nchoice; i++), ^ fspecs[(50 * i) + sizes[i]] = '\0'; } free(sizes); return(stat[0]); } al file? bne 10$ ; (yes) ;!; Non-files are handled nicely. ); The call is converted into an fclose().; clr r0 ; Signal normal close! call $$clos ; Close the 'file' br 100$;5; Fill in an automatic buffer with the full filespec.;+10$: sub #64.,sp ; Make a filename buffer% mov sp,r3 ; r3 --> filename buffer$ mov r3,-(sp) ; Push buffer address mov r4,-(sp) ; Push IOV' call fgetname ; Get the full filename' cmp (sp)+,(sp)+ ; Strip off arguments;>; DPFSPOOL.MAC contains a replacement routine for the fspool() functionDnormally found in the C runtime libraries. It is here because it isBan interface to CTEX print services, but it should be put into the4FCS and RMS C libraries as a replacement fo r FSPOOL.| Close the file, preserving buffers if it's on an fwild/fnext; roll.;( clr r0 ; R0 = zero means "real" close6 bit #VF$WLD,V$WFLG(r4) ; File engaged in wildcarding? beq 20$ ; (no)% mov r4,r0 ; Yes, close fnext-style20$: call $$clos;*; Call P/OS print system to print the file; mov r5,-(sp) ; Save r5" sub #4,sp ; Make a status block mov sp,r2 ; r2 --> status& sub #<75.*2>,sp ; Make request array# mov sp,r1 ; r1 --> request array% mov #1,(r1) ; Request "print file SRES. This collection of @routines is becoming a "CTEX services library", including POSRESBstuff, and other things available via SYSLIB. Accordingly, I haveArenamed the library CTEX.OLB and this directory [CTEXLIB]. SorryEto have thrown you a curve, Tim, but now is the time to do it, before)too many command files have been written.GHave you tested any more of the routines??? Looks like DMENU works ...HAdded PFSPOOL, which is a replacement fspool() for P/OS which queues the8file to the P/  .OLB=HELP.OBJ,HFILE.OBJ,HFRAME.OBJ0$ mcr lbr CTEX.OLB=MCLOSE.OBJ,MENU.OBJ,MFILE.OBJ1$ mcr lbr CTEX.OLB=MFRAME.OBJ,MMENU.OBJ,MPACK.OBJ2$ mcr lbr CTEX.OLB=MSGBRD.OBJ,MUNPK.OBJ,NEWFIL.OBJ'$ mcr lbr CTEX.OLB=OLDFIL.OBJ,WTRES.OBJ$ delete CPRNT.OBJ;$ delete DMENU.OBJ;$ delete DPACK.OBJ;$ delete FATLER.OBJ;$ delete GETKEY.OBJ;$ delete HCLOSE.OBJ;$ delete HELP.OBJ;$ delete HFILE.OBJ;$ delete HFRAME.OBJ;$ delete MCLOSE.OBJ;$ delete MENU.OBJ;$ delete MFILE.OBJ;$ delete MFRAME.OBJ; " mov r1,-(sp) ; Save r1- mov r3,-(sp) ; Push filespec string address( call strlen ; r0 = length of filespec' mov (sp)+,r3 ; (Not really necessary) mov (sp),r1 ; Restore r1 mov r0,(sp) ; sp --> length mov sp,r0 ; r0 --> length;; At this point:; r0 --> filespec length; r1 --> request array; r2 --> status block; r3 --> filespec,; Now we push a FORTRAN-style argument block;/ mov r0,-(sp) ; Push the address of the length* mov r3,-(sp) ; Push the filespec address 1*OS print server. See info in PFSPOOL.INF. / mov r1,-(sp) ; Push the request array address. mov r2,-(sp) ; Push the status block address$ mov #4,-(sp) ; Push argument count$ mov sp,r5 ; R5 --> argument block" call cprnt ; Queue for printing tst (sp)+ ; Pop count$ mov (sp)+,r2 ; r2 --> status block add #162.,sp ; Cut back stack& mov (sp)+,r5 ; Restore frame pointer;9; If it succeeded, return 0, else return 2nd status word.; clr r0 ; Assume success tst (r2) ; Well? bpl 100$ ; (OK)( mov 2(r2),r0 ; Err ?C$! Vax compatibility command file built on Sat Jan 14 18:40:16 1984$ was_verify = 'f$verify(1)'$!$! ** Compile CPRNT$!$ xcc CPRNT.C $ xas CPRNT.S -d$!$! ** Compile DMENU$!$ xcc DMENU.C $ xas DMENU.S -d$!$! ** Compile DPACK$!$ xcc DPACK.C $ xas DPACK.S -d$!$! ** Compile FATLER$!$ xcc FATLER.C $ xas FATLER.S -d$!$! ** Compile GETKEY$!$ xcc GETKEY.C $ xas GETKEY.S -d$!$! ** Compile HCLOSE$!$ xcc HCLOSE.C $ xas HCLOSE.S -d$!$! ** Comp Tor, return status[1]100$: jmp cret$ .endne in the P/OS SYSLIB that?; is not present in RSX-flavor SYSLIBs, there is no easy way toB; make the difference transparent at run-time. This module should%; replace FSPOOL in P/OS libraries. ;; Bugs;;-;; Edits:;+; POS001 02-Jan-84 RBD Initial edit on P/OS; .psect c$codefspool::" jsr r5,csv$ ; Link environments clr $$ferr ; No errors (yet) mov C$PMTR(r5),r4 ; R4 --> IOV, bit #VF$FIL,V$FLAG(r4) ; Is it a re lile HELP$! $ xcc HELP.C $ xas HELP.S -d$!$! ** Compile HFILE$!$ xcc HFILE.C $ xas HFILE.S -d$!$! ** Compile HFRAME$!$ xcc HFRAME.C $ xas HFRAME.S -d$!$! ** Compile MCLOSE$!$ xcc MCLOSE.C $ xas MCLOSE.S -d$!$! ** Compile MENU$! $ xcc MENU.C $ xas MENU.S -d$!$! ** Compile MFILE$!$ xcc MFILE.C $ xas MFILE.S -d$!$! ** Compile MFRAME$!$ xcc MFRAME.C $ xas MFRAME.S -d$!$! ** Compile MMENU$!$ xcc MMENU.C $ xas MMENU.S -d$!$! <The following POSRES interface modules have not been tested:! DMENU DPACK MPACK NEWFIL OLDFIL 6while PRSCSI and RDMSG have not even been written yet.DNote: The P/OS MSGBRD routine is not in POSRES; it is in the systemE library (SYSLIB). It was put into the POSRES interface libraryE because the interface is identical to all other POSRES modules.*** 02-Jan-83: ***BAdded the P$CPRNT function, allowing C access to the P/OS callableBprint services. This, too, is not in PO y ** Compile MPACK$!$ xcc MPACK.C $ xas MPACK.S -d$!$! ** Compile MSGBRD$!$ xcc MSGBRD.C $ xas MSGBRD.S -d$!$! ** Compile MUNPK$!$ xcc MUNPK.C $ xas MUNPK.S -d$!$! ** Compile NEWFIL$!$ xcc NEWFIL.C $ xas NEWFIL.S -d$!$! ** Compile OLDFIL$!$ xcc OLDFIL.C $ xas OLDFIL.S -d$!$! ** Compile WTRES$!$ xcc WTRES.C $ xas WTRES.S -d3$ mcr lbr CTEX.OLB/CR=CPRNT.OBJ,DMENU.OBJ,DPACK.OBJ3$ mcr lbr CTEX.OLB=FATLER.OBJ,GETKEY.OBJ,HCLOSE.OBJ0$ mcr lbr CTEX m     f$ delete MMENU.OBJ;$ delete MPACK.OBJ;$ delete MSGBRD.OBJ;$ delete MUNPK.OBJ;$ delete NEWFIL.OBJ;$ delete OLDFIL.OBJ;$ delete WTRES.OBJ;)$ if .not. 'was_verify' then set noverifyxcc DMENU.C $ xas DMENU.S -d$!$! ** Compile DPACK$!$ xcc DPACK.C $ xas DPACK.S -d$!$! ** Compile FATLER$!$ xcc FATLER.C $ xas FATLER.S -d$!$! ** Compile GETKEY$!$ xcc GETKEY.C $ xas GETKEY.S -d$!$! ** Compile HCLOSE$!$ xcc HCLOSE.C $ xas HCLOSE.S -d$!$! ** Comp   /*)LIBRARY*//*! * P$WTRES - Wait for Resume Key. */extern wtres(); p$wtres() { call(wtres, 0); }                         "      0      N      \      j      x              !!!!!!!!!! !  """""""""" "  ########## #  $5$$$$$$$$$ $  %%%%%%%%%% %  &'&&&&&&&&& &  '''''''''' '  (Y((((((((( (  )))))))))) )  *K********* *  ++++++++++ +  ,},,,,,,,,, ,  ---------- -  .o......... .  ////////// /  0000000000 0  1111111111 1  2222222222 2  3333333333 3  42444444444 4  5555555555 5  6 666666666 6  7777777777 7  8^888888888 8  9999999999 9  :L::::::::: :  ;;;;;;;;;; ;  <z<<<<<<<<< <  ========== =  >h>>>>>>>>> >  ?????????? ?  @-@@@@@@@@@ @  AAAAAAAAAA A  B?BBBBBBBBB B  CCCCCCCCCC C  D DDDDDDDDD D  EEEEEEEEEE E  FFFFFFFFFF F  GGGGGGGGGG G  HeHHHHHHHHH H  IIIIIIIIII I  JwJJJJJJJJJ J  KKKKKKKKKK K  LALLLLLLLLL L  MMMMMMMMMM M  NSNNNNNNNNN N  OOOOOOOOOO O O