Davex/doc/Davex Xtn.rtf

686 lines
108 KiB
Plaintext

{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f11\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f37\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}
{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f58\fmodern\fcharset238\fprq1 Courier New CE;}
{\f59\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
{\f64\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f66\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}
{\f150\fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f148\fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
{\f149\fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f151\fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
{\f152\fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f155\fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f410\fmodern\fcharset0\fprq1 @MS Mincho Western;}
{\f408\fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f409\fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f411\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f412\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f415\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025
\ltrch\fcs0 \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}
{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\revtbl {Unknown;}}{\*\rsidtbl \rsid4805073}{\*\generator Microsoft Word 11.0.0000;}{\info{\operator .}{\creatim\yr2011\mo12\dy6\hr22\min18}{\revtim\yr2011\mo12\dy6\hr22\min18}{\version2}{\edmins0}{\nofpages12}{\nofwords3422}
{\nofchars19512}{\nofcharsws22889}{\vern24615}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3
\jcompress\viewkind4\viewscale100\rsidroot4805073 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
\pnucltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}
{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl9\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\qc \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0
\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Appendix\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
Writing external DAVEX commands
\par
\par \hich\af2\dbch\af11\loch\f2 DAL Systems \hich\af2\dbch\af11\loch\f2 20\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 Feb\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 90\hich\af2\dbch\af11\loch\f2 Version
\hich\af2\dbch\af11\loch\f2 1.25
\par }\pard \ltrpar\ql \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par
\par \hich\af2\dbch\af11\loch\f2 This appendix is for assembly\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 language programmers\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
It explains the format of Davex external commands and the resources available to them\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 Three files are provided that should be \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 put\hich\af2\dbch\af11\loch\f2 " (\hich\af2\dbch\af11\loch\f2 included\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2
by external commands\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 these files are in Merlin format and will have to be modified some if you are using EDASM or some other assembler\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 1
\hich\af2\dbch\af11\loch\f2 ) "\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 defines entry points and locations provided \hich\af2\dbch\af11\loch\f2
by Davex\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ) "\hich\af2\dbch\af11\loch\f2 apple\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 defines entry points in the Apple ROM and some locations on zero page and page \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
and \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 ) "\hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s
\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 defines ProDOS \hich\af2\dbch\af11\loch\f2 8\hich\af2\dbch\af11\loch\f2 command numbers\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 error codes\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 and global\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 page locations\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 xc\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 is the source code for an }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0
\f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 empty}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 exte\hich\af2\dbch\af11\loch\f2 rnal command\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2
the best way to start a new command is by making a copy of \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 xc\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 ". \hich\af2\dbch\af11\loch\f2
Source code for the \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 du\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 external command is also provided as an example\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 An external Davex command is assembled to run below \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 000\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
External commands have a fixed \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 roughly\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 ending address to allow Davex to grow without overlapping previously\hich\af2\dbch\af11\loch\f2 -
\hich\af2\dbch\af11\loch\f2 assembled external commands\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Command files have filetype \hich\af2\dbch\af11\loch\f2 $2\hich\af2\dbch\af11\loch\f2 E\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 auxiliary type \hich\af2\dbch\af11\loch\f2 $8001\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 For compatibility with old versions of Davex\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
commands may also have filetype BIN\hich\af2\dbch\af11\loch\f2 .)
\par
\par \hich\af2\dbch\af11\loch\f2 External comm\hich\af2\dbch\af11\loch\f2 ands can have all the same kinds of parameters built\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 in commands can have\hich\af2\dbch\af11\loch\f2 .
\par
\par
\par \hich\af2\dbch\af11\loch\f2 Here is the format for an external command\hich\af2\dbch\af11\loch\f2 :
\par }\pard \ltrpar\ql \li1200\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1200\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 $60\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 RTS
\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 EE
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 EE
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx version \hich\af2\dbch\af11\loch\f2 # \hich\af2\dbch\af11\loch\f2 of command \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $34\hich\af2\dbch\af11\loch\f2 =
\hich\af2\dbch\af11\loch\f2 Version \hich\af2\dbch\af11\loch\f2 3.4\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 byte\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 recommended\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 use versions less than \hich\af2\dbch\af11\loch\f2 1.0\hich\af2\dbch\af11\loch\f2 for in\hich\af2\dbch\af11\loch\f2
complete versions\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx minimum Davex version required \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 byte\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 use the version number for the Davex you are working with\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 unless you\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2
re sure your command works with earlier versions\hich\af2\dbch\af11\loch\f2 ) [\hich\af2\dbch\af11\loch\f2 see auxiliary version nibble below\hich\af2\dbch\af11\loch\f2 ]
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx command characteristics \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 byte\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 40\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 col screen
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 6\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 80\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 col screen
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 5\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 //\hich\af2\dbch\af11\loch\f2 e or IIgs
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 4\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 //\hich\af2\dbch\af11\loch\f2 c
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires IIgs
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ..\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 reserved\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 use
\hich\af2\dbch\af11\loch\f2 0
\par
\par \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte pointer to ASCII descri\hich\af2\dbch\af11\loch\f2 ption text \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 or \hich\af2\dbch\af11\loch\f2 0
\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 Description must be in first \hich\af2\dbch\af11\loch\f2 512\hich\af2\dbch\af11\loch\f2 bytes of the object file and must be preceded by a length byte\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The author
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s name or other identification should appear in this description for commands not distributed by DAL Systems\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 The
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 what\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 comm\hich\af2\dbch\af11\loch\f2 and displays these descriptions\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2
be sure to test it on your commands\hich\af2\dbch\af11\loch\f2 .)
\par
\par \hich\af2\dbch\af11\loch\f2 load address \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 The address at which this file must be loaded\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 typically an exact page boundary that makes the code end shortly before \hich\af2\dbch\af11\loch\f2 $
\hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 000\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 execution address \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 D\hich\af2\dbch\af11\loch\f2 avex will JSR to the address stored here once the command is loaded at its load address\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 auxiliary minimum Davex version required \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 v\hich\af2\dbch\af11\loch\f2 1.22\hich\af2\dbch\af11\loch\f2 +]
\par \hich\af2\dbch\af11\loch\f2 The low nibble of this byte is an extension of the \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 minimum Davex version\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 byte above\hich\af2\dbch\af11\loch\f2
. \hich\af2\dbch\af11\loch\f2 For example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a command th\hich\af2\dbch\af11\loch\f2 at requires Davex version \hich\af2\dbch\af11\loch\f2 1.82\hich\af2\dbch\af11\loch\f2 or greater would have
\hich\af2\dbch\af11\loch\f2 $02\hich\af2\dbch\af11\loch\f2 in this byte\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 The high nibble of this byte is reserved and should be \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 for now
\hich\af2\dbch\af11\loch\f2 .)
\par
\par \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 bytes reserved for future extensions of the external command format \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 FILL WITH \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 parameter table \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 see below\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 p\hich\af2\dbch\af11\loch\f2 +
\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 p\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 number of parameters\hich\af2\dbch\af11\loch\f2 )
\par }\pard \ltrpar\ql \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2
bytes for each parameter\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 then \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes of \hich\af2\dbch\af11\loch\f2 $00
\par
\par
\par \hich\af2\dbch\af11\loch\f2 Davex loads the external command at its load address \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 after checking that it would not overlap memory used by Davex\hich\af2\dbch\af11\loch\f2 ).
\hich\af2\dbch\af11\loch\f2 Davex then evaluates any parameters and calls the command\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s execution address AT LEAST once\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
If the command has any \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 wildpath\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 parameter\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
Davex expands the wildcards and calls the command once for each file that matches the wildcard\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 with}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 out}{
\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 reloading the external command\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 Even if your command does not take wildcards\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 do not assume that it will be reloaded whenever it is used\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 the \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 rep\hich\af2\dbch\af11\loch\f2 '
\hich\af2\dbch\af11\loch\f2 command may execute your command repeatedly without reloading it\hich\af2\dbch\af11\loch\f2 .)
\par
\par \hich\af2\dbch\af11\loch\f2 When the external command finishes its work\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it will normally RTS back to Davex\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If an error occurs
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it might JMP to xerr or to xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err instead\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 see below\hich\af2\dbch\af11\loch\f2
.)
\par
\par \hich\af2\dbch\af11\loch\f2 The parameter table is\hich\af2\dbch\af11\loch\f2 a list of two\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte entries\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 A double
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 zero entry marks the end of the table\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The first byte of each pair is the option character for one parameter \hich\af2\dbch\af11\loch\f2 (
\hich\af2\dbch\af11\loch\f2 use \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 for parameters without any associated \hich\af2\dbch\af11\loch\f2 "-" \hich\af2\dbch\af11\loch\f2 character\hich\af2\dbch\af11\loch\f2 ).
\hich\af2\dbch\af11\loch\f2 The second byte is the type\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 If one wildcard\hich\af2\dbch\af11\loch\f2 pathname is allowed\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it must be the first parameter in the table\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
If two wildcard pathnames are allowed\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 they must be the first two parameters in the table\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 wildcard matching will take place on the first name
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and the text matching the wildcard will be s\hich\af2\dbch\af11\loch\f2 ubstituted into the second parameter whenever a wildcard character appears\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 All of the wildcard processing is invisible to external commands\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 The option characters in the parameter table must be in lower case \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 if they are letters\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and must have their hig
\hich\af2\dbch\af11\loch\f2 h bits on\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 Note that all \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 required\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 parameters \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
parameters that are not associated with a dash and a character\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 must come before all other parameters in the table\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
even though the user no longer needs to type them in that order\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 Also\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a required pathname\hich\af2\dbch\af11\loch\f2 or string parameter may contain }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073
\hich\af2\dbch\af11\loch\f2 zero}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 characters\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 From the user\hich\af2\dbch\af11\loch\f2 '
\hich\af2\dbch\af11\loch\f2 s point of view\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 the parameter is optional\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 but it is treated internally as a string with no characters
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The difference is important when your command decides how to act on the parameter\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s v\hich\af2\dbch\af11\loch\f2 alue
\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 If you do not want Davex to display each wildcard match before calling your command\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 use a NOP as the first executable byte of your code\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 Commands that always incorporate the pathname\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 passed to them into their output may want to do this
\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 The \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 what\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 command is a good example\hich\af2\dbch\af11\loch\f2 .)
\par
\par \hich\af2\dbch\af11\loch\f2 Note\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 When Davex prints a wildcard match\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it prints it to the SCREEN\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 never to a file or to the printer\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If you command would be useful for printing \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 tables\hich\af2\dbch\af11\loch\f2
" \hich\af2\dbch\af11\loch\f2 of information \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 something like \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 size\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 and
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 what\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 do\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 you wil\hich\af2\dbch\af11\loch\f2
l probably want to use the NOP option and have your command print the filenames or pathnames itself\hich\af2\dbch\af11\loch\f2 .
\par
\par
\par \hich\af2\dbch\af11\loch\f2 Parameter types \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 defined in \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 "):
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 nil no value associated with option character
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 int\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte integer
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 int\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte intege
\hich\af2\dbch\af11\loch\f2 r \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 XY\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 high\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 low\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 int\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte integer
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AXY\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 highest\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 lowest\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 path ProDOS pathname \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 X
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 file type given after name\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wildpath ProDOS pathname allowing wildcards \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 string string value \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 yesno y\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 n \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 :
\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 no\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 yes\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ftype file type \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 devnum device number \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 example
\hich\af2\dbch\af11\loch\f2 : ".\hich\af2\dbch\af11\loch\f2 62\hich\af2\dbch\af11\loch\f2 " = \hich\af2\dbch\af11\loch\f2 slot \hich\af2\dbch\af11\loch\f2 6\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 drive \hich\af2\dbch\af11\loch\f2 2
\hich\af2\dbch\af11\loch\f2 ):
\par \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 E\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 +
\hich\af2\dbch\af11\loch\f2 $60\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 For string and pathname values\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a pointer is passed in A and Y\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The data pointed to is a lengt
\hich\af2\dbch\af11\loch\f2 h\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed string\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 suitable for use in a ProDOS parameter block\hich\af2\dbch\af11\loch\f2 .
\par
\par
\par \hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 Resources available to external commands\hich\af2\dbch\af11\loch\f2 --
\par
\par \hich\af2\dbch\af11\loch\f2 External commands may use \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 filebuff\hich\af2\dbch\af11\loch\f2 ', '\hich\af2\dbch\af11\loch\f2 filebuff\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ',
\hich\af2\dbch\af11\loch\f2 and \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 filebuff\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 ', \hich\af2\dbch\af11\loch\f2 defined in GLOBALS\hich\af2\dbch\af11\loch\f2 ;
\hich\af2\dbch\af11\loch\f2 each one is \hich\af2\dbch\af11\loch\f2 $400\hich\af2\dbch\af11\loch\f2 bytes long\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 32\hich\af2\dbch\af11\loch\f2 bytes of zero page are\hich\af2\dbch\af11\loch\f2 reserved for XCs at \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 xczpage\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 The high bit of \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 xspeech\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 is on when a speech synthesizer is being used\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 XCs may use standard Monitor ROM routines for output \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 but not for input\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2
The following entry points into Davex are defined in the Globals file\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 AS\hich\af2\dbch\af11\loch\f2 SUME ALL REGISTERED ARE SCRAMBLED\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
EXCEPT AS DOCUMENTED BELOW\hich\af2\dbch\af11\loch\f2 .
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n
\hich\af2\dbch\af11\loch\f2 -- \hich\af2\dbch\af11\loch\f2 get value of parameter number A
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Use this subroutine to get the values of required parameters
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 ones with a \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 for the first byte of their pair in the parameter table\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 Before call
\hich\af2\dbch\af11\loch\f2 ing this routine\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 load the A register with a parameter number \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 the first parameter is \hich\af2\dbch\af11\loch\f2 0
\hich\af2\dbch\af11\loch\f2 ).
\par
\par \hich\af2\dbch\af11\loch\f2 For example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 rename\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 command would LDA
\hich\af2\dbch\af11\loch\f2 #0\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 JSR xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n to get the value of the first parameter\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 Then it would LDA \hich\af2\dbch\af11\loch\f2 #1\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 JSR xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n to get the value of the s
\hich\af2\dbch\af11\loch\f2 econd parameter\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 NOTE\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 When an external command gets control\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 LDA \hich\af2\dbch\af11\loch\f2 #0
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 JSR xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 has just been done\hich\af2\dbch\af11\loch\f2 .
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ch
\hich\af2\dbch\af11\loch\f2 -- \hich\af2\dbch\af11\loch\f2 get value of parameter for option char in A
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Use this routine to get the value of an optional parameter
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 one that has a character in the first byte of its pair in the parameter table\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2
Load the A register with the character before calling this routine\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The character should be lowercase \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 if it\hich\af2\dbch\af11\loch\f2 '
\hich\af2\dbch\af11\loch\f2 s a l\hich\af2\dbch\af11\loch\f2 etter\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and have its high bit ON\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 If the parameter in question was not given on the command line\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 this routine will return with the carry flag set \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
SEC\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 Otherwise the carry will be clear and the value of the parameter will be in the appropriate registers\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A
\hich\af2\dbch\af11\loch\f2 ,\hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 ,\hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 see table of parameter types above\hich\af2\dbch\af11\loch\f2 ).
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xmess
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints an inline message\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2
ASCII text\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 followed by a \hich\af2\dbch\af11\loch\f2 $00\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 follows the JSR to this subroutine\hich\af2\dbch\af11\loch\f2 .
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ftype
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes filetype code in A and prints a three\hich\af2\dbch\af11\loch\f2 -
\hich\af2\dbch\af11\loch\f2 character filetype name\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 or \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx if the filetype in n\hich\af2\dbch\af11\loch\f2 ot known to Davex
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 the lists of known filetypes are stored in the \hich\af2\dbch\af11\loch\f2 %\hich\af2\dbch\af11\loch\f2 config file and in Davex itself\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
and the \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 ftype\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 command can be used to view and edit the user\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s list
\hich\af2\dbch\af11\loch\f2 ).
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 access
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes a ProDOS access byte and prints\hich\af2\dbch\af11\loch\f2 :
\par
\par \hich\af2\dbch\af11\loch\f2 rwndIB
\par
\par \hich\af2\dbch\af11\loch\f2 Only the letters c\hich\af2\dbch\af11\loch\f2 orresponding to bits set in the access byte are printed\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 blanks are printed for the others \hich\af2\dbch\af11\loch\f2 (
\hich\af2\dbch\af11\loch\f2 r\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 read\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 w\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 rename\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 d\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 delete\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 I\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 invisible\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 needs backup\hich\af2\dbch\af11\loch\f2 ).
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 2
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints a \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 -
\hich\af2\dbch\af11\loch\f2 byte value in decimal\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 AY contains the value \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 high byte
\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 No characters \hich\af2\dbch\af11\loch\f2 are printed before or after the number\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 3
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints a \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 -
\hich\af2\dbch\af11\loch\f2 byte value in decimal\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The number must be stored in xnum \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 lowest byte\hich\af2\dbch\af11\loch\f2 )
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 xnum\hich\af2\dbch\af11\loch\f2 +\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 middle byte\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 and xnum\hich\af2\dbch\af11\loch\f2 +\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 highest byte\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2
No characters are printed before or after the number\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 pady
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints a decimal number from NUM \hich\af2\dbch\af11\loch\f2 (
\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 right\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 justified in a field of Y\hich\af2\dbch\af11\loch\f2 +
\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 characters
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 pad
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Same as xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 3
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 except the number is right\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 justified in a field of \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 characters
\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 path
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 in lowercase
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 a length\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed string pointed to by\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xbuild\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 local
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 AY must point to a partial pathname\hich\af2\dbch\af11\loch\f2 ;
\hich\af2\dbch\af11\loch\f2 builds a complete pathname by appending to the \hich\af2\dbch\af11\loch\f2 "%" \hich\af2\dbch\af11\loch\f2 directory name\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This will locate the
\hich\af2\dbch\af11\loch\f2 %\hich\af2\dbch\af11\loch\f2 config file\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 for example\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Returns AY pointing to the complete path
\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If you call this routine more than once\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 note that the same memory will be used to store the pathname\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 so the previous name will be erased\hich\af2\dbch\af11\loch\f2 .)
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 sd
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Entry\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 device number\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 prints\hich\af2\dbch\af11\loch\f2 : .\hich\af2\dbch\af11\loch\f2 sd\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
where s and d are the slot and drive of the given device number\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 drvr \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 input functions in Davex \hich\af2\dbch\af11\loch\f2 1.25\hich\af2\dbch\af11\loch\f2 +]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Provides calls to open\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
close\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and poll character devices\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Entry\hich\af2\dbch\af11\loch\f2 :
\hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 function\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Other parameters depend on the function\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
For convenience\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 ProDOS call numbers are used \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 as defined in MLI\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 GLOBALS
\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 S\hich\af2\dbch\af11\loch\f2 ).
\par
\par \hich\af2\dbch\af11\loch\f2 Slots are opened \hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 independently\hich\af2\dbch\af11\loch\f2 - \hich\af2\dbch\af11\loch\f2 for inp\hich\af2\dbch\af11\loch\f2 ut and output\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 Input is supported for Pascal devices\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but not for parallel cards\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 open a slot for output
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 slot number \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2
for default\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 :
\hich\af2\dbch\af11\loch\f2 open a slot for input
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 slot number
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 close\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 close a slot for output
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
for xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 close\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 :
\hich\af2\dbch\af11\loch\f2 close a slot for input
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 send a character
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 bits significant\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 character to be written
\par \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number from the open
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 :
\hich\af2\dbch\af11\loch\f2 send a character \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 all \hich\af2\dbch\af11\loch\f2 8\hich\af2\dbch\af11\loch\f2 bits significant\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 inputs and outputs as for mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 ab\hich\af2\dbch\af11\loch\f2 ove
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 see if device is ready to accept output
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
\par \hich\af2\dbch\af11\loch\f2 Bit \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 of A is \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if device is ready to receive
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 other bits are undefined
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 character successfully read
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 if no character ready
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 >\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 if error \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
for xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xredirect
\par \hich\af2\dbch\af11\loch\f2 Contro\hich\af2\dbch\af11\loch\f2 ls suspension of I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 multiple levels of suspension are allowed
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 one \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 restore\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 is required for each \hich\af2\dbch\af11\loch\f2 "
\hich\af2\dbch\af11\loch\f2 suspend\hich\af2\dbch\af11\loch\f2 ").
\par
\par \hich\af2\dbch\af11\loch\f2 Input in A\hich\af2\dbch\af11\loch\f2 :
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 determine current suspension level
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection
\par \hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 : (\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 FF\hich\af2\dbch\af11\loch\f2 ): \hich\af2\dbch\af11\loch\f2 restore I\hich\af2\dbch\af11\loch\f2 /
\hich\af2\dbch\af11\loch\f2 O redirectio\hich\af2\dbch\af11\loch\f2 n
\par
\par \hich\af2\dbch\af11\loch\f2 Output in A\hich\af2\dbch\af11\loch\f2 :
\par \hich\af2\dbch\af11\loch\f2 N flag \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 bit \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if output is being redirected
\par \hich\af2\dbch\af11\loch\f2 V flag \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 bit \hich\af2\dbch\af11\loch\f2 6\hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if input is being redirected
\par
\par \hich\af2\dbch\af11\loch\f2 xpercent
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes two \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 -
\hich\af2\dbch\af11\loch\f2 byte values\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 one in AXY and one in xnum\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Returns \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 in A
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 the percentage that AXY is of xnum \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 ).
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xyesno
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints \hich\af2\dbch\af11\loch\f2 '? \hich\af2\dbch\af11\loch\f2 (
\hich\af2\dbch\af11\loch\f2 y\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 and waits for a Y or N to be typed\hich\af2\dbch\af11\loch\f2 .
\par \hich\af2\dbch\af11\loch\f2 Returns\hich\af2\dbch\af11\loch\f2 :
\par \hich\af2\dbch\af11\loch\f2 No\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $00\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Z flag\hich\af2\dbch\af11\loch\f2 =
\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 BEQ will be taken\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 Yes\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Z flag\hich\af2\dbch\af11\loch\f2 =
\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 BNE will be taken\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 See xredirect notes in xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 description\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.2\hich\af2\dbch\af11\loch\f2 +]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Just like xyesno\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
except that the SPACE and RETURN keys are also accepted\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Before calling this routine\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 load the A register with a \hich\af2\dbch\af11\loch\f2 '
\hich\af2\dbch\af11\loch\f2 y\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 or an \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
If the user types a SPACE or RETURN\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it is translated into the character you passed\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 should be used\hich\af2\dbch\af11\loch\f2 when there is a clear and }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2
safe}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 default choice at a yes\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 no question\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
The default should never be destructive\hich\af2\dbch\af11\loch\f2 ! \hich\af2\dbch\af11\loch\f2 If there is no clear default choice\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2
t try to outguess the user\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 just use xyesno\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 To asking a yes\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 no question\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 you should call xredirect wi\hich\af2\dbch\af11\loch\f2 th A
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 to suspend any active I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 print the prompt
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 call xyesno or xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 call xredirect with A\hich\af2\dbch\af11\loch\f2 =-\hich\af2\dbch\af11\loch\f2 1
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 FF\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and then act on the answer to the question\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 If you don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t call xredirect\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 the question may get printed or sent to a disk file\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 and the a\hich\af2\dbch\af11\loch\f2 nswer to the question may come from an exec file\hich\af2\dbch\af11\loch\f2 !
\par
\par }\pard \ltrpar\ql \li2160\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin2160\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 lda \hich\af2\dbch\af11\loch\f2 #1
\par \hich\af2\dbch\af11\loch\f2 jsr xredirect
\par \hich\af2\dbch\af11\loch\f2 jsr xmess
\par \hich\af2\dbch\af11\loch\f2 asc \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 Okay to detonate mouse\hich\af2\dbch\af11\loch\f2 "
\par \hich\af2\dbch\af11\loch\f2 dfb \hich\af2\dbch\af11\loch\f2 0
\par
\par \hich\af2\dbch\af11\loch\f2 lda \hich\af2\dbch\af11\loch\f2 #\hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 "
\par \hich\af2\dbch\af11\loch\f2 jsr xyesno\hich\af2\dbch\af11\loch\f2 2
\par
\par \hich\af2\dbch\af11\loch\f2 php \hich\af2\dbch\af11\loch\f2 ;\hich\af2\dbch\af11\loch\f2 save Z flag for BEQ\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 BNE
\par \hich\af2\dbch\af11\loch\f2 lda \hich\af2\dbch\af11\loch\f2 #\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1
\par \hich\af2\dbch\af11\loch\f2 jsr xredirect
\par \hich\af2\dbch\af11\loch\f2 plp
\par
\par \hich\af2\dbch\af11\loch\f2 beq TheySaidNo
\par \hich\af2\dbch\af11\loch\f2 ...
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xgetln
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 get an input line and place it in string\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 NOT string\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 this was documented wrong before\hich\af2\dbch\af11\loch\f2 ] \hich\af2\dbch\af11\loch\f2 zero
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 terminated \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 there is also a length byte at string\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 ).
\hich\af2\dbch\af11\loch\f2 Returns SEC if input was cancelled by Ctrl\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This is the same string that Davex uses for the command lin
\hich\af2\dbch\af11\loch\f2 e\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 so a command that uses this call must preserve and restore the contents of this buffer \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 256
\hich\af2\dbch\af11\loch\f2 bytes starting at string\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 this is actually overkill by a few bytes\hich\af2\dbch\af11\loch\f2 )].
\hich\af2\dbch\af11\loch\f2 Note that the up and down arrows \hich\af2\dbch\af11\loch\f2 *\hich\af2\dbch\af11\loch\f2 will\hich\af2\dbch\af11\loch\f2 * \hich\af2\dbch\af11\loch\f2 allow the user to scroll through the command his
\hich\af2\dbch\af11\loch\f2 tory if this call is used\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 A BETTER GETLN ROUTINE WILL BE AVAILABLE IN DAVEX \hich\af2\dbch\af11\loch\f2 1.3\hich\af2\dbch\af11\loch\f2 :
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 PLANNED FOR DAVEX \hich\af2\dbch\af11\loch\f2 1.3\hich\af2\dbch\af11\loch\f2 ]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 AY
\hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 address of input buffer \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 provided by your command\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 length of the buffer
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 length\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 zero\hich\af2\dbch\af11\loch\f2 -
\hich\af2\dbch\af11\loch\f2 terminated s\hich\af2\dbch\af11\loch\f2 tring in buffer
\par
\par \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 reads lines of text from an input device\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Input will often come from the keyboard
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but it can come from an exec file or a peripheral device\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If you want to force input to come from the keyboard\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 use xredirect to suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redir\hich\af2\dbch\af11\loch\f2 ection before calling xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2
and to restore it afterwards\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If you print a prompt before getting the input\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 be sure to print the prompt AFTER suspending I
\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection\hich\af2\dbch\af11\loch\f2 .)
\par
\par \hich\af2\dbch\af11\loch\f2 Unlike xgetln\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 the up and down arrows \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for history scrolling\hich\af2\dbch\af11\loch\f2 )
\hich\af2\dbch\af11\loch\f2 are disabled during \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 Note that the maximum number of characters in the input string is two less than the size of the buffer\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 since one byte is used for the length of the string and one
\hich\af2\dbch\af11\loch\f2 $00\hich\af2\dbch\af11\loch\f2 byte marks the end of the string\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2
s behavior is undefined if it is ca\hich\af2\dbch\af11\loch\f2 lled with X less than \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xbell
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Sound a warning bell \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
a ProDOS\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 style \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 blat\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 or a system \hich\af2\dbch\af11\loch\f2 "
\hich\af2\dbch\af11\loch\f2 beep\hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 depending on \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 config \hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 b
\hich\af2\dbch\af11\loch\f2 ").
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xdowncase
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 If character in A is a capital letter\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 changes it into a lowercase letter \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 always sets bit \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 X and Y are preserved
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 A is preserved or capitalized\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This routine always turns on the high bit of the character in A\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xplural
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes two\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2
byte value in AY and \hich\af2\dbch\af11\loch\f2 prints \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 if the value is not equal to \hich\af2\dbch\af11\loch\f2 1
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Let\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s not have any more \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 files found
\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 messages\hich\af2\dbch\af11\loch\f2 !
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xcheck\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wait
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Returns with SEC if the user has pressed ESC\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 This is a SOFT ABORT if your command supports it\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 wildcard expansion and further command\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 line processi
\hich\af2\dbch\af11\loch\f2 ng\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 if any\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 will continue\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If the user hits Ctrl
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 C or Apple\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 period\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 this routine will print \hich\af2\dbch\af11\loch\f2 "***
\hich\af2\dbch\af11\loch\f2 aborted\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 and will clean up and return to the command prompt\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 The user can also PAUSE and single\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 step the screen by hitting SPACE\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This routine will call pol
\hich\af2\dbch\af11\loch\f2 l\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 io \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for print spooling\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 while the screen is frozen
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Also\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Apple\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 H will do a screen dump \hich\af2\dbch\af11\loch\f2 (
\hich\af2\dbch\af11\loch\f2 except on II\hich\af2\dbch\af11\loch\f2 +).
\par
\par \hich\af2\dbch\af11\loch\f2 NOTE\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 If an external command calls xcheck\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wait\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
it should do it exactly once per line printed\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Test your command for reasonable behavior by singl\hich\af2\dbch\af11\loch\f2 e\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2
stepping the output with the space bar\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xpr\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 date\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ay
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes standard ProDOS date word in AY and prints date in the form dd
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 mmm\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 yy\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If AY\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 prints \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 <\hich\af2\dbch\af11\loch\f2 no date\hich\af2\dbch\af11\loch\f2 >\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 instead
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Question marks are printed for any parts of the date that have illegal values\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xpr\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 ime\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ay
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes standard ProDOS time word in AY and prints time in the form hh
\hich\af2\dbch\af11\loch\f2 :\hich\af2\dbch\af11\loch\f2 mm xM\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If AY\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
prints blanks instead\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints ProDOS error message from A and aborts to the command line
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This routine closes any files you opened \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 provided you didn\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t fiddle with LEVEL
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and cleans up the stack\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 You generally don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t have to worry about cleaning things up
\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 Input and output redirection are cancelled\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but print spooling is not disturbed\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 er
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints ProDOS error without a bell and returns \hich\af2\dbch\af11\loch\f2 (
\hich\af2\dbch\af11\loch\f2 does N\hich\af2\dbch\af11\loch\f2 OT abort\hich\af2\dbch\af11\loch\f2 ).
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xerr
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Aborts to Davex\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s command
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 line prompt\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Use this routine if you print an error message \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 with xmess
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and want to abort like xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err would\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2
Note that the error message may be redirected to a file or printer\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 You may want to call xredirect with A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 to
\hich\af2\dbch\af11\loch\f2 suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection before calling xmess to print the error\hich\af2\dbch\af11\loch\f2 .)
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xpush\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 level
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prepares to open a new directory level\hich\af2\dbch\af11\loch\f2 ;
\hich\af2\dbch\af11\loch\f2 must be called before dir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup is called\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Opens a new directory level\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 Call xpush\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 level first\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Use xread\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 dir to read entri
\hich\af2\dbch\af11\loch\f2 es from the directory\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Call xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 finish when there are no more entries\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 On entry to xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A and Y should point to a complete pathname or a partial pathname RELEATIVE TO THE PREFIX
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 compare xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ).
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.23\hich\af2\dbch\af11\loch\f2 +]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Just like xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 s
\hich\af2\dbch\af11\loch\f2 etup\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but the pathname pointed to by AY should be either \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 )
\hich\af2\dbch\af11\loch\f2 complete or \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 partial RELEATIVE TO THE DIRECTORY ALREADY OPEN\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 This is useful for commands that traverse a subdirectory structure\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 since you can just call this routine with the directory name\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 finish
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Closes the current directory level and re\hich\af2\dbch\af11\loch\f2 -
\hich\af2\dbch\af11\loch\f2 opens the previous one\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 if one was open\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 To exit normally\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 you must call this routine once for each call to xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup you make\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If you jump to xerr or xProDOS
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t worry about it\hich\af2\dbch\af11\loch\f2 .)
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xread\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 di\hich\af2\dbch\af11\loch\f2 r
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Reads one entry from the current directory\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 opened with xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Returns SEC if there were no more entries in the current directory
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The directory entry is stored at \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 catbuff\hich\af2\dbch\af11\loch\f2 ".
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xpoll\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 io
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Should be called while waiting for keyboard input\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 This gives\hich\af2\dbch\af11\loch\f2 Davex a chance\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 for example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 to send data from spooled files to the printer
\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 This routine is called automatically during xcheck\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wait\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 xrdkey
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and xgetln calls\hich\af2\dbch\af11\loch\f2 .) \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and P are PRESERVED\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Also\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 xpoll\hich\af2\dbch\af11\loch\f2 _
\hich\af2\dbch\af11\loch\f2 io increments the two\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte random number on zero\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 page \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $4
\hich\af2\dbch\af11\loch\f2 E and \hich\af2\dbch\af11\loch\f2 $4\hich\af2\dbch\af11\loch\f2 F\hich\af2\dbch\af11\loch\f2 ).
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xmmgr
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 A crude memory manager\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2
allows external commands to use the space between the end of Davex and the beginning of the external command\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 Assemble external commands to end as close to \hich\af2\dbch\af11\loch\f2 $
\hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 000\hich\af2\dbch\af11\loch\f2 as possible to maximize this free space\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 )
\par
\par \hich\af2\dbch\af11\loch\f2 Input in X\hich\af2\dbch\af11\loch\f2 :
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 close free all dynamic memory
\par
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open alloc A pages from low mem\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 out of mem
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 return A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 st page
\par
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read return number of free pages in A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0
\par
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 gfinfo return lowest free page number into A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0
\par
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write set highest available page to A
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xpmgr
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 PathManager\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
performs common operations on pathnames\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The format of a call is\hich\af2\dbch\af11\loch\f2 :
\par
\par \hich\af2\dbch\af11\loch\f2 jsr xpmgr
\par \hich\af2\dbch\af11\loch\f2 dfb COMMAND
\par \hich\af2\dbch\af11\loch\f2 dw PARM\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 ,\hich\af2\dbch\af11\loch\f2 PARM\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ]
\par
\par \hich\af2\dbch\af11\loch\f2 COMMAND is one of the following\hich\af2\dbch\af11\loch\f2 :
\par
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 appay
\par \hich\af2\dbch\af11\loch\f2 appends path at A\hich\af2\dbch\af11\loch\f2 Y to path at PARM\hich\af2\dbch\af11\loch\f2 1
\par
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 appch
\par \hich\af2\dbch\af11\loch\f2 appends character in A to path at PARM\hich\af2\dbch\af11\loch\f2 1
\par
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 up
\par \hich\af2\dbch\af11\loch\f2 removes one segment from end of path at PARM\hich\af2\dbch\af11\loch\f2 1
\par
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 slashif
\par \hich\af2\dbch\af11\loch\f2 adds \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 to end of path at PARM\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if it doesn
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t already end
\par \hich\af2\dbch\af11\loch\f2 in \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 '
\par
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 copy
\par \hich\af2\dbch\af11\loch\f2 copie\hich\af2\dbch\af11\loch\f2 s length\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed path from PARM\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 to PARM\hich\af2\dbch\af11\loch\f2 2
\par \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.2\hich\af2\dbch\af11\loch\f2 +!]
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xgetnump \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v
\hich\af2\dbch\af11\loch\f2 1.1\hich\af2\dbch\af11\loch\f2 +]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 none
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 number of parameters given for command
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 including all required parameters\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 even if they are
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 length strings or pathnames\hich\af2\dbch\af11\loch\f2 ).
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 X and Y are preserved\hich\af2\dbch\af11\loch\f2 .
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xrdkey \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v
\hich\af2\dbch\af11\loch\f2 1.1\hich\af2\dbch\af11\loch\f2 +]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
character under cursor \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 normally use a blank \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 key pressed \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 high bit on\hich\af2\dbch\af11\loch\f2 ).
\par
\par \hich\af2\dbch\af11\loch\f2 Call this routine }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 instead}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2
of using ROM routines for input\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 For example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 RDKEY\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 RDCHAR
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and GETLN are not\hich\af2\dbch\af11\loch\f2 guaranteed to work correctly\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
Note that input will may come from an exec file rather than from the keyboard\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 unless you use xredirect to suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection
\hich\af2\dbch\af11\loch\f2 .
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xdirty \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v
\hich\af2\dbch\af11\loch\f2 1.1\hich\af2\dbch\af11\loch\f2 +]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 No inputs or outputs\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
Sets a flag to force Davex to try to re\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 save\hich\af2\dbch\af11\loch\f2 the \hich\af2\dbch\af11\loch\f2 %\hich\af2\dbch\af11\loch\f2 config information\hich\af2\dbch\af11\loch\f2 . (
\hich\af2\dbch\af11\loch\f2 The attempted re\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 saving happens before command prompts\hich\af2\dbch\af11\loch\f2 .)
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ver
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 version number in A
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 $34\hich\af2\dbch\af11\loch\f2 prints \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 v\hich\af2\dbch\af11\loch\f2 3.4\hich\af2\dbch\af11\loch\f2 "
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 all registers scrambled\hich\af2\dbch\af11\loch\f2 )
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
AY points to pathname of a file
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 file reference number
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 ProDOS error code
\par
\par \hich\af2\dbch\af11\loch\f2 xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open and xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read provide a way to read text and AppleWorks Word Processor \hich\af2\dbch\af11\loch\f2 (
\hich\af2\dbch\af11\loch\f2 AWP\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 files without caring which kind of file is which\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The resulting stream of data
\par
\par \hich\af2\dbch\af11\loch\f2 Additional \hich\af2\dbch\af11\loch\f2 filetypes may be interpreted in the future\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 In general\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
these routines perform a reasonable mapping from some non\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 text files into a legible sequentially\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 readable format\hich\af2\dbch\af11\loch\f2 .
\par
\par \hich\af2\dbch\af11\loch\f2 Warning\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Do not attempt to open more than one file at a time using xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 .
\hich\af2\dbch\af11\loch\f2 It \hich\af2\dbch\af11\loch\f2 is not currently supported\hich\af2\dbch\af11\loch\f2 .
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par \hich\af2\dbch\af11\loch\f2 xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number returned from xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 character
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 ProDOS error code
\par
\par \hich\af2\dbch\af11\loch\f2 Returns the next character from a file opened with xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 .
\par \hich\af2\dbch\af11\loch\f2 No special way is provided to close a \hich\af2\dbch\af11\loch\f2 file opened with xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2
close with a ProDOS call if necessary\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This may be inadequate if these file manager routines are ever enhanced to deal with more than one file open at a time\hich\af2\dbch\af11\loch\f2 .
\par
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xshell\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 info
\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.25\hich\af2\dbch\af11\loch\f2 +]
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 X
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 request code
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 requested information in registers\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 etc
\hich\af2\dbch\af11\loch\f2 .
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 requested information not available
\par
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get Davex version in A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2
.
\par \hich\af2\dbch\af11\loch\f2 For version \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 a\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 bc\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =
\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 ab and Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $0\hich\af2\dbch\af11\loch\f2 c\hich\af2\dbch\af11\loch\f2 .
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get alias buffer \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 =
\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 size in pages\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get history buffer \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 =
\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 size in pages\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get internal filetype table \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 )
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 4\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get internal filetype name table \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 )
\par }\pard \ltrpar\ql \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\par
\par \hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 notes\hich\af2\dbch\af11\loch\f2 --
\par
\par \hich\af2\dbch\af11\loch\f2 External commands should not open any files below }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 stdlevel}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 which is the current ProDOS file level when the shell \hich\af2\dbch\af11\loch\f2 executes an XC\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
Davex automatically closes any files open at or above stdlevel when the external command finishes\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Davex guarantees that an XC will be able to open \hich\af2\dbch\af11\loch\f2 3
\hich\af2\dbch\af11\loch\f2 files\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but it does not guarantee any more than that \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 Davex may have up to \hich\af2\dbch\af11\loch\f2 5
\hich\af2\dbch\af11\loch\f2 files open a\hich\af2\dbch\af11\loch\f2 lready \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 spooling\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 exec\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 output redirection to disk\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 wildcard expansion and maybe one more in the future\hich\af2\dbch\af11\loch\f2 ]\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2
the ProDOS limit is \hich\af2\dbch\af11\loch\f2 8\hich\af2\dbch\af11\loch\f2 open files\hich\af2\dbch\af11\loch\f2 ).
\par
\par \hich\af2\dbch\af11\loch\f2 When an external command gets control at its execution address\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Davex has just finished calling xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n for par
\hich\af2\dbch\af11\loch\f2 ameter number \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 So\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 for example\hich\af2\dbch\af11\loch\f2 ,
\hich\af2\dbch\af11\loch\f2 a command whose first parameter is a pathname may start out by storing A and Y into a ProDOS parameter block\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
since AY will have the address of the value of the first parameter\hich\af2\dbch\af11\loch\f2 .
\par }}