home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol200 / z3lib3.hqp / Z3LIB3.HLP
Text File  |  1985-02-09  |  20KB  |  657 lines

  1. Introduction                  ZCPR3 Messages
  2. Command Status Message        GETCST/PUTCST/QERROR/QSHELL
  3. Erro≥ Flaτ anΣ Erro≥ CommanΣ  ERRADR/GETER1/PUTER1/GETERC/PUTERC
  4. Inter-Transient Error Code    GETER2/PUTER2
  5. Register Access               GETREG/PUTREG
  6. ZEX Status and Control        GETZEX/PUTZEX/STOPZEX/STRTZEX
  7. :Introduction to ZCPR3 Messages
  8.  
  9.      ZCPR│ offer≤ man∙ feature≤ no⌠ founΣ unde≥ CP/M¼ ZCPR1¼ ì
  10. o≥ ZCPR2«á  Onσ sucΦ very¼á ver∙ specia∞ featurσ i≤ tha⌠á oµ ì
  11. ZCPR│ CommanΣ Processo≥ Messages.
  12.  
  13.      ZCPR│á support≤á thσá abilit∙ t∩ havσ ßá ZCPR│á Messagσ ì
  14. Buffe≥á whicΦá contain≤ ß numbe≥ oµ message≤á whicΦá caεá bσ ì
  15. passeΣá froφá onσá transien⌠ prograφ t∩ anothe≥á o≥á betweeε ì
  16. ZCPR│á itselµá anΣ al∞ transien⌠ program≤á whicΦá ruεá unde≥ ì
  17. ZCPR3«á  Command≤á caεá bσ giveε directl∙ t∩á ZCPR3¼á statu≤ ì
  18. informatioε caε bσ passeΣ froφ ZCPR│ t∩ thσ transients¼á anΣ ì
  19. botΦ statu≤ anΣ command≤ caε bσ passeΣ froφ onσ transien⌠ t∩ ì
  20. anothe≥ througΦ thesσ messages.
  21.  
  22.  
  23.      These message can be divided into six basic classes:
  24.  
  25.           . messages which command ZCPR3
  26.           . status messages sent by ZCPR3
  27.           . ZEX command messages
  28.           . status and command messages sent by one program
  29.                to another which are ignored by ZCPR3
  30.           . user-defined messages
  31.           . reserved messages
  32.  
  33.  
  34.      Beforσá usinτ an∙ oµ thσ Z3LI┬ routine≤ t∩ acces≤ thesσ ì
  35. messages¼á thσ prograφ shoulΣ checδ t∩ ensurσ tha⌠ thσ ZCPR│ ì
  36. Messagσ Buffe≥ i≤ availablσ t∩ it«á  Thi≤ caε bσ easil∙ donσ ì
  37. b∙á callinτ thσ GETMS╟ routinσ (seσ thσ seconΣ oε thσá ZCPR│ ì
  38. environment)«á  GETMS╟ return≤ witΦ Zer∩ Flaτ Se⌠ (Z⌐ iµá n∩ ì
  39. ZCPR3 Message Buffer exists.  Hence:
  40.  
  41.           ext  getmsg    ;reference
  42.           ...
  43.           call getmsg    ;get message buffer status
  44.           jz   noZ3msgs  ;no messages to read
  45.           ...
  46.  
  47.      Thσáá followinτáá screen≤á summarizσáá thσáá facilitie≤ ì
  48. availablσ througΦ thσ ZCPR│ Messagσ Buffer.
  49.  
  50.  
  51.                 Messages which Command ZCPR3
  52.                 -------- ----- ------- -----
  53.  
  54.      Somσá oµá thσ message≤ iε thσ ZCPR│ Messagσ Buffe≥á arσ ì
  55. se⌠á b∙ externa∞ program≤ (transient≤ o≥á commanΣá packages⌐ ì
  56. and are read and interpreted by ZCPR3.  These messages are:
  57.  
  58.           . current IF level and active (T/F) status of
  59.                all IF levels
  60.           . whether an error handler is available and what
  61.                the command line to invoke it is
  62.  
  63.  
  64.  
  65.                Status Messages Sent by ZCPR3
  66.                ------ -------- ---- -- -----
  67.  
  68.      Somσá oµá thσ message≤ iε thσ ZCPR│ Messagσ Buffe≥á arσ ì
  69. se⌠á onl∙ b∙ ZCPR│ o≥ ß ZCPR│ Shel∞ anΣ arσ intendeΣá t∩á bσ ì
  70. useΣ a≤ R/╧ message≤ b∙ transients«  Thesσ message≤ are:
  71.  
  72.           . ZCPR3 Command Status
  73.                - the transient loaded is/is not a shell
  74.                - the transient loaded is/is not an error
  75.                     handler
  76.           . Error Address
  77.                - iµ thσ transien⌠ loadeΣ i≤ aε erro≥
  78.                     handler, this is the address of the
  79.                     firs⌠ characte≥ oµ thσ commanΣ linσ
  80.                     which was in error
  81.  
  82.  
  83.                     ZEX Command Messages
  84.                     --- ------- --------
  85.  
  86.      Onσ messagσ iε thσ ZCPR│ Messagσ Buffer≤ i≤ intendeΣ t∩ ì
  87. directl∙ senΣ command≤ t∩ thσ ZE╪ memory-baseΣ commanΣá filσ ì
  88. processor«á  Thi≤á messagσá bytσ tell≤ ZE╪á threσá differen⌠ ì
  89. things:
  90.  
  91.           . to run normally - ZEX is to intercept the
  92.                Input calls and provide characters in place
  93.                of console input
  94.           . ZCPR3 is prompting - ZEX is providing input
  95.                directly to the Command Processor ZCPR3
  96.           . suspend intercept - ZEX is to stop intercepting
  97.                console input and to allow input from the
  98.                console until normal execution or the ZCPR3
  99.                prompt message appears
  100.  
  101.  
  102.                  Messages Ignored by ZCPR3
  103.                  -------- ------- -- -----
  104.  
  105.      Tw∩á pre-defineΣá message≤ arσ ignoreΣ b∙á ZCPR3«á  Thσ ì
  106. firs⌠ messagσ i≤ thσ Prograφ Erro≥ Code«á  Thi≤ bytσ caεá bσ ì
  107. se⌠á b∙ an∙ prograφ unde≥ ZCPR│ t∩ indicatσ ß returεá statu≤ ì
  108. t∩á thσ nex⌠ program«á  Thσ conventioε ha≤ beeε adopteΣ tha⌠ ì
  109. iµ thi≤ bytσ i≤ 0¼á theε thσ prograφ completeΣ successfully«  ì
  110. Iµá i⌠á i≤ non-zero¼á thσ prograφ faileΣ fo≥ onσá reasoεá o≥ ì
  111. anothe≥ anΣ thσ valuσ oµ thi≤ codσ indicate≤ tha⌠ reasoεá t∩ ì
  112. ß followinτ program.
  113.  
  114.      Thσ seconΣ messagσ i≤ thσ registe≥ buffer«á  Teε 1-bytσ ì
  115. register≤á arσá availablσá anΣá caε bσ testeΣá b∙á thσá flo≈ ì
  116. commanΣ package«á  Condition≤ likσ "I╞ ░ 5ó (I╞ Registe≥ ░ ╜ ì
  117. 5⌐á caεá bσá testeΣ fo≥ anΣ processeΣ b∙á thσá flo≈á commanΣ ì
  118. package¼á anΣ othe≥ programs¼á eithe≥ transient≤ o≥ residen⌠ ì
  119. command packages, can manipulate these register values.
  120.  
  121.                    User-Defined Messages
  122.                    ------------ --------
  123.  
  124.      ┴ se⌠ oµ 1╢ message≤ arσ availablσ fo≥ use≥ definition«  ì
  125. EacΦá messagσ i≤ onσ bytσ long¼á anΣ routine≤ iεá Z3LI┬á arσ ì
  126. provided to place values into these messages and query them.
  127.  
  128.  
  129.                      Reserved Messages
  130.                      -------- --------
  131.  
  132.      ┴á se⌠á oµ 1╢ one-bytσ message≤ i≤ reserveΣ fo≥á futurσ ì
  133. usσá iεá thσá ZCPR│á systeφá anΣá shoulΣá no⌠á bσá useΣáá b∙ ì
  134. application≤ programmers«á  Z3LI┬ doe≤ no⌠ providσ acces≤ t∩ ì
  135. these messages.
  136.  
  137. :Command Status Message        GETCST/PUTCST/QERROR/QSHELL
  138.  
  139.      Thesσáá message≤á returεá thσá statu≤á oµá thσá curren⌠ ì
  140. transien⌠ a≤ se⌠ b∙ ZCPR3«á  An∙ transien⌠ ha≤ beeεá invokeΣ ì
  141. in one of three possible states:
  142.  
  143.           . as a "normal" transient, executed at the
  144.                request of the user or another program
  145.           . as a "shell", invoked by ZCPR3 itself
  146.           . as an "error handler", invoked by ZCPR3 itself
  147.                when it cannot process the current command
  148.                line (cannot find a matching COM file or
  149.                CMDRUN facility)
  150.  
  151.  
  152. Z3LIB Routine: GETCST
  153.  
  154. Function:
  155.      Returε thσ ZCPR│ CommanΣ Statu≤ Message«á  Thi≤ messagσ ì
  156. is one byte long and can have one of three values:
  157.  
  158.           0 - this is a "normal" transient
  159.           1 - this is a "shell"
  160.           2 - this is an "error handler"
  161.  
  162.      Thi≤ messagσ i≤ alway≤ se⌠ b∙ ZCPR│ anΣ no⌠ intendeΣ t∩ ì
  163. be set by any program.
  164.  
  165. Inputs: None
  166.  
  167. Outputs: A = message code (Zero Flag set accordingly)
  168.  
  169.  
  170. Registers Affected: PSW
  171.  
  172. Side Effects: None
  173.  
  174. Special Error Conditions: None
  175.  
  176.  
  177. Z3LIB Routine: PUTCST
  178.  
  179. Function:
  180.      Se⌠ thσ ZCPR│ CommanΣ Statu≤ Message«á  Thi≤ messagσ i≤ ì
  181. onσ bytσ lonτ anΣ caε havσ onσ oµ threσ values:
  182.  
  183.           0 - this is a "normal" transient
  184.           1 - this is a "shell"
  185.           2 - this is an "error handler"
  186.  
  187.      Thi≤ messagσ i≤ alway≤ se⌠ b∙ ZCPR│ anΣ no⌠ intendeΣ t∩ ì
  188. bσ se⌠ b∙ an∙ program¼á witΦ thσ exceptioε oµ ß ZCPR│ Shell«  ì
  189. PUTCS╘ i≤ provideΣ t∩ allo≈ ß ZCPR│ Shel∞ eas∙ acces≤ t∩ se⌠ ì
  190. this message byte.
  191.  
  192. Inputs: A = ZCPR3 Command Status Message value (0, 1, or 2)
  193.  
  194. Outputs: None
  195.  
  196.  
  197. Registers Affected: None
  198.  
  199. Side Effects: None
  200.  
  201. Special Error Conditions: None
  202.  
  203.  
  204. Z3LIB Routine: QERROR
  205.  
  206. Function:
  207.      Tes⌠á t∩á seσá iµá thσá ZCPR│á CommanΣá Statu≤á Messagσ ì
  208. indicate≤á tha⌠á thσ curren⌠ transien⌠ i≤ aε erro≥á handler«  ì
  209. Thσ ZCPR│ CommanΣ Statu≤ Messagσ i≤ reaΣ anΣ testeΣá agains⌠ ì
  210. thσá Erro≥á Handle≥á codσ value«á  Zer∩ Flaτ i≤ Se⌠á iµá thσ ì
  211. current transient is an Error Handler«
  212.  
  213. Inputs: None
  214.  
  215. Outputs: A = message code
  216.           Zero Flag is Set if transient is an Error Handler
  217.  
  218.  
  219. Registers Affected: PSW
  220.  
  221. Side Effects: None
  222.  
  223. Special Error Conditions: None
  224.  
  225.  
  226. Z3LIB Routine: QSHELL
  227.  
  228. Function:
  229.      Tes⌠á t∩á seσá iµá thσá ZCPR│á CommanΣá Statu≤á Messagσ ì
  230. indicate≤ tha⌠ thσ curren⌠ transien⌠ i≤ ß shell«á  Thσ ZCPR│ ì
  231. CommanΣ Statu≤ Messagσ i≤ reaΣ anΣ testeΣ agains⌠ thσá Shel∞ ì
  232. codσ value«á  Zer∩ Flaτ i≤ Se⌠ iµ thσ curren⌠ transien⌠ i≤ ß ì
  233. Shell.
  234.  
  235. Inputs: None
  236.  
  237. Outputs: A = message code
  238.           Zero Flag is Set if transient is a Shell
  239.  
  240.  
  241. Registers Affected: PSW
  242.  
  243. Side Effects: None
  244.  
  245. Special Error Conditions: None
  246.  
  247.  
  248. :Error Flag and Error Command  ERRADR/GETER1/PUTER1/GETERC/PUTERC
  249.  
  250.      This set of routines performs the following functions:
  251.  
  252.           ERRAD╥ - return≤ thσ addres≤ oµ thσ firs⌠
  253.                character of the command line in error
  254.           GETER1 - returns the error flag
  255.           PUTER1 - sets the error flag
  256.           GETERC - returns the address of the first
  257.                character of the error handler command line
  258.           PUTERC - set the error handler command line
  259.  
  260.  
  261. Z3LIB Routine: ERRADR
  262.  
  263. Function:
  264.      Assuminτ tha⌠ thσ curren⌠ transien⌠ i≤ aε erro≥ handle≥ ì
  265. (ß cal∞ t∩ QERRO╥ return≤ witΦ Zer∩ Flaτ Set)¼á thi≤ routinσ ì
  266. return≤á thσ addres≤ oµ thσ firs⌠ characte≥ oµá thσá commanΣ ì
  267. line which was in error.  For example, if the command:
  268.  
  269.           XXX params;DIR
  270.  
  271. wa≤á issueΣ anΣ XXX.CO═ coulΣ no⌠ bσ found¼á ERRAD╥á return≤ ì
  272. thσ addres≤ oµ thσ firs⌠ characte≥ oµ thσ string:
  273.  
  274.           db   'XXX params;DIR',0
  275.  
  276. Inputs: None
  277.  
  278. Outputs: HL = address of first character of error line
  279.  
  280.  
  281. Registers Affected: HL
  282.  
  283. Side Effects: None
  284.  
  285. Special Error Conditions: None
  286.  
  287.  
  288. Z3LIB Routine: GETER1
  289.  
  290. Function:
  291.      Returε thσ erro≥ flaτ iε A«á  GETER▒ allow≤ thσ prograφ ì
  292. t∩ finΣ ou⌠ iµ aε erro≥ handle≥ i≤ currentl∙ installed«  A=░ ì
  293. anΣá Zer∩á Flaτá i≤á Se⌠ (Z⌐ iµ therσ i≤á n∩á erro≥á handle≥ ì
  294. installed.
  295.  
  296. Inputs: None
  297.  
  298. Outputs: A=0 and Z if no error handler installed
  299.           A<>0 and NZ if error handler installed
  300.  
  301. Registers Affected: PSW
  302.  
  303. Side Effects: None
  304.  
  305. Special Error Conditions: None
  306.  
  307.  
  308. Z3LIB Routine: PUTER1
  309.  
  310. Function:
  311.      Se⌠á thσ erro≥ handle≥ installeΣ flag«á  PUTER▒á allow≤ ì
  312. thσá prograφá t∩ explictl∙ se⌠ thσ erro≥á handle≥á installeΣ ì
  313. flag«á  Iµ thi≤ flaτ i≤ se⌠ t∩ 0¼á thσ curren⌠ erro≥ handle≥ ì
  314. (iµ any⌐ i≤ disabled«á  Iµ thi≤ flaτ i≤ se⌠ t∩ non-zero¼ thσ ì
  315. curren⌠á erro≥ handle≥ (defineΣ b∙ thσ erro≥ handle≥ commanΣ ì
  316. linσ messagσ - seσ GETERC/PUTERC⌐ i≤ enableΣ fo≥ late≥ use.
  317.  
  318. Inputs: A = error handler engaged flag
  319.           (A=0 if error handler is to be disabled, A<>0
  320.           if error hander is to be enabled)
  321.  
  322. Outputs: None
  323.  
  324.  
  325. Registers Affected: None
  326.  
  327. Side Effects: Error Handler Enable Message is Set
  328.  
  329. Special Error Conditions: None
  330.  
  331.  
  332. Z3LIB Routine: GETERC
  333.  
  334. Function:
  335.      Returεá thσá addres≤á oµ thσá firs⌠á characte≥á oµá thσ ì
  336. command line used to invoke the current error handler.
  337.  
  338.      If the error handler is to be invoked by the command:
  339.  
  340.           ERROR params
  341.  
  342. then the address of the first character of this string:
  343.  
  344.           db   'ERROR params',0
  345.  
  346. is returned.
  347.  
  348.      Iµ therσ i≤ n∩ erro≥ string¼á oε exi⌠ A=░ anΣ Zer∩ Flaτ ì
  349. i≤á Se⌠ (Z)«á  Otherwise¼á A=firs⌠ characte≥ oµ erro≥ strinτ ì
  350. and NZ.
  351.  
  352. Inputs: None
  353.  
  354. Outputs: HL = address of first char
  355.           A=0 and Zero Flag Set if string is empty
  356.  
  357. Registers Affected: HL, PSW
  358.  
  359. Side Effects: None
  360.  
  361. Special Error Conditions: None
  362.  
  363.  
  364. Z3LIB Routine: PUTERC
  365.  
  366. Function:
  367.      Se⌠á thσá erro≥ handle≥ commanΣá line«á  Oεá input¼á H╠ ì
  368. point≤ t∩ ß strinτ whicΦ i≤ t∩ bσ thσ commanΣ linσá executeΣ ì
  369. to invoke an error handler.  For example:
  370.  
  371.           ext  puterc
  372.           ...
  373.           lxi  h,erstr   ;pt to string
  374.           call puterc
  375.           jnz  OK        ;string was accepted
  376.           ...
  377.      erstr:
  378.           db   'ERROR NOOPT',0
  379.  
  380.      Thσá erro≥ string¼á includinτ thσ endinτ 0¼á mus⌠ bσ 3▓ ì
  381. byte≤á lonτá o≥ less«á  Iµ i⌠ i≤ morσ thaεá 3▓á byte≤á long¼ ì
  382. PUTERC returns with A=0 and Zero Flag Set (Z).
  383.  
  384. Inputs: HL = address of first character of error handler
  385.           command line
  386.  
  387. Outputs: A=0 and Zero Flag Set (Z) if command line too long
  388.           (more than 32 bytes)
  389.  
  390. Registers Affected: PSW
  391.  
  392. Side Effects: None
  393.  
  394. Special Error Conditions: None
  395.  
  396. :Inter-Transient Error Code    GETER2/PUTER2
  397.  
  398.      Thσá inter-transien⌠á erro≥ codσ i≤ ß one-bytσá messagσ ì
  399. whicΦá an∙á prograφá caεá se⌠á t∩á indicatσá it≤á completioε ì
  400. success«á  Thσá conventioε i≤ adopteΣ tha⌠ iµá thi≤á messagσ ì
  401. bytσá i≤ se⌠ t∩ 0¼á theε thσ prograφ completeΣ successfully«  ì
  402. Iµ thi≤ messagσ bytσ i≤ no⌠ 0¼ theε thσ prograφ haΣ aε erro≥ ì
  403. iεá onσ forφ o≥ anothe≥ anΣ thσ valuσ oµ thi≤á messagσá bytσ ì
  404. indicate≤ thσ error.
  405.  
  406.      GETER▓á allow≤ ß prograφ t∩ determinσ thσ valuσ oµ thi≤ ì
  407. inter-transien⌠á erro≥ codσ anΣ PUTER▓ allow≤ ßá prograφá t∩ ì
  408. se⌠ thσ valuσ oµ thσ inter-transien⌠ erro≥ code.
  409.  
  410.  
  411. Z3LIB Routine: GETER2
  412.  
  413. Function:
  414.      Returεá thσ valuσ oµ thσ inter-transien⌠ erro≥ codσá iε ì
  415. A.  A=0 and Zero Flag Set (Z) if no error.
  416.  
  417. Inputs: None
  418.  
  419. Outputs: A=error code and Zero Flag set accordingly
  420.           A=0 and Zero Flag Set (Z) if no error
  421.  
  422. Registers Affected: PSW
  423.  
  424. Side Effects: None
  425.  
  426. Special Error Conditions: None
  427.  
  428.  
  429. Z3LIB Routine: PUTER2
  430.  
  431. Function:
  432.      Se⌠á thσ valuσ oµ thσ inter-transien⌠ erro≥á code«á  Iµ ì
  433. A=0, the program is indicating that no error occurred.
  434.  
  435. Inputs: A=error code (A=0 if no error)
  436.  
  437. Outputs: None
  438.  
  439. Registers Affected: None
  440.  
  441. Side Effects: Error Code Message is Set
  442.  
  443. Special Error Conditions: None
  444.  
  445. :Register Access               GETREG/PUTREG
  446.  
  447.      Thσ ZCPR│ Messagσ Buffe≥ provide≤ teε one-bytσ message≤ ì
  448. whicΦ arσ useΣ a≤ one-bytσ registers«  Thσ GETRE╟ anΣ PUTRE╟ ì
  449. routine≤á allo≈á ß prograφ t∩ obtaiε anΣ se⌠ ß valuσ iεá an∙ ì
  450. one of the ten registers.
  451.  
  452.  
  453. Z3LIB Routine: GETREG
  454.  
  455. Function:
  456.      Obtaiε thσ valuσ (iε A⌐ oµ thσ registe≥ whosσ numbe≥ i≤ ì
  457. iε ┬ (B=░ t∩ 9)«á  Oε entry¼ B=registe≥ number¼ anΣ oε exit¼ ì
  458. A=value in register.
  459.  
  460.      Note║á  GETRE╟ perform≤ n∩ checδ oε thσ validit∙ oµ thσ ì
  461. valuσ iε B¼á usinτ i⌠ a≤ aε offse⌠ int∩ thσ registe≥ buffer«  ì
  462. I⌠ i≤ thσ responsibilit∙ oµ thσ programme≥ t∩ ensurσ tha⌠á ┬ ì
  463. contains a valid register number (0 to 9).
  464.  
  465.      Example of use:
  466.  
  467.           ext  getreg
  468.           ...
  469.           mvi  b,5       ;get the value of Register 5
  470.           call getreg
  471.           jz   r5eq0     ;process special case of reg 5 = 0
  472.  
  473. Inputs: B = register number of register to access
  474.  
  475. Outputs║ ┴ ╜ valuσ oµ registe≥ anΣ Zer∩ Flaτ i≤ set
  476.           accordingly
  477.  
  478. Registers Affected: PSW
  479.  
  480. Side Effects: None
  481.  
  482. Special Error Conditions: None
  483.  
  484.  
  485. Z3LIB Routine: PUTREG
  486.  
  487. Function:
  488.      Se⌠á thσ valuσ (containeΣ iε A⌐ int∩ ß registe≥á (whosσ ì
  489. number is contained in B).
  490.  
  491.      Note║á n∩á checδá i≤ madσ t∩ ensurσ tha⌠ ┬á contain≤á ß ì
  492. valiΣá registe≥á number«á  I⌠ i≤ thσ responsibilit∙á oµá thσ ì
  493. programmer to ensure that B contains a value from 0 to 9.
  494.  
  495.      Example of use:
  496.  
  497.           ext  putreg
  498.           ...
  499.           mvi  b,9       ;set register 9
  500.           mvi  a,20      ;to 20
  501.           call putreg
  502.           ...
  503.  
  504. Inputs: B = register number (0 to 9)
  505.           A = register value (0 to 255)
  506.  
  507. Outputs: None
  508.  
  509. Registers Affected: None
  510.  
  511. Side Effects: Register Value is Set
  512.  
  513. Special Error Conditions: None
  514.  
  515. :ZEX Status and Control        GETZEX/PUTZEX/STOPZEX/STRTZEX
  516.  
  517.      Thσá ZE╪ CommanΣ Filσ Facilit∙ (unde≥ ZCPR│ only!⌐á caε ì
  518. bσ controlleΣ b∙ thi≤ se⌠ oµ Z3LI┬ routines«  ZE╪ intercept≤ ì
  519. al∞ BIO╙ call≤ fo≥ input¼á and¼á wheε iε intercep⌠ mode¼á i⌠ ì
  520. provide≤á inpu⌠ froφ tex⌠ containeΣ iε it≤ memory-baseΣ tex⌠ ì
  521. buffe≥á rathe≥á thaε allowinτ thσ use≥ t∩á inpu⌠á character≤ ì
  522. froφá thσ keyboard«á  Thesσ routine≤ arσ useΣ t∩á quer∙á thσ ì
  523. statu≤á oµ ZE╪ anΣ t∩ instruc⌠ ZE╪ t∩ continuσá interceptinτ ì
  524. character≤ o≥ t∩ sto≡ interceptinτ character≤ anΣ allo≈ use≥ ì
  525. input.
  526.  
  527.  
  528. Z3LIB Routine: GETZEX
  529.  
  530. Function:
  531.      Return≤ thσ ZE╪ contro∞ messagσ bytσ iε A«  Thi≤ allow≤ ì
  532. thσá prograφá t∩ finΣ ou⌠ thσ curren⌠ statσ tha⌠ ZE╪ i≤á in«  ì
  533. This control message byte takes on one of three values:
  534.  
  535.           0 - "normal" - ZEX is running and intercepting
  536.                BIOS calls
  537.           1 - "ZCPR3 Prompt" - ZEX is allowed to run and
  538.                intercept BIOS calls but ZEX thinks that it
  539.                is providing input to the ZCPR3 command
  540.                Processor directly (ZEX is not providing
  541.                input to any program)
  542.           2 - "ZEX suspended" - ZEX is not intercepting
  543.                BIOS calls and user input is allowed
  544.  
  545.  
  546.      Thσ codσ oµ ▒ shoulΣ neve≥ bσ seeε b∙ an∙ prograφ sincσ ì
  547. i⌠ i≤ se⌠ b∙ ZCPR│ anΣ cleareΣ t∩ ░ afte≥ ZE╪ ha≤á completeΣ ì
  548. the command line input.
  549.  
  550.      An∙á ZE╪á contro∞á messagσ i≤ rese⌠ upoεá executioεá oµ ì
  551. ZCPR│á t∩á ░ wheε ZCPR│ i≤ entereΣ anΣ theε t∩á ▒á wheεá thσ ì
  552. ZCPR│á promp⌠ appear≤ (ZCPR│ input)«á  Wheε ZCPR│á complete≤ ì
  553. its input, it resets the ZEX control message to 0.
  554.  
  555. Inputs: None
  556.  
  557. Outputs║ ┴ ╜ ZE╪ Contro∞ Messagσ anΣ Zer∩ Flaτ set
  558.          accordingly
  559.           A = 0 if ZEX is intercepting chars
  560.           A = 1 if ZCPR3 input is engaged and ZEX is
  561.                intercepting chars
  562.           A = 2 if ZEX is not intercepting chars
  563.  
  564.  
  565. Registers Affected: PSW
  566.  
  567. Side Effects: None
  568.  
  569. Special Error Conditions: None
  570.  
  571.  
  572. Z3LIB Routine: PUTZEX
  573.  
  574. Function:
  575.      Set≤á thσ ZE╪ contro∞ messagσ bytσ iε A«á  Thi≤á allow≤ ì
  576. thσá prograφ t∩ se⌠ thσ statσ tha⌠ ZE╪ i≤ in«á  Thi≤ contro∞ ì
  577. messagσ bytσ mus⌠ takσ oε onσ oµ threσ values:
  578.  
  579.           0 - "normal" - ZEX is running and intercepting
  580.                BIOS calls
  581.           1 - "ZCPR3 Prompt" - ZEX is allowed to run and
  582.                intercept BIOS calls but ZEX thinks that it
  583.                is providing input to the ZCPR3 command
  584.                Processor directly (ZEX is not providing
  585.                input to any program)
  586.           2 - "ZEX suspended" - ZEX is not intercepting
  587.                BIOS calls and user input is allowed
  588.  
  589.      I⌠á i≤á thσá responsibilit∙ oµ thσá programme≥á tha⌠á ┴ ì
  590. contains one of these three values upon entry to PUTZEX.
  591.  
  592.      Thσ codσ oµ ▒ ma∙ bσ se⌠ b∙ an∙ prograφ iµ i⌠ want≤ ZE╪ ì
  593. t∩ "thinkó tha⌠ i⌠ i≤ providinτ inpu⌠ t∩ ZCPR3«á  Iµ ZE╪ wa≤ ì
  594. previousl∙á suspended¼á i⌠ advance≤ t∩ thσ beginninτ oµá thσ ì
  595. nex⌠ linσ anΣ resume≤ wheε i⌠ see≤ thi≤ code.
  596.  
  597.      An∙á ZE╪á contro∞á messagσ i≤ rese⌠ upoεá executioεá oµ ì
  598. ZCPR│á t∩á ░ wheε ZCPR│ i≤ entereΣ anΣ theε t∩á ▒á wheεá thσ ì
  599. ZCPR│á promp⌠ appear≤ (ZCPR│ input)«á  Wheε ZCPR│á complete≤ ì
  600. its input, it resets the ZEX control message to 0.
  601.  
  602. Inputs║ ┴ ╜ ZE╪ Contro∞ Messagσ
  603.           A = 0 if ZEX is intercepting chars
  604.           A = 1 if ZCPR3 input is engaged and ZEX is
  605.                intercepting chars
  606.           A = 2 if ZEX is not intercepting chars
  607.  
  608. Outputs: None
  609.  
  610.  
  611. Registers Affected: None
  612.  
  613. Side Effects: ZEX Control Message Byte is Set
  614.  
  615. Special Error Conditions: None
  616.  
  617.  
  618. Z3LIB Routine: STOPZEX
  619.  
  620. Function:
  621.      Sto≡á ZE╪á froφ interceptinτ BIO╙ call≤ anΣá allo≈á thσ ì
  622. user to input characters.
  623.  
  624.      Thi≤ i≤ ß shorthanΣ t∩ placinτ thσ 2 contro∞ codσá int∩ ì
  625. the ZEX Control Message Byte.
  626.  
  627. Inputs: None
  628.  
  629. Outputs: None
  630.  
  631. Registers Affected: None
  632.  
  633. Side Effects: ZEX Control Message Byte is set to 2
  634.  
  635. Special Error Conditions: None
  636.  
  637.  
  638. Z3LIB Routine: STRTZEX
  639.  
  640. Function:
  641.      Allo≈á ZE╪ t∩ intercep⌠ BIO╙ call≤ anΣ don'⌠ allo≈á thσ ì
  642. use≥ t∩ inpu⌠ characters.
  643.  
  644.      Thi≤ i≤ ß shorthanΣ t∩ placinτ thσ 0 contro∞ codσá int∩ ì
  645. the ZEX Control Message Byte.
  646.  
  647. Inputs: None
  648.  
  649. Outputs: None
  650.  
  651. Registers Affected: None
  652.  
  653. Side Effects: ZEX Control Message Byte is set to 0
  654.  
  655. Special Error Conditions: None
  656.  
  657.