home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / z3sys / xb11.dzc / XB11.DOC
Encoding:
Text File  |  1993-06-08  |  18.4 KB  |  399 lines

  1. This is the DOC file extracted from XB11.LBR, which I have moved to floppy
  2. archives for lack of disk space.  If you are interested in downloading the
  3. full file (about 160K), leave a request message on the BBS and I will be
  4. happy to make it available.    Jay Sage, December 26, 1987
  5.  
  6. -----------------------------
  7.  
  8.  XBD.DOC
  9.  
  10.     The development of XB, a banked RCP and FCP for ZCPR3 systems is the
  11.     product of Edi Cramp and Ron Schwabel, with some minor assistance
  12.     from Steve Kapplin.
  13.  
  14.     This release of XB is placed into the Public Domain for free distri-
  15.     bution so long as the use of the product is not for commercial sale
  16.     or gain, but for personal and non-profit usage.  Any commercial use
  17.     of XB or derivatives of XB must be done with the consent of the above
  18.     named author(s).  Failure to comply with this request may result in
  19.     legal action under the Trade Secrets Act.
  20.  
  21.     The authors assume no responsibility direct or consequential for any
  22.     damage caused by XB, nor any obligation that XB work on your system
  23.     or any other system.
  24.  
  25.     Development file name conventions....
  26.  
  27.     filename.typ
  28.     12345678.123
  29.     |||||||| +++-------->    File type - standard unless documented.
  30.     ||||||||                  .Z80 - source file
  31.     ||||||||                  .LIB - library
  32.     ||||||||                  .ZEX - Indirect command file
  33.     |||+++++------------>    Module name.
  34.     ||+----------------->    Package type, G = global.
  35.     ||                      B = banked.
  36.     ||                      S = system.
  37.     ||                      D = Documentation.
  38.     ||                      L = Library.
  39.     ||                      O = Overlay.
  40.     ++------------------>    Package ID.
  41.  
  42.  
  43. Banked Command Processor (BCP) Features:-
  44.  
  45. 1.    Better and more accurate messages.  Several of the less commonly
  46.     used commands have standard ZCPR help built in (via //).
  47.  
  48. 2.    Full FCP implementation is standard. IF level 15 with the exception
  49.     of file lists (do I hear volunteers?).  "IF IN {string}" implemented.
  50.  
  51. 3.    Source is a collection of files (1 per command) instead of one huge
  52.     file so that debug and editing is less of an exercise in disk access
  53.     time.
  54.  
  55. 4.    Smaller resident packages, FCP is 128 bytes, RCP is 256 bytes.  This
  56.     is offset (and obtained) to some extent by the requirment that the
  57.     system have some extra buffers.  However, I feel that this will make
  58.     porting the BCP to new systems easier, and will enable additional
  59.     features to be implemented to expand use of additional memory.
  60.     Required buffers (and suggested sizes) are:-
  61.        SYS$$POOL    - 256 bytes - for use by any program (bank-bank 
  62.               copy etc).
  63.        SYS$$EXEC    - 256 bytes - all memory managment code goes here.
  64.        SYS$$COMN    - 80 bytes - used to transfer and store system 
  65.                parameters.
  66.     The addresses for these buffers are set in SYSTEM.LIB, but space
  67.     must be provided for them.  The allocations are done in Z3BASE.LIB
  68.     by designating room in the allocation of space for the RCP.
  69.  
  70. 5.    Memory managment is a seperate package.  This should make porting
  71.     to a new system somewhat easier.
  72.  
  73. 6.    TYPE command is more video orientated and finally supports xon/xoff
  74.     and optional paging (still room for improvment though).
  75.  
  76. 7.    New IF command "EXIF" that flushes all IFs regardless of the current
  77.     IF state (XIF only runs if current state is TRUE). Using EXIF at the
  78.     end of ZEX and ALIAS files means you don't need those FI;FI;FI strings
  79.     and also offers some new posibilities (see XBSREL.ZEX).  A new form
  80.     of the IF IN command is permitted.  This form is IF IN <prompt>, 
  81.     where <prompt> is an alternative prompt line.  If no prompt is pro-
  82.     vided, then the standard form is default.  Also the IF IN <prompt> 
  83.     can be completely aborted by typing ^C as a response.  This permits 
  84.     using IF IN like SAK.  ^C will completely abort the remaining 
  85.     command line.
  86.  
  87. 8.    New RCP command SET /[no]option that tweeks various registers and
  88.     the QUIET flag in the environment.
  89.  
  90. 9.    RCP commands are quite terse if QUIET is ON "SET /QUIET".
  91.  
  92. 10.    FCP "NOISE" can be controlled via the SET /[NO]NOISE command.  Now
  93.     you can figure out why your IF aliases don't work.
  94.  
  95. 11.    Internal help command "H" gives a full list of FCP commands, however
  96.     the FCP still won't parse the longforms correctly.
  97.  
  98. 12.    New LDR package to load programs (.SEG) anywhere in memory in any
  99.     page.  It also responds to the QUIET flag and will give loading info
  100.     if run "NOQUIET" to help debugging.
  101.  
  102. 13.    PEEK and POKE display the full 24 bit address.
  103.  
  104. 14.    REG command display reformatted and now displays both the DEBUG and
  105.     NOISE registers.  These are two USER registers that can be easily
  106.     set and reset via the "SET /option" command.  NOISE is used by the FCP
  107.     while DEBUG is intended to provide an easy way of turning debugging
  108.     messages and actions on or off.
  109.  
  110. 15.    MU now includes use of '?' for a help screen, and a hex calculator
  111.     has been added so that the resident MU contains the same functions
  112.     as the transient version.
  113.  
  114. 16.    The 'S' (space) command has been added to RCP.  This command has the 
  115.     format S d: and will give the remaining space on the selected drive.
  116.     The CP and ERA commands will echo the remaining space on the desti-
  117.     nation drive automatically.
  118.  
  119. 17.     The TST command accepts 'M'80, 'Z'AS, 'S'LR, or '8'0A for Microsoft's
  120.     M80 assembler, ZAS assembler, SLR Systems SLRMAC assembler, and SLR
  121.     Systems Z80ASM assembler, respectively.  M80 is version 3.45, ZAS is
  122.     version 2.0, SLRMAC is version 1.06, and Z80ASM is version 1.2.
  123.  
  124.     *    *    *    *    *    *    *    *    *
  125.  
  126. INSTALLATION REQUIREMENTS
  127.  
  128.     XB requires the following for installation:
  129.  
  130.     1.  A Z80 CPU
  131.     2.  ZCPR3 installed with segments for RCP, FCP, ENV, message
  132.         buffers, stacks, etc.
  133.     3.  128k of memory in two (2) 64k banks.  The first bank is the
  134.         TPA bank and the second is the SYSTEM bank.  The first and 
  135.         second banks should have the bottom 48k bank-selected using 
  136.         a bank port.  The TPA bank should have the top 16k set as
  137.         global.  The top 16k in the SYSTEM bank is not enabled.  In
  138.         a typical setup, the TPA bank is assigned to bank 0 while
  139.         the SYSTEM bank is assigned to bank 1.  You must check your
  140.          memory manuals to determine what byte must be sent to the
  141.         bank port address to enable each bank.
  142.     4.  SLR Systems Z80ASM assembler and SLRNK (or SLRNK+) linker.
  143.     5.  About 500k of disk space for source files.  A RAM drive
  144.         will greatly speed up assembly time.
  145.  
  146.  
  147.     This next section started out as a list of improvements that might
  148.     be desirable in the BCP.  Looking over it a month or so afterwards
  149.     I have to admit that it seems to be becoming a list of ideas for the
  150.     system as a whole.  This is more or less along the lines of the
  151.     original concept for the BCP when I started modifing the original
  152.     ZCPR3 code to build an "Operating System" instead of what seemed to
  153.     be ZCPR+BDOS+BIOS.  The general view is that the BDOS is in control
  154.     of the computer, ZCPR is a useful improvement on the D.R. CCP and
  155.     if you're lucky your BIOS won't have too many bugs in it.
  156.     I believe that this is the wrong approach, in that the control of the
  157.     whole system is in the I/O and that the way the BIOS is implemented
  158.     is the key to a usable system.  Thus the CCP and BDOS are programs
  159.     that are used by the BIOS to control the system.
  160.  
  161.     *    *    *    *    *    *    *    *    *
  162.  
  163. Wish List:-
  164.  
  165. 1.    FCP.    a. File lists accepted by FCP utilities.
  166.         b. Better REG processing... 8-bit arithmetic on registers and
  167.            more logical negate handling (ie IF R1 ~0 or IF R1 -1).
  168.         c. How about LABELs?, GOTOs and IF <cond> GOTO...
  169.  
  170. 2.    RCP.    a. The current utilities package is a kluge and the whole RCP
  171.            would benefit from a more consitent utilities treatment. Of
  172.            course if SYSLIB, Z3LIB and VLIB could be linked to the
  173.            banked portion everything would be much easier.
  174.         b. I should like to see a "No Message" option added to CP and
  175.            REN so that files can be manipulated without the user
  176.            having to answer questions ie.
  177.                 CP b:=filename.typ /nm
  178.            would copy the file to B: without asking questions even if
  179.            a copy exists on B.
  180.            Also it would be very nice if CP accepted file lists as
  181.            input.
  182.         c. Replace the DIR program with SD or similar.
  183.         d. TYPE and LIST could handle SQ files and offer a list of
  184.            filetype that they would refuse to print eg. COM, SYS etc.
  185.         e. MU needs some work, it still has bugs and I don't like the
  186.            HEX line editor.  It also fails to stop ZEX processing when
  187.            it is run.
  188.         f. CP does a fair bit of bank switching and copying.  Most 
  189.            systems should be able to eliminate 50% of the overheads in
  190.            CP by setting the DMA address to the target buffer instead
  191.            of copying everything through the TPA buffers.
  192.         g. REN internal logic checks for the target file and may erase
  193.            it before it looks to see if the source file exists.
  194.  
  195. 16-Mar-86    h. LIST command is designed to dump ASCII to a printer and so
  196.            does TAB expansion.  This trashes Graphics Dumps therefore
  197.            we need a /BIN (or similar) argument to LIST to kill TAB
  198.            processing and make sure 8-bit chars are sent.
  199.            There is no reason why LIST cannot spool the output to the
  200.            printer (Get code from UNSPOOL).  The spooler performance
  201.            would be helped if the IOP provided a small buffer (2-4k)
  202.            for LST: device output.
  203.         i. Need to add redirection commands to pass status via SYSCOMN
  204.            to the IOP for CON: and LST: redirection to files ie.
  205.                 OPEN filename.typ > {LST:/CON:}
  206.                     SHUT - close any open file and flush to disk.
  207.         j. Key redefinition is very desirable but needs some thought,
  208.            the place for key redefinition is the IOP.
  209.         k. It is intended that the 16k buffer in the SYSTEM bank be
  210.            allocatable in 2k chunks - so far this has not been done
  211.            but the buffer could have multiple uses.
  212.         l. These additions are starting to point to the requirement
  213.            for some sort of multiprocessing facility in the BIOS to
  214.            handle the I/O.  Implementing interupt I/O drivers and
  215.            buffering all I/O would be a good substitute.
  216.  
  217. 29-Mar-86    m. Add a "PORT" command to access I/O ports directly...
  218.            "PORT pp nn" would write the value "nn" to port "pp"
  219.            "PORT pp" would return the current value of port "pp"
  220.  
  221. Information:-
  222.  
  223. SYS.SEG       This should contain all memory management utilities so that
  224.        it will be easier to port the package to other systems.  I
  225.        have only put in the stuff that is required at the moment
  226.        but I plan to include all my system memory managment here.
  227.  
  228. MVERSN       This macro is placed prior to each package entry point and
  229.        I plan to be able to display the version number of each
  230.        package as it is run by setting the DEBUG register.
  231.  
  232. LDR18       I have modified this ZCPR3 utility to accept a filetype of
  233.        ".SEG" if the file has a 128 byte header as the 1st sector.
  234.        This header contains the destination information so that
  235.        we do not have to change the Z3ENV descriptions. LDR18 will
  236.        load a .SEG file to any bank of memory that it supports.
  237.        Since one of the files that I plan to load is the memory
  238.        management library, it is currently nessesary that LDR18
  239.        contain its own memory routines.
  240.  
  241.     *    *    *    *    *    *    *    *    *
  242.  
  243. Files supplied in XB11.LBR
  244.  
  245. Note:-
  246. 1. Files marked (*) may need to be modified for system memory management.
  247. 2. Files marked (#) should be read first.
  248.  
  249. ASCII   .REL    - SLR rel library containing ASCII definitions.
  250. LDR18   .Z80    * Modifed ZCPR3 package loader.
  251.  
  252. SYSCOMN .Z80    * System common definitions - a BIOS/SYSTEM "environment".
  253. SYSEXEC .Z80    * All memory managment routines.
  254. SYSTEM  .LIB    # System addresses (non-ZCPR3) and partitions.
  255.  
  256. XB      .Z80     # Main file to assemble the banked portion of the BCP.
  257.  
  258. XBBBANK .Z80    - RCP bank command.
  259. XBBCLRT .Z80    - RCP Clear, Reset and Test commands.
  260. XBBCMDS .Z80    - RCP/FCP command scanner/proccessor.
  261. XBBCOPY .Z80    - RCP copy command.
  262. XBBDIRS .Z80     - RCP directory command.
  263. XBBECHO .Z80    - RCP echo command.
  264. XBBERAS .Z80    - RCP erase command.
  265. XBBFCP  .Z80    - FCP commands.
  266. XBBLTYP .Z80    - RCP list and type commands.
  267. XBBMUTL .Z80     - RCP MU3 command.
  268. XBBPEEK .Z80    - RCP peek and poke commands.
  269. XBBPROT .Z80    - RCP file protection command.
  270. XBBREGS .Z80    - RCP register command.
  271. XBBSPAC .Z80    - RCP space command.
  272. XBBRENM .Z80    - RCP rename command.
  273. XBBSETP .Z80     - RCP set command.
  274. XBBUTIL .Z80    - Utilities used by banked s/w.
  275. XBBWHEL .Z80    - RCP wheel command.
  276.  
  277. XBDNEW  .DOC    # General documentation and definitions.
  278.  
  279. XBGFCP  .Z80     - Global portion of FCP.
  280. XBGRCP  .Z80    - Global portion of RCP.
  281.  
  282. XBLDEF  .LIB    # Combination of SYSRCP.LIB and SYSFCP.LIB
  283.  
  284. XBSDIR  .SUB    - File list for assembler/linker.
  285. XBSHEAD .Z80    - Header definition for .SEG files.
  286. XBSREL  .ZEX     - ZEX file to rebuild SYS.SEG, BNK.SEG, SYS.FCP and SYS.RCP
  287.           Catch 22 - requires new FCP to run.
  288.  
  289. Z3BASE  .LIB     # Version of Rick Conns original for my system.
  290.  
  291.  
  292. Ammendments
  293. ***********
  294.  
  295. 04-Mar-1986    DIR sort bug fixed (??)
  296.         8 bit chars now sent to printer by LIST cmd.
  297. 16-Mar-1986    LIST still expands TABs so above mod is somewhat useless.
  298.  
  299. ***********
  300. Additional installation notes from Steven D. Kapplin 4/12/86
  301.  
  302. The following notes should help in the installation of XBCP.
  303.  
  304. 1.  The space reserved for the RCP and FCP in the BIOS cold boot can
  305. be reduced.  Only one 256 byte block need be reserved for the RCP and
  306. one 128 byte block for the FCP.  Additionally, you must reserve one
  307. 256 byte block for SYS$$EXEC and one 256 byte block for SYS$$POOL.  An 80
  308. byte block must be reserved for SYS$$COMN.  The addresses for these blocks
  309. are EQUated in SYSTEM.LIB.  Space is reserved in the RCP and should be 
  310. allocated in your Z3BASE.LIB.  A sample Z3BASE.LIB is included to show the 
  311. allocation required.  An easy way to accomplish this is to set RCPS
  312. in Z3BASE.LIB to 7.  This reserves adequate space for the RCP and
  313. the XB system space.  Also note that the byte values for selecting memory
  314. banks is also in SYSTEM.LIB.  They are TPA$$PAR and SYS$$PAR for TPA bank
  315. and SYSTEM bank, respectively.  They are currently EQUated to 1 and 2.  If
  316. your system requires something different, change these values.  The bank
  317. port address BANK is also EQUated in SYSTEM.LIB.  It is set for 040h.  If
  318. you use a different bank port address, change the value of BANK.
  319.  
  320. 2.  Check the file XBLDEF.LIB and determine what options you want turned
  321. on (or off) in your system.  As delivered, the entire RCP and FCP options
  322. are available including a resident version of MU.  Note that the EQUates
  323. for the error addresses for M80, ZAS, SLRMAC and Z80ASM are contained in
  324. the module XBBCLRT.Z80.  If you have different versions from those supported
  325. here, then you will need to change them.  Note that TST command no longer
  326. supports Microsoft's F80 Fortran compiler.
  327.  
  328. 3.  Configure SYSTEM.LIB for the proper addresses for SYSCOMN, SYSEXEC,
  329. and SYSPOOL.  These equates are labelled as SYS$$COMN, SYS$$EXEC, and
  330. SYS$$POOL in SYSTEM.LIB.  The easy way to do this is to set them up
  331. starting immediately after the RCP.  One 256 byte block is needed for
  332. the RCP, then these three addresses come immediately after in the
  333. memory map.  (See accompanying Z3BASE.LIB.)  For instance if your RCP is
  334. set to begin at 0F600h, then set SYS$$POOL at 0F700h, SYS$$EXEC at 0F800h,
  335. and SYS$$COMN at 0F900h.  The RCP is now 256 bytes long, SYSPOOL and
  336. SYSEXEC are allocated 256 bytes each.  SYS$$COMN needs only 80 bytes, so
  337. your next system address can begin at 0F980h.  This actually allocates
  338. 128 bytes.  However RCPS can only be allocated in 128 byte chunks.  Set
  339. RCPS to 7 for this example.
  340.  
  341. 4.  The .ZEX files should be checked to be sure drive specifications are
  342. proper for your system.  If not, make appropriate changes.  However, do
  343. not change anything else in the .ZEX files other than drive specifiers or
  344. the filenames for the assembler and linker.
  345.  
  346. 5.  XB is setup to be assembled with the SLR Z80ASM assembler and
  347. SLRNK+ linker.  Major modifications may be needed to assemble with
  348. M80 or ZAS.
  349.  
  350. 6.  LDR18.Z80 requires SYSLIB.REL and Z3LIB.REL for assembly.  Be
  351. sure to use the LDR18.ZEX file for assembly.
  352.  
  353. 7.  There is a slight bug in the bank routines which causes the default
  354. user bank to be set to whatever byte is located at the memory address
  355. of PBANK.  Thus, MU and BANK may report some bank other than the ones
  356. actually in use on your system.  Under use this is a minor aggrevation,
  357. but no serious problem.  It does not affect how the banked system works,
  358. but when you use PEEK or POKE, BANK or MU, set the user bank to the one
  359. you want.  BANK <bank> will set the user bank to the value specified in
  360. <bank>.  For instance, BANK 1 sets the user bank to 1.  For simplicity
  361. you could do this as part of your STARTUP.
  362.  
  363. 8.  XB is assembled by the command -- ZEX XBSREL <cr>.  Answer 'Y' to
  364. each of the first three questions.  The rest is automatic.  LDR18 is
  365. assembled by the command -- ZEX LDR18 <cr>.
  366.  
  367. 9.  Questions can be directed to Edi Cramp, Ron Schwabel, or Steve Kapplin
  368. at the Tampa ZNODE -- 813-831-RCMP (7276).
  369.  
  370.     SUMMARY OF FEATURES
  371.  
  372. a.  Added MU as a resident command.  MU has a help menu and hex calculator
  373. built in, so that it closely resembles its transient counterpart.  A BANK
  374. command permits the user to set the memory bank to be examined by MU.  This
  375. is a feature missing from DDT and its ilk.  MU provides most of the features
  376. of DDT, except for the ability to move memory and read in files.
  377.  
  378. b.  All RCP commands are implemented including several new ones.  New commands
  379. are BANK, R, and S.  The BANK command permits changing the user memory bank.
  380. R will reset the disk system (for those not using ZRDOS+ with auto disk
  381. relogging).  The S command provides remaining space on designated drive.  The
  382. S command is executed automatically after an ERA or CP finishes normal
  383. execution.
  384.  
  385. c.  The IF processor has been completely updated to include all features of
  386. the transient version of IF, except for file lists.  The IF IN now permits
  387. a user-prompt (IF IN <prompt>) and allows an entire multiple command line
  388. to be aborted by responding with ^C.  IF now provides most features of SAK
  389. in a resident command.  EXIF has been added to the IF commands.  EXIF
  390. effectively removes all pending IFs, eliminating the need to follow nested
  391. IFs with a series of FIs.
  392.  
  393. d.  The banked system will free up about 1.5k of additional TPA space, while
  394. permitting a combined RCP and FCP totaling about 9k.
  395.  
  396. e.  The modular design makes it relatively easy to add commands to the
  397. existing command set.  Once familiar with the structure of a command source
  398. module, adding new commands becomes relatively simple.
  399.