% &eu , 0 / % s  , % h t % h t , p r i n t / % e a / % h / 8print%ii,(),,,!%os, (< >)/%vt,()/%print/// + APRINT%bf,/%print%ht,print/%lt,@,/%ht//%ht,print/%ea/%ht/ 4 3u%ef,print.sam/%sf,print.sam/%bf,print.sam/ * A%et,A/%os, Creating "DOC" files please wait /%set2,BOOK/%set2,FRIEND/%set2,BONUS/%1set/%2set/%3set/%4set/%5set/%set1,1/%set1,2/%set1,3/%set1,4/%set1,5/%et,x/%ea/%sfe,doc/%os, The following xx.DOC type able files now exist(: )&lf, //%ea/%ex/  Qset1%ct,x,I/%pt,x, /%ef,info.doc/%wf,info.doc,&ft,x, //%et,I/%os, / E ?set2%ef,.doc/%pt,, /%wf,.doc,&ft,, //%et,/%os, / 3BOOKA 240 page text book entitled: SAM76 The First Language Manual is available {perhaps} from your computer store and {surely} from the publisher: SAM76 Inc. Box 257 RR1 Pennington, N. J., 08534 U.S.A. Price is $15.00 postpaid if cash with order. Otherwise terms are: $30.00 net 30 days (postpaid) plus $5.00 for each copy of the invoice required by the purchaser in addition to the original one which is furnished free of charge. {U. of FLA. please Note}. Details of the language may be found in back issues of Dr. Dobbs', and Creative Computing. Send a Self Addressed Stamped envelope for a free reference sheet which lists the commands and gives some examples. 2In the release available through the CPM user's group there is only one SAM76 file - SAM76.COM. To run the SAM76 language merely type in "SAM76" {return}. In the release purchased directly from SAM76 inc. there are four versions of the interpreter individually assembled for use with 8080 or Z80 and to run in low RAM or above CPM in ROM. Details are found in the "text" named "20" in the file called INFO.SAM. You may read this file by typing in the following command: SAM76 INFO 20{return} ;202. There are several SAM76 related "COM" files on this disk. The main file is labelled xyRAW.COM where the x can be either an I (for Intel 8080) or a Z for the Zilog Z80 version, and the y is L for the version at 1000 or H for the version at 8000. There are also several small "COM" files which are run after xyRAW has been brought into memory by merely typing its name followed by a CR. This just loads SAM76 without starting it. Then if you have a ZAPPLE monitor and wish to use it directly without going through the CBIOS then type ZAPSETy and return, and the SAM76 sign on message &os,%is// should appear and you are in business. If you have other types of monitor and or wish to use the facilities in a well prepared CBIOS then just type in CPMSETy and if all goes well things should start as described above. In other cases when xyRAW is loaded then use your own schemes to patch the IO vector jump area which is located at 100C hexat load time - the Yellow load information shows things for 8000. They will be at 1000 until moved into place when zzzSETy is run. 1FRIENDThe file with the "h" in its name is as the name suggests a version of the SAM76 language assembled to operate at 8000 HEX. You may chose to put this in rom or ram above a 32 K CPM system, or better yet give copies of it to your diskless impecunious friends and sucker them in to get the book and learn all about SAM76. Don't forget to zeroize the "POA" location if your friend does not really have a disk or he will get strange things when doing the "@@f" function. !8*************************** W A R N I N G As a special treat this version of the SAM76 language contains approximately 50 functions which have not yet been described anywhere. Watch for Doctor Dobbs or put yourself on the list to get advance preprints by sending me a prestamped envelope self adressed (to yourself of course) which contains one dollar. This will entitle you to receive the next upcoming preprint and then you can recurse {note the re in front of the preceding word}. In particular be careful of the XU function. A list of the subfunctions of XU is obtained by doing &xu,lf, /, and the XU subfunctions are performed thus %xu,mm,1000,1200,6000/ will simply move memory starting at 1000 through 1200 into 6000. likewise, VM - verify memory, DM duplicate (fill) memory etc. . . You can get a list of functions in the disk overlay by executing the "lff" list file function. Be careful not to use the following recklessly until the description has been published: %xrs,unit,track,sector/ X read sector %xws,unit,track,sector/ X write sector %xbf,filename/ X bring file %xuf,filename/ X update file %dif,filename/ Designate Input File %dof,filename/ Designate Output File %rfr,/ Read File Record %wfr,text/ Write File Record %sic,channel/ Select Input Channel %soc,channel/ Select Output Channel The "ti" time and "sti" set time functions will work properly if you have a COMPTEK clock, with a port adress of 250. ?7Adresses of particular interest: Hex Zapple CPM Function 100C C3 C3 Jump to exit 100D 1E 00 on control C 100E F0 00 or function 1021 C3 C3 Jump to IOchk 1022 15 0F 1023 F0 08 In SAM disk area 1024 C3 C3 Jump to IOchk 1025 18 0C If BDOS available 1026 F0 08 the SAM disk area 1027 C3 C3 Jump to auto memory 1028 12 12 grabbing routine 1029 08 08 the SAM disk area ; 102A C9 C3 Jump to DSK - y is 0 or A 102B 00 06 to get correct vectors in 102C 00 y8 the SAM program ; 102D 09 09 ;PSE 102E y8 y8 102F zz zz ;UIC 1030 zz zz 10031 zz zz ;UOC 1032 zz zz 1033 zz zz ;PUL 1034 zz zz 1035 00 00 ;TAM - max limit for RAM 1036 00 00 1037 00 00 ;POA 1038 y8 y8 1039 00 00 ;POB 103A y4 y4 103C 00 00 ;POC 103D zz zz 103E 00 00 ;POD 103F zz zz 1040 00 00 ;PSY 1041 00 00 1042 00 00 ;PSW ; 6'66. Other general information is contained in "SAM" organized files which you can access easily using SAM. After you have successfully started up SAM as evidenced by receiving a line feed with no other message - and proven it by typing something followed by an equal sign and getting the something vomited back at you, then you can use the SAM file functions to bring in and view the texts they contain. Be sure to either specify the appropriate extension in your file commands, or to preset the extension using the %sfe,EXT/ command where EXT is the desired extension. Note that EXT may be either symbols, or ??? or even nothing as in %sfe/; if you have set up the latter the execution of the list file function &lf, / will display your directory - horizontally, and %lf,{linefeed}/ vertically. E55. The upper limit of workspace that SAM will assume is just below your CCP. This is determined by the fact that location "TAM + OPV" contains 0. There are two ways to change this limit: the first way is ephemeral and lasts only while you are using SAM and consists of executing the &cws,HEXLOC/ function, where HEXLOC is the current desired upper limit of workspace - be sure to use upper case symbols when telling SAM about hexadecimal adresses. The second way is permanent and not dependent on the size of your CP/M system, and that is to replace the zeroes at TAM - OPV and at TAM with a fixed adress - this is done either with the monitor functions &c. or using SAM thus: %xwp,%xal,tam,%xal,opv//,HEXLOC/ expression. The foregoing changes the permanent table which only is effective upon the next reentry into SAM. < 44. To get back into SAM after either a control C or %ex/ function - if in your monitor then G to 100, if in CPM execute the zero length program called REE for Reenter. If you use ZAPSET, the normal Zapple monitor IOSET and IOCHK functions will be invoked. If your CPM system sustains the appropriate BDOS calls then all is well. If you have peculiar CBIOS conditions then you can cause automatic initialization whenever entering or reentering SAM by placing the adress of your INIT program at ^H102B and 102C. j33. The control C and %ex/ exits return to the SELECTED Monitor. Normally these take you back to CP/M; If you have used CPMSET the Selected monitor will be CP/M, if you use ZAPSET, then ZAPPLE is invoked. You may change these by changing the contents of location 100D and 100E to reflect the location you wish to reach on a control C or %ex/ function. a nul ~BONUSThis version of SAM76 brings you a very special treat when using the SAM76 language it is NOT NOT NOT NOT NOT necessary to worry about how you may move SAM files from one diskette to another, particularly if you only have one disk drive (like me). Merely flip the drive open after having brought into memory the desired file using the %bf,filename/ function, then remove the diskette, slide in a fresh one, close the door and execute the %uf,filename/ function - preceded of course by an %ef,filename/ function if file of same name on disk as evidenced by message {nav-uf-aef} telling you about an already existing file. q 3set%xset,I3,5,6/  2set%xset,I2,3,4/  1set%xset,I1,1,2/  5set%xset,I5,8/  4set%xset,I4,7/  4set%xsset,I4,7/  xset%ct/%et/ 1Special information about this release 1. This is first CP/M compatible release and there will undoubtedly be bugs in it. I would appreciate very prompt advice if such are encountered. Please be sure it is a real bug and not a misinterpretation as to how to use SAM76.  0u%ef,info.sam/%uf,info.sam/%bf,info.sam/ '