Home » Archimedes archive » Acorn User » AU 1998-05 B.adf » PRMs » MiscSWIs
MiscSWIs
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1998-05 B.adf » PRMs |
Filename: | MiscSWIs |
Read OK: | ✔ |
File size: | 21B94 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
HELP(�����,���@ $DIR$H H t G����(GԄ3!Pre� H����Ln'�!root�H���?��+,ABI_DH������+,ArcFSMemMan_@H�����+tArcFS_�H������+PARCTOOLS_H���ײ�+pAudioManager_t"H���̳�+,AWRender_d#H���3��+,Borders_�#H������+,CAIFS_�$H�����+,ColourExtend_h%H���{��+�CompressJPEG_�.G����_}�ECreateHelp�6H������+,Creator_�7H���+��+,Diss_�8H������+,DitherExtend_�;H���i��+,DocumentManager_P<H���幀+,DragAnObject_�<H���c��+$DSym_<bH����À+,Dynamite_dcH���Ā+,Euclid_pdH����Ā+,FileBuffer_@eH���Sŀ+�Filer_}E������Filter�H����ɀ+,FontDraw_(�H���ʀ+,FrontEnd_��H���Xʀ+pGdbm_�H����̀+,GDraw_ȍH���̀+,GSpriteExtend_x�H���m̀+,Hyphenator_p�H����̀+,ImageExtend_��H���+,Impulse_T�H���O+,Interface_\�H����+,IZipFS_��H����+�LineEditor_l�H���Sр+,LZWB_�H����р+PLZWD_,�H���3Ҁ+�LZW_0�H���%Ӏ+,MakeGIF_ȪH���UӀ+,MoDel_x�H����Ӏ+,NetMonitor_8�H����Ӏ+,NH_��H���Ԁ+,OLE_$�H���:Ԁ+,PocketFS_X�H���yԀ+,PocketLink_̰H����Ԁ+,PPADriver_p�H��� Հ+tQTM_TH���Gڀ+�ReadMail_H���Kۀ+,ROMCache_�H����ۀ+�SparkFS_ /H����܀+,Spch_�/H����܀+,Spell_�1H���݀+,StreamSquash_�2H���O݀+�Stream_tCH���M߀+�Tracker_�H���L�+Users_X�H���_�+,VProtect_ģH�����+,WimpHack_H�H�����+,WimpKey_ؤH���!�+,ABCLib_h�H���T�+Director_(�H�����+,EasyFS_��H�����+,HelixBasic_$�H���{�+,LargerSupport_h�H����+,PCDevHelp_D�H���Z�+,PCIO_<�H�����+,PCMem_аH�����+PCSupport_ܰH���-�+,Translator_0�H���k�+,ZapJRF_زH�����+,ZapRedraw_`�G�����E!rootold��H����+�about��H�����+�AppEngine_� H���C�+�Speak_DATA�@-� ��XR���� ��!R� �xR �2R �6R��0��@������!��a��h������@ ��8��a�q���!x26DATA�Miscellaneous SWIs #Parent StrongHelp:!Menu #Postfix _ #Table Columns 4 <ABI> <ABCLib> <AEH=>AEHModule:!Root> <AppEngine> <ArcFS> <ArcFSMemMan> <ARCTOOLS> <AudioManager> <AWRender> <Borders> <CAIFS> <ColourExtend> <CompressJPEG> <Creator> <Director> <Diss> <DitherExtend> <DocumentManager> <DragAnObject> <DSym> <Dynamite> <EasyFS> <Euclid> <FileBuffer> <FontDraw> <FrontEnd> <GDBM> <GDraw> <GSpriteExtend> <HelixBasic> <Hyphenator> <ImageExtend> <Impulse> <Interface> <IZipFS> <LargerSupport> <LineEditor> <LZW> <LZWB> <LZWD> <MakeGIF> <MoDel> <NetMonitor> <NH> <OLE> <PCIO> <PCMem> PCSupport <PCDevHelp> <PocketFS> <PocketLink> <PPADriver> <ProFiler=>Filer_> <QTM> <ReadMail> <ROMCache> <SparkFS> <Spch> <Speak> <Spell> <Stream> <StreamSquash> <Translator> <Tracker> <Users> <VProtect> <WimpExt=>WimpExt:!Root> <WimpHack> <WimpKey> <ZapJRF> <ZapRedraw> #EndTable #Line #align centre {/}<Miscellaneous SWIs manual=>about>, v1.02{/} DIR$,,�F�����qm!RootDATAmABI #Parent !Root #Prefix ABI_ #Table Columns 1 Initialise CloseDown RenderSlab Reset Kill #EndTable DIR$,,pF����хM�!RootDATA�ArcFSMemMan #Parent !Root #Prefix ArcFSMemMan_ #Table Columns 2 ClaimWorkspace ResizeWorkspace ReleaseWorkspace ClaimFileCache ResizeFileCache ReleaseFileCache Init Final Slide LookupBlock #EndTable DIR$tt�F����G���!RootlF����Q��ArchiveInfopF���h���StatusF���;����OpenArchive�F���a����CloseArchive8F����ԋ�Encryption<F���x���Compression�F������]compresstypes\F���l"���CreateArchiveF���^5���CompactDATA�ArcFS #Parent !Root #Prefix ArcFS_ #Table Columns 2 <ArchiveInfo> <Status> <OpenArchive> <CloseArchive> <Encryption> <Compression> <CreateArchive> <Compact> ReadOptions HourglassOn HourglassOff SetEncryption SetCompression AutoCompOn AutoCompOff ArcInfo OpenArc CloseArc CreateArc CompactArc ObjectInfo ReadBufferSizes SetRDBSize SetRABSize SetHeaderGaps NamedArcInfo GetArcName ReadCompressed WriteCompressed EnsureGaps #EndTable DATAArcFS_ArchiveInfo (&437C0) #Parent ArcFS_ => R0 = archive number <= R0 = archive name (or null if not open) R1 = archive path R1 = pointer to archive headers (internal use) This SWI gives the name and pathname of the archive whose number is given. DATA�ArcFS_Status (&437C1) #Parent ArcFS_ <= R0 = status in form &vvbbffee This SWI returns the current status of ArcFS. #Tab byte meaning #Line vv FF for read/write, 00 for read only bb number of bits for crunch / compress (0 otherwise) ff <compression format=>ArcFS_compresstypes> ee <bits=>.bits> #subpage bits ArcFS_Status bits bit meaning if set #Line 0 files will be garbled 1-7 reserved.DATA�ArcFS_OpenArchive (&437C2) #Parent ArcFS_ <= R0 = pointer to filename R1 = pointer to reference name This SWI opens an archive.DATA�ArcFS_CloseArchive (&437C3) #Parent ArcFS_ <= R0 = pointer to reference name This SWI closes an archive, returning an error if no archive with that name was open.DATAArcFS_Encryption (&437C4) #Parent ArcFS_ <= R0 = <encryption method=>.types> R1 = pointer to password (up to 32 bytes) This SWI sets the encryption method and password used. #Subpage types Encryption types value meaning 0 no encryption 1 garbled DATA�ArcFS_Compression (&437C5) #Parent ArcFS_ <= R0 = <compression format=>ArcFS_compresstypes> R1 = number of bits (if applicable) This SWI sets the data compression format to be used.DATA]ArcFS Compression formats code type #Line &82 Store &83 Pack &88 Crunch &FF Compress DATA�ArcFS_CreateArchive (&437C6) #Parent ArcFS_ <= R0 = pathname for new archive This SWI creates (but does not open) a new archive. Note: Read/Write version only.DATA�ArcFS_Compact (&437C7) #Parent ArcFS_ <= R0 = archive name (or 0 for CSD) This SWI compacts an archive to removed gaps left by deletions and file overwrites. Note: Read/Write version only.DIR$PP G���tW!RootxG�����AssembleDATAWARCTOOLS #Parent !Root #Prefix ARCTOOLS_ #Table Columns 2 <Assemble> #EndTable DATA�ARCTOOLS_Assemble (&DFFC0) #Parent ARCTOOLS_ => R0 = pointer to string to assemble R1 = address where the instruction will be put <= R0 = assembled instruction R1 = length of string in R0 at start This call is provided to assemble a instruction contained in the string pointed to by R0. The address in R1 is used to calculate the destination address in PC relative opcodes like ADR or B. DIR$pp|F��� �Nt!Root�F���Nn�NAddEvent�F���73��}eventsDATAtAudioManager #Parent !Root #Prefix AudioManager_ #Table Columns 2 Info Reset ListDrivers Defaults Driver SelectSampler SamplerStatus StartSampling StopSampling DeselectSampler PlaySample FillBuffer ReturnCursor KillSample AdjustPlay ConvertPitch Stereo AttachVoice SoundPacked Sound ReadCCB WriteCCB PlaySampleFromFile QueueEvent <AddEvent> RedirectVIDC #EndTable DATAAudioManager_AddEvent #Parent !Root => R0 = <event number=>AudioManager_events> R1 = Audioworks file R2 = 1 to cache in RMA This SWI adds a sample to a particular desktop event; this means that whenever the event occurs the sample will be played.DATA}Event numbers Number Event #Line 1 Application save file 3 Application load file 5 Filer double-click file 9 Palette change 10 Desktop save -4 System beep -7 Fatal wimp error -8 Wimp error -9 Keypress: Space -10 Keypress: Return -11 Keypress: Other &400C1 Mode change &400C2 Task starting &400C3 Task quitting &400CA Iconise window &FF000001 Media not present &FF000002 Media not known &FF000004 Media search end &FFFF0006 Delete file &FFFF0008 Create directory &FFFF0101 Create a file &FFFF0103 Close a file &FFFF0105 Rename file &FFFFFF02 Window moving &FFFFFF03 Window closing &FFFFFF07 Drag finished &FFFFFF09 Menu selection DIR$,,�"F����I��!RootDATA�AWRender #Parent !Root #Prefix AWRender_ #Table Columns 2 FileInitAddress RenderAddress DocBounds SendDefs ClaimVectors ReleaseVectors FindFirstFont FindNextFont MemoryNeeded #EndTable DIR$,,�#F���|��Y!RootDATAYBorders #Parent !Root #Prefix Borders_ TaskStart TaskQuit PlotFancyBorders Poll0 DIR$,,$F����f��!RootDATA�CAIFS #Parent !Root #Prefix CAIFS_ #Table Columns 2 CreateArchive CompactFreeSpace CloseGaps FreeSpace DirSize CompactionType LZWBits CacheFile ScrapFile DirCache ReadFileInfo FixRMA #EndTable DIR$,,%F���f��V!RootDATAVColourExtend #Parent !Root #Prefix ColourExtend_ Info Control InvalidateCache DIR$���%G���q��q!Rootl&H���X��(Finish�'H������3Start�,G�������WriteLineDATAqCompressJPEG #Parent !Root #Prefix CompressJPEG_ #Table Columns 3 <Finish> <Start> <WriteLine> #EndTable DATA(CompressJPEG_Finish (&4A502) #Parent CompressJPEG_ => R0 = JPEG tag <= R0 = size of JPEG image within the buffer This call finishes the JPEG compression process, returning the size of the complete image. Any workspace claimed by the CompressJPEG module for the compression is released.DATA3CompressJPEG_Start (&4A500) #Parent CompressJPEG_ => R0 = pointer to buffer for JPEG data R1 = size of JPEG data buffer R2 = pointer to block of <parameters=>.parameters> R3 = pointer to workspace area, or 0 for the CompressJPEG module to allocate its own workspace from the RMA R4 = size of workspace area (if R3 is not 0) <= R0 = JPEG tag, to be passed to other CompressJPEG SWIs This call starts the JPEG compression process, setting up various parameters for it. The buffer for the JPEG data should be as large as possible, since the JPEG compression routines cannot guarantee to compress the image by a fixed amount. If you wish to supply your own workspace area, its required size for a colour (24 bit) image is: 20000 + ((image width rounded up to a multiple of 16) � 30) and its required size for a greyscale (8 bit) image is: 20000 + ((image width rounded up to a multiple of 16) � 9) An error is returned if the workspace area becomes full. #Subpage parameters Compress JPEG parameter block Offset Contents #Line 0 width of image in pixels 4 height of image in pixels 8 quality value (0 - 100): lower quality results in smaller image 12 number if 8 bit components in source: 3 => 24 bit colour, 1 => 8 bit greyscale 16 horizontal DPI of image, or 0 if unknown 20 vertical DPI of image, or 0 if unknown DATA�CompressJPEG_WriteLine (&4A501) #Parent CompressJPEG_ => R0 = JPEG tag R1 = pointer to a row of pixels: For colour: a buffer of continuous RGB values - ie a byte stream of the format R, G, B, R, G, B... For greyscale: a buffer of continuous 8 bit grey values <= R0, R1 preserved This call compresses one row of source pixels into the JPEG buffer. It should be called once for each row of the source data. An error is returned if the JPEG buffer becomes full.DATAE &� Newer version than in StrongHelp � � � � 0,�$+" at line "+Þ 2sh$="ADFS::Gerph.$.Apps.WProcess.!Manuals.SWI" (� mem% 256 2!scraproot$="Scrap:StrongFile" <o%=�("Scrap:NewAdded") F �#o%,"Newly added SWI calls" P�#o%,"#Parent !Root" Z�#o%,"#Postfix _" d�#o%,"#Table Columns 3" nco%=0:coas$="" xlast$="" ��I=&200�&100000 � 64 � � (I � &20000)>0 �I+=&20000 � swi%=I � � �6 ș "XOS_SWINumberToString",swi%,mem%,256 � ,,len � mem%?(len-1)=13:swi$=$mem% �B � �swi$,"Undefined")>0 � swi$="User" � swi$="NULL" � swi$="" �# � �swi$,�(swi%-I))>0 �swi$="" � � swi$<>"" � � �swifound(swi%,swi$) � � � swi%+=1 � � swi%=I+64 � swi$="" � � co%<>0 � �#co%,"#EndTable" " �#co% ,6 �("Copy "+scraproot$+" "+sh$+"."+coas$+" D~C~VF") 6� @�#o%,"#EndTable" J�#o% T4�("Copy Scrap:NewAdded "+sh$+".NewAdded D~C~VF") ^� h: r��swifound(swi%,c$) |mod$=�c$,�c$,"_")) �call$=�c$,�c$,"_")+1) �ft=�filetype(sh$+"."+mod$) � � ft=-2 � � � co%<>0 � � �#co%,"#EndTable":�#co% �6 �("Copy "+scraproot$+" "+sh$+"."+coas$+" D~C~V") � co%=0 � � � �("CDir "+sh$+"."+mod$) � �#o%,"<"+�mod$)+">" � coas$=mod$+".!Root" � co%=�(scraproot$) � �#co%,�mod$) �#co%,"#Parent !Root" �#co%,"#Prefix "+mod$ �#co%,"#Table Columns 2" & last$=mod$ 0� :,� last$=mod$ ��#co%,call$:�mod$,call$,ft D� N: X(� >>>>> Stolen from JFShared <<<<<< b: l7� ******** File information routines ************** v: �1� FNfiletype : Return the file type of a file �2� -2=not found, -1=untyped, &1000=dir or image �"� �filetype(f$):� f%,type%,fl% �+ș "XOS_File",20,f$ � type%,,,,,,f%;fl% �Ȏ type% � � � 0:type%=-2 � � 1:type%=f% � � 2,3:type%=&1000 �� �� (fl%�1)=1 �type%=-2 � =type% �: �?� FNbasetype : Return the file type of a directory or image :� -2=not found, -1=file, &1000 for dir, type for image "� �basetype(f$):� f%,type%,fl% &ș "XOS_File",5,f$ � type%,,f%;fl% Ȏ type% � * � 0:type%=-2 4 � 1:type%=-1 > � 2:type%=&1000 H � 3:type%=(f% � &FFF00)>>8 R� \� (fl%�1)=1 �type%=-2 f =type% p �DIR$,,$7F����v�!RootDATA�Creator #Parent !Root #Prefix Creator_ #Table Columns 2 SetVariable ReadVariable GIFCompress TIFFCompress AIMConvert PBMConvert TaskStart TaskQuit #EndTable DIR$,,�7F����v�!RootDATA�Diss #Parent !Root #Prefix Diss_ #Table Columns 2 Disassemble InitLabels MakeLabelLookup FindLabel FindNamedLabel AddLabel AddLabelNoSort RemoveLabel Assemble AddLibraryBlock MergeLabels RemoveInvalidLabels RemoveSameNamedLabels #EndTable DIR$,,9F����F�u!RootDATAuDitherExtend #Parent !Root #Prefix DitherExtend_ #Table Columns 2 SelectTable SelectGCOLTable ReturnGCOL SetGCOL ReturnColourNumber ReturnGCOLForMode ReturnColourNumberForMode ReturnOppGCOL SetOppGCOL ReturnOppColourNumber ReturnOppGCOLForMode ReturnOppColourNumberForMode GCOLToColourNumber ColourNumberToGCOL Info Control ReturnColourPattern ReturnColourPatternTable InvalidatePalette Antialias ReadPalette ReturnColourPatternArray SetHalftone ReturnHalftone SetHalftoneOrigin ReturnHalftoneOrigin SelectHalftoneTable ReturnHalftoneIntensity ReturnHalftoneTable SetScreen CacheScreen SelectColourPatternTable #EndTable DIR$,,�;F����"���!RootDATA�DocumentManager #Parent !Root #Prefix DocumentManager_ #Table Columns 3 Open Close File Find Args GBPB Compact Reset Stamp #EndTable DIR$,,|<F���?��D!RootDATADDragAnObject #Parent !Root #Prefix DragAnObject_ Start Stop DIR$$$�@G����� �!RootxBG���u�BufferAddresspCG����I(Configure�DG�����#CutNote�EG���(t�DefaultStereo�FG����` [FlushOutputGG������FreezeOutputHG����� �IntState�HG����� �Load@KG���� LoopLLG���r�MaskVoicehMG����� 'NoteInfo�OG����QParams�PG���x� cPause�PG����U �PlayInstr�RG����B nPlayInstrPackedTG���a�[PlaySinglexUG���p[ �ResetParamsVG���� �RestartSong�VG���ّSampleRate�WG���Ѫ fSongPosYG���h �Stereo�ZG����6TuneControl�[G���F��TuneInfoh\G���R����upcallvector\]G�����Voices4^G���v�VolD_G����MVuBar�`G����~(VuGravity�aG���z� ~WaitDATA�DSym #Parent !Root #Prefix DSym_ #Table Columns 2 <Load> <RestartSong> <Vol> <Stereo> <CutNote> <PlayInstrPacked> <PlayInstr> <ResetParams> <FlushOutput> <FreezeOutput> <UpCallVector> <MaskVoice> <SongPos> <TuneControl> <Pause> <Voices> <Wait> <IntState> <NoteInfo> <VuBar> <Loop> <BufferAddress> <VuGravity> <SampleRate> <Configure> <Params> <TuneInfo> <PlaySingle> <DefaultStereo> #EndTable DATA�DSym_BufferAddress (&45895) #Parent Dsym_ <= current system hardware buffer address (with output data interleaved) This call gives the address where you would have to put sound data to, when the sound buffer fill request is broadcasted.DATA(DSym_Configure (&45898) #Parent DSym_ => R0 = -1 to reinstall previous configuration other, to configure the system with new voices number, sample rate and VuGravity. Note that this call is essential to the options declared with <DSym_Voices>, <DSym_VuGravity> and <DSym_SampleRate>.DATA#DSym_CutNote (&45884) #Parent DSym_ => R0 = voice number (0-7) R1 = -1 to read state, or \<>-1 to stop note <= R0 corrupted R1 = previous note state (0 stopped, >0 playing) This call either reads the state of a certain voice or stops the currently played sample on this channel.DATA�DSym_DefaultStereo (&4589C) #Parent DSym_ => R0 = voice number (0-7) R1 = new default stereo position, or 0 to read <= R1 = previous default stereo position (1 to 7) for voice number R0 This call sets the default stereo position for a voice.DATA[DSym_FlushOutput (&45588) #Parent DSym_ The current notes on all channels are cut.DATA�DSym_FreezeOutput (&45589) #Parent DSym_ => R0 = -1 to read output status other, to set <= R0 = previous output state (0= off, \<>0= on) This call controls, whether the current notes on all channels are played on or not.DATA�DSym_IntState (&45891) #Parent DSym_ This call checks, what the module does in the moment. C is set if the call has interrupted the playing or filling routines.DATA�DSym_Load (&45880) #Parent DSym_ => R0 = -1 to free RMA buffers 0 to load from memory >0 pointer to filename R1 = source start address (if R0 = 0) R2 = 0 to load to RMA >0 destination address R3 = size of destination buffer (if R2 >0) R4 = 0 claim buffer in RMA >0 start address of buffer (32k space) <= R0 = length of track in memory This loads a DSym-Song either from memory or from a file to a buffer either claimed in RMA or a given destination buffer, the buffer in R4 is only needed, if the DSym-Song contains some packed data. If you save a Playermodule with song from DigitalSymphony, this SWI is disabled in the module.DATA DSym_Loop (&45894) #Parent DSym_ => R0 = -1 to read loop status other, to set <= R0 = previous loop status (0 enabled, >0 disabled) R1 \<> 0 if the tune has looped This call controls whether the song is automatically restarted at end of last pattern.DATADSym_MaskVoice (&4588B) #Parent DSym_ => R0 = voice number (0-7) R1 = -1 to read voice state other, to set voice status <= R0 = previous voice status (0= off, \<>0=on) This call makes a channel quiet on the speaker, ie it is still playing but not heard on the voice.DATA'DSym_NoteInfo (&45892) #Parent DSym_ <= R0 = address of current notes table (1 word per voice) note is 0 to 1023 R1 = address of current samples table (1 byte per voice) sample is 0 to 63 R2 = address of effects table (1 word per voice) bits 30-31 meaningless bits 16-21 effect nr bits 0-11 effect value R3 = address of volumes table (1 byte per voice) volume is 0 to 64 This call gives the addresses of current note, sample, effect and volume table. You could use this informations for example to write your own VuBars routine.DATADSym_Params (&45899) #Parent DSym_ <= R0 = speed (1-&FFF) R1 = tempo (1-&FFF) R2 = counter (0-&FFE) This call reads the current speed variables. The counter varies from 1 to speed-1 at a speed according to tempo (50 times a sec for default tempo).DATAcDSym_Pause (&4588E) #Parent DSym_ This call stops the current notes and cuts all channels.DATA�DSym_PlayInstr (&45886) #Parent DSym_ => R0 = voice number (0-7) R1 = note number (0-36) R2 = sample number (0-63) R3 = effect number (0-63) R4 = effect value (0-&FFF) R5 = minimum sustain time (in 1/50th sec) R6 \<> 0 to wait for buffer empty, else don't wait <= R0-R6 corrupted The new note is put to the buffer and played. Setting sustain time means that the new note has priority on the tune notes during this time.DATAnDSym_PlayInstrPacked (&45885) #Parent Dsym_ => R0 = voice number (0-7) R1 = full note data R5 = minimum sustain time (in 1/50th sec) R6 \<> 0 to wait for buffer empty, else don't wait <= R0-R6 corrupted The new note is unpacked, put to the buffer and played. Setting sustain time means that the new note has priority on the tune notes during this time.DATA[DSym_PlaySingle (&4589B) #Parent DSym_ => R0 = -1 then if R1 \<>-1 play pattern R1 if R1 = -1 play normal other, -1 then play patterns from R0 to R1 R2 = -1 to not loop at end other, -1 to loop The pattern pos is set to 0. In the case of playing a part of the sequence, the current position is set to the first pos in that part.DATA�DSym_ResetParams (&45887) #Parent DSym_ All parameters are reset (stereo, counter, effects) and current notes cut on all channels.DATA�DSym_RestartSong (&45881) #Parent DSym_ This call resets all parameters, sets the tune position to 0 and starts the song again.DATADSym_SampleRate (&45897) #Parent DSym_ => R0 = -1 to read sample rate other, to set <= R0 = previous sample rate (0-99) This call sets the sample output density. The lower the number is, the less time the DSym module needs to calculate, but the worse the quality is.DATAfDSym_SongPos (&4588C) #Parent DSym_ => R0 = -1 to read sequence pos other, to set R1 = -1 to read pattern pos other, to set <= R0 = previous sequence pos R1 = previous pattern pos (0-63) This call reads or sets the pattern position in song and the note position in pattern. If the pattern position is changed, the current note is reset to 0.DATA�DSym_Stereo (&45883) #Parent DSym_ => R0 = voice number (0-7) R1 = new stereo position, or -128 to read <= R1 = previous stereo position (-127 to 127) for voice number R0 This call sets the stereo position of one voice specified in R0. A position of zero means that the left and right speaker get both the half amplitude, -127 means the left speaker gets 100%, the right one nothing.DATA6DSym_TuneControl (&4588D) #Parent DSym_ => R0 = -1 to read status other, to set (lower byte) <= R0 = previous tune status (0= off, \<>0= on) This call controls the tune decoder. Off means the tune decoder won't let play notes anymore, you can still play custom notes. Current notes still playing.DATA�DSym_TuneInfo (&4589A) #Parent DSym_ <= R0 = tune length R1 = number of patterns This call reads some general informations about the song.DATA�DSym_UpcallVector (&4588A) #Parent DSym_ => R0 = -1 to read upcall address -2 to set default address to set <= R0 = previous upcall address This call reads and writes the upcall vector address, information at <OS:OS_Upcall>.DATA�Dsym_Voices (&4588F) #Parent DSym_ => R0 = -1 to read hardware voices number other, to set voices <= R0 = previous hardware voices number (1,2,4 or 8) This call changes the number of hardware channels. DATADSym_Vol (&45882) #Parent Dsym_ => R0 = new overall volume, or -1 to read <= R0 = previous overall volume This call sets and/or reads the overall volume. The default is 64 which means, that the songs amplitude is not decreased. A volume of 0 means a quiet song.DATAMDSym_VuBar (&45893) #Parent DSym_ => R0 = voice number (0-7) <= R1 = Vu bar height (0-64) This call gives you the current VuBar height. I consider this call not that good, because the information is not given on what you hear, but only on every played note, so you can't get eventual pitch bending or any effects and so on.DATA(DSym_VuGravity (&45896) #Parent DSym_ => R0 = -1 to read VuGravity other, to set (lower byte) <= R0 = previous gravity of VuBar (0-255) This call sets, how long it takes until the VuBar slides down from 64 to 0, where 255 means highest speed, and 0 means longest time to slide down.DATA~DSym_Wait (&45890) #Parent DSym_ => R0 = voice number (0-7) C is set if custom note buffer is not empty, else clear.DIR$,,hbG���[�!�!RootDATA�Dynamite #Parent !Root #Prefix Dynamite_ #Table Columns 2 Alloc Free FreeWithID BlockInfo ChangeID Resize MidExtend Save Load Reduce Compact Lock Unlock ClaimAnchor ReleaseAnchor ReadSpriteSize Describe IntegrityCheck ChangeAnchor #EndTable DIR$,,�cF����L��!RootDATA�Euclid #Parent !Root #Prefix Euclid_ #Table Columns 2 Initialise Draw Load Save Append Find Create Destroy Set Show Insert Delete Translate Zoom Rotate List BoundingSphere CloseDown MiscOp Compress Expand #EndTable DIR$,,�dF���R��!RootDATA�FileBuffer #Parent !Root #Prefix FileBuffer_ #Table Columns 2 Open Close Clear Read ReadByte Write WriteByte ReadPTR WritePTR TaskStart TaskQuit #EndTable DIR$��4gG����^��3!Root(hG����f��3ObjectDescjG���mu�!3ObjectName,kG���H���3CreateSprite�kG������J3SetSpriteDnG���p��j3CopySprite�oG���j��M3ReadChoicespG���C��L3NewChoicesLpG������J3LoadKeys�pG����ά�83keyname�qG����d��3ViewerDescXsG����B�3Boot�sG�����3Select�yG����X�b3SpriteDATA�ProFiler (Thomas Olsson) #Parent !Root #Prefix Filer_ #Table Columns 3 <ObjectDesc> <ObjectName> <CreateSprite> <SetSprite> <CopySprite> <ReadChoices> <NewChoices> <LoadKeys> <KeyName> <ViewerDesc> <Boot> <Select> <Sprite> #EndTable DATA�Filer_ObjectDesc #Parent Filer_ => R0 = pointer to Object name (will be canonicalised) <= R2 = pointer to Viewer description, or 0 if not visible R3 = pointer to Object description, or 0 if not visible This will return pointers to descriptions of the object and the viewer containing it if it is currently visible. If the viewer that should have contained the object is visible, but the object is not, R3 will be 0 on exit and R2 will point to the viewer description. DATA!Filer_ObjectName #Parent Filer_ => R0 = pointer to buffer for name (256 bytes) R2 = pointer to Viewer description, or 0 if not visible R3 = pointer to Object description, or 0 if not visible <= all preserved This will generate a full pathname for the file defined by R2 and R3. DATA�Filer_CreateSprite #Parent Filer_ => R0 = pointer to sprite name R1 = Sprite mode <= R1 = pointer to sprite area R2 = pointer to sprite This will create a sprite in the Filer's sprite pool. DATAJFiler_SetSprite #Parent Filer_ => R0 = pointer to sprite name validation (including leading 'S') R1 = pointer to full pathname <= all preserved This will use the given sprite for the object given in R1. If the directory is still open, the sprite will replace the one currently used, which will usually be 'file_wait'. If the object is not visible, nothing will happen. You can also report an error with this SWI. The sprite will change to 'file_err', and the text will be shown in the infobox. The error number should have bits 24-30 clear in order to be recognised as such. DATAjFiler_CopySprite #Parent Filer_ => R0 = pointer to sprite name <= all preserved This will take a copy of the sprite and put it in the Filer's sprite pool. You should call this after completing your background process of drawing the sprite. After calling this SWI you can dispose of the sprite and call <Filer_SetSprite>. *Note:* Not implemented yet :-(DATAMFiler_ReadChoices #Parent Filer_ This call is for internal use only. DATALFiler_NewChoices #Parent Filer_ This call is for internal use only. DATAJFiler_LoadKeys #Parent Filer_ This call is for internal use only. DATA8Filer_KeyName #Parent Filer_ => R0 = <key code=>Wimp:Wimp_Poll8a> <= R0 = pointer to key name This SWI should really have been provided by the Toolbox, but since it isn't, I've put it in ProFiler. The reason for this SWI is to get a consistent naming of keys. It returns the name of the given key code. DATA�Filer_ViewerDesc #Parent Filer_ => R0 = pointer to canonical directory name <= R2 = pointer to viewer description, or 0 if not visible Converts a name to a viewer description. You need to know the format of the descriptor block to make use of it, and as that format can still change, it has not been documented here. At the moment is can be used to determine if the viewer is open. DATA�Filer_Boot #Parent Filer_ => R0 = pointer to canonical directory name <= all preserved Does exactly the same as the *Filer_Boot command. DATA�Filer_Select #Parent Filer_ => R0 = <reason code=>.reasons> others dependent on reason code This call can be used to read or control the selection. It is used by the variable Filer$Selected among other things. The 'current viewer' in this context means the one that has the input focus. #subpage reasons Filer_Select reasons Reason Meaning #Line 0 <Select file=>.0> 1 <Add file to selection=>.1> 16 <Read current viewer=>.16> 17 <Read one selected file=>.17> 18 <Read multiple selected files=>.18> #subpage 0 Filer_Select 0 => R0 = 0 (select file) R1 = pointer to filename <= all preserved Selects a single file, clearing the selection in that viewer. #subpage 1 Filer_Select 1 => R0 = 1 (Add file) R1 = pointer to file to add <= all preserved Adds a file to the selection in the viewer it is in. #subpage 16 Filer_Select 16 => R0 = 16 (Read current viewer) <= R1 = pointer to viewer name, or 0 if none Reads the viewer which has the current input focus. #subpage 17 Filer_Select 17 => R0 = 17 (Read one file) R1 = pointer to viewer name, or 0 for viewer with focus <= R1 = object name, or 0 if none selected Reads a single file from selection in a viewer. #subpage 18 Filer_Select 18 => R0 = 18 (Read multiple files) R1 = pointer to viewer name, or 0 for viewer with focus R3 = context, or 0 for first call <= R1 = pointer to object name, or 0 for first file R3 = new context, or 0 if finished Reads multiple files from the selection in a viewer. DATAbFiler_Sprite #Parent Filer_ => R0 = desired sprite height (0=68 os units, 1=36 os units) R1 = pointer to object name R2 = task handle to reply to (0 for broadcast) <= R0 = pointer to optional sprite to use in meantime This call is the main interface to binding sprites to disc objects. Unlike earlier days where every application had its own view of these things, the filer provides this SWI to keep it in one place. The filer can be extended with programs like the Sprite Clients, and these extentions will also be considered when this SWI is called. After calling this SWI, a message will be sent when the sprite has been found. Finding the sprite may mean that apps are booted and many other things, so there is no maximum reply delay. Indeed, if the object doesn't exist, there will be no reply at all. This issue may be addressed in later versions. DATA� � >SWI-filter � code% 10*1024 � pass% = 0 � 2 � 2 P% = code% [ OPT pass% 7 ; R0 = search word (Should never be modified) 8 ; R1 = buffer for storing modified search word ; R13 = small stack G ; Return ptr to search word in R0, or -1 to reject completely I ; (this can be initial R0 or R1 or a pointer into one of those) STMFD R13!,{14} LDRB R14,[R0] CMP R14,#�"X" CMPne R14,#�"x" ADDeq R0,R0,#1 LDMFD R13!,{PC}^ ] � )ș "OS_File",10,"!Pre",&FFC,,code%,P% � �DIR$,,�F���c��I!RootDATAIFontDraw #Parent !Root #Prefix FontDraw_ FindFont LoseFont Paint DIR$,,T�F�����M!RootDATAMFrontEnd #Parent !Root #Prefix FrontEnd_ ExtendedCmdLine FreeCmdLine DIR$pp�G�����қ!Root��G���K����Open��G���o����Store`�G���;���Fetch��G���2����ExistsP�G���@����FirstKey<�G���F����NextKey�G������pClose|�G���-����DeleteX�G�����ҷClear�G���j���OpenInDATA�Gdbm #Parent !Root #Prefix Gdbm_ #Table Columns 2 <Open> <Store> <Fetch> <Exists> <FirstKey> <NextKey> <Close> <Delete> <Clear> <OpenIn> #EndTable DATA�Gdbm_Open #Parent Gdbm_ => R0 = Pointer to filename <= R0 = file handle Opens a database file for reading and writing, returning the handle of the file so that it can be used in other calls. Returns 0 on failure. DATA�Gdbm_Store #Parent Gdbm_ => R0 = file handle from <Gdbm_Open> R1 = pointer to keyword R2 = length of keyword R3 = buffer for data R4 = length of data Stores data under a keyword in the database.DATAGdbm_Fetch #Parent Gdbm_ => R0 = file handle from <Gdbm_Open> or <Gdbm_OpenIn> R1 = pointer to keyword R2 = length of keyword R3 = buffer for data R4 = length of buffer <= R0 = length of data read, or 0 if key not found Retrieves data filed under a keyword in the database.DATA�Gdbm_Exists #Parent Gdbm_ => R0 = file handle from <Gdbm_Open>or <Gdbm_OpenIn> R1 = pointer to keyword R2 = length of keyword <= R0 = 1 if key exists, 0 otherwise Checks whether a keyword exists. DATA�Gdbm_FirstKey #Parent Gdbm_ => R0 = file handle from <Gdbm_Open>or <Gdbm_OpenIn> R1 = pointer to buffer R2 = length of buffer <= R0 = length of keyword, or -1 if no keywords exist Returns the first keyword from the database. DATA�Gdbm_NextKey #Parent Gdbm_ => R0 = file handle from <Gdbm_Open>or <Gdbm_OpenIn> R1 = pointer to last keyword R2 = length of keyword R3 = pointer to buffer R4 = length of buffer <= R0 = length of keyword, or -1 if no keywords exist Returns the next keyword from the database. NOTE: Keywords are ordered in a hash table order. This is not necessarily alphabetic, and should not be relied on if <Gdbm_Delete> is called in the midst of a NextKey loop. DATApGdbm_Close #Parent Gdbm_ => R0 = file handle from <Gdbm_Open> or <Gdbm_OpenIn> Closes a database file. DATA�Gdbm_Delete #Parent Gdbm_ => R0 = file handle from <Gdbm_Open> R1 = pointer to last keyword R2 = length of keyword Deletes the specified key. If the file was opened with <Gdbm_OpenIn> this SWI has no effect. DATA�Gdbm_Clear #Parent Gdbm_ => R0 = file handle from <Gdbm_Open> Deletes all the entries in the database file. If the file was opened with <Gdbm_OpenIn> this SWI has no effect. DATAGdbm_OpenIn #Parent Gdbm_ => R0 = Pointer to filename <= R0 = file handle This SWI is available from gdbm version 0.03. Opens a database file for reading only, returning the handle of the file so that it can be used in other calls. Returns 0 on failure. DIR$,,D�F���F��!RootDATA�GDraw #Parent !Root #Prefix GDraw_ #Table Columns 2 ProcessPath ProcessPathFP Fill FillFP Stroke StrokeFP StrokePath StrokePathFP FlattenPath FlattenPathFP TransformPath TransformPathFP ProcessClipPath ProcessClipPathFP ClipPath ClipPathFP ClipPathToPath ClipPathToPathFP ClearClipRegion SetClipRegion SetFillStyle FillRegion SetPrintFlag ReadFillStyle GetClipRegion #EndTable DIR$,,�F����r�!RootDATA�GSpriteExtend #Parent !Root #Prefix GSpriteExtend_ #Table Columns 1 PlotSprite SwitchOutputToSprite ReadVariable #EndTable DIR$,,��F����M��!RootDATA�Hyphenator #Parent !Root #Prefix Hyphenator_ #Table Columns 2 ResetDictionary CreateDictionary CopyDictionary EnquireDictionary FindWord AddWord RemoveWord Hyphenate GetWords EnumWord #EndTable DIR$,,��F���PM��!RootDATA�ImageExtend #Parent !Root #Prefix ImageExtend_ #Table Columns 2 Info PutSpriteTransformed PutSpriteToBufferTransformed PutStringTransformed GetBBox GetImageBBox MakeMatrix MakeHalftoneTile AddKernelToMatrix MakeSimpleScreenTile #EndTable DIR$,,��F���.C��!RootDATA�Impulse #Parent !Root #Prefix Impulse_ #Table Columns 2 Initialise Decode SendMessage TransmitData FetchData CloseDown DeferReply #EndTable DIR$,,��F��� N��!RootDATA�Interface #Parent !Root #Prefix Interface_ #Table Columns 2 SlabButton Render3dWindow Initialise CloseDown SetWorkareaPointer RemoveWorkareaPointer Poll SendHelp PreProcessKey Plot3dIcon BoundingBox #EndTable DIR$,,��G����i}��!RootDATA�IZipFS #Parent !Root #Prefix IZipFS_ #Table Columns 2 Initialise Eject Lock Unlock SCSICommand DeviceInquiry Devices Reset ReadOp WriteOp DiscOp MiscOp Drives FreeSpace DescribeDisc GetStatus VerifyOp WriteProtect DiscFormat BootChanged #EndTable DIR$��4�G���+0�־!Root�G������C3SetOptions8�G������73GetOptionsp�G������ 3CreateBuffer��G����O��m3DeleteBuffer�G���o��֓3AppendLine��G���&���q3DeleteLine�G�����ָ3GetLine��G������֎3GetPosP�G���8���3SetPos�G���n���Hflagsd�G������3cursorsDATA�LineEditor #Parent !Root #Prefix LineEditor_ #Table Columns 2 <SetOptions> <GetOptions> <CreateBuffer> <DeleteBuffer> <SetPos> <GetPos> <GetLine> <AppendLine> <DeleteLine> #EndTable DATACLineEditor_SetOptions #Parent LineEditor_ => R0 = buffer size in kilobytes, or 0 for default R1 = <flags=>LineEditor_flags> R2 = minimum length to record, or 0 for no minimum R3 = maximum length to record, or 0 for no maximum R4 = <cursors=>LineEditor_cursors> Sets options for the global command line-editor. DATA7LineEditor_GetOptions #Parent LineEditor_ <= R0 = buffer size, or 0 for default R1 = <flags=>LineEditor_Flags> R2 = minimum length to record, or 0 for no minimum R3 = maximum length to record, or 0 for no maximum R4 = <cursors=>LineEditor_Cursors> Reads options for the global command line-editor. DATA LineEditor_CreateBuffer #Parent LineEditor_ => R0 = buffer size, or 0 for default R1 = expansion word (0), or taskhandle for auto-delete, or -1 for none R2 = expansion word if R1 is taskhandle, or none <= R0 = handle, or 0 if can't create Creates a new private history buffer. DATAmLineEditor_DeleteBuffer #Parent LineEditor_ <= R0 = buffer handle Deletes a private history buffer. DATA�LineEditor_AppendLine #Parent LineEditor_ => R0 = buffer handle R1 = pointer to line to add, ctrl terminated Adds a line to the history. DATAqLineEditor_DeleteLine #Parent LineEditor_ => R0 = buffer handle Deletes the last line from the history. DATA�LineEditor_GetLine #Parent LineEditor_ => R0 = buffer handle R1 = pointer to buffer R2 = buffer length <= R2 = actual length Reads the position in a private history buffer. DATA�LineEditor_GetPosition #Parent LineEditor_ => R0 = buffer handle <= R1 = line number Reads the position in a private history buffer. DATA�LineEditor_SetPosition #Parent LineEditor_ => R0 = buffer handle R1 = line number, or <'special'=>.special> codes Sets the position in a private history buffer. #Subpage special Special position codes Value Position #Line -ve Number of lines from end of history &7FFFFFFF End of buffer &80000000 previous line, wrapping to end &80000001 previous line, stopping at start &80000002 next line, stopping at end &80000003 next line, wrapping to start DATAHLineEditor flags #Parent LineEditor_SetOptions Bit Meaning if set #Line 0 TaskWindows have local buffers 1 Trailing dots will be appended to directory completions 2 Default to overtype mode 3 Keep duplicate lines in history 4 Don't do ~ expansion 5 Don't de !-type events (eg !!) 6 Don't do ^two^three type replacements DATALineEditor cursors #Parent LineEditor_SetOptions Byte Contents #Line 0 Normal cursor type 1 Overtype cursor type Cursor types: Bit Meaning if set #Line 0 cursor is a block, otherwise cursor is an underline 1 cursor is steady, otherwise cursor is cursor DIR$,,��F������P!RootDATAPLZWB #Parent !Root #Prefix LZWB_ Compress Decompress TaskStart TaskQuit DIR$PP8�G����TQ!Root��G���T�DecompressDATAQLZWD #Parent !Root #Prefix LZWD_ #Table Columns 2 <Decompress> #EndTable DATA�LZWD_Decompress (&CD100) #Parent LZWD_ => R0 = pointer to source filename R1 = destination address R2 = length of destination buffer <= R0 corrupted or error block pointer R2 = length of bytes used in destination buffer all other registers preserved This call is not provided in the main module but in the small, extra for demos or so written mini module LZWD. It is 25% faster than <LZW_Decompress>. DIR$��ģG����ZL!Root�G���0 �CompressئG���$c�Decompress��G����?�CompressOnDATALLZW #Parent !Root #Prefix LZW_ <Compress> <Decompress> <CompressOn> DATA�LZW_Compress (&CD000) #Parent LZW_ => R0 = flags bit 0 = 1 source in memory 0 source is a file bit 1 = 1 destination in memory 0 destination is a file R1 = address in memory if bit 0 = 1 pointer to source name if bit 0 = 0 R2 = destination address if bit 1= 1 pointer to destination name bit 1= 0 R3 = if bit 0= 1 length of source in bytes R4 = if bit 1= 1 length of destination buffer <= R0 is corrupted or contains error pointer R5 = if bit 1= 1 number of bytes used all other register are preserved This call compresses a file or a block of data in memory to a file or a block of data in memory using the LZW compressing algorithm. As buffer it uses the screen memory.DATA�LZW_Decompress (&CD001) #Parent LZW_ => R0 = flags bit 0 = 1 source in memory 0 source is a file bit 1 = 1 destination in memory 0 destination is a file R1 = address in memory if bit 0= 1 pointer to source name if bit 0= 0 R2 = destination address if bit 1= 1 pointer to destination name bit 1= 0 R3 = if bit 0= 1 length of source in bytes R4 = if bit 1= 1 length of destination buffer <= R0 is corrupted or contains error pointer R5 = if bit 1= 1 number of bytes used all other register are preserved This call decompresses a file or a block of data in memory to a file or a block of data in memory packed using the LZW compressing algorithm. As buffer it uses the screen memory.DATA�LZW_CompressOn (&CD002) #Parent LZW_ Works as <LZW_Compress> but appends the compressed data to an existing destination file.DIR$,,\�F����vl!RootDATAlMakeGIF #Parent !Root #Prefix MakeGIF_ #Table Columns 2 SetVariable ReadVariable Compress #EndTable DIR$,,�G���:i}��!RootDATA�MoDel #Parent !Root #Prefix MoDel_ #Table Columns 2 On Off Address WatchFiles LoseFiles IgnoreDiscs WatchDiscs #EndTable DIR$,,��F���Cv�!RootDATA�NetMonitor #Parent !Root #Prefix NetMonitor_ #Table Columns 2 PrintChar DefineTask AbandonTask ConvertFont UseFont RestoreFont #EndTable DIR$,,d�G������L!RootDATALNH #Parent !Root #Prefix NH_ #Table Columns 2 AntiTwitter #EndTable DIR$,,ܬG���j��G!rootDATAGOLE #Parent !Root #Prefix OLE_ #Table Columns2 Version LinkFile DeLinkFile FileStatus Invalidate SimulateSession #EndTable Messages : #Wrap off #Indent 2 <80E1E OLE_FileChanged=>wimp:Msg_80E1E> <80E21 OLE_OpenSession=>wimp:msg_80E21> <80E22 OLE_OpenSessionAck=>wimp:msg_80E22> <80E23 OLE_CloseSession=>wimp:msg_80E23> DIR$,,P�F������U!RootDATAPocketFS #Parent !Root #Prefix PocketFS_ #Table Columns 2 Ticker SerialOpen SerialClose SerialSetDTR SerialSetRTS SerialPrimeTX GetCacheMem FreeCacheMem CacheInit CacheFinal DescribeCache CacheBlock FindCacheEntry Status Dismount SoftDismount #EndTable DIR$,,��F���o��UE!RootDATAEPocketLink #Parent !Root #Prefix PocketLink_ #Table Columns 3 StartLink CloseLink p_open p_close p_read p_write p_iow Enquire ErrorConv PanicConv p_fparse p_chdir p_delete p_rename p_mkdir p_sfstat p_fdate p_testpth p_finfo p_dinfo p_ninfo DateToPocket ZapLink DateFromPocket NameFromHandle p_seek p_locchg #EndTable DIR$,,��G����k}�x!RootDATAxPPADriver #Parent !Root #Prefix PPADriver_ #Table Columns 2 Initialise SCSICommand SCSICommandRetries #EndTable DIR$tt�F����I���!Root��F���fu���Load��F���-Y���StartL�F���b^���StopH�F����c���Pause8�F����i��pClear��F���D}���Infod�F��������Pos��F����,���EffectControl��F������}VolumeX�F���D���SetSampleSpeed`�F�������HDMABuffer��F�������RemoveChannel��F���䮓�JRestoreChannel��F����ȓ�Stereo��F���(Γ��ReadSongLength��F����ғ�iReadSequenceTable��F����ⓥ�VUBarControl��F����ΐ�)ReadVULevels�F�����JReadSampleTableL�F��������ReadSpeed�F���4���PlaySample��F����XSongStatus��F������ReadPlayingTime�F�������PlayRawSample�F���I����SoundControlTF��������SWITableAddress�F���E���~RegisterSampletF����0���SetSpeed0F���)l��qeffects� F���A7��e-effectsDATA�QTM #Parent !Root #Prefix QTM_ #Table Columns 2 <Load> <Start> <Stop> <Pause> <Clear> <Info> <Pos> <EffectControl> <Volume> <SetSampleSpeed> <DMABuffer> <RemoveChannel> <RestoreChannel> <Stereo> <ReadSongLength> <ReadSequenceTable> <VUBarControl> <ReadVULevels> <ReadSampleTable> <ReadSpeed> <PlaySample> <SongStatus> <ReadPlayingTime> <PlayRawSample> <SoundControl> <SWITableAddress> <RegisterSample> <SetSpeed> #EndTable DATA�QTM_Load (&47E40) #Parent QTM_ There are three forms of this call : => <Form 1=>.form1> <Form 2=>.form2> <Form 3=>.form3> R0 = filename 0 -1 R1 = address, or 0 for QTM memory address address to copy from <= R0, R1 preserved The address and type of the loaded song can be read by <QTM_Info>. Note: When a song is loaded (by any method) its sample data is converted into 8-bit logarithmic data, from signed linear data. 15 inst. format songs are converted to a 31 inst. format at the same time. The sample data CAN be converted back to signed linear, so the song can be saved or re-loaded etc. by calling <QTM_Clear> with R0=-1, although the song format will not be converted back, and will remain as 31 inst. V flag set if there was not enough space in the RMA for the song, the file was not found, the music format was not understood, or an illegal memory address was specified. #Subpage form1 QTM_Load form 1 Depending on the value in R1, QTM will either load the specified song file into QTM's own memory (R1=0), or to the memory address given in R1 (R1\<>0). #Subpage form2 QTM_Load form 2 QTM will initialise the song pointed to by R1, at that address. This enables a program to load a song into its own reserved memory (eg. application memory or its own RMA block) and get QTM to play it from there, rather than from a QTM-controlled RMA block. #Subpage form3 QTM will COPY the song from the address given in R1, to its own memory (RMA) and use it from there. Note: If the address in R1 is the START of an RMA block, QTM will take control of this block, and release it after transfering the song. This is done to reduce possible fragmentation of the RMA. The loader program must *NOT* access the old RMA address of the song, after this call. DATA�QTM_Start (&47E41) #Parent QTM_ This SWI will start the current song playing (and start up the sound system), after loading, or being paused or stopped. V flag set if no song is loaded DATA�QTM_Stop (&47E42) #Parent QTM_ This SWI will stop the current song playing, switch off QTM's sound controllers and reset all the internal song variables, including the position counters - which it sets to 0. V flag set if no song is loaded DATA�QTM_Pause (&47E43) #Parent QTM_ This has the same effect as <QTM_Stop>, although it doesn't reset the internal variables, so when the song is re-started, it will continue from the same position. V flag set if no song is loaded DATApQTM_Clear (&47E44) #Parent QTM_ => R0 = -1 to convert samples back to signed linear format other don't convert samples <= R0 is preserved This SWI will switch off the QTM sound system and stop the current song playing, releasing any memory used for the song if it was loaded into RMA. The song cannot be restarted after this command, unless it is reloaded (from user-reserved memory, disc, etc.) using <QTM_Load>. The CURRENT song can only be reloaded from user-reserved (not QTM's) memory after calling <QTM_Clear>, if the samples have been converted back to signed linear format (from the logarithmic format they were converted to when the song was loaded). This can be done by setting R0 to -1 before calling <QTM_Clear>. See <QTM_Load> for information on (re)loading a song that is already stored in memory. No error is reported if there is not a song loaded. DATA�QTM_Info (&47E45) #Parent QTM_ <= R0 = pointer to track name (0 terminated) R1 = pointer to author name (0 terminated) or 0 if none R2 = <song origin=>.origins> R3 = number of channels (currently only 4 channels) R4 = file length (in bytes) R5 = garbage data size (-ve if data missing) R6 = address where song is loaded This SWI returns general information about the current track loaded in QTM. It also uses an 'intelligent author detector' routine, to search through the sample names (usually used by authors, to store their name or group) to see if it can find anything that resembles a name. If it succeeds, a pointer to the name is returned in R1, otherwise 0 is returned. Note: The 'song origin' value (R2), corresponds to the original song type, NOT the format of the song in memory. After loading, QTM converts all songs to the 31 inst. ProTracker format. Future versions of QTM, however, may support different song types in memory. To avoid problems with new types being supported, it can be assumed that any song returning a value in R2 \< &10 (16), will be stored in memory as a 4 channel, 31 inst. ProTracker format song. Song editors and display programs should check this value, to ensure that the loaded song is in the expected format for the program. V flag set if no song is loaded #Subpage origins QTM Song origins value origin #Line 0 15 inst. Sound Tracker 1 31 inst. Sound Tracker 2 31 inst. ProTracker 3 31 inst. Startrekker DATA�QTM_Pos (&47E46) #Parent QTM_ => R0 = new sequence position (0-127), -1 to read current position R1 = new event position (0-63), -1 to read <= R0 = previous sequence position (0-127) R1 = previous event position (0-63) This SWI can be used to read or alter the current sequence or event position in the current song. V flag set if no song is loaded or the position/event number is out of range DATA�QTM_EffectControl (&47E47) #Parent QTM_ => R0 = <effect number=>QTM_effects> (&0-&F,&E0-&EF for <'E' effects=>QTM_e-effects>) or -1 to read current state R1 = new state of effect (0-off/1-on) <= R0 = previous effect state word (&0-&F) 1 bit per effect, 16 bits R1 = previous effect state word (&E0-&EF) as above This SWI can be used to change the state of any effect (as seen by the QTM effect handlers). Disabling an effect will stop QTM taking any action over it. For example, disabling effect &F will not allow speed/tempo changes to take place, and the song may sound too fast or slow. Once re-enabled, the effect(s) will be run as usual again. The contents of R0 and R1 on exit are a copy of the effect words used by QTM - each has 16 bits used, with each bit representing the state of that effect 0-off, 1-on. R0 contains the flags for the normal effects (&0-&F), R1 contains the flags for the 'E' effects (&E0-&EF). V flag set if the effect number was out of range DATA}QTM_Volume (&47E48) #Parent QTM_ => R0 = new overall volume (0-64) or -1 to read current volume <= R0 = previous volume (0-64) This SWI allows you set the overall output volume from the QTM sound handlers. The volume is in a linear form (0-64), as used for volumes in ProTracker songs. Gradual fades can be generated using this SWI. V flag set if volume is out of range DATAQTM_SetSampleSpeed (&47E49) #Parent QTM_ => R0 = new sample speed (16-96�S) or -1 to read current speed <= R0 = previous sample speed (16-96�S) This SWI lets you set the time between sample outputs (ie. sample quality) to a value between 16�S and 96�S. Smaller speed values give better sample quality, but also use more processor time, slowing the computer down more. The default speed is 32�S. Note: If 8 channels are enabled, the minimum sample speed is 24�S. V flag set if sample speed is out of range DATAHQTM_DMABuffer (&47E4A) #Parent QTM_ <= R0 = address of last used DMA sound buffer. By using this SWI, it would be possible to implement sound output oscilloscopes, or volume activated (real) VU bars. The data in the DMA buffer is stored as: [c1],[c2],[c3],[c0],[c1],[c2]...etc, 1 byte for each channel. The DMA buffer size used by QTM is 208*\<no. of channels> long. The address returned in R0 will only be accurate if the QTM sound system is currently active. To check whether this is the case, use <QTM_SoundControl>, to read the sound system state (number of channels). DATA�QTM_RemoveChannel (&47E4B) #Parent QTM_ => R0 = channel number to remove from song player (1-8) <= R0 = previous state of that channel: 0 = already removed 1 = QTM channel This SWI has the effect of 'removing' the given channel from the QTM player routine. This means no samples from the song will be played through this channel, although it is still possible to play samples directly, using the PlaySample SWIs, or through the Transparent sound system (if active). While the channel is 'removed', the player will continue to keep up to date the effects and sample information, so that when the channel is restored, the song will continue as if nothing had happened. Note: QTM v1.22 does not use channels 5-8 for song playing, so although they can be 'removed', this will make no noticeable difference as they can only be used for sample playing anyway! V flag set if channel number is out of range Interrupts: IRQ interrupts disabled while QTM sound flags are altered. DATAJQTM_RestoreChannel (&47E4C) #Parent QTM_ #Wrap off => R0 = channel number to restore (1-8) <= R0 = previous state of that channel: 0 = previously removed 1 = already a QTM channel #Wrap This SWI is used to restore channels previously removed by <QTM_RemoveChannel>. V flag set if channel number is out of range DATAQTM_Stereo (&47E4D) #Parent QTM_ => R0 = <channel number=>.usrchannel> to alter or 0 for <pre-programmed settings=>.prgchannel> <= R0 is preserved If R0 = 1-8 then R1 = previous stereo position If R0 = 0 then R1 is corrupted This SWI allows the stereo positions for each channel to be altered independently, or all together. If R0=1-8 on entry, then R1 must be either a valid stereo position (-127 to 127) or -128 to read the previous position. If R0=0 on entry, then R1 must be in the range 0-4 to alter all the channels to one of these pre-programmed values. #Subpage usrchannel User channel stereo settings R0 = 1-8 R1 = -127 (left) to 127 (right) or -128 to read current position #Subpage prgchannel R0 = 0 R1 = 0 <default stereo positions=>.default> 1 Amiga (full) stereo positions 2 centred (no stereo) 3 full left 4 full right #Subpage default Default stereo settings Channels 1,5 Position: -79 (left) Channels 2,6 Position: 79 (right) Channels 3,7 Position: 47 (slightly right) Channels 4,8 Position: -47 (slightly left) DATA�QTM_ReadSongLength (&47E4E) #Parent QTM_ <= R0 = number of sequences in current song (1-128) R1 = maximum pattern number in song (ie. number of patterns-1) This SWI allows you to read the number of sequences and maximum pattern number in the current song. The maximum pattern number is ALWAYS the number of patterns present-1, since counting starts at 0, not 1. V flag set if no song is loaded DATAiQTM_ReadSequenceTable (&47E4F) #Parent QTM_ => R0 = sequence number to read (0-127) <= R0 = pattern number stored at that position This SWI enables you to read the pattern to be played at a given position in the current song's sequence table. V flag set if no song is loaded or if sequence number is larger than the song's maximum sequence position. DATA�QTM_VUBarControl (&47E50) #Parent QTM_ => R0 = <control value=>.control> R1 = new VU gravity, or -1 to read <= R0 = previous VU controller state R1 = previous VU bar gravity This SWI allows control of the highly accurate VU bar routine contained in the QTM module. The default settings for the VU bar routine are: gravity = 2 (lines per 50th of a second) and the VU bar controller off. Note: Currently QTM VU bars are only available for channels 1-4. #Subpage control QTM VUBar control values \# meaning #Line 0 switch the VU bar controllers off 1 set the VU bar controller to use 'fake' VU bars 2 set the VU bar controller to use 'effect' VU bars 3 set the VU bar controller to use 'real' VU bars -1 read current setting DATA)QTM_ReadVULevels (&47E51) #Parent QTM_ => R0 = Channel number (1-4) or 0 for all channels <= If R0 = 1-4 on entry, then R0 = VU bar height for the channel specified in R0 (0-64) If R0 = 0 on entry, then R0 = word containing 1 byte per channel of all the 4 channels' VU bar heights (0-64, each byte) This SWI lets you read the current VU levels of the QTM VU bar handler. This call should only be used if the VU bar handler has been enabled using <QTM_VUBarControl>. Note: Currently QTM VU bars are only available for channels 1-4. DATAJQTM_ReadSampleTable (&47E52) #Parent QTM_ => R0 = sample number (1-64) <= R0 = pointer to 22 byte block (not terminated) containing sample name (or a 0 byte, if no sample name) R1 = sample length (in bytes) R2 = repeat offset (bytes from start of sample) R3 = repeat length (in bytes) R4 = default volume (0-64) R5 = fine tuning value (-8 to +7) R6 = address of raw sample data (logarithmic format) This SWI allows you to read information from the QTM sample table, which contains up to 64 samples. Non-existent samples will return zero in R1-R6, and R0 will point to a 0 byte. Note: Because only samples 1-31 are used by songs, samples 32-64 can be used for sound effects (in games etc.) and can be registered separately, using <QTM_RegisterSample>. V flag set if sample number is out of the range 1-64 or song not loaded DATA�QTM_ReadSpeed (&47E53) #Parent QTM_ <= R0 = current song speed (00-31) R1 = current song CIA tempo setting (32-255) R2 = speed counter value (01-speed) This SWI returns information on the current speed, tempo and counter values of the current song. The speed value (R0) is the number of times the song controller has to be called, before it plays the next note, the default is 6 times. If a speed of 0 is returned, the song is not playing. The CIA tempo setting controls how fast the song controller is called. The default is 50 times a second, tempo 125. (The name CIA tempo comes from Complex Interface Adaptor, which was used on the Amiga to control ProTracker's interrupt speed.) The speed counter (R2) varies from 1 to the current speed (R0). It is decremented once every time the song controller is called, until it reaches 0, when the next note is played and the counter is reset to the speed. V flag set if no song is loaded DATA�QTM_PlaySample (&47E54) #Parent QTM_ => R0 = channel number (1-8) R1 = sample number (0,1-64), 0 to clear channel R2 = note number (1-36 for standard, 113-856 for amiga pitch) R3 = linear volume (0-64) <= R0-R3 preserved This SWI allows you to play any of the 64 samples held in the QTM sample table on any of the 4 or 8 available channels. A sample can be played at any time, including while a song is playing, although the sample may be cut short if the song is playing. Playing a non-existent sample will result in nothing being played. The samples above 31 can be used after they are registered, using <QTM_RegisterSample>. This SWI will also start up the QTM sound system if it is called while the song is stopped or paused, though it will not switch the system off after the sample finishes, use <QTM_SoundControl> to do this. V flag set if any of the registers contain illegal values. DATAXQTM_SongStatus (&47E55) #Parent QTM_ <= R0 = <song status flags=>.flags> This SWI allows you to read the current status of the QTM song controller. No error is generated if there is no song loaded. #Subpage flags QTM Song status flags Bit meaning if set #Line 0 song loaded 1 song loaded in RMA 2 song currentl playing 3-31 reserved DATA�QTM_ReadPlayingTime (&47E56) #Parent QTM_ <= R0 = total playing time so far (seconds) R1 = time since last <QTM_Start> (seconds) R2 = total playing time of the whole song (seconds) This SWI allows you to read the two QTM song timers and the total time of the current song. The contents of R0 and R1 on exit are calculated from the internal 100Hz timer, but the contents of R2 rely on a special 100% accurate, song length calculation routine... The ** {*}QTM-Ultra-mega-time-worker-outer{*} ** is the first song time calculation routine on the Arc, and the only routine on any computer which can accurately work out times correctly with effects such as CIA tempos, pattern loops and pattern delays. The routine works by scanning through all the song's patterns, in the correct order, calculating the time of each event as it goes, and taking into account any speed, tempo, loop or delay settings that may be in use. When this SWI is called for the first time after loading a song, the total length will be worked out using the special routine. On later calls to this SWI (while the same song is loaded), the total length will not be re-calculated, but the original calculation will used, to save time. V flag set if no song is loaded DATAQTM_PlayRawSample (&47E57) #Parent QTM_ => R0 = channel number (1-8) R1 = sample address (logarithmic sample data), or 0 to silence channel R2 = sample length (in bytes) R3 = repeat offset (bytes from start of sample) R4 = repeat length (in bytes) R5 = note number (1-36 for standard note, 113-856 for amiga pitch) R6 = linear volume (0-64) <= R0-R6 preserved This SWI allows you to play a sample stored in any area of memory. The sample should be in 8-bit logarithmic format. This SWI will also start up the QTM sound system if it is called while the song is stopped or paused, though it will not switch the system off after the sample finishes, use <QTM_SoundControl> to do this. V flags set if the contents of the registers contain dangerous values! DATA�QTM_SoundControl (&47E58) #Parent QTM_ => R0 = number of channels to use (4, 8 or 0 to shutdown) -1 to read R1 = transparent sound system flags 1-on, 0-off, -1 to read R2 = transparent sound system channel handler address or -1 <= R0 = previous number of channels (0 if sound system was off) R1 = previous transparent sound system flags R2 = previous transparent sound system handler This SWI allows control over the QTM sound DMA handler. The QTM sound system switches on automatically when a song or a sample is played, but can also be switched on manually using this SWI, specifying 4 or 8 channels. Note: This sets the 'default' number of channels, so even after the sound system is next shut down, QTM will continue to use the number of channels specified whenever a song or sample causes the sound system to start up again. If 0 channels are specified, the QTM sound system is shut down. If a song was playing at that time, the music handlers and position counters will continue to move through the song, although no sound will be heard from QTM. Details of the Transparent Sound System can be found in the 'Technical' help file, but basically it allows joint control over the sound channels, by QTM and either the RiscOS sound handler (default) or any other RiscOS compatible sound channel handler. Switching the Transparent Sound System on (passing 1 in R1) will allow you to hear any RiscOS voice module sounds AS WELL as any QTM samples. For example, in its default state, the Transparent Sound System will allow you to hear the system 'beep', while a song or sample is being played through QTM. V flag set if illegal values are passed to QTM. DATA�QTM_SWITableAddress (&47E59) #Parent QTM_ <= R0 = address of QTM's internal SWI jump table This SWI returns the address of QTM's SWI jump table, so that user programs can call directly any QTM SWI, without going through the RiscOS SWI handler. To call a QTM SWI via this address, the registers should be set up as required by the SWI, and the SWI number minus &47E40 should be placed in R11. The SWI can then be executed by branching to this SWI table address. Note: all QTM SWIs can be called this way, from any PSR mode, although if the QTM sound system is active, <QTM_RemoveChannel> should be called from a non-User mode, to allow disabling of interrupts. DATA~QTM_RegisterSample (&47E5A) #Parent QTM_ => R0 = sample number to register as (1-64) (see notes below) R1 = sample address (of logarithmic sample data) or 0 to blank the sample information If R1 \<> 0 then R2 = sample length (in bytes) R3 = repeat offset (bytes from start of sample, or 0) R4 = repeat length (or 0) R5 = default volume (0-64) R6 = fine tune value (-8 to +7) <= R0-R6 preserved This SWI allows a program to register a sample loaded into it's own memory, as a QTM sample. The above information will be entered into QTM's 64 slot sample table and will allow the user program to play the sample using <QTM_PlaySample>. If the sample number is <=31, the current song will use this sample rather than its default sample. It is good practice for non-desktop users of this call to blank their registered samples when returning to the desktop, by calling this SWI with R1=0. Note: All samples in the range 1-31 are re-set when a new song is loaded, to allow space for the new song's own samples. If you are using this range for sound effects etc. you must re-register all required samples after every song load. DATA�QTM_SetSpeed (&47E5B) #Parent QTM_ => R0 = new song speed (01-31) or tempo (32-255) (speed (beats per note), fast 01-31 v. slow, default 06) (tempo (beat frequency), slow 32-255 v. fast, default 125) <= R0 preserved This SWI provides user control over the speed of the currently playing song. This command has the same effect (and takes the same parameters) as the speed-change 'F' effect as used in ProTracker compatible songs. The only difference being that a value of 0 will NOT stop the song, use SWI QTM_Stop to do this. After using this SWI, the song speed will remain at the new value until an 'F' effect is played, or the song is stopped. Note: if the 'F' effect is disabled, using <QTM_EffectControl>, the song will play at the new speed until it is stopped, or 'F' effects are enabled again. The current speed and tempo can be read using <QTM_ReadSpeed>. V flag set if no song loaded or the new speed/tempo is out of range. DATAqStandard ProTracker commands/effects #Table Columns 2 00 Arpegio 01 Pitch slide up 02 Pitch slide down 03 Tone portamento 04 Vibrato 05 Tone portamento + volume slide 06 Vibrato + volume slide 07 Tremelo 08 \<not used> 09 Set sample offset 0A Volume slide 0B Jump to sequence 0C Set volume 0D Pattern break 0E Various, see table 2 0F Set speed / tempo #EndTableDATA�'E' commands/effects #Table Columns 2 E0 Set filter * E1 Fine pitch slide up E2 Fine pitch slide down E3 Glissando control E4 Set vibrato waveform E5 Set fine tuning E6 Pattern loop E7 Set tremelo waveform E8 \<not used> E9 Retrig note EA Fine volume slide up EB Fine volume slide down EC Note cut ED Note delay EE Pattern delay EF Invert loop #EndTable * The 'Set filter' command can't be implemented on the Archimedes.DIR$��,F����*Cw!Root�F���ȯMIFileInfo�F����هMMessage�F���vɇM�NewMessages�F���f��?roperationdF���sԇM�IsNewDATAwReadMail #Parent !Root #Prefix ReadMail_ #Table Columns 1 <FileInfo> <Message> <NewMessages> <IsNew> #EndTable DATAIReadMail_FileInfo (&46800) #Parent ReadMail_ \<= R0 = number of messages read, or -1 if file not seen R1 = number of new messages read This reads information about the ReadMail message base files which have been seen by the module. To notify the module that the List or New file has changed, use <ReadMail_NewMessages>.DATAReadMail_Message (&46801) #Parent ReadMail_ => R0 = file number to find R1 = <operation code=>ReadMail_operation> R2 = Unused R3 = previous file in chain (or -1 to leave unchanged) R4 = next file in chain (or -1 to leave unchanged) \<= R0 preserved R1 = pointer to line in List file, or -1 if not found R2 = real message number R3 = previous file in chain R4 = next file in chain This call tries to find a particular file's information and returns it, or sets the information in the module's block.DATA�ReadMail_NewMessages (&46801) #Parent ReadMail_ \<= R0 = Number of messages in base R1 = Number of new files in base This call notifies the ReadMail module that the message base List (or New) file has been altered and it needs to read it. DATArOperation codes #Wrap Off Code Meaning #Line -1 Delete message 0 Don't alter message 1 Set data as passed DATA�ReadMail_IsNew (&46803) #Parent ReadMail_ => R0 = number of file to check \<= R0 = 0 if not new, -1 if new This SWI checks the new files log to check if the file is there.DIR$,,DF���qL��!RootDATA�ROMCache #Parent !Root #Prefix ROMCache_ #Table Columns 2 Cache Link Load Swap Uncache Save SetState Allocate #EndTable DIR$���G������v!Root(G���9@�code0G���Ꙙ��Info� G����ט�Link�"G����$��cMemory�$G����G�luser`*G���\���UtilDATAvSparkFS #Parent !Root #Prefix SparkFS_ #Table Columns 2 <Code> <Info> <Link> <Memory> <User> <Util> #EndTable DATASparkFS_Code (&445C3) #Parent SparkFS_ => R0 = reason code number 0 <CRC 16 block=>.code0> 1 <CRC 32 block=>.code1> 2 <Open encrypt=>.code2> 3 <Encrypt block=>.code3> 4 <Decrypt block=>.code4> 5 <Close encrypt=>.code5> This SWI is used to do different forms of encoding on data. #Subpage code0 CRC 16 block (0) => R0 = 0 (reason code) R1 = CRC in R2 = pointer to data block R3 = length of data <= R1 = CRC out This call will calculate a 16-bit CRC value for a block of data. #subpage code1 CRC 32 block (1) => R0 = 1 (reason code) R1 = CRC in R2 = pointer to data block R3 = length <= R1 = CRC out This call will calculate a 32-bit CRC value for a block of data. #subpage code2 Open Encrypt (2) => R0 = 2 (reason code) R1 = type (1 for Garble, 2 for DES) R2 = pointer to password This call is used to start an encrypt or decryptiong session. #subpage code3 Encrypt block (3) => R0 = 3 (reason code) R1 = type (1 for Garble, 2 for DES) R2 = pointer to data block R3 = length This call will encrypt a block of data using the password given in the previous call to <SparkFS_Code 2=>.code2>. #subpage code4 Decrypt block (4) => R0 = 4 (reason code) R1 = type (1 for Garble, 2 for DES) R2 = pointer to data block R3 = length This call will decrypt a previously encrypted block of data, if the password matches that given by <SparkFS_Code 2=>.code2>. #subpage code5 Close Encrypt (5) => R0 = 5 (reason code) R1 = type (1 for Garble, 2 for DES) This call will terminate an encrypt session. DATA�SparkFS_Info (&445C2) #Parent SparkFS_ => R0 = reason code number 0 <Archive info=>.code0> 1 <Module info=>.code1> This call is used to extract information from SparkFS. #subpage code0 Archive info (0) => R0 = 0 (reason code) R1 = pointer to archive pathname <= R1 = pointer to archive structure This call is used to read information about an archive. #subpage code1 Module info (1) => R0 = 1 (reason code) R1 = module number <= R0 = 0 no module, -1 no more modules R1 = pointer to archive info R2 = pointer to compression info R3 = pointer to code info R4 = pointer convert info R5 = pointer module base This call is used to extract information about modules registered with SparkFS. DATA�SparkFS_Link (&445C0) #Parent SparkFS_ => R0 = reason code number 0 <Add new link=>.code0> 1 <Remove link=>.code1> This call is used to perform operations on 'links'. #subpage code0 Add new link (0) => R0 = 0 (reason code) R1 = pointer to flink R2 = pointer to private workspace R3 = compatibility level #subpage code1 Remove link (1) => R0 = 1 (reason code) R1 = pointer to flink DATAcSparkFS_Memory (&445C1) #Parent SparkFS_ => R0 = reason code number 0 <Allocate=>.code0> 1 <Extend=>.code1> 2 <Free=>.code2> 3 <Set=>.code3> This call is used to manipulate SparkFS' memory manager. #subpage code0 Allocate (0) => R0 = 0 (reason code) R1 = pointer to anchor R2 = size <= R0 = 0 if failed #subpage code1 Extend (1) => R0 = 1 (reason code) R1 = pointer to anchor R2 = size <= R0 = 0 if failed #subpage code2 Free (2) => R0 = 2 (reason code) R1 = pointer to anchor #subpage code3 Set (3) => R0 = 3 (reason code) R1 = min R2 = max <= R1 = min R2 = max R3 = currDATAlSparkFS_User (&445C5) #Parent SparkFS_ => R0 = reason code number 0 <Identify archive=>.code0> 1 <Read archive entries=>.code1> This call is used to perform miscellaneous user operations on archives. #subpage code0 Identify archive (0) => R0 = 0 (reason code) R1 = pointer to archive path <= R0 = type #subpage code1 Read archive entries (1) => R0 = 1 (reason code) R1 = pointer to archive path i.e. path to archive file on external FS R2 = pointer to <buffer=>.code1buffer> to write information to R3 = number of objects to write R4 = position in catalogue to start reading from R5 = size of buffer R6 = pointer to wild carded file name to match. Can be NULL to match all. R7 = pointer to path to directory inside archive <= R4 = position in catalogue to read from next R3 = number of entries written to buffer This is passed the path to an archive, and the path to a directory inside the archive. In addition a wildcarded filename can be used. Operation is similar in concept to <OS_GBPB=>OS:OS_GBPB> 10. #subpage code1buffer Format of entries in SparkFS catalogue Offset Purpose #Line 0 load address 4 exec address 8 length ie. real uncompressed size 12 size ie. compressed size 16 header version loosely related to the compression method 20 attributes 24 object type 1=file, 2=directory 28 object name 0 terminated, padded with 0's to word boundary. DATA�SparkFS_Util (&445C4) #Parent SparkFS_ => R0 = reason code number 0 <Parent of directory=>.code0> 1 <Set number of files in directory=>.code1> 2 <Insert entry=>.code2> 3 <Remove entry=>.code3> 4 <Map extension to type=>.code4> 5 <Calculate directory length=>.code5> 6 <Open scrap file=>.code6> 7 <Close scrap file=>.code7> This call is used to do things to archives (!). #subpage code0 Parent of directory (0) => R0 = 0 (reason code) R1 = pointer to archive R2 = child <= R0 = parent #subpage code1 Set number of files in directory (1) => R0 = 1 (reason code) R1 = no of files #subpage code2 Insert entry (2) => R0 = 2 (reason code) R1 = pointer to archive R2 = file number R3 = directory R4 = size #subpage code3 Remove entry (3) => R0 = 3 (reason code) R1 = pointer to archive R2 = file number R4 = size #subpage code4 Map extension to type (4) => R0 = 4 (reason code) R1 = pointer to extension <= R0 = file type #subpage code5 Calc dir lens (5) => R0 = 5 (reason code) R1 = pointer to archive #subpage code6 Open scrap file (6) => R0 = 6 (reason code) R1 = mode <= R0 = handle #subpage code7 Close scrap file (7) => R0 = 7 (reason code) R1 = handleDIR$,,L/F����C��!RootDATA�Spch #Parent !Root #Prefix Spch_ #Table Columns 2 Ready? Oldchannel Error Say SayW Speak SpeakW Pitch Speed Mouth Tongue GetDictionary Reset Level #EndTable DIR$,, 0F����K�e!RootDATAeSpell #Parent !Root #Prefix Spell_ #Table Columns 2 Typo Anagram Fuzzy CheckWord AddWord GetWord GetNextWord EnumWord CreateUser LoadUser SaveUser UserToFile FileToUser GetDictionaryName RemoveDictionary DeleteWord ResetIgnore AddToIgnore BrowseWindow SpellOp FindWord ImpressionInfo ImpressionQuickCheck FileToFile SaveDictionaryWithPath #EndTable DIR$,,�1F����F��!RootDATA�StreamSquash #Parent !Root #Prefix StreamSquash_ #Table Columns 2 Initialise InfoCompress OpenCompress CompressBlock CloseCompress InfoDecompress OpenDecompress DecompressBlock CloseDecompress Exit #EndTable DIR$��(4F���1V� �!Root�6G���W��3enable,9F����Ѹ �Disable�9F���6� SKillH;F����1� eUnKill�;F���T�� �Intercept|<F���� � �NoIntercept8=F����&� tShowCodes�=F����6� �NoCodes8>F����E� mReset�?F���>K� �FlushText(@G���� �JdirectDATA�Stream #Parent !Root #Prefix Stream_ #Table Columns 2 <Enable> <Disable> <Kill> <UnKill> <Intercept> <NoIntercept> <ShowCodes> <NoCodes> <Reset> <FlushText> <WriteC=>Stream_direct> <WriteS=>Stream_direct> <Write0=>Stream_direct> <WriteN=>Stream_direct> <NewLine=>Stream_direct> <WriteT32=>Stream_direct> <WriteT24=>Stream_direct> <WriteT16=>Stream_direct> <WriteT8=>Stream_direct> <WriteH32=>Stream_direct> <WriteH24=>Stream_direct> <WriteH16=>Stream_direct> <WriteH8=>Stream_direct> <WriteD32=>Stream_direct> <WriteD24=>Stream_direct> <WriteD16=>Stream_direct> <WriteD8=>Stream_direct> <WriteB32=>Stream_direct> <WriteB24=>Stream_direct> <WriteB16=>Stream_direct> <WriteB8=>Stream_direct> WriteRegs #EndTable DATA3Stream_Enable (&81940) #Parent Stream_ No parameters VDUStream will claim the Write character vector and sit around waiting for characters to be printed. These are stacked in the modules temporary RMA space until the main application is called via <Wimp_Poll=>Wimp:Wimp_Poll>. Characters found to have been written to the RMA buffer are squirted into VDUStreams resizable application memory during null events. This call can be stacked to any level, but the stream will not be released until n <Stream_Disable>s have been called, or one <Stream_Reset>. DATA�Stream_Disable (&81941) #Parent Stream_ No parameters This swi decrements the claim count and releases WrchV if it is zero. Subsequent text will appear as normal if the stream is released. DATASStream_Kill (&81942) #Parent Stream_ No parameters Stream_Kill will set a flag internally to prevent <Stream_Enable> from being handled in the usual way. All calls to Stream_Enable will be ignored. This allows one piece of code which calls another routine or routines to prevent debugging being generated from the called routines.DATAeStream_UnKill (&81943) #Parent Stream_ No parameters Allows access to <Stream_Enable> again.DATA�Stream_Intercept (&81944) #Parent Stream_ No parameters All printable characters will be intercepted by VDUstream when the stream is enabled rather than being passed on to the default handler.DATA�Stream_NoIntercept (&81945) #Parent Stream_ No parameters Passes character codes on to the next interrupt handler on the WrchV as normal. Reverses effect of <Stream_Intercept>.DATAtStream_ShowCodes (&81946) #Parent Stream_ No parameters Show control codes as [##] values when intercepted.DATA�Stream_NoCodes (&81947) #Parent Stream_ No parameters Ignore all control codes received. Reverses the effect of <Stream_ShowCodes>.DATAmStream_Reset (&81948) #Parent Stream_ No parameters Throws away all stacked calls to <Stream_Enable> and releases the WrchV. This should be used incase of emmergency. (ie when a client application has crashed and not called <Stream_Disable>. You will notice this by error boxes with no text in them appearing along with the desktop rendering sprites only) DATA�Stream_FlushText (&81949) #Parent Stream_ No parameters Throws away the current text in the application space and RMA. DATAJDirect stream drivers #Parent Stream_ VduStream 1.09 onwards provides direct stream access so that applications can send text to the stream when the operating system <OS:OS_WriteC> is being intercepted by someone else earlier in the chain. eg during printing. The following direct swis are provided: #Indent 1 Stream_WriteC : Write R0 charater to the stream Stream_Write0 : Write null terminated string. R0=ptr Stream_WriteS : Write in line string. Stream_WriteN : Write counted string. R0=ptr, R1=number Stream_NewLine : Write newline Stream_WriteTxx : Write r0 as characters. "." replaces non-alphanumeric Stream_WriteHxx : Write hex conversion of R0 Stream_WriteDxx : Write decimal conversion of R0 Stream_WriteBxx : Write binary conversion of R0 #Indent Where xx is 32, 24, 16, or 8 depending on the number of bits to display. DIR$��(GF������!Root�HF����،� Version�IF���C����Load�KF���=���memoryload`PF����⌥�PlayQF���^댥�Stop�RF���<_Pause@SF���6Ō��Stereo�WF����ˌ��SetPos�YF���kԌ��ReadPos4[F�������PlayNote�^F�����ETuneInfo<cF������<SoundInfoxgF�������ReadSampleTable$jF����ō�cWriteSampleTable�oF���L]��Lock�uF���8R��LUnlock�vF���"q���MuteChanneltxF�����/RestoreChannel�yF������Speed�{F������Volume�}F���Mٍ�DTranslateVolumeF����BUpdateDataH�F�������NoteTable@�F�������commands�F����G��ErrorsԔF���?�SoundBlockDATA�Tracker #Parent !Root #Prefix Tracker_ #Table Columns 2 <Version> <Load> <MemoryLoad> <Play> <Stop> <Pause> <Stereo> <SetPos> <ReadPos> <PlayNote> <TuneInfo> <SoundInfo> <ReadSampleTable> <Lock> <Unlock> <MuteChannel> <RestoreChannel> <Speed> <Volume> <WriteSampleTable> <TranslateVolume> <UpdateData> #EndTable Other information : #Indent 3 <Note translation table=>Tracker_NoteTable> <Tracker commands=>Tracker_Commands> <Errors>DATA Tracker_Version (&43200) #Parent Tracker_ => R0 = version number*100 (ie. for v1.23 = 123) Use this call to ensure that the TrackerModule installed is a recent enough version to support the SWI's you wish to use. Versions 4.00 onwards incorporate the SWI's. DATA�Tracker_Load (&43201) #Parent Tracker_ => R0 = pointer to filename of soundtracker/tracker module \<= R0 preserved This call will claim memory from the RMA and load the specified tune module, initialise the sound system, and set the playroutine in pause mode. You must then use <Tracker_Play> to start the tune playing. The command *PlayMod calls this routine, and then <Tracker_Play>. An error will be generated if the module cannot be loaded or not enough memory can be claimed. DATA�Tracker_MemoryLoad (&43202) #Parent Tracker_ => R0 = pointer to first word of soundtracker/tracker module in memory (NB must be word-aligned) R1 = length of module in bytes \<= R0 and R1 preserved This call can be used by a non-multitasking application to specify an area of memory as a tune module, and thereby remove the need for a seperate file to hold a tune, and there is no need to claim a large amount of RMA space. Once this SWI is called, the module will be treated as if it was loaded in the module's own workspace. When a soundtracker module is loaded, the pattern data is converted to Tracker format data (except for volumes which remain 0-64), so for the purposes of editing, as long as <Tracker_ReadPos>/<Tracker_WriteSampleTable> are used, the module can be considered as a Tracker module. When <Tracker_Stop>/*PlayStop is called, the data is converted back. Important: You must tell the TrackerModule to forget the module if the memory will be overwritten, otherwise the module may crash. (*PlayStop or <Tracker_Stop>) NB: This call will not work for programs running under the desktop if the module is loaded in user memory.DATA�Tracker_Play (&43203) #Parent Tracker_ This call will restart a tune after it has been paused or loaded with the <Tracker_Load> or <Tracker_MemoryLoad> SWI. DATA�Tracker_Stop (&43204) #Parent Tracker_ This performs the same actions as *PlayStop. Using *PlayStop or this SWI is the only way to get the trackermodule to release the memory taken up by the tune module, or to force it to forget the address of a module if it has been loaded with <Tracker_MemoryLoad>. If the module is soundtracker and has been loaded with <Tracker_MemoryLoad>, calling this SWI or *PlayStop will convert the data back to the original format. DATA_Tracker_Pause (&43205) #Parent Tracker_ This performs the same actions as *PlayPause. DATA�Tracker_Stereo (&43206) #Parent Tracker_ => R0 = Stereo setting (0-4) or -1 to read current setting \<= If R0>=0 on entry: R0 preserved If R0=-1 on entry: R0 = current PlayStereo setting R1 = pointer to 8-byte stereo position table This performs the same actions as *PlayStereo, with R0 passed as a parameter. If R0 is set to 4 on entry, then the stereo settings will be unaltered whenever a module is loaded or killed, and disables any stereo commands in tracker modules. This is to allow interfacing programs to provide their own stereo options, or to allow adjustment to the stereo positions while tracker tunes are playing (which have default stereo settings stored as part of the tune). Alternatively, if R0=-1 on entry, R0 will be the last parameter passed to this SWI or the *PlayStereo command, and R1 points to an 8-byte table (one byte per channel) which is updated every time either a tune starts; this SWI or *PlayStereo is called with a parameter of 0-3; or if a stereo command is executed in a Tracker tune. The byte will be in the range of 1-7 (where 1 is full left, 7 is full right, and 4 is centre). Some Tracker tunes may contain stereo settings out of range. DATA�Tracker_SetPos (&43207) #Parent Tracker_ => R0 = New sequence position (0-127 max) R1 = Event (0-63 max) \<= R0 preserved This performs the same actions as *PlayPos, except that the event with the pattern can be specified (0-63 normally). If an event number higher than the number of events in the current pattern is specified, the pattern will begin at event 0. If there is no tune currently loaded, an error is generated. DATA�Tracker_ReadPos (&43208) #Parent Tracker_ => R0 = Current position in sequence table (0-127 max) R1 = Current position in pattern (0-63 max) R2 = Maximum position in sequence table This performs the same actions as *PlayPos with no parameters, but also returns the current position in the current pattern (in case some applications need to synchronize events with the tune being played).DATA�Tracker_PlayNote (&43209) #Parent Tracker_ => R0 = Sound channel to sound note on (1-8 max) R1 = Tracker format note number (1-36) R2 = Sample to play (1-36) R3 = Volume (0-255) [Tracker volume even if soundtracker tune loaded]. \<= R0-R3 preserved If tune not paused then C flag set otherwise C flag cleared. If there is no tune loaded, an error will be generated. It plays one of the samples which are part of the paused tune at a given pitch (1=low, 36=high) and volume (0=silent, 255=loud). If any of the values are out of range, an error will be reported. The number of sound channels that can be used depends on the module loaded (soundtracker modules will always use 4 voices, whereas Tracker modules can use up to 8). Use <Tracker_TuneInfo> to find out the maximum number of voices if you intend to play more than one note at a time. NB: This call should be avoided if possible, unless the purpose is to hear each sample seperately. DATAETracker_TuneInfo (&4320A) #Parent Tracker_ \<= R0 = Sequence table length (1-128) R1 = Number of voices (1-8) R2 = Current speed (1-15) R3 = Pointer to tune name (terminated by 0, max length 32 chars) R4 = Pointer to author's name (0 terminated, max length 32 chars) or zero if soundtracker format module (not applicable) R5 = Address of currently loaded tune module If the tune is paused, the C flag is set, otherwise the C flag is cleared. If there is no tune loaded, R0 is set to zero, and R1-R5 are preserved. This call provides miscellaneous information about the tune currently loaded. You should not need to directly access the tune module (using the address passed in R5), because all information is available via the various SWI's, and soundtracker format modules will have been converted partially to Tracker format when loaded (and therefore in an unknown format). This information is provided if, for example, multi-tasking players/editors need to know if the tune currently playing is running from ordinary RMA, or the player's/editor's own workspace. DATA<Tracker_SoundInfo (&4320B) #Parent Tracker_ => R0 = Pointer to word-aligned 256 byte block to hold <sound data=>Tracker_Soundblock> \<= R0 preserved If the tune is paused, the C flag will be set, otherwise the C flag will be cleared. If there is no tune loaded an error will be generated. This call is only provided for advanced uses of the trackermodule, and involves information of a highly technical nature. It is advised that you do not use this call if you can avoid it. The call will transfer the current contents of the sound voice info table to the location pointed to by R0. 256 bytes (64 words) will be transferred in total (8 words per sound channel), regardless of the number of voices actually active. When a note is played and then ends, word 6 of the appropriate channel is zeroed. The sound routines will only try and play the sample if this word is non-zero. When a tune is paused, the block is saved and overwritten with zeros. When the tune is restarted, the old contents are restored, so that the samples will continue to play from the same point. DATA�Tracker_ReadSampleTable (&4320C) #Parent Tracker_ => R0 = Sample number (1-36) \<= R0 preserved R1 = Pointer to sample name (0-terminated, max length 22 chars) R2 = Sample volume (0-255, 255=maximum volume, 0=silent) (or for sound tracker 0-64, 64=max vol.) R3 = Sample length (bytes) R4 = Repeat offset (bytes) R5 = Repeat length (bytes) R6 = Address of raw sample data This call returns all relevant information about the specified sample. If there is no tune loaded, an error will be generated. If the sample number is out of range (for example, if reading sample 16 on a 15-instrument module), R1 and R6 will point to a zero, and R2-R5 will contain a zero. DATAcTracker_WriteSampleTable (&43213) #Parent Tracker_ => R0 = Sample number (1-36) R1 = New sample volume (0-255/0-64) or -1 to leave unchanged. R2 = Repeat offset (bytes) or -1 to leave unchanged. R3 = Repeat length (bytes) or -1 to leave unchanged. You should use this SWI if you wish to alter the sample data without needing to know the relevant module format. Sample length is not alterable, because the occasions when this is necessary (eg. loading new sample in) need direct manipulation of the module in memory anyway, and problems occur when the sample length is set above the actual length. Versions between 3.00 and 4.05 copied the sample information into a more convenient format when the module was initialised, and so altering the data directly would have had no effect (causing problems for editors which needed to do this..). Should you wish to alter any other aspect of the module directly which might affect the playroutine (ie. number of voices), you should call <Tracker_UpdateData>. An error is generated if: #Indent 2 #Tab � No module is loaded � The sample number to change exceeds the max. of the format (ie. 15/31/36) � The relevant information is out of range (ie. vol > [64 or 255]) � A combination of repeat offset and repeat length would cause the player to loop outside the sample limit. #Indent This SWI is part of the locking system. DATATracker_Lock (&4320D) #Parent Tracker_ => R0 = locking code (passed in R4 to SWI's) This SWI and the corresponding <Tracker_Unlock> SWI are provided to prevent user intervention with any of the features of the module when this would be undesirable for any multi-tasking applications using the module (for example issuing a *PlayStop command). By calling this SWI, an application can gain complete control of the module, but as a result, this feature must be used carefully, because the module cannot then be unlocked unless the code specified in the lock SWI is known (and if not, the module must be re-initialised). When the module is locked, calling any commands or SWI's which alter anything (such as changing the current play position, loading or killing tunes, playing notes) will cause an error, but SWI's returning information will function as normal. For the application which is responsible for the locking to be able to use the affected SWI's, R4 must be set to the locking code (passed in R0) before any of the affected SWI's is called (no commands will work even if the locking code is known). If the TrackerModule is already 'locked' when this SWI is called, an error will be generated. It is advisable to avoid using this call unless absolutely neccessary. The restricted commands are: *PlayMod, *PlayPause, *PlayStart, *PlayPos, *PlayStereo, *PlayStop, *PlayVolume. The restricted SWI's : <Tracker_Load>, <Tracker_MemoryLoad>, <Tracker_Play>, <Tracker_Stop>, <Tracker_Stereo>, <Tracker_SetPos>, <Tracker_PlayNote>, <Tracker_Volume>. DATALTracker_Unlock (&4320E) #Parent Tracker_ => R0 = locking code (specified in Tracker_Lock) This SWI should be called to unlock the module after it has been locked with <Tracker_Lock>. If the value passed in R0 is different to the locking code given in the lock SWI, or the module has not been locked, an error is generated.DATA�Tracker_MuteChannel (&4320F) #Parent Tracker_ => R0 = channel to mute (1-8) This SWI allows you to turn off selected channels while leaving all the other channels unaffected. The channels can be turned back on by using the <Tracker_RestoreChannel> SWI. No error is generated if the channel number is higher than the number of channels actually being used by the TrackerModule.DATA/Tracker_RestoreChannel (&43210) => R0 = channel to turn on (1-8) This SWI will reverse the effect of a <Tracker_MuteChannel> SWI, and turn the selected channel back on. No error is generated if the channel number is higher than the number of channels actually being used by the TrackerModule.DATATracker_Speed (&43211) #Parent Tracker_ => R0 = new speed setting (0-3) This SWI will select the future sample rate and overall pitch to cater for VIDC enhancers and 8-channel tunes, taking effect immediately if a tune is currently playing. For details of the different options see the command *PlaySpeed. This SWI is not included in the locking system because it was only introduced in version 4.04, and some programs may have already been written which use the locking system but don't control the sample speed/pitch etc. DATATracker_Volume (&43212) #Parent Tracker_ => R0 = new overall volume (0-127) or -1 to read volume <= R0 = old volume This SWI will set the overall volume of any tunes playing by subtracting (254-volume*2) from the volume of any sample playing. This takes effect immediately, and also affects samples which are in mid-play. Calling the SWI with R0=-1 will return the current volume in R0. You can use this SWI to provide smooth fade-outs and fade-ins, for example. This SWI is part of the locking system. DATADTracker_TranslateVolume (&43214) #Parent Tracker_ => R0 = Soundtracker volume to convert (0-64) <= R0 = Logarithmic volume (0-255), 255=max. This SWI will convert a soundtracker volume (as returned by <Tracker_ReadSampleTable> when a soundtracker tune is playing) into a Tracker format logarithmic volume (0-255). DATABTracker_UpdateData (&43215) #Parent Tracker_ This is really an editor SWI which you should call whenever you alter one of the following, so that the module can update its data:- #Indent 2 � Number of voices (and therefore pattern length) � Sample length/load new sample � Music length � Stereo settings (Tracker) DATA�Note translation table \# Note Sample period #LINE 1 C -1 &358 2 C#-1 &328 3 D -1 &2FA 4 D#-1 &2D0 5 E -1 &2A6 6 F -1 &280 7 F#-1 &25C 8 G -1 &23A 9 G#-1 &21A 10 A -1 &1FC 11 A#-1 &1E0 12 B -1 &1C5 13 C -2 &1AC 14 C#-2 &194 15 D -2 &17D 16 D#-2 &168 17 E -2 &153 18 F -2 &140 19 F#-2 &12E 20 G -2 &11D 21 G#-2 &10D 22 A -2 &FE 23 A#-2 &F0 24 B -2 &E2 25 C -3 &D6 26 C#-3 &CA 27 D -3 &BE 28 D#-3 &B4 29 E -3 &AA 30 F -3 &A0 31 F#-3 &97 32 G -3 &8F 33 G#-3 &87 34 A -3 &7F 35 A#-3 &78 36 B -3 &71 DATA�Tracker and Soundtracker commands In all tunes, there are special commands which have a type (0-&F for amiga, 0-9 & A-Z for Tracker) and data (usually presented as a hex byte, ie. &XX), which is sometimes treated as two seperate nibbles (ie. arpeggio). A list of the commands found in Tracker/STracker tunes is as follows: Command Effect #LINE 0 (both) Arpeggio - note2=<base note=>Tracker_NoteTable>+(first digit of data) semitones note3= " " +(second "" ") " Play note3 for one vsync, then note2, base note, note3, note2 and then the base note to achieve a chord effect (ie. C-2 with command 0 data '&47' (hex) would play a major arpeggio of C-2, E-2, G-2.If the speed is less than 6, the arpeggio will be cut short. 1 (both) Pitch slide (portamento up) - While the command is playing, DECREMENT the sample period by \<parameter> (0-15 usually). This has the effect of INCREASING the pitch smoothly without restarting the sample. Note that the pitch gained by a fixed change to the sample period is not constant over the 3 octaves. 2 (both) Pitch slide (portamento down) - Like command 1 but slides the pitch down. 3 (amiga only) Portamento - Sounds similar to commands 1 & 2, but behaves differently. When you use command 3 with a note specified, the note is not played, but the pitch of the note is set as the 'goal' of the portamento. Then, whenever a command 3 comes up, the pitch is automatically slided in the appropriate direction by the value last given as a parameter for command 3, until the 'goal' is met, and further command 3's will have no effect. 4 (amiga only) Vibrato - This causes the volume to rise and fall in a warbling effect. The first digit gives the speed of the volume change (1=slow, &F=fast), and the second digit gives the magnitude of the vibrato. The vibrato is created by subtracting a sinusoidally varying amount from the volume of the channel. 5,6,7 (amiga) Combinations of the volume and pitch slides (Not implemented) 9 (amiga only) Set sample offset (Not implemented). A (amiga) Volume slide - If the first nibble is non-zero, add this value to the current volume every vsync, else subtract the second nibble in a similar fashion. G, H (Tracker) Volume slide up, down - These commands are the same as the A command on the amiga, but take a byte parameter. B (amiga) Position jump - J (Tracker) When this command is met, jump to position \<parameter> in song. B (Tracker) Break pattern - Equivalent to amiga command D C (amiga) Set volume - V (Tracker) Alters the current volume of the channel to the value specified (0-64 amiga, 0-255 arc). Volume 0 means mute sound. D (amiga) Break pattern - B (Tracker) When this command is encountered, the pattern is ended, and the next pattern jumped to. E (amiga) Various commands (ie. h/w filter commands) [Not implemented]. E (Tracker) Set stereo - Set the stereo position (1-7) of the current sound channel (1-8). F (amiga) Set speed - S (Tracker) Sets the speed (number of vsyncs between events) to parameter. DATA�Errors generated by TrackerModule Error Name Meaning #LINE &43200 No tune loaded An operation was attempted which requires a tune to be loaded into memory before hand using *PlayMod or <Tracker_Load>. &43201 Sequence position out of range The sequence position given with *PlayPos or SWI <Tracker_SetPos> was higher than the actual number of patterns in the song. &43202 No room for module The trackermodule could not claim enough RMA workspace to load the module. To get more memory, quit basic to the supervisor prompt, and retry. If you are using the desktop instead, remove an application and retry. &43203 Channel number out of range The sound channel number was not a value between 1 and the number of sound channels used for that particular tune. &43204 Sample number out of range The sample number was not within the range of 1-36. &43205 Note number out of range The note number was not within the range of 1-36. &43206 Volume out of range The volume was not within the range of 0-255 &43207 Module already locked <Tracker_Lock> was called when the module was already locked. The module can only be unlocked when the application in control of the module issues <Tracker_Unlock>. &43208 Unlock failed <Tracker_Unlock> was called but either the wrong locking code was specified, or the module was not locked at the time. &43209 TrackerModule in use An attempt was made to execute one of the restricted commands or SWI's while the module was locked (see <Tracker_Lock>) &4320A Speed not implemented <Tracker_Speed> was called with R0 outside the range of values currently accepted. &4320B Bad sample looping Values of repeat offset/repeat length would cause sample to loop outside its limit. DATATrackerModule sound data block Offset Data #LINE 0 The current pitch accumulator. (shift right 16 bits to get the actual byte offset into the sample being played). 4 The current pitch increment (added to accumulator after every byte filled). This is obtained using internal tables given the sample period (word 7) 8 The sample loop offset (given in bytes). When the routine reaches the end of a sample or the sample length, the accumul- ator is loaded with this value shifted left 16 bits (ie. to give a byte offset). If this is a zero value, the sample will stop instead of looping. 12 The sample length / repeat length (in bytes). The routine checks every 4 bytes filled to see if the current accumulator exceeds this value when shifted right 16 bits. (See above) 16 The sample number (1-36). 20 The current volume (0-255). This value is subtracted from every byte filled, therefore 0 = maximum volume and 255 = silent. NB This is the reverse of the normal volume command. 24 This is the tracker format note number of the sample being played (1-36, 1=C octave 1 36=B octave 3). The arpeggio command makes use of this word. If this word is zero, no sound will be played. 28 This is a copy of the sample period (from which the pitch increment value is calculated), and is used by the portamento commands. The range of the sample period is from 1 to hex &400 (although the portamento commands have smaller limits in practice). 32 Word 0 of sound channel 2... 36 Word 1 of sound channel 2... etc. etc until word 8 of sound channel 8 DIR$�G���Pn%�!Root�G����m%Validate�G�����m%�EncryptܞG����n%"WhoIs�G���~�m%userdata�G����9n%VSetUIDd�G���0�m%�ReadUID�G���n�m%cReadPIDDATA�Users #Parent !Root #Prefix Users_ #Table Columns 3 <Validate> <WhoIs> <Encrypt> <SetUID> <ReadUID> <ReadPID> #EndTable This module is currently under development. It provides various calls to allow a multi-user system on top of RiscOS. DATAUsers_Validate #Parent Users_ => R0 = pointer to login name R1 = block to hold <user data=>users_userdata> (1024 bytes recommended) <= block at R1 updated, or error if not known This SWI is used to read the password database in {/}Unix:etc.passwd{/}. DATA�Users_Encrypt #Parent Users_ => R0 = pointer to ctrl terminated string <= string at R0 updated This SWI is used to encrypt a password. The encryption technique is not guarenteed secure and was thrown together very quickly. DATA"Users_WhoIs #Parent Users_ => R0 = uid number R1 = block to hold <user data=>users_userdata> (1024 bytes recommended) <= block at R1 updated, or error if not known This SWI is used to read the password database in {/}Unix:etc.passwd{/} to convert a uid number to a block of data. DATAUser data block Offset Contents #Line &0 user id (uid) &4 group id (gid) &8 pointer to shell name &C pointer to <encrypted=>Users_Encrypt> password &10 pointer to login name &14 pointer to user name &18 pointer to home directory (asterisk translated to colon) DATAVUsers_SetUID #Parent Users_ => R0 = uid number R1 = pointer to password, or 0 to ignore password This SWI is used to set the current process' uid. If the password is incorrect, or the user is not root then this call will cause an error, leaving the user in the previous uid. The {fCode}su{f} command uses this call to change uid's. DATA�Users_ReadUID #Parent Users_ <= R0 = uid number R1 = current gid number This SWI is used to read the current process' uid and gid. DATAcUsers_ReadPID #Parent Users_ <= R0 = pid number This SWI is used to read the current pid. DIR$,,��F���K��@!RootDATA@VProtect #Parent !Root #Prefix VProtect_ FI OF LU MM CF DIR$,,�G����n}�W!RootDATAWWimpHack #Parent !Root #Prefix WimpHack_ #Table Columns 2 ResizeIcon #EndTable DIR$,,t�F���(�qd!RootDATAdWimpKey #Parent !Root #Prefix WimpKey_ #Table Columns 1 CodeToString StringToCode #EndTable DIR$,,�F���M�b!RootDATAbABCLib #Parent !Root #Prefix ABCLib_ #Table Columns 2 Init Register Profile WAC #EndTable DIR$x�F���(�M�!Root�F�������Menu��F�����MEndMenuȨF�����MOption�F����MDash�F���m�MCommand(�F���p_�MdEnumerate��F���0��M�MemoryDATA�Director #Parent !Root #Prefix Director_ #Table Columns 2 <Menu> <EndMenu> <Option> <Dash> <Command> <Enumerate> <Memory> #EndTable DATA�Director command SWI equivilents #Parent Director_ => R0 = pointer to line The SWIs : #Indent 2 <Director_Menu> <Director_EndMenu> <Director_Option> <Director_Dash> <Director_Command> #Indent are directly equivilent to their OSCLI command counterparts. These are defined because processing star commands is very slow and in dynamic menus especially it is important that items can be added to menus quickly. DATA#Include Director_MenuDATA#Include Director_MenuDATA#Include Director_MenuDATA#Include Director_MenuDATAdDirector_Enumerate (&4A105) Enumerates lists held by director => R0 = pointer to block or to start use : 0 = stored menus 1 = displayed menus 2 = icons 3 = filters <= R0 = new pointer to block (0 for end) R1 = pointer to name of block Dynamic menus to view these lists and act on them can be found on Director's main menu. DATA�Director_Memory (&4A106) Returns the memory used by director <= R0 = module size (constant) R1 = main workspace size (constant) R2 = total size of all allocated blocks R3 = number of blocks allocated R4 = dynamic area size (0 for no dynamic area) R5 = bytes free in dynamic area R6 = largest block in dynamic area A dynamic menu to display this information can be found on Director's main menu. DIR$,,T�G�����g!RootDATAgEasyFS #Parent !Root #Prefix EasyFS_ #Table Columns 2 LockerOp SetFonts MessageState #EndTable DIR$,,�F���9��;!RootDATA;HelixBasic #Parent !Root #Prefix HelixBasic_ Setup DIR$,,P�F���f�!RootDATALargerSupport #Parent !Root #Prefix LargerSupport_ #Table Columns 2 WriteShift ReadFastMove EnableFilter DisableFilter ReadWindowsOpened ReadPollWordAddress Reorganise FindLeft FindRight FindUp FindDown FindNone CopySprite ReadBackdropCommandTail ReadRegister #EndTable DIR$,,��G�������!RootDATA�PCDevHelp #Parent !Root #Prefix PCDevHelp_ #Table Columns 2 Init RegisterIO RegisterMem RegisterDMA RegisterEvent RegisterConfig RegisterHPC GetStructAddr #EndTable DIR$,,p�G�������!RootDATA�PCIO #Parent !Root #Prefix PCIO_ #Table Columns 2 LPTInit LPTSetCallback COMInit COMSetCallback COMSetRate COMSetByteFormat COMSetModem COMTransmit COMGetStatus COMReceive LPTReadPort #EndTable DIR$,,h�G������h!RootDATAhPCMem #Parent !Root #Prefix PCMem_ #Table Columns 2 SetMem FillPTE GetMemTbl ShowInfo #EndTable DIR$DIR$,,�F���}��&!RootDATA&Translator #Parent !Root #Prefix Translator_ #Table Columns 2 MakeMaps SetVariable ReadVariable UnpackPre Unpack SetPalette Rotate MirrorX MirrorY ClosestToRGB DMA PixelFreq CalcTrans Palette MoveWords ExchangeWords WriteWords TaskStart TaskQuit Heckbert CorrectCol CalcRange #EndTable DIR$,,\�G����l}�|!RootDATA|ZapJRF #Parent !Root #Prefix ZapJRF_ #Table Columns 2 RegisterScriptDirectives DeRegisterScriptDirectives #EndTable DIR$,,�F���a��Z!RootDATAZZapRedraw #Parent !Root #Prefix ZapRedraw_ #Table Columns 2 RedrawArea GetPaletteEntry RedrawRaster ConvertBitmap PrepareDataLine AddCursor FindCharacter MoveBytes CachedCharSize ConvBitmapChar CreatePalette InsertChar ReadSystemChars ReverseBitmaps ReadVduVars GetRectangle AddVduBitmaps CacheFontChars SpriteSize RedrawWindow #EndTable DATAEMiscellaneous SWIs #Parent StrongHelp:!Menu #Postfix _ Computer Concepts : #Indent 2 #Table Columns 3 <ABI> <ABCLib> <AudioManager> <AWRender> <ColourExtend> <DitherExtend> <DocumentManager> <FontDraw> <GDraw> <GSpriteExtend> <Hyphenator> <ImageExtend> <Impulse> <OLE> <PocketFS> <PocketLink> <Spell> <Stream> <StreamSquash> <WimpKey> #EndTable #Indent 0 Acorn utilities : #Indent 3 #Table Columns 4 <CompressJPEG> <DragAnObject> <FrontEnd> MakePSFont RemotePrinterSupport <ROMCache> #EndTable #Indent 0 John Kortink : #Indent 3 #Table Columns 4 <Borders> <Creator> <FileBuffer> <LZW> <LZWB> <LZWD> <MakeGIF> <Translator> #EndTable #Indent 0 Miscellaneous : #Indent 3 #Table Columns 4 <AEH=>AEHModule:!Root> <ArcFS> <ArcFSMemMan> <ARCTOOLS> <CAIFS> <Director> <Diss> <DSym> <EasyFS> <Euclid> <ProFiler=>Filer_> <Gdbm> <HelixBasic> <Interface> <IZipFS> <LargerSupport> <LineEditor> <NetMonitor> <MoDel> <NH> PCSupport <PCIO> <PCMem> <PCDevHelp> <PPADriver> <QTM> <ReadMail> <Spch> <SparkFS> <Tracker> <VProtect> <WimpExt=>WimpExt:!Root> <WimpHack> <ZapRedraw> <ZapJRF> #EndTable 0.99DATA�Misc SWIs manual #Align Centre {fh3}Miscellaneous SWIs manual{f} #line #Align Left This manual is part of a collection comprising the main public domain programming reference. The other manuals in the series are : #Indent 2 #Postfix :!Root <OS> The base operating system stuff <Wimp> The desktop part of the operating system <InetSWIs> Internet based SWIs <InetSocket> Internet socket calls <MiscSWIs> Miscellaneous SWIs <VDU> VDU commands <Toolbox> Toolbox (by Niel Bingham) #Indent For comments, suggestions and submissions for these, please mail Justin Fletcher <\<gerph@innocent.com\>=>#URL mailto:gerph@innocent.com> who is currently moderating the collection. The primary location for these manuals will be <http://freenet.barnet.ac.uk/manuals/=>#URL http://freenet.barnet.ac.uk/manuals/>. Click <here=>.hist103> for history information. # #Subpage hist100 History for Misc v1.00 #Align Right {/}10 Oct 1997{/} #Align Left � Changed all the bits around so that the main window looks a little more like the other manuals � Added some LineEditor documentation <Next history=>.hist101> #Subpage hist101 History for Misc v1.01 #Align Right {/}15 Nov 1997{/} #Align Left � Lots of changes from Dave Thomas; some AppEngine docs, CompressJPEG and SparkFS SWIs from his own manuals � DDEUtils bug fixes #Tab <Previous history=>.hist100> <Next history=>.hist102> #Subpage hist102 History for Misc v1.02 #Align Right {/}20 Dec 1997 - 15 Jan 1998{/} #Align Left � Added some Speak SWIs � DDEUtils moved to Wimp � Added real Speak documentation from Johnathan Duddington. #Tab <Previous history=>.hist101> <Next history=>.hist103> #Subpage hist103 History for Misc v1.03 #Align Right {/}22 Mar 1998{/} #Align Left � Misc minor changes #Tab <Previous history=>.hist102> DIR$��P�G����2��3!RootH�H�����+dCodecOp��H�����+�Heap��H���V�+�SocketOpx�H���o�+�StringOpDATA�AppEngine Module #Prefix AppEngine_ #Sprite 0,0 !appengine #Indent 5 {*}AppEngine Module{*} 0.06 (13 Sep 1997) #Line #Table Columns 2 ResourceOp <StringOp> WindowOp IconOp DateOp <SocketOp> <CodecOp> URLOp MemoryOp <Heap> #EndTable #Indent DIR$dd��G����_���3!Root��G����!��90��G������$1DATA�AppEngine_CodecOp (&4D946) #Wrap off => R0 = <reason code=>.reasons> other registers are reason code dependent <= R0 preserved other registers are reason code dependent #Wrap This call provides operations to encode and decode data into various encoded formats. #Subpage reasons AppEngine_CodecOp reason codes #Wrap off R0 Action #Line 0 <Encode data into a Base64 string=>AppEngine_CodecOp0> 1 <Decode Base64 data into a string=>AppEngine_CodecOp1> #Wrap DATA9AppEngine_CodecOp 0 (&4D946) #Parent AppEngine_CodecOp => R0 = 0 R1 = pointer to input data R2 = length of input data (no more than 189 bytes) <= R0, R1, R2 preserved R3 = pointer to Base64-encoded string Encodes data into a Base64 string. This call is used to encode small amounts of data into the 7-bit MIME Base64 encoded format, for use in Internet applications. Since the output is a string, limited to a maximum of 255 characters you must ensure that you supply no more than 189 bytes of input. This is because for every three bytes of input, the encoder generates four bytes of output and also strings of certain lengths are suffixed with '=' characters which reduces the maximum input length more. The exact method for detemining the output string length is: ( ( in_length * 4 / 3 ) + 3 ) AND NOT 3 DATA$AppEngine_CodecOp 1 (&4D946) #Parent AppEngine_CodecOp => R0 = 1 R1 = pointer to Base64-coded input data R2 = length of input data (no more than 340 bytes) <= R0, R1, R2 preserved R3 = pointer to decoded string Decodes Base64 data into a string. This call is used to decode small amounts of MIME Base64 encoded data into a string, for use in internet applications. Since the output is a string, limited to a maximum of 255 characters you must ensure that you supply no more than 340 bytes of input. This is because for every four bytes of input, the encoder generates three bytes of output. The method for detemining the output string length is not detailed here as it cannot be easily calculated without access to the input data. This SWI is not suitable for decoding non-ASCII data. DIR$����G���%Q�M3!root�G����6���0��G���|4���1��G����1��;2�G����.��3,�G���4,��-4\�G���<F��'MainDATAMAppEngine_Heap (&4D949) #Wrap off => R0 = <reason code=>.reasons> other registers are reason code dependent <= R0 preserved other registers are reason code dependent #Wrap This call provides a <garbage collecting heap manager=>appengine_heapmain>. #Subpage reasons AppEngine_Heap reason codes #Wrap off R0 Action #Line 0 <creates a new heap=>AppEngine_Heap0> 1 <deletes a heap=>AppEngine_Heap1> 2 <claims a block of memory from a heap=>AppEngine_Heap2> 3 <releases a block of memory from a heap=>AppEngine_Heap3> 4 <resizes a block of memory in a heap=>AppEngine_Heap4> #Wrap DATA�AppEngine_Heap 0 (&4D949) #Parent AppEngine_Heap => R0 = 0 R1 = pointer to address to create heap at (usually =HIMEM), or zero to create a dynamic area for the heap R2 = pointer to a name for the dynamic area (if R1=0) <= R1 = pointer to heap This call is used to create a new heap, either at the end of application memory or in a new dynamic area. The heap manager will automatically claim the required amount of memory from the free pool to set up the heap structure. DATA�AppEngine_Heap 1 (&4D949) #Parent AppEngine_Heap => R0 = 1 R1 = pointer to heap <= R1 = 0 (i.e. heap to return) This call is used to delete the specified heap. All memory associated with the heap is returned to the free pool. DATA;AppEngine_Heap 2 (&4D949) #Parent AppEngine_Heap => R0 = 2 R1 = pointer to heap R2 = size of block required (bytes) <= R1 = pointer to anchor This call is used to claim a block of memory from the heap. The size of the block claimed will always be rounded up to at least the nearest multiple of four bytes. The call returns a pointer to a word holding the address of the block, so in BASIC terms block_address%=!anchor%. Blocks can move about in response to *any* heap operation, so you must ensure your block_address% is updated after any heap operation. DATAAppEngine_Heap 3 (&4D949) #Parent AppEngine_Heap => R0 = 3 R1 = pointer to heap R2 = pointer to anchor <= R1 = 0 (i.e. anchor to return) This call is used to release a block of memory from the heap, and return the resultant free memory back to the free pool. DATA-AppEngine_Heap 4 (&4D949) #Parent AppEngine_Heap => R0 = 4 R1 = pointer to heap R2 = pointer to anchor R3 = bytes to be added or removed from the end of the specified block (a signed integer) <= R1 = -1 for success, 0 for failure This call is used to add (R3 positive) or remove (R3 negative) memory to/from the end of the specified block. If adding to a block, then on return R1 holds a value indicating whether the operation was successful or not. If removing from a block, then the resultant free memory is returned back to the free pool. Note that as with the claim operation, block sizes are rounded *up* to at least the nearest multiple of four bytes. This means that if you try to remove, say, 3 bytes from a block (R3 = -3) then *nothing* will be removed since -3 is rounded up to zero. DATA'AppEngine_Heap (&4D949) #Parent AppEngine_ Introduction AppEngine provides a �garbage collecting� heap manager. This is unlike RISC OS's own <OS_Heap=>OS:OS_Heap> heap manager in that it ensures any unused memory inside the heap is returned to the free memory pool. This is achieved by allowing blocks claimed from the heap to �float� (move about within the heap) and by referencing each of the blocks indirectly via a fixed address known as an �anchor�. Doing this allows the heap manager to squeeze out any free space from the heap without this affecting the client application. Any heap operation can cause the blocks� position in memory to move. One difference between this heap manager and others is that this one never allows gaps of free space to appear inbetween the blocks. As soon as any free space is created, then the heap manager will rearrange the heap such that the block of free space is removed. This means that the heap is always kept at its smallest possible size. Anchors Anchors are located at the base of the heap immediately before the blocks. Initially the heap manager allocates enough space for eight anchors and hence eight heap-managed blocks. If you claim a ninth block, then the heap manager will make space for eight more anchors, and so on. However (in this version) this memory is *not* automatically returned to the free pool. For this reason it is strongly recommended that you should maintain a �blocks_allocated� counter in your own heap interface code, and when it becomes zero, you should delete the heap. When a claim for a block is made and blocks_allocated is zero, you should (re-)create the heap. Warnings i. When the heap manager is active and is residing at the top of your application's slot, you should *never* use Wimp_SlotSize (or END= in BASIC since that calls Wimp_SlotSize). Neither should you attempt to store anything above the heap. ii. Executable code may not be contained in dynamic areas, so you should avoid keeping code in a heap-managed block. iii. The internal structure of the heap will not be documented here. To ensure future compatibility you should only use the defined software interfaces. Notes i. The heap manager is very frugal, it doesn�t align blocks or block sizes to 16-byte boundaries as some others do. ii. It is written in 100% hand-crafted assembler and I've optimised certain parts of it for the StrongARM, despite not owning one. (In fact it was written on my 2Mb ARM 2 A3000. :-) iii. It is coded to work if using memory above 2Gb, which I understand will happen if you have 128Mb or more memory (this remains untested). Example {fCode} REM Create a heap residing above BASIC's workspace SYS "AppEngine_Heap",0,HIMEM,"" TO ,heap% REM Claim a 2000 byte block SYS "AppEngine_Heap",2,heap%,2000 TO ,anchor% REM Find the base address of the block address%=!anchor% REM Add 48 bytes to the end of the block SYS "AppEngine_Heap",4,heap%,anchor%,48 TO ,success% REM Delete the block SYS "AppEngine_Heap",3,heap%,anchor% TO ,anchor% REM Delete the heap SYS "AppEngine_Heap",1,heap% TO ,heap% {f} DIR$��<�G���B��3!root��G����n��0��G���m��+1�G����k�� 2 �G����j��3,�G���Y��I4DATA�AppEngine_SocketOp (&4D945) #Wrap off => R0 = <reason code=>.reasons> other registers are reason code dependent <= R0 preserved other registers are reason code dependent #Wrap This call provides operations to control file descriptors, which are requried to use the <Socket_Select=>InetSocket:Socket_Select> SWI. A file descriptor is a block of 32 bytes (256 bits) which indicates which sockets should be checked for activity. Note: The Acorn C Socket library provides equivalents of this SWI in headerfile macros. #Subpage reasons AppEngine_SocketOp reason codes #Wrap off R0 Action #Line 0 <clears a file descriptor=>AppEngine_SocketOp0> 1 <copies one file descriptor to another=>AppEngine_SocketOp1> 2 <sets a bit within a file descriptor=>AppEngine_SocketOp2> 3 <clears a bit within a file descriptor=>AppEngine_SocketOp3> 4 <tests whether a bit within a file descriptor is set=>AppEngine_SocketOp4> #Wrap DATAAppEngine_SocketOp 0 (&4D945) #Parent AppEngine_SocketOp => R0 = 0 R1 = pointer to block of 32 bytes to become a file descriptor <= R0, R1 preserved This call is used to clear the specified block of 32 bytes so that it may be used as a file descriptor block. DATA+AppEngine_SocketOp 1 (&4D945) #Parent AppEngine_SocketOp => R0 = 1 R1 = pointer to destination file descriptor R2 = pointer to source file descriptor <= R0, R1, R2 preserved This call is used to copy one file descriptor block to another (or memory to be used as a new file descriptor). DATA AppEngine_SocketOp 2 (&4D945) #Parent AppEngine_SocketOp => R0 = 2 R1 = bit to set (0-255) R2 = pointer to file descriptor <= R0, R1, R2 preserved This call is used to set a bit within a file descriptor indicating that the respective socket is active. DATAAppEngine_SocketOp 3 (&4D945) #Parent AppEngine_SocketOp => R0 = 3 R1 = bit to set (0-255) R2 = pointer to file descriptor <= R0, R1, R2 preserved This call is used to clear a bit within a file descriptor indicating that the respective socket is active. DATAIAppEngine_SocketOp 4 (&4D945) #Parent AppEngine_SocketOp => R0 = 4 R1 = bit to test (0-255) R2 = pointer to file descriptor <= R0, R2 preserved R1 = -1 if the bit was set, or 0 if it was not set This call is used to test if a bit within a file descriptor is set, indicating whether the respective socket is active. DIR$��,�G������ҋ3!Root��G������g0 �G����ё�X1x�G���� ���10`�G���%��m12�G������13�G���G���\14DG���r���2G�������3�G���Q���}4@G������}5�G��������6�G�������[7� G���!���8G���8~��9DATA�AppEngine_StringOp (&4D941) #Wrap off => R0 = <reason code=>.reasons> other registers are reason code dependent <= R0 preserved other registers are reason code dependent #Wrap This call provides various operations to deal with ASCII strings. <More info=>.more>. #Subpage more AppEngine_StringOp information This call provides various operations to deal with ASCII strings. Most (if not all) of the calls place their result within AppEngine's workspace and return a pointer to the string within the workspace. For this reason, you must always copy the string to somewhere else before calling StringOp again - if you don't do that then further calls to StringOp will overwrite the workspace, destroying the string. All strings are stored in the same style as BASIC, i.e. with CR (13) as the terminating character. As with BASIC, they are limited to a maximum of 256 characters, including terminator (although this may change later on). Typically you will use the operations in this way: {fCode:SYS "AppEngine_StringOp",1,source% TO ,,string$} Input strings can be terminated by any control character, unless otherwise stated. #Subpage reasons AppEngine_StringOp reason codes #Wrap off R0 Action #Line 0 <reads a string from memory (LF terminated)=>AppEngine_StringOp0> 1 <reads a string from memory (control terminated)=>AppEngine_StringOp1> 2 <shortens a string, adding an ellipsis on the left=>AppEngine_StringOp2> 3 <shortens a string, adding an ellipsis on the right=>AppEngine_StringOp3> 4 <converts a string to lower-case characters=>AppEngine_StringOp4> 5 <converts a string to upper-case characters=>AppEngine_StringOp5> 6 <tests whether a string is a valid integer number=>AppEngine_StringOp6> 7 <strips leading spaces and tabs from a string=>AppEngine_StringOp7> 8 <compares two strings=>AppEngine_StringOp8> 9 <joins two strings=>AppEngine_StringOp9> 10 <returns the leafname from a path string=>AppEngine_StringOp10> 11 returns the branchname from a path string (not yet implemented) 12 <substitutes arguments into a string=>AppEngine_StringOp12> 13 <returns the length of a string=>AppEngine_StringOp13> 14 <copies a string=>AppEngine_StringOp14> #Wrap DATAgAppEngine_StringOp 0 (&4D941) #Parent AppEngine_StringOp => R0 = 0 R1 = pointer to address to read string from <= R0 preserved R1 = pointer to character after the input�s terminator R2 = pointer to read string (up to 255 chars) This call converts an LF-terminated string in memory into a CR-terminated string in the module's internal workspace. DATAXAppEngine_StringOp 1 (&4D941) #Parent AppEngine_StringOp => R0 = 1 R1 = pointer to address to read string from <= R0 preserved R1 = pointer to character after the input�s terminator R2 = pointer to read string (up to 255 chars) This call converts a string in memory into a CR-terminated string in the module's internal workspace. DATA�AppEngine_StringOp 10 (&4D941) #Parent AppEngine_StringOp => R0 = 10 R1 = pointer to address to read string from R2 = directory separator character, typically '.' or '/' (ASCII code) <= R0, R2 preserved R1 = pointer to character after the input's terminator R3 = pointer to output string (up to 255 chars) This call takes an input path string (e.g. �ADFS::HD4.$.Sounds.Wave�) and returns what follows the last instance of the separator character (in this case, �Wave�). DATAmAppEngine_StringOp 12 (&4D941) #Parent AppEngine_StringOp => R0 = 12 R1 = pointer to template string, containing '%0' up to '%3'. R3 = string to substitute for '%0' or 0 for no string R4 = string to substitute for '%1' or 0 for no string R5 = string to substitute for '%2' or 0 for no string R6 = string to substitute for '%3' or 0 for no string <= R0, R3, R4, R5, R6 preserved R1 = pointer to character after the template string's terminator R2 = pointer to output string (up to 255 chars) This call takes an input template string and substitutes another string where an identifier �%0�..�%3� appears. DATAAppEngine_StringOp 13 (&4D941) #Parent AppEngine_StringOp => R0 = 13 R1 = pointer to address to read string from <= R0 preserved R1 = pointer to character after the input's terminator R2 = length of string This call determines the length of a string, in characters. DATA\AppEngine_StringOp 14 (&4D941) #Parent AppEngine_StringOp => R0 = 14 R1 = pointer to address to read string from R2 = pointer to address to copy string to <= R0 preserved R1 = pointer to character after the input's terminator R2 = pointer to character after the output's terminator This copies a string from one location to another. DATA�AppEngine_StringOp 2 (&4D941) #Parent AppEngine_StringOp => R0 = 2 R1 = pointer to address to read string from R2 = length of output string (maximum of 255, \<3 is undefined) <= R0, R2 preserved R1 = pointer to character after the input�s terminator R3 = pointer to output string (up to 255 chars) This call copies a string, truncating the left-hand side and prefixing an ellipsis (�...�) if it's longer than the specified size. DATA�AppEngine_StringOp 3 (&4D941) #Parent AppEngine_StringOp => R0 = 3 R1 = pointer to address to read string from R2 = length of output string (maximum of 255, \<3 is undefined) <= R0, R2 preserved R1 = pointer to character after the input�s terminator R3 = pointer to output string (up to 255 chars) This call copies a string, truncating the right-hand side and appending an ellipsis (�...�) if it�s longer than the specified size. DATA}AppEngine_StringOp 4 (&4D941) #Parent AppEngine_StringOp => R0 = 4 R1 = pointer to address to read string from <= R0 preserved R1 = pointer to character after the input's terminator R2 = pointer to output string (up to 255 chars) This call converts a string in memory into a CR-terminated string, using only lower-case characters, in the module's internal workspace. DATA}AppEngine_StringOp 5 (&4D941) #Parent AppEngine_StringOp => R0 = 5 R1 = pointer to address to read string from <= R0 preserved R1 = pointer to character after the input's terminator R2 = pointer to output string (up to 255 chars) This call converts a string in memory into a CR-terminated string, using only upper-case characters, in the module's internal workspace. DATA�AppEngine_StringOp 6 (&4D941) #Parent AppEngine_StringOp => R0 = 6 R1 = pointer to address to read string from <= R0 preserved R1 = pointer to character after the input's terminator R2 = TRUE (-1) or FALSE (0) for valid or invalid respectively This call reads a string from memory, if it finds that the string contains non-numeric characters then it will return FALSE. If it finds that the string contains only numeric characters, then it will return TRUE. DATA[AppEngine_StringOp 7 (&4D941) #Parent AppEngine_StringOp => R0 = 7 R1 = pointer to address to read string from <= R0 preserved R1 = pointer to character after the input's terminator R2 = pointer to output string (up to 255 chars) This call converts an input string which contains leading space and tab characters to one without them.DATAAppEngine_StringOp 8 (&4D941) #Parent AppEngine_StringOp => R0 = 8 R1 = pointer to address to read string from R2 = pointer to address to read second string from <= R0 preserved R1 = pointer to character after the input's terminator R2 = pointer to character after the second input's terminator R3 = -1 for string 1 \< string 2 0 for string 1 = string 2 1 for string 1 > string 2 This call compares two strings and returns an integer representing the relationship of the two strings (less than, equal, greater than). DATA�AppEngine_StringOp 9 (&4D941) #Parent AppEngine_StringOp => R0 = 9 R1 = pointer to address to read first string from R2 = pointer to address to read second string from <= R0 preserved R1 = pointer to character after the input's terminator R2 = pointer to character after the second input's terminator R3 = pointer to output string (up to 255 chars) This call takes two strings and returns the second string joined to the first. DIR$���H���o���3!Root@H����<�3!InfoPH���'���3MiscH�������3Misc0�G����z�3Misc1�H���p��3Misc2�H������3Misc3�H���`��|3Misc4G���w���3Misc5�H����a��3Say�H��� m�k3SayWG�����a3StopdH���㨹�3ReadyH������3Misc6DATA�Speak #Parent !Root #Prefix Speak_ #Table Columns 2 <Ready> <Misc> <Say> <SayW> <Stop> Pitch Speed WordGap PitchRange #EndTable #Line <Info on module=>Speak_!Info> DATASpeak #Parent Speak_ Module name: Speak Author: Johnathan Duddington Version: 2.09 (23 Jul 1997) #Line The Speak module provides facilities to make simple lines of text into spoken words. This documentation was provided with his permission. Many thanks to him. DATA�Speak_Misc (&4AD82) #Parent Speak_ => R0 = reason code 0 <return version=>Speak_Misc0> 1 <register=>Speak_Misc1> 2 <deregister=>Speak_Misc2> 3 <convert to phonemes=>Speak_Misc3> 4 <reload word dictionary=>Speak_Misc4> 5 <read voice names=>Speak_Misc5> 6 <set current voice=>Speak_Misc6> <= dependant on reason code This SWI is called to perform miscellaneous operations on the Speak module. DATA�Speak_Misc 0 #Parent Speak_Misc => R0 = 0 (read version) <= R0 = version major number as integer (eg 2) This SWI returns the major part of the version of the Speak module.DATASpeak_Misc 1 #Parent Speak_Misc => R0 = 1 (register) <= R0 = number of registered clients This SWI is used to register with the Speak module. All applications should use this to when they start to use the system and call <degregister=>Speak_Misc2> when they finish.DATA�Speak_Misc 2 #Parent Speak_Misc => R0 = 2 (deregister) <= R0 = number of registered clients This SWI is used to deregister with the Speak module. If nobody else is using it, the module will be killed. DATASpeak_Misc 3 #Parent Speak_Misc => R0 = 3 (convert to phonemes) R1 = pointer to zero terminated text string <= R0 = pointer to string This SWI is used to convert text into a list of phonemes. The returned buffer will be valid until the next call. DATA|Speak_Misc 4 #Parent Speak_Misc => R0 = 4 (reload word dictionary) This SWI is used to reload the word dictionary. DATA�Speak_Misc 4 #Parent Speak_Misc => R0 = 4 (read voice names) <= R0 = pointer to zero terminated array of name pointers This SWI is used to read the names of the currently known voices which Speak can use. DATA�Speak_Say (&4AD83) #Parent Speak_ => R0 = pointer to zero terminated string R1 = number of chracters to say, or 0 for all R2 = bits 0-7 : voice to use others reserved This SWI is called to speak a line of text. If an number of characters is given then it will be taken into account and if only a single word has been given then each individual letter spoken, otherwise the whole line will be spoken. DATAkSpeak_SayW (&4AD84) #Parent Speak_ As <Speak_Say> but does not return until speech has completed. DATAaSpeak_Stop (&4AD85) #Parent Speak_ This SWI is called to stop Speak from saying things. DATA�Speak_Ready (&4AD80) #Parent Speak_ <= R0 = 0 if still speaking, -1 if idle This SWI is called to check whether speech is still being output or not. DATA�Speak_Misc 4 #Parent Speak_Misc => R0 = 4 (set current voice) R1 = new voice number This SWI is used to set the current voice number.
00000000 48 45 4c 50 28 00 00 00 fd 00 00 00 ff ff ff ff |HELP(...........| 00000010 2c 00 00 00 00 fd ff ff 00 00 00 00 40 0a 00 00 |,...........@...| 00000020 00 01 00 00 00 00 00 00 24 00 00 00 44 49 52 24 |........$...DIR$| 00000030 48 0a 00 00 48 0a 00 00 74 0a 00 00 47 fc ff ff |H...H...t...G...| 00000040 c9 28 47 d4 84 00 00 00 33 00 00 00 00 00 00 00 |.(G.....3.......| 00000050 21 50 72 65 00 00 00 00 f8 0a 00 00 48 fd ff ff |!Pre........H...| 00000060 92 4c 6e 27 ad 03 00 00 13 00 00 00 00 00 00 00 |.Ln'............| 00000070 21 72 6f 6f 74 00 00 00 a8 0e 00 00 48 fd ff ff |!root.......H...| 00000080 3f ae 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |?..+,...........| 00000090 41 42 49 5f 00 00 00 00 44 0f 00 00 48 fd ff ff |ABI_....D...H...| 000000a0 94 ae 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |...+,...........| 000000b0 41 72 63 46 53 4d 65 6d 4d 61 6e 5f 00 00 00 00 |ArcFSMemMan_....| 000000c0 40 10 00 00 48 fd ff ff 08 af 80 2b 74 01 00 00 |@...H......+t...| 000000d0 13 01 00 00 00 00 00 00 41 72 63 46 53 5f 00 00 |........ArcFS_..| 000000e0 d0 1a 00 00 48 fd ff ff 9b b1 80 2b 50 00 00 00 |....H......+P...| 000000f0 13 01 00 00 00 00 00 00 41 52 43 54 4f 4f 4c 53 |........ARCTOOLS| 00000100 5f 00 00 00 0c 1d 00 00 48 fd ff ff d7 b2 80 2b |_.......H......+| 00000110 70 00 00 00 13 01 00 00 00 00 00 00 41 75 64 69 |p...........Audi| 00000120 6f 4d 61 6e 61 67 65 72 5f 00 00 00 74 22 00 00 |oManager_...t"..| 00000130 48 fd ff ff cc b3 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 00000140 00 00 00 00 41 57 52 65 6e 64 65 72 5f 00 00 00 |....AWRender_...| 00000150 64 23 00 00 48 fd ff ff 33 b4 80 2b 2c 00 00 00 |d#..H...3..+,...| 00000160 13 01 00 00 00 00 00 00 42 6f 72 64 65 72 73 5f |........Borders_| 00000170 00 00 00 00 ec 23 00 00 48 fd ff ff 9d b4 80 2b |.....#..H......+| 00000180 2c 00 00 00 13 01 00 00 00 00 00 00 43 41 49 46 |,...........CAIF| 00000190 53 5f 00 00 e4 24 00 00 48 fd ff ff 11 b5 80 2b |S_...$..H......+| 000001a0 2c 00 00 00 13 01 00 00 00 00 00 00 43 6f 6c 6f |,...........Colo| 000001b0 75 72 45 78 74 65 6e 64 5f 00 00 00 68 25 00 00 |urExtend_...h%..| 000001c0 48 fd ff ff 7b b5 80 2b 90 00 00 00 13 01 00 00 |H...{..+........| 000001d0 00 00 00 00 43 6f 6d 70 72 65 73 73 4a 50 45 47 |....CompressJPEG| 000001e0 5f 00 00 00 b0 2e 00 00 47 fb ff ff ca 5f 7d 82 |_.......G...._}.| 000001f0 45 08 00 00 13 00 00 00 00 00 00 00 43 72 65 61 |E...........Crea| 00000200 74 65 48 65 6c 70 00 00 f8 36 00 00 48 fd ff ff |teHelp...6..H...| 00000210 af b7 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |...+,...........| 00000220 43 72 65 61 74 6f 72 5f 00 00 00 00 cc 37 00 00 |Creator_.....7..| 00000230 48 fd ff ff 2b b8 80 2b 2c 00 00 00 13 01 00 00 |H...+..+,.......| 00000240 00 00 00 00 44 69 73 73 5f 00 00 00 f0 38 00 00 |....Diss_....8..| 00000250 48 fd ff ff 8b b8 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 00000260 00 00 00 00 44 69 74 68 65 72 45 78 74 65 6e 64 |....DitherExtend| 00000270 5f 00 00 00 94 3b 00 00 48 fd ff ff 69 b9 80 2b |_....;..H...i..+| 00000280 2c 00 00 00 13 01 00 00 00 00 00 00 44 6f 63 75 |,...........Docu| 00000290 6d 65 6e 74 4d 61 6e 61 67 65 72 5f 00 00 00 00 |mentManager_....| 000002a0 50 3c 00 00 48 fd ff ff e5 b9 80 2b 2c 00 00 00 |P<..H......+,...| 000002b0 13 01 00 00 00 00 00 00 44 72 61 67 41 6e 4f 62 |........DragAnOb| 000002c0 6a 65 63 74 5f 00 00 00 c0 3c 00 00 48 fd ff ff |ject_....<..H...| 000002d0 63 ba 80 2b 24 04 00 00 13 01 00 00 00 00 00 00 |c..+$...........| 000002e0 44 53 79 6d 5f 00 00 00 3c 62 00 00 48 fd ff ff |DSym_...<b..H...| 000002f0 aa c3 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |...+,...........| 00000300 44 79 6e 61 6d 69 74 65 5f 00 00 00 64 63 00 00 |Dynamite_...dc..| 00000310 48 fd ff ff 1c c4 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 00000320 00 00 00 00 45 75 63 6c 69 64 5f 00 70 64 00 00 |....Euclid_.pd..| 00000330 48 fd ff ff e0 c4 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 00000340 00 00 00 00 46 69 6c 65 42 75 66 66 65 72 5f 00 |....FileBuffer_.| 00000350 40 65 00 00 48 fd ff ff 53 c5 80 2b f4 01 00 00 |@e..H...S..+....| 00000360 13 01 00 00 00 00 00 00 46 69 6c 65 72 5f 00 00 |........Filer_..| 00000370 10 7d 00 00 45 fb ff ff f8 e7 0e e3 9f 02 00 00 |.}..E...........| 00000380 13 00 00 00 00 00 00 00 46 69 6c 74 65 72 00 00 |........Filter..| 00000390 b0 7f 00 00 48 fd ff ff 83 c9 80 2b 2c 00 00 00 |....H......+,...| 000003a0 13 01 00 00 00 00 00 00 46 6f 6e 74 44 72 61 77 |........FontDraw| 000003b0 5f 00 00 00 28 80 00 00 48 fd ff ff 02 ca 80 2b |_...(...H......+| 000003c0 2c 00 00 00 13 01 00 00 00 00 00 00 46 72 6f 6e |,...........Fron| 000003d0 74 45 6e 64 5f 00 00 00 a4 80 00 00 48 fd ff ff |tEnd_.......H...| 000003e0 58 ca 80 2b 70 01 00 00 13 01 00 00 00 00 00 00 |X..+p...........| 000003f0 47 64 62 6d 5f 00 00 00 18 8c 00 00 48 fd ff ff |Gdbm_.......H...| 00000400 84 cc 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |...+,...........| 00000410 47 44 72 61 77 5f 00 00 c8 8d 00 00 48 fd ff ff |GDraw_......H...| 00000420 17 cd 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |...+,...........| 00000430 47 53 70 72 69 74 65 45 78 74 65 6e 64 5f 00 00 |GSpriteExtend_..| 00000440 78 8e 00 00 48 fd ff ff 6d cd 80 2b 2c 00 00 00 |x...H...m..+,...| 00000450 13 01 00 00 00 00 00 00 48 79 70 68 65 6e 61 74 |........Hyphenat| 00000460 6f 72 5f 00 70 8f 00 00 48 fd ff ff b3 cd 80 2b |or_.p...H......+| 00000470 2c 00 00 00 13 01 00 00 00 00 00 00 49 6d 61 67 |,...........Imag| 00000480 65 45 78 74 65 6e 64 5f 00 00 00 00 94 90 00 00 |eExtend_........| 00000490 48 fd ff ff 06 ce 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 000004a0 00 00 00 00 49 6d 70 75 6c 73 65 5f 00 00 00 00 |....Impulse_....| 000004b0 54 91 00 00 48 fd ff ff 4f ce 80 2b 2c 00 00 00 |T...H...O..+,...| 000004c0 13 01 00 00 00 00 00 00 49 6e 74 65 72 66 61 63 |........Interfac| 000004d0 65 5f 00 00 5c 92 00 00 48 fd ff ff 94 ce 80 2b |e_..\...H......+| 000004e0 2c 00 00 00 13 01 00 00 00 00 00 00 49 5a 69 70 |,...........IZip| 000004f0 46 53 5f 00 88 93 00 00 48 fd ff ff ed ce 80 2b |FS_.....H......+| 00000500 ac 01 00 00 13 01 00 00 00 00 00 00 4c 69 6e 65 |............Line| 00000510 45 64 69 74 6f 72 5f 00 6c a0 00 00 48 fd ff ff |Editor_.l...H...| 00000520 53 d1 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |S..+,...........| 00000530 4c 5a 57 42 5f 00 00 00 e8 a0 00 00 48 fd ff ff |LZWB_.......H...| 00000540 9e d1 80 2b 50 00 00 00 13 01 00 00 00 00 00 00 |...+P...........| 00000550 4c 5a 57 44 5f 00 00 00 2c a3 00 00 48 fd ff ff |LZWD_...,...H...| 00000560 33 d2 80 2b 98 00 00 00 13 01 00 00 00 00 00 00 |3..+............| 00000570 4c 5a 57 5f 00 00 00 00 30 aa 00 00 48 fd ff ff |LZW_....0...H...| 00000580 25 d3 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |%..+,...........| 00000590 4d 61 6b 65 47 49 46 5f 00 00 00 00 c8 aa 00 00 |MakeGIF_........| 000005a0 48 fd ff ff 55 d3 80 2b 2c 00 00 00 13 01 00 00 |H...U..+,.......| 000005b0 00 00 00 00 4d 6f 44 65 6c 5f 00 00 78 ab 00 00 |....MoDel_..x...| 000005c0 48 fd ff ff 97 d3 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 000005d0 00 00 00 00 4e 65 74 4d 6f 6e 69 74 6f 72 5f 00 |....NetMonitor_.| 000005e0 38 ac 00 00 48 fd ff ff d4 d3 80 2b 2c 00 00 00 |8...H......+,...| 000005f0 13 01 00 00 00 00 00 00 4e 48 5f 00 b0 ac 00 00 |........NH_.....| 00000600 48 fd ff ff 05 d4 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 00000610 00 00 00 00 4f 4c 45 5f 00 00 00 00 24 ae 00 00 |....OLE_....$...| 00000620 48 fd ff ff 3a d4 80 2b 2c 00 00 00 13 01 00 00 |H...:..+,.......| 00000630 00 00 00 00 50 6f 63 6b 65 74 46 53 5f 00 00 00 |....PocketFS_...| 00000640 58 af 00 00 48 fd ff ff 79 d4 80 2b 2c 00 00 00 |X...H...y..+,...| 00000650 13 01 00 00 00 00 00 00 50 6f 63 6b 65 74 4c 69 |........PocketLi| 00000660 6e 6b 5f 00 cc b0 00 00 48 fd ff ff cf d4 80 2b |nk_.....H......+| 00000670 2c 00 00 00 13 01 00 00 00 00 00 00 50 50 41 44 |,...........PPAD| 00000680 72 69 76 65 72 5f 00 00 70 b1 00 00 48 fd ff ff |river_..p...H...| 00000690 0d d5 80 2b 74 04 00 00 13 01 00 00 00 00 00 00 |...+t...........| 000006a0 51 54 4d 5f 00 00 00 00 54 0f 01 00 48 fd ff ff |QTM_....T...H...| 000006b0 47 da 80 2b d8 00 00 00 13 01 00 00 00 00 00 00 |G..+............| 000006c0 52 65 61 64 4d 61 69 6c 5f 00 00 00 18 16 01 00 |ReadMail_.......| 000006d0 48 fd ff ff 4b db 80 2b 2c 00 00 00 13 01 00 00 |H...K..+,.......| 000006e0 00 00 00 00 52 4f 4d 43 61 63 68 65 5f 00 00 00 |....ROMCache_...| 000006f0 c4 16 01 00 48 fd ff ff 87 db 80 2b ec 00 00 00 |....H......+....| 00000700 13 01 00 00 00 00 00 00 53 70 61 72 6b 46 53 5f |........SparkFS_| 00000710 00 00 00 00 20 2f 01 00 48 fd ff ff a1 dc 80 2b |.... /..H......+| 00000720 2c 00 00 00 13 01 00 00 00 00 00 00 53 70 63 68 |,...........Spch| 00000730 5f 00 00 00 f4 2f 01 00 48 fd ff ff d6 dc 80 2b |_..../..H......+| 00000740 2c 00 00 00 13 01 00 00 00 00 00 00 53 70 65 6c |,...........Spel| 00000750 6c 5f 00 00 88 31 01 00 48 fd ff ff 15 dd 80 2b |l_...1..H......+| 00000760 2c 00 00 00 13 01 00 00 00 00 00 00 53 74 72 65 |,...........Stre| 00000770 61 6d 53 71 75 61 73 68 5f 00 00 00 8c 32 01 00 |amSquash_....2..| 00000780 48 fd ff ff 4f dd 80 2b 9c 01 00 00 13 01 00 00 |H...O..+........| 00000790 00 00 00 00 53 74 72 65 61 6d 5f 00 74 43 01 00 |....Stream_.tC..| 000007a0 48 fd ff ff 4d df 80 2b b4 03 00 00 13 01 00 00 |H...M..+........| 000007b0 00 00 00 00 54 72 61 63 6b 65 72 5f 00 00 00 00 |....Tracker_....| 000007c0 e0 9a 01 00 48 fd ff ff 4c e4 80 2b 14 01 00 00 |....H...L..+....| 000007d0 13 01 00 00 00 00 00 00 55 73 65 72 73 5f 00 00 |........Users_..| 000007e0 58 a3 01 00 48 fd ff ff 5f e5 80 2b 2c 00 00 00 |X...H..._..+,...| 000007f0 13 01 00 00 00 00 00 00 56 50 72 6f 74 65 63 74 |........VProtect| 00000800 5f 00 00 00 c4 a3 01 00 48 fd ff ff a5 e5 80 2b |_.......H......+| 00000810 2c 00 00 00 13 01 00 00 00 00 00 00 57 69 6d 70 |,...........Wimp| 00000820 48 61 63 6b 5f 00 00 00 48 a4 01 00 48 fd ff ff |Hack_...H...H...| 00000830 eb e5 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |...+,...........| 00000840 57 69 6d 70 4b 65 79 5f 00 00 00 00 d8 a4 01 00 |WimpKey_........| 00000850 48 fd ff ff 21 e6 80 2b 2c 00 00 00 13 01 00 00 |H...!..+,.......| 00000860 00 00 00 00 41 42 43 4c 69 62 5f 00 68 a5 01 00 |....ABCLib_.h...| 00000870 48 fd ff ff 54 e6 80 2b 10 01 00 00 13 01 00 00 |H...T..+........| 00000880 00 00 00 00 44 69 72 65 63 74 6f 72 5f 00 00 00 |....Director_...| 00000890 28 ac 01 00 48 fd ff ff 8b e7 80 2b 2c 00 00 00 |(...H......+,...| 000008a0 13 01 00 00 00 00 00 00 45 61 73 79 46 53 5f 00 |........EasyFS_.| 000008b0 bc ac 01 00 48 fd ff ff bc e7 80 2b 2c 00 00 00 |....H......+,...| 000008c0 13 01 00 00 00 00 00 00 48 65 6c 69 78 42 61 73 |........HelixBas| 000008d0 69 63 5f 00 24 ad 01 00 48 fd ff ff 7b e9 80 2b |ic_.$...H...{..+| 000008e0 2c 00 00 00 13 01 00 00 00 00 00 00 4c 61 72 67 |,...........Larg| 000008f0 65 72 53 75 70 70 6f 72 74 5f 00 00 68 ae 01 00 |erSupport_..h...| 00000900 48 fd ff ff 15 ea 80 2b 2c 00 00 00 13 01 00 00 |H......+,.......| 00000910 00 00 00 00 50 43 44 65 76 48 65 6c 70 5f 00 00 |....PCDevHelp_..| 00000920 44 af 01 00 48 fd ff ff 5a ea 80 2b 2c 00 00 00 |D...H...Z..+,...| 00000930 13 01 00 00 00 00 00 00 50 43 49 4f 5f 00 00 00 |........PCIO_...| 00000940 3c b0 01 00 48 fd ff ff b9 ea 80 2b 2c 00 00 00 |<...H......+,...| 00000950 13 01 00 00 00 00 00 00 50 43 4d 65 6d 5f 00 00 |........PCMem_..| 00000960 d0 b0 01 00 48 fd ff ff f1 ea 80 2b 0c 00 00 00 |....H......+....| 00000970 13 01 00 00 00 00 00 00 50 43 53 75 70 70 6f 72 |........PCSuppor| 00000980 74 5f 00 00 dc b0 01 00 48 fd ff ff 2d eb 80 2b |t_......H...-..+| 00000990 2c 00 00 00 13 01 00 00 00 00 00 00 54 72 61 6e |,...........Tran| 000009a0 73 6c 61 74 6f 72 5f 00 30 b2 01 00 48 fd ff ff |slator_.0...H...| 000009b0 6b eb 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |k..+,...........| 000009c0 5a 61 70 4a 52 46 5f 00 d8 b2 01 00 48 fd ff ff |ZapJRF_.....H...| 000009d0 a0 eb 80 2b 2c 00 00 00 13 01 00 00 00 00 00 00 |...+,...........| 000009e0 5a 61 70 52 65 64 72 61 77 5f 00 00 60 b4 01 00 |ZapRedraw_..`...| 000009f0 47 fd ff ff b7 05 13 fd 45 04 00 00 13 00 00 00 |G.......E.......| 00000a00 00 00 00 00 21 72 6f 6f 74 6f 6c 64 00 00 00 00 |....!rootold....| 00000a10 a8 b8 01 00 48 fd ff ff 1e ff 7f 2b f4 06 00 00 |....H......+....| 00000a20 03 00 00 00 00 00 00 00 61 62 6f 75 74 00 00 00 |........about...| 00000a30 9c bf 01 00 48 fd ff ff 85 ec 80 2b b4 00 00 00 |....H......+....| 00000a40 13 01 00 00 00 00 00 00 41 70 70 45 6e 67 69 6e |........AppEngin| 00000a50 65 5f 00 00 cc 0d 02 00 48 fd ff ff 43 f3 80 2b |e_......H...C..+| 00000a60 c8 01 00 00 13 01 00 00 00 00 00 00 53 70 65 61 |............Spea| 00000a70 6b 5f 00 00 44 41 54 41 84 00 00 00 1e 40 2d e9 |k_..DATA.....@-.| 00000a80 00 20 d0 e5 58 00 52 e3 01 00 80 02 1e 80 fd 08 |. ..X.R.........| 00000a90 00 20 d0 e5 21 00 52 e3 01 20 d0 05 78 00 52 03 |. ..!.R.. ..x.R.| 00000aa0 02 20 d0 05 32 00 52 03 03 20 d0 05 36 00 52 03 |. ..2.R.. ..6.R.| 00000ab0 1e 80 fd 18 00 30 a0 e1 01 40 a0 e1 04 10 80 e2 |.....0...@......| 00000ac0 10 00 a0 e3 21 00 02 ef 03 00 a0 61 1e 80 fd 68 |....!......a...h| 00000ad0 02 00 a0 e1 02 08 c0 e3 04 10 a0 e1 40 20 a0 e3 |............@ ..| 00000ae0 38 00 02 ef 03 00 a0 61 01 00 a0 71 1e 80 fd e8 |8......a...q....| 00000af0 21 78 32 36 00 00 00 00 44 41 54 41 ad 03 00 00 |!x26....DATA....| 00000b00 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 53 57 |Miscellaneous SW| 00000b10 49 73 0a 23 50 61 72 65 6e 74 20 53 74 72 6f 6e |Is.#Parent Stron| 00000b20 67 48 65 6c 70 3a 21 4d 65 6e 75 0a 23 50 6f 73 |gHelp:!Menu.#Pos| 00000b30 74 66 69 78 20 5f 0a 23 54 61 62 6c 65 20 43 6f |tfix _.#Table Co| 00000b40 6c 75 6d 6e 73 20 34 0a 3c 41 42 49 3e 0a 3c 41 |lumns 4.<ABI>.<A| 00000b50 42 43 4c 69 62 3e 0a 3c 41 45 48 3d 3e 41 45 48 |BCLib>.<AEH=>AEH| 00000b60 4d 6f 64 75 6c 65 3a 21 52 6f 6f 74 3e 0a 3c 41 |Module:!Root>.<A| 00000b70 70 70 45 6e 67 69 6e 65 3e 0a 3c 41 72 63 46 53 |ppEngine>.<ArcFS| 00000b80 3e 0a 3c 41 72 63 46 53 4d 65 6d 4d 61 6e 3e 0a |>.<ArcFSMemMan>.| 00000b90 3c 41 52 43 54 4f 4f 4c 53 3e 0a 3c 41 75 64 69 |<ARCTOOLS>.<Audi| 00000ba0 6f 4d 61 6e 61 67 65 72 3e 0a 3c 41 57 52 65 6e |oManager>.<AWRen| 00000bb0 64 65 72 3e 0a 3c 42 6f 72 64 65 72 73 3e 0a 3c |der>.<Borders>.<| 00000bc0 43 41 49 46 53 3e 0a 3c 43 6f 6c 6f 75 72 45 78 |CAIFS>.<ColourEx| 00000bd0 74 65 6e 64 3e 0a 3c 43 6f 6d 70 72 65 73 73 4a |tend>.<CompressJ| 00000be0 50 45 47 3e 0a 3c 43 72 65 61 74 6f 72 3e 0a 3c |PEG>.<Creator>.<| 00000bf0 44 69 72 65 63 74 6f 72 3e 0a 3c 44 69 73 73 3e |Director>.<Diss>| 00000c00 0a 3c 44 69 74 68 65 72 45 78 74 65 6e 64 3e 0a |.<DitherExtend>.| 00000c10 3c 44 6f 63 75 6d 65 6e 74 4d 61 6e 61 67 65 72 |<DocumentManager| 00000c20 3e 0a 3c 44 72 61 67 41 6e 4f 62 6a 65 63 74 3e |>.<DragAnObject>| 00000c30 0a 3c 44 53 79 6d 3e 0a 3c 44 79 6e 61 6d 69 74 |.<DSym>.<Dynamit| 00000c40 65 3e 0a 3c 45 61 73 79 46 53 3e 0a 3c 45 75 63 |e>.<EasyFS>.<Euc| 00000c50 6c 69 64 3e 0a 3c 46 69 6c 65 42 75 66 66 65 72 |lid>.<FileBuffer| 00000c60 3e 0a 3c 46 6f 6e 74 44 72 61 77 3e 0a 3c 46 72 |>.<FontDraw>.<Fr| 00000c70 6f 6e 74 45 6e 64 3e 0a 3c 47 44 42 4d 3e 0a 3c |ontEnd>.<GDBM>.<| 00000c80 47 44 72 61 77 3e 0a 3c 47 53 70 72 69 74 65 45 |GDraw>.<GSpriteE| 00000c90 78 74 65 6e 64 3e 0a 3c 48 65 6c 69 78 42 61 73 |xtend>.<HelixBas| 00000ca0 69 63 3e 0a 3c 48 79 70 68 65 6e 61 74 6f 72 3e |ic>.<Hyphenator>| 00000cb0 0a 3c 49 6d 61 67 65 45 78 74 65 6e 64 3e 0a 3c |.<ImageExtend>.<| 00000cc0 49 6d 70 75 6c 73 65 3e 0a 3c 49 6e 74 65 72 66 |Impulse>.<Interf| 00000cd0 61 63 65 3e 0a 3c 49 5a 69 70 46 53 3e 0a 3c 4c |ace>.<IZipFS>.<L| 00000ce0 61 72 67 65 72 53 75 70 70 6f 72 74 3e 0a 3c 4c |argerSupport>.<L| 00000cf0 69 6e 65 45 64 69 74 6f 72 3e 0a 3c 4c 5a 57 3e |ineEditor>.<LZW>| 00000d00 0a 3c 4c 5a 57 42 3e 0a 3c 4c 5a 57 44 3e 0a 3c |.<LZWB>.<LZWD>.<| 00000d10 4d 61 6b 65 47 49 46 3e 0a 3c 4d 6f 44 65 6c 3e |MakeGIF>.<MoDel>| 00000d20 0a 3c 4e 65 74 4d 6f 6e 69 74 6f 72 3e 0a 3c 4e |.<NetMonitor>.<N| 00000d30 48 3e 0a 3c 4f 4c 45 3e 0a 3c 50 43 49 4f 3e 0a |H>.<OLE>.<PCIO>.| 00000d40 3c 50 43 4d 65 6d 3e 0a 50 43 53 75 70 70 6f 72 |<PCMem>.PCSuppor| 00000d50 74 0a 3c 50 43 44 65 76 48 65 6c 70 3e 0a 3c 50 |t.<PCDevHelp>.<P| 00000d60 6f 63 6b 65 74 46 53 3e 0a 3c 50 6f 63 6b 65 74 |ocketFS>.<Pocket| 00000d70 4c 69 6e 6b 3e 0a 3c 50 50 41 44 72 69 76 65 72 |Link>.<PPADriver| 00000d80 3e 0a 3c 50 72 6f 46 69 6c 65 72 3d 3e 46 69 6c |>.<ProFiler=>Fil| 00000d90 65 72 5f 3e 0a 3c 51 54 4d 3e 0a 3c 52 65 61 64 |er_>.<QTM>.<Read| 00000da0 4d 61 69 6c 3e 0a 3c 52 4f 4d 43 61 63 68 65 3e |Mail>.<ROMCache>| 00000db0 0a 3c 53 70 61 72 6b 46 53 3e 0a 3c 53 70 63 68 |.<SparkFS>.<Spch| 00000dc0 3e 0a 3c 53 70 65 61 6b 3e 0a 3c 53 70 65 6c 6c |>.<Speak>.<Spell| 00000dd0 3e 0a 3c 53 74 72 65 61 6d 3e 0a 3c 53 74 72 65 |>.<Stream>.<Stre| 00000de0 61 6d 53 71 75 61 73 68 3e 0a 3c 54 72 61 6e 73 |amSquash>.<Trans| 00000df0 6c 61 74 6f 72 3e 0a 3c 54 72 61 63 6b 65 72 3e |lator>.<Tracker>| 00000e00 0a 3c 55 73 65 72 73 3e 0a 3c 56 50 72 6f 74 65 |.<Users>.<VProte| 00000e10 63 74 3e 0a 3c 57 69 6d 70 45 78 74 3d 3e 57 69 |ct>.<WimpExt=>Wi| 00000e20 6d 70 45 78 74 3a 21 52 6f 6f 74 3e 0a 3c 57 69 |mpExt:!Root>.<Wi| 00000e30 6d 70 48 61 63 6b 3e 0a 3c 57 69 6d 70 4b 65 79 |mpHack>.<WimpKey| 00000e40 3e 0a 3c 5a 61 70 4a 52 46 3e 0a 3c 5a 61 70 52 |>.<ZapJRF>.<ZapR| 00000e50 65 64 72 61 77 3e 0a 23 45 6e 64 54 61 62 6c 65 |edraw>.#EndTable| 00000e60 0a 23 4c 69 6e 65 0a 23 61 6c 69 67 6e 20 63 65 |.#Line.#align ce| 00000e70 6e 74 72 65 0a 7b 2f 7d 3c 4d 69 73 63 65 6c 6c |ntre.{/}<Miscell| 00000e80 61 6e 65 6f 75 73 20 53 57 49 73 20 6d 61 6e 75 |aneous SWIs manu| 00000e90 61 6c 3d 3e 61 62 6f 75 74 3e 2c 20 76 31 2e 30 |al=>about>, v1.0| 00000ea0 32 7b 2f 7d 0a 00 00 00 44 49 52 24 2c 00 00 00 |2{/}....DIR$,...| 00000eb0 2c 00 00 00 d4 0e 00 00 46 fd ff ff a2 fd 71 18 |,.......F.....q.| 00000ec0 6d 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |m...........!Roo| 00000ed0 74 00 00 00 44 41 54 41 6d 00 00 00 41 42 49 0a |t...DATAm...ABI.| 00000ee0 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 |#Parent !Root.#P| 00000ef0 72 65 66 69 78 20 41 42 49 5f 0a 23 54 61 62 6c |refix ABI_.#Tabl| 00000f00 65 20 43 6f 6c 75 6d 6e 73 20 31 0a 49 6e 69 74 |e Columns 1.Init| 00000f10 69 61 6c 69 73 65 0a 43 6c 6f 73 65 44 6f 77 6e |ialise.CloseDown| 00000f20 0a 52 65 6e 64 65 72 53 6c 61 62 0a 52 65 73 65 |.RenderSlab.Rese| 00000f30 74 0a 4b 69 6c 6c 0a 23 45 6e 64 54 61 62 6c 65 |t.Kill.#EndTable| 00000f40 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 00000f50 70 0f 00 00 46 fd ff ff d0 d1 85 4d cf 00 00 00 |p...F......M....| 00000f60 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00000f70 44 41 54 41 cf 00 00 00 41 72 63 46 53 4d 65 6d |DATA....ArcFSMem| 00000f80 4d 61 6e 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f |Man.#Parent !Roo| 00000f90 74 0a 23 50 72 65 66 69 78 20 41 72 63 46 53 4d |t.#Prefix ArcFSM| 00000fa0 65 6d 4d 61 6e 5f 0a 23 54 61 62 6c 65 20 43 6f |emMan_.#Table Co| 00000fb0 6c 75 6d 6e 73 20 32 0a 43 6c 61 69 6d 57 6f 72 |lumns 2.ClaimWor| 00000fc0 6b 73 70 61 63 65 0a 52 65 73 69 7a 65 57 6f 72 |kspace.ResizeWor| 00000fd0 6b 73 70 61 63 65 0a 52 65 6c 65 61 73 65 57 6f |kspace.ReleaseWo| 00000fe0 72 6b 73 70 61 63 65 0a 43 6c 61 69 6d 46 69 6c |rkspace.ClaimFil| 00000ff0 65 43 61 63 68 65 0a 52 65 73 69 7a 65 46 69 6c |eCache.ResizeFil| 00001000 65 43 61 63 68 65 0a 52 65 6c 65 61 73 65 46 69 |eCache.ReleaseFi| 00001010 6c 65 43 61 63 68 65 0a 49 6e 69 74 0a 46 69 6e |leCache.Init.Fin| 00001020 61 6c 0a 53 6c 69 64 65 0a 4c 6f 6f 6b 75 70 42 |al.Slide.LookupB| 00001030 6c 6f 63 6b 0a 23 45 6e 64 54 61 62 6c 65 0a 00 |lock.#EndTable..| 00001040 44 49 52 24 74 01 00 00 74 01 00 00 b4 11 00 00 |DIR$t...t.......| 00001050 46 fd ff ff 82 47 8c a5 b7 01 00 00 13 00 00 00 |F....G..........| 00001060 00 00 00 00 21 52 6f 6f 74 00 00 00 6c 13 00 00 |....!Root...l...| 00001070 46 ff ff ff 8b 51 8c a5 04 01 00 00 13 00 00 00 |F....Q..........| 00001080 00 00 00 00 41 72 63 68 69 76 65 49 6e 66 6f 00 |....ArchiveInfo.| 00001090 70 14 00 00 46 ff ff ff 05 68 8c a5 90 01 00 00 |p...F....h......| 000010a0 13 00 00 00 00 00 00 00 53 74 61 74 75 73 00 00 |........Status..| 000010b0 00 16 00 00 46 ff ff ff 3b a4 8b a5 8a 00 00 00 |....F...;.......| 000010c0 13 00 00 00 00 00 00 00 4f 70 65 6e 41 72 63 68 |........OpenArch| 000010d0 69 76 65 00 8c 16 00 00 46 ff ff ff 61 b4 8b a5 |ive.....F...a...| 000010e0 ac 00 00 00 13 00 00 00 00 00 00 00 43 6c 6f 73 |............Clos| 000010f0 65 41 72 63 68 69 76 65 00 00 00 00 38 17 00 00 |eArchive....8...| 00001100 46 ff ff ff a4 d4 8b a5 01 01 00 00 13 00 00 00 |F...............| 00001110 00 00 00 00 45 6e 63 72 79 70 74 69 6f 6e 00 00 |....Encryption..| 00001120 3c 18 00 00 46 ff ff ff 78 07 8c a5 c0 00 00 00 |<...F...x.......| 00001130 13 00 00 00 00 00 00 00 43 6f 6d 70 72 65 73 73 |........Compress| 00001140 69 6f 6e 00 fc 18 00 00 46 fd ff ff d7 04 8c a5 |ion.....F.......| 00001150 5d 00 00 00 13 00 00 00 00 00 00 00 63 6f 6d 70 |]...........comp| 00001160 72 65 73 73 74 79 70 65 73 00 00 00 5c 19 00 00 |resstypes...\...| 00001170 46 ff ff ff 6c 22 8c a5 aa 00 00 00 13 00 00 00 |F...l"..........| 00001180 00 00 00 00 43 72 65 61 74 65 41 72 63 68 69 76 |....CreateArchiv| 00001190 65 00 00 00 08 1a 00 00 46 ff ff ff 5e 35 8c a5 |e.......F...^5..| 000011a0 c7 00 00 00 13 00 00 00 00 00 00 00 43 6f 6d 70 |............Comp| 000011b0 61 63 74 00 44 41 54 41 b7 01 00 00 41 72 63 46 |act.DATA....ArcF| 000011c0 53 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a |S.#Parent !Root.| 000011d0 23 50 72 65 66 69 78 20 41 72 63 46 53 5f 0a 23 |#Prefix ArcFS_.#| 000011e0 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a |Table Columns 2.| 000011f0 3c 41 72 63 68 69 76 65 49 6e 66 6f 3e 0a 3c 53 |<ArchiveInfo>.<S| 00001200 74 61 74 75 73 3e 0a 3c 4f 70 65 6e 41 72 63 68 |tatus>.<OpenArch| 00001210 69 76 65 3e 0a 3c 43 6c 6f 73 65 41 72 63 68 69 |ive>.<CloseArchi| 00001220 76 65 3e 0a 3c 45 6e 63 72 79 70 74 69 6f 6e 3e |ve>.<Encryption>| 00001230 0a 3c 43 6f 6d 70 72 65 73 73 69 6f 6e 3e 0a 3c |.<Compression>.<| 00001240 43 72 65 61 74 65 41 72 63 68 69 76 65 3e 0a 3c |CreateArchive>.<| 00001250 43 6f 6d 70 61 63 74 3e 0a 52 65 61 64 4f 70 74 |Compact>.ReadOpt| 00001260 69 6f 6e 73 0a 48 6f 75 72 67 6c 61 73 73 4f 6e |ions.HourglassOn| 00001270 0a 48 6f 75 72 67 6c 61 73 73 4f 66 66 0a 53 65 |.HourglassOff.Se| 00001280 74 45 6e 63 72 79 70 74 69 6f 6e 0a 53 65 74 43 |tEncryption.SetC| 00001290 6f 6d 70 72 65 73 73 69 6f 6e 0a 41 75 74 6f 43 |ompression.AutoC| 000012a0 6f 6d 70 4f 6e 0a 41 75 74 6f 43 6f 6d 70 4f 66 |ompOn.AutoCompOf| 000012b0 66 0a 41 72 63 49 6e 66 6f 0a 4f 70 65 6e 41 72 |f.ArcInfo.OpenAr| 000012c0 63 0a 43 6c 6f 73 65 41 72 63 0a 43 72 65 61 74 |c.CloseArc.Creat| 000012d0 65 41 72 63 0a 43 6f 6d 70 61 63 74 41 72 63 0a |eArc.CompactArc.| 000012e0 4f 62 6a 65 63 74 49 6e 66 6f 0a 52 65 61 64 42 |ObjectInfo.ReadB| 000012f0 75 66 66 65 72 53 69 7a 65 73 0a 53 65 74 52 44 |ufferSizes.SetRD| 00001300 42 53 69 7a 65 0a 53 65 74 52 41 42 53 69 7a 65 |BSize.SetRABSize| 00001310 0a 53 65 74 48 65 61 64 65 72 47 61 70 73 0a 4e |.SetHeaderGaps.N| 00001320 61 6d 65 64 41 72 63 49 6e 66 6f 0a 47 65 74 41 |amedArcInfo.GetA| 00001330 72 63 4e 61 6d 65 0a 52 65 61 64 43 6f 6d 70 72 |rcName.ReadCompr| 00001340 65 73 73 65 64 0a 57 72 69 74 65 43 6f 6d 70 72 |essed.WriteCompr| 00001350 65 73 73 65 64 0a 45 6e 73 75 72 65 47 61 70 73 |essed.EnsureGaps| 00001360 0a 23 45 6e 64 54 61 62 6c 65 0a 00 44 41 54 41 |.#EndTable..DATA| 00001370 04 01 00 00 41 72 63 46 53 5f 41 72 63 68 69 76 |....ArcFS_Archiv| 00001380 65 49 6e 66 6f 20 20 28 26 34 33 37 43 30 29 0a |eInfo (&437C0).| 00001390 23 50 61 72 65 6e 74 20 41 72 63 46 53 5f 0a 3d |#Parent ArcFS_.=| 000013a0 3e 09 52 30 20 3d 09 61 72 63 68 69 76 65 20 6e |>.R0 =.archive n| 000013b0 75 6d 62 65 72 0a 3c 3d 09 52 30 20 3d 09 61 72 |umber.<=.R0 =.ar| 000013c0 63 68 69 76 65 20 6e 61 6d 65 20 28 6f 72 20 6e |chive name (or n| 000013d0 75 6c 6c 20 69 66 20 6e 6f 74 20 6f 70 65 6e 29 |ull if not open)| 000013e0 0a 09 52 31 20 3d 09 61 72 63 68 69 76 65 20 70 |..R1 =.archive p| 000013f0 61 74 68 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |ath..R1 =.pointe| 00001400 72 20 74 6f 20 61 72 63 68 69 76 65 20 68 65 61 |r to archive hea| 00001410 64 65 72 73 20 28 69 6e 74 65 72 6e 61 6c 20 75 |ders (internal u| 00001420 73 65 29 0a 0a 54 68 69 73 20 53 57 49 20 67 69 |se)..This SWI gi| 00001430 76 65 73 20 74 68 65 20 6e 61 6d 65 20 61 6e 64 |ves the name and| 00001440 20 70 61 74 68 6e 61 6d 65 20 6f 66 20 74 68 65 | pathname of the| 00001450 20 61 72 63 68 69 76 65 20 77 68 6f 73 65 20 6e | archive whose n| 00001460 75 6d 62 65 72 20 69 73 20 67 69 76 65 6e 2e 0a |umber is given..| 00001470 44 41 54 41 90 01 00 00 41 72 63 46 53 5f 53 74 |DATA....ArcFS_St| 00001480 61 74 75 73 20 20 28 26 34 33 37 43 31 29 0a 23 |atus (&437C1).#| 00001490 50 61 72 65 6e 74 20 41 72 63 46 53 5f 0a 3c 3d |Parent ArcFS_.<=| 000014a0 09 52 30 20 3d 09 73 74 61 74 75 73 20 69 6e 20 |.R0 =.status in | 000014b0 66 6f 72 6d 20 26 76 76 62 62 66 66 65 65 0a 0a |form &vvbbffee..| 000014c0 54 68 69 73 20 53 57 49 20 72 65 74 75 72 6e 73 |This SWI returns| 000014d0 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 | the current sta| 000014e0 74 75 73 20 6f 66 20 41 72 63 46 53 2e 0a 0a 23 |tus of ArcFS...#| 000014f0 54 61 62 0a 62 79 74 65 09 6d 65 61 6e 69 6e 67 |Tab.byte.meaning| 00001500 0a 23 4c 69 6e 65 0a 76 76 09 46 46 20 66 6f 72 |.#Line.vv.FF for| 00001510 20 72 65 61 64 2f 77 72 69 74 65 2c 20 30 30 20 | read/write, 00 | 00001520 66 6f 72 20 72 65 61 64 20 6f 6e 6c 79 0a 62 62 |for read only.bb| 00001530 09 6e 75 6d 62 65 72 20 6f 66 20 62 69 74 73 20 |.number of bits | 00001540 66 6f 72 20 63 72 75 6e 63 68 20 2f 20 63 6f 6d |for crunch / com| 00001550 70 72 65 73 73 20 28 30 20 6f 74 68 65 72 77 69 |press (0 otherwi| 00001560 73 65 29 0a 66 66 09 3c 63 6f 6d 70 72 65 73 73 |se).ff.<compress| 00001570 69 6f 6e 20 66 6f 72 6d 61 74 3d 3e 41 72 63 46 |ion format=>ArcF| 00001580 53 5f 63 6f 6d 70 72 65 73 73 74 79 70 65 73 3e |S_compresstypes>| 00001590 0a 65 65 09 3c 62 69 74 73 3d 3e 2e 62 69 74 73 |.ee.<bits=>.bits| 000015a0 3e 0a 23 73 75 62 70 61 67 65 20 62 69 74 73 0a |>.#subpage bits.| 000015b0 41 72 63 46 53 5f 53 74 61 74 75 73 20 62 69 74 |ArcFS_Status bit| 000015c0 73 0a 62 69 74 09 6d 65 61 6e 69 6e 67 20 69 66 |s.bit.meaning if| 000015d0 20 73 65 74 0a 23 4c 69 6e 65 0a 30 09 66 69 6c | set.#Line.0.fil| 000015e0 65 73 20 77 69 6c 6c 20 62 65 20 67 61 72 62 6c |es will be garbl| 000015f0 65 64 0a 31 2d 37 09 72 65 73 65 72 76 65 64 2e |ed.1-7.reserved.| 00001600 44 41 54 41 8a 00 00 00 41 72 63 46 53 5f 4f 70 |DATA....ArcFS_Op| 00001610 65 6e 41 72 63 68 69 76 65 20 20 28 26 34 33 37 |enArchive (&437| 00001620 43 32 29 0a 23 50 61 72 65 6e 74 20 41 72 63 46 |C2).#Parent ArcF| 00001630 53 5f 0a 3c 3d 09 52 30 20 3d 09 70 6f 69 6e 74 |S_.<=.R0 =.point| 00001640 65 72 20 74 6f 20 66 69 6c 65 6e 61 6d 65 0a 09 |er to filename..| 00001650 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 |R1 =.pointer to | 00001660 72 65 66 65 72 65 6e 63 65 20 6e 61 6d 65 0a 0a |reference name..| 00001670 54 68 69 73 20 53 57 49 20 6f 70 65 6e 73 20 61 |This SWI opens a| 00001680 6e 20 61 72 63 68 69 76 65 2e 00 00 44 41 54 41 |n archive...DATA| 00001690 ac 00 00 00 41 72 63 46 53 5f 43 6c 6f 73 65 41 |....ArcFS_CloseA| 000016a0 72 63 68 69 76 65 20 20 28 26 34 33 37 43 33 29 |rchive (&437C3)| 000016b0 0a 23 50 61 72 65 6e 74 20 41 72 63 46 53 5f 0a |.#Parent ArcFS_.| 000016c0 3c 3d 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 |<=.R0 =.pointer | 000016d0 74 6f 20 72 65 66 65 72 65 6e 63 65 20 6e 61 6d |to reference nam| 000016e0 65 0a 0a 54 68 69 73 20 53 57 49 20 63 6c 6f 73 |e..This SWI clos| 000016f0 65 73 20 61 6e 20 61 72 63 68 69 76 65 2c 20 72 |es an archive, r| 00001700 65 74 75 72 6e 69 6e 67 20 61 6e 20 65 72 72 6f |eturning an erro| 00001710 72 20 69 66 20 6e 6f 20 61 72 63 68 69 76 65 20 |r if no archive | 00001720 77 69 74 68 20 74 68 61 74 20 6e 61 6d 65 20 77 |with that name w| 00001730 61 73 20 6f 70 65 6e 2e 44 41 54 41 01 01 00 00 |as open.DATA....| 00001740 41 72 63 46 53 5f 45 6e 63 72 79 70 74 69 6f 6e |ArcFS_Encryption| 00001750 20 20 28 26 34 33 37 43 34 29 0a 23 50 61 72 65 | (&437C4).#Pare| 00001760 6e 74 20 41 72 63 46 53 5f 0a 3c 3d 09 52 30 20 |nt ArcFS_.<=.R0 | 00001770 3d 09 3c 65 6e 63 72 79 70 74 69 6f 6e 20 6d 65 |=.<encryption me| 00001780 74 68 6f 64 3d 3e 2e 74 79 70 65 73 3e 0a 09 52 |thod=>.types>..R| 00001790 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 70 |1 =.pointer to p| 000017a0 61 73 73 77 6f 72 64 20 28 75 70 20 74 6f 20 33 |assword (up to 3| 000017b0 32 20 62 79 74 65 73 29 0a 0a 54 68 69 73 20 53 |2 bytes)..This S| 000017c0 57 49 20 73 65 74 73 20 74 68 65 20 65 6e 63 72 |WI sets the encr| 000017d0 79 70 74 69 6f 6e 20 6d 65 74 68 6f 64 20 61 6e |yption method an| 000017e0 64 20 70 61 73 73 77 6f 72 64 20 75 73 65 64 2e |d password used.| 000017f0 0a 23 53 75 62 70 61 67 65 20 74 79 70 65 73 0a |.#Subpage types.| 00001800 45 6e 63 72 79 70 74 69 6f 6e 20 74 79 70 65 73 |Encryption types| 00001810 0a 76 61 6c 75 65 09 6d 65 61 6e 69 6e 67 0a 30 |.value.meaning.0| 00001820 09 6e 6f 20 65 6e 63 72 79 70 74 69 6f 6e 0a 31 |.no encryption.1| 00001830 09 67 61 72 62 6c 65 64 0a 00 00 00 44 41 54 41 |.garbled....DATA| 00001840 c0 00 00 00 41 72 63 46 53 5f 43 6f 6d 70 72 65 |....ArcFS_Compre| 00001850 73 73 69 6f 6e 20 20 28 26 34 33 37 43 35 29 0a |ssion (&437C5).| 00001860 23 50 61 72 65 6e 74 20 41 72 63 46 53 5f 0a 3c |#Parent ArcFS_.<| 00001870 3d 09 52 30 20 3d 09 3c 63 6f 6d 70 72 65 73 73 |=.R0 =.<compress| 00001880 69 6f 6e 20 66 6f 72 6d 61 74 3d 3e 41 72 63 46 |ion format=>ArcF| 00001890 53 5f 63 6f 6d 70 72 65 73 73 74 79 70 65 73 3e |S_compresstypes>| 000018a0 0a 09 52 31 20 3d 09 6e 75 6d 62 65 72 20 6f 66 |..R1 =.number of| 000018b0 20 62 69 74 73 20 28 69 66 20 61 70 70 6c 69 63 | bits (if applic| 000018c0 61 62 6c 65 29 0a 0a 54 68 69 73 20 53 57 49 20 |able)..This SWI | 000018d0 73 65 74 73 20 74 68 65 20 64 61 74 61 20 63 6f |sets the data co| 000018e0 6d 70 72 65 73 73 69 6f 6e 20 66 6f 72 6d 61 74 |mpression format| 000018f0 20 74 6f 20 62 65 20 75 73 65 64 2e 44 41 54 41 | to be used.DATA| 00001900 5d 00 00 00 41 72 63 46 53 20 43 6f 6d 70 72 65 |]...ArcFS Compre| 00001910 73 73 69 6f 6e 20 66 6f 72 6d 61 74 73 0a 63 6f |ssion formats.co| 00001920 64 65 09 74 79 70 65 0a 23 4c 69 6e 65 0a 26 38 |de.type.#Line.&8| 00001930 32 09 53 74 6f 72 65 0a 26 38 33 09 50 61 63 6b |2.Store.&83.Pack| 00001940 0a 26 38 38 09 43 72 75 6e 63 68 0a 26 46 46 09 |.&88.Crunch.&FF.| 00001950 43 6f 6d 70 72 65 73 73 0a 00 00 00 44 41 54 41 |Compress....DATA| 00001960 aa 00 00 00 41 72 63 46 53 5f 43 72 65 61 74 65 |....ArcFS_Create| 00001970 41 72 63 68 69 76 65 20 20 28 26 34 33 37 43 36 |Archive (&437C6| 00001980 29 0a 23 50 61 72 65 6e 74 20 41 72 63 46 53 5f |).#Parent ArcFS_| 00001990 0a 3c 3d 09 52 30 20 3d 09 70 61 74 68 6e 61 6d |.<=.R0 =.pathnam| 000019a0 65 20 66 6f 72 20 6e 65 77 20 61 72 63 68 69 76 |e for new archiv| 000019b0 65 0a 0a 54 68 69 73 20 53 57 49 20 63 72 65 61 |e..This SWI crea| 000019c0 74 65 73 20 28 62 75 74 20 64 6f 65 73 20 6e 6f |tes (but does no| 000019d0 74 20 6f 70 65 6e 29 20 61 20 6e 65 77 20 61 72 |t open) a new ar| 000019e0 63 68 69 76 65 2e 0a 0a 4e 6f 74 65 3a 20 52 65 |chive...Note: Re| 000019f0 61 64 2f 57 72 69 74 65 20 76 65 72 73 69 6f 6e |ad/Write version| 00001a00 20 6f 6e 6c 79 2e 00 00 44 41 54 41 c7 00 00 00 | only...DATA....| 00001a10 41 72 63 46 53 5f 43 6f 6d 70 61 63 74 20 20 28 |ArcFS_Compact (| 00001a20 26 34 33 37 43 37 29 0a 23 50 61 72 65 6e 74 20 |&437C7).#Parent | 00001a30 41 72 63 46 53 5f 0a 3c 3d 09 52 30 20 3d 09 61 |ArcFS_.<=.R0 =.a| 00001a40 72 63 68 69 76 65 20 6e 61 6d 65 20 28 6f 72 20 |rchive name (or | 00001a50 30 20 66 6f 72 20 43 53 44 29 0a 0a 54 68 69 73 |0 for CSD)..This| 00001a60 20 53 57 49 20 63 6f 6d 70 61 63 74 73 20 61 6e | SWI compacts an| 00001a70 20 61 72 63 68 69 76 65 20 74 6f 20 72 65 6d 6f | archive to remo| 00001a80 76 65 64 20 67 61 70 73 20 6c 65 66 74 20 62 79 |ved gaps left by| 00001a90 20 64 65 6c 65 74 69 6f 6e 73 20 61 6e 64 20 66 | deletions and f| 00001aa0 69 6c 65 20 6f 76 65 72 77 72 69 74 65 73 2e 0a |ile overwrites..| 00001ab0 0a 4e 6f 74 65 3a 20 52 65 61 64 2f 57 72 69 74 |.Note: Read/Writ| 00001ac0 65 20 76 65 72 73 69 6f 6e 20 6f 6e 6c 79 2e 00 |e version only..| 00001ad0 44 49 52 24 50 00 00 00 50 00 00 00 20 1b 00 00 |DIR$P...P... ...| 00001ae0 47 fd ff ff 12 74 06 0c 57 00 00 00 13 00 00 00 |G....t..W.......| 00001af0 00 00 00 00 21 52 6f 6f 74 00 00 00 78 1b 00 00 |....!Root...x...| 00001b00 47 ff ff ff 12 90 06 0c 91 01 00 00 13 00 00 00 |G...............| 00001b10 00 00 00 00 41 73 73 65 6d 62 6c 65 00 00 00 00 |....Assemble....| 00001b20 44 41 54 41 57 00 00 00 41 52 43 54 4f 4f 4c 53 |DATAW...ARCTOOLS| 00001b30 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 00001b40 50 72 65 66 69 78 20 41 52 43 54 4f 4f 4c 53 5f |Prefix ARCTOOLS_| 00001b50 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 00001b60 32 0a 3c 41 73 73 65 6d 62 6c 65 3e 0a 23 45 6e |2.<Assemble>.#En| 00001b70 64 54 61 62 6c 65 0a 00 44 41 54 41 91 01 00 00 |dTable..DATA....| 00001b80 41 52 43 54 4f 4f 4c 53 5f 41 73 73 65 6d 62 6c |ARCTOOLS_Assembl| 00001b90 65 20 20 28 26 44 46 46 43 30 29 0a 23 50 61 72 |e (&DFFC0).#Par| 00001ba0 65 6e 74 20 41 52 43 54 4f 4f 4c 53 5f 0a 3d 3e |ent ARCTOOLS_.=>| 00001bb0 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f |.R0 =.pointer to| 00001bc0 20 73 74 72 69 6e 67 20 74 6f 20 61 73 73 65 6d | string to assem| 00001bd0 62 6c 65 0a 09 52 31 20 3d 09 61 64 64 72 65 73 |ble..R1 =.addres| 00001be0 73 20 77 68 65 72 65 20 74 68 65 20 69 6e 73 74 |s where the inst| 00001bf0 72 75 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 |ruction will be | 00001c00 70 75 74 0a 0a 3c 3d 09 52 30 20 3d 09 61 73 73 |put..<=.R0 =.ass| 00001c10 65 6d 62 6c 65 64 20 69 6e 73 74 72 75 63 74 69 |embled instructi| 00001c20 6f 6e 0a 09 52 31 20 3d 09 6c 65 6e 67 74 68 20 |on..R1 =.length | 00001c30 6f 66 20 73 74 72 69 6e 67 20 69 6e 20 52 30 20 |of string in R0 | 00001c40 61 74 20 73 74 61 72 74 0a 0a 54 68 69 73 20 63 |at start..This c| 00001c50 61 6c 6c 20 69 73 20 70 72 6f 76 69 64 65 64 20 |all is provided | 00001c60 74 6f 20 61 73 73 65 6d 62 6c 65 20 61 20 69 6e |to assemble a in| 00001c70 73 74 72 75 63 74 69 6f 6e 20 63 6f 6e 74 61 69 |struction contai| 00001c80 6e 65 64 20 69 6e 20 74 68 65 20 73 74 72 69 6e |ned in the strin| 00001c90 67 20 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 |g pointed to by | 00001ca0 52 30 2e 20 54 68 65 20 61 64 64 72 65 73 73 20 |R0. The address | 00001cb0 69 6e 20 52 31 20 69 73 20 75 73 65 64 20 74 6f |in R1 is used to| 00001cc0 20 63 61 6c 63 75 6c 61 74 65 20 74 68 65 20 64 | calculate the d| 00001cd0 65 73 74 69 6e 61 74 69 6f 6e 20 61 64 64 72 65 |estination addre| 00001ce0 73 73 20 69 6e 20 50 43 20 72 65 6c 61 74 69 76 |ss in PC relativ| 00001cf0 65 20 6f 70 63 6f 64 65 73 20 6c 69 6b 65 20 41 |e opcodes like A| 00001d00 44 52 20 6f 72 20 42 2e 0a 00 00 00 44 49 52 24 |DR or B.....DIR$| 00001d10 70 00 00 00 70 00 00 00 7c 1d 00 00 46 fd ff ff |p...p...|...F...| 00001d20 1d 0d ee 4e 74 01 00 00 13 00 00 00 00 00 00 00 |...Nt...........| 00001d30 21 52 6f 6f 74 00 00 00 f0 1e 00 00 46 ff ff ff |!Root.......F...| 00001d40 4e 6e ee 4e 01 01 00 00 13 00 00 00 00 00 00 00 |Nn.N............| 00001d50 41 64 64 45 76 65 6e 74 00 00 00 00 f4 1f 00 00 |AddEvent........| 00001d60 46 fd ff ff 37 33 8e a5 7d 02 00 00 13 00 00 00 |F...73..}.......| 00001d70 00 00 00 00 65 76 65 6e 74 73 00 00 44 41 54 41 |....events..DATA| 00001d80 74 01 00 00 41 75 64 69 6f 4d 61 6e 61 67 65 72 |t...AudioManager| 00001d90 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 00001da0 50 72 65 66 69 78 20 41 75 64 69 6f 4d 61 6e 61 |Prefix AudioMana| 00001db0 67 65 72 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 |ger_.#Table Colu| 00001dc0 6d 6e 73 20 32 0a 49 6e 66 6f 0a 52 65 73 65 74 |mns 2.Info.Reset| 00001dd0 0a 4c 69 73 74 44 72 69 76 65 72 73 0a 44 65 66 |.ListDrivers.Def| 00001de0 61 75 6c 74 73 0a 44 72 69 76 65 72 0a 53 65 6c |aults.Driver.Sel| 00001df0 65 63 74 53 61 6d 70 6c 65 72 0a 53 61 6d 70 6c |ectSampler.Sampl| 00001e00 65 72 53 74 61 74 75 73 0a 53 74 61 72 74 53 61 |erStatus.StartSa| 00001e10 6d 70 6c 69 6e 67 0a 53 74 6f 70 53 61 6d 70 6c |mpling.StopSampl| 00001e20 69 6e 67 0a 44 65 73 65 6c 65 63 74 53 61 6d 70 |ing.DeselectSamp| 00001e30 6c 65 72 0a 50 6c 61 79 53 61 6d 70 6c 65 0a 46 |ler.PlaySample.F| 00001e40 69 6c 6c 42 75 66 66 65 72 0a 52 65 74 75 72 6e |illBuffer.Return| 00001e50 43 75 72 73 6f 72 0a 4b 69 6c 6c 53 61 6d 70 6c |Cursor.KillSampl| 00001e60 65 0a 41 64 6a 75 73 74 50 6c 61 79 0a 43 6f 6e |e.AdjustPlay.Con| 00001e70 76 65 72 74 50 69 74 63 68 0a 53 74 65 72 65 6f |vertPitch.Stereo| 00001e80 0a 41 74 74 61 63 68 56 6f 69 63 65 0a 53 6f 75 |.AttachVoice.Sou| 00001e90 6e 64 50 61 63 6b 65 64 0a 53 6f 75 6e 64 0a 52 |ndPacked.Sound.R| 00001ea0 65 61 64 43 43 42 0a 57 72 69 74 65 43 43 42 0a |eadCCB.WriteCCB.| 00001eb0 50 6c 61 79 53 61 6d 70 6c 65 46 72 6f 6d 46 69 |PlaySampleFromFi| 00001ec0 6c 65 0a 51 75 65 75 65 45 76 65 6e 74 0a 3c 41 |le.QueueEvent.<A| 00001ed0 64 64 45 76 65 6e 74 3e 0a 52 65 64 69 72 65 63 |ddEvent>.Redirec| 00001ee0 74 56 49 44 43 0a 23 45 6e 64 54 61 62 6c 65 0a |tVIDC.#EndTable.| 00001ef0 44 41 54 41 01 01 00 00 41 75 64 69 6f 4d 61 6e |DATA....AudioMan| 00001f00 61 67 65 72 5f 41 64 64 45 76 65 6e 74 0a 23 50 |ager_AddEvent.#P| 00001f10 61 72 65 6e 74 20 21 52 6f 6f 74 0a 3d 3e 09 52 |arent !Root.=>.R| 00001f20 30 20 3d 20 3c 65 76 65 6e 74 20 6e 75 6d 62 65 |0 = <event numbe| 00001f30 72 3d 3e 41 75 64 69 6f 4d 61 6e 61 67 65 72 5f |r=>AudioManager_| 00001f40 65 76 65 6e 74 73 3e 0a 09 52 31 20 3d 20 41 75 |events>..R1 = Au| 00001f50 64 69 6f 77 6f 72 6b 73 20 66 69 6c 65 0a 09 52 |dioworks file..R| 00001f60 32 20 3d 20 31 20 74 6f 20 63 61 63 68 65 20 69 |2 = 1 to cache i| 00001f70 6e 20 52 4d 41 0a 0a 54 68 69 73 20 53 57 49 20 |n RMA..This SWI | 00001f80 61 64 64 73 20 61 20 73 61 6d 70 6c 65 20 74 6f |adds a sample to| 00001f90 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 64 65 | a particular de| 00001fa0 73 6b 74 6f 70 20 65 76 65 6e 74 3b 20 74 68 69 |sktop event; thi| 00001fb0 73 20 6d 65 61 6e 73 20 74 68 61 74 20 77 68 65 |s means that whe| 00001fc0 6e 65 76 65 72 20 74 68 65 20 65 76 65 6e 74 20 |never the event | 00001fd0 6f 63 63 75 72 73 20 74 68 65 20 73 61 6d 70 6c |occurs the sampl| 00001fe0 65 20 77 69 6c 6c 20 62 65 20 70 6c 61 79 65 64 |e will be played| 00001ff0 2e 00 00 00 44 41 54 41 7d 02 00 00 45 76 65 6e |....DATA}...Even| 00002000 74 20 6e 75 6d 62 65 72 73 0a 4e 75 6d 62 65 72 |t numbers.Number| 00002010 09 45 76 65 6e 74 0a 23 4c 69 6e 65 0a 31 09 41 |.Event.#Line.1.A| 00002020 70 70 6c 69 63 61 74 69 6f 6e 20 73 61 76 65 20 |pplication save | 00002030 66 69 6c 65 0a 33 09 41 70 70 6c 69 63 61 74 69 |file.3.Applicati| 00002040 6f 6e 20 6c 6f 61 64 20 66 69 6c 65 0a 35 09 46 |on load file.5.F| 00002050 69 6c 65 72 20 64 6f 75 62 6c 65 2d 63 6c 69 63 |iler double-clic| 00002060 6b 20 66 69 6c 65 0a 39 09 50 61 6c 65 74 74 65 |k file.9.Palette| 00002070 20 63 68 61 6e 67 65 0a 31 30 09 44 65 73 6b 74 | change.10.Deskt| 00002080 6f 70 20 73 61 76 65 0a 2d 34 09 53 79 73 74 65 |op save.-4.Syste| 00002090 6d 20 62 65 65 70 0a 2d 37 09 46 61 74 61 6c 20 |m beep.-7.Fatal | 000020a0 77 69 6d 70 20 65 72 72 6f 72 0a 2d 38 09 57 69 |wimp error.-8.Wi| 000020b0 6d 70 20 65 72 72 6f 72 0a 2d 39 09 4b 65 79 70 |mp error.-9.Keyp| 000020c0 72 65 73 73 3a 20 53 70 61 63 65 0a 2d 31 30 09 |ress: Space.-10.| 000020d0 4b 65 79 70 72 65 73 73 3a 20 52 65 74 75 72 6e |Keypress: Return| 000020e0 0a 2d 31 31 09 4b 65 79 70 72 65 73 73 3a 20 4f |.-11.Keypress: O| 000020f0 74 68 65 72 0a 26 34 30 30 43 31 09 4d 6f 64 65 |ther.&400C1.Mode| 00002100 20 63 68 61 6e 67 65 0a 26 34 30 30 43 32 09 54 | change.&400C2.T| 00002110 61 73 6b 20 73 74 61 72 74 69 6e 67 0a 26 34 30 |ask starting.&40| 00002120 30 43 33 09 54 61 73 6b 20 71 75 69 74 74 69 6e |0C3.Task quittin| 00002130 67 0a 26 34 30 30 43 41 09 49 63 6f 6e 69 73 65 |g.&400CA.Iconise| 00002140 20 77 69 6e 64 6f 77 0a 26 46 46 30 30 30 30 30 | window.&FF00000| 00002150 31 09 4d 65 64 69 61 20 6e 6f 74 20 70 72 65 73 |1.Media not pres| 00002160 65 6e 74 0a 26 46 46 30 30 30 30 30 32 09 4d 65 |ent.&FF000002.Me| 00002170 64 69 61 20 6e 6f 74 20 6b 6e 6f 77 6e 0a 26 46 |dia not known.&F| 00002180 46 30 30 30 30 30 34 09 4d 65 64 69 61 20 73 65 |F000004.Media se| 00002190 61 72 63 68 20 65 6e 64 0a 26 46 46 46 46 30 30 |arch end.&FFFF00| 000021a0 30 36 09 44 65 6c 65 74 65 20 66 69 6c 65 0a 26 |06.Delete file.&| 000021b0 46 46 46 46 30 30 30 38 09 43 72 65 61 74 65 20 |FFFF0008.Create | 000021c0 64 69 72 65 63 74 6f 72 79 0a 26 46 46 46 46 30 |directory.&FFFF0| 000021d0 31 30 31 09 43 72 65 61 74 65 20 61 20 66 69 6c |101.Create a fil| 000021e0 65 0a 26 46 46 46 46 30 31 30 33 09 43 6c 6f 73 |e.&FFFF0103.Clos| 000021f0 65 20 61 20 66 69 6c 65 0a 26 46 46 46 46 30 31 |e a file.&FFFF01| 00002200 30 35 09 52 65 6e 61 6d 65 20 66 69 6c 65 0a 26 |05.Rename file.&| 00002210 46 46 46 46 46 46 30 32 09 57 69 6e 64 6f 77 20 |FFFFFF02.Window | 00002220 6d 6f 76 69 6e 67 0a 26 46 46 46 46 46 46 30 33 |moving.&FFFFFF03| 00002230 09 57 69 6e 64 6f 77 20 63 6c 6f 73 69 6e 67 0a |.Window closing.| 00002240 26 46 46 46 46 46 46 30 37 09 44 72 61 67 20 66 |&FFFFFF07.Drag f| 00002250 69 6e 69 73 68 65 64 0a 26 46 46 46 46 46 46 30 |inished.&FFFFFF0| 00002260 39 09 4d 65 6e 75 20 73 65 6c 65 63 74 69 6f 6e |9.Menu selection| 00002270 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 00002280 a0 22 00 00 46 fd ff ff cd 49 c7 13 c1 00 00 00 |."..F....I......| 00002290 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 000022a0 44 41 54 41 c1 00 00 00 41 57 52 65 6e 64 65 72 |DATA....AWRender| 000022b0 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 000022c0 50 72 65 66 69 78 20 41 57 52 65 6e 64 65 72 5f |Prefix AWRender_| 000022d0 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 000022e0 32 0a 46 69 6c 65 49 6e 69 74 41 64 64 72 65 73 |2.FileInitAddres| 000022f0 73 0a 52 65 6e 64 65 72 41 64 64 72 65 73 73 0a |s.RenderAddress.| 00002300 44 6f 63 42 6f 75 6e 64 73 0a 53 65 6e 64 44 65 |DocBounds.SendDe| 00002310 66 73 0a 43 6c 61 69 6d 56 65 63 74 6f 72 73 0a |fs.ClaimVectors.| 00002320 52 65 6c 65 61 73 65 56 65 63 74 6f 72 73 0a 46 |ReleaseVectors.F| 00002330 69 6e 64 46 69 72 73 74 46 6f 6e 74 0a 46 69 6e |indFirstFont.Fin| 00002340 64 4e 65 78 74 46 6f 6e 74 0a 4d 65 6d 6f 72 79 |dNextFont.Memory| 00002350 4e 65 65 64 65 64 0a 23 45 6e 64 54 61 62 6c 65 |Needed.#EndTable| 00002360 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 00002370 90 23 00 00 46 fd ff ff 7c e1 dc 14 59 00 00 00 |.#..F...|...Y...| 00002380 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00002390 44 41 54 41 59 00 00 00 42 6f 72 64 65 72 73 0a |DATAY...Borders.| 000023a0 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 |#Parent !Root.#P| 000023b0 72 65 66 69 78 20 42 6f 72 64 65 72 73 5f 0a 54 |refix Borders_.T| 000023c0 61 73 6b 53 74 61 72 74 0a 54 61 73 6b 51 75 69 |askStart.TaskQui| 000023d0 74 0a 50 6c 6f 74 46 61 6e 63 79 42 6f 72 64 65 |t.PlotFancyBorde| 000023e0 72 73 0a 50 6f 6c 6c 30 0a 00 00 00 44 49 52 24 |rs.Poll0....DIR$| 000023f0 2c 00 00 00 2c 00 00 00 18 24 00 00 46 fd ff ff |,...,....$..F...| 00002400 dc 66 ee 13 c9 00 00 00 13 00 00 00 00 00 00 00 |.f..............| 00002410 21 52 6f 6f 74 00 00 00 44 41 54 41 c9 00 00 00 |!Root...DATA....| 00002420 43 41 49 46 53 0a 23 50 61 72 65 6e 74 20 21 52 |CAIFS.#Parent !R| 00002430 6f 6f 74 0a 23 50 72 65 66 69 78 20 43 41 49 46 |oot.#Prefix CAIF| 00002440 53 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e |S_.#Table Column| 00002450 73 20 32 0a 43 72 65 61 74 65 41 72 63 68 69 76 |s 2.CreateArchiv| 00002460 65 0a 43 6f 6d 70 61 63 74 46 72 65 65 53 70 61 |e.CompactFreeSpa| 00002470 63 65 0a 43 6c 6f 73 65 47 61 70 73 0a 46 72 65 |ce.CloseGaps.Fre| 00002480 65 53 70 61 63 65 0a 44 69 72 53 69 7a 65 0a 43 |eSpace.DirSize.C| 00002490 6f 6d 70 61 63 74 69 6f 6e 54 79 70 65 0a 4c 5a |ompactionType.LZ| 000024a0 57 42 69 74 73 0a 43 61 63 68 65 46 69 6c 65 0a |WBits.CacheFile.| 000024b0 53 63 72 61 70 46 69 6c 65 0a 44 69 72 43 61 63 |ScrapFile.DirCac| 000024c0 68 65 0a 52 65 61 64 46 69 6c 65 49 6e 66 6f 0a |he.ReadFileInfo.| 000024d0 46 69 78 52 4d 41 0a 23 45 6e 64 54 61 62 6c 65 |FixRMA.#EndTable| 000024e0 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 000024f0 10 25 00 00 46 fd ff ff 66 9a dc 14 56 00 00 00 |.%..F...f...V...| 00002500 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00002510 44 41 54 41 56 00 00 00 43 6f 6c 6f 75 72 45 78 |DATAV...ColourEx| 00002520 74 65 6e 64 0a 23 50 61 72 65 6e 74 20 21 52 6f |tend.#Parent !Ro| 00002530 6f 74 0a 23 50 72 65 66 69 78 20 43 6f 6c 6f 75 |ot.#Prefix Colou| 00002540 72 45 78 74 65 6e 64 5f 0a 49 6e 66 6f 0a 43 6f |rExtend_.Info.Co| 00002550 6e 74 72 6f 6c 0a 49 6e 76 61 6c 69 64 61 74 65 |ntrol.Invalidate| 00002560 43 61 63 68 65 0a 00 00 44 49 52 24 90 00 00 00 |Cache...DIR$....| 00002570 90 00 00 00 f8 25 00 00 47 fd ff ff 71 03 95 e9 |.....%..G...q...| 00002580 71 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |q...........!Roo| 00002590 74 00 00 00 6c 26 00 00 48 ff ff ff 58 f7 c5 0f |t...l&..H...X...| 000025a0 28 01 00 00 13 00 00 00 00 00 00 00 46 69 6e 69 |(...........Fini| 000025b0 73 68 00 00 94 27 00 00 48 ff ff ff a9 fd c5 0f |sh...'..H.......| 000025c0 33 05 00 00 13 00 00 00 00 00 00 00 53 74 61 72 |3...........Star| 000025d0 74 00 00 00 c8 2c 00 00 47 ff ff ff d2 e1 95 e9 |t....,..G.......| 000025e0 e5 01 00 00 13 00 00 00 00 00 00 00 57 72 69 74 |............Writ| 000025f0 65 4c 69 6e 65 00 00 00 44 41 54 41 71 00 00 00 |eLine...DATAq...| 00002600 43 6f 6d 70 72 65 73 73 4a 50 45 47 0a 23 50 61 |CompressJPEG.#Pa| 00002610 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 |rent !Root.#Pref| 00002620 69 78 20 43 6f 6d 70 72 65 73 73 4a 50 45 47 5f |ix CompressJPEG_| 00002630 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 00002640 33 0a 3c 46 69 6e 69 73 68 3e 0a 3c 53 74 61 72 |3.<Finish>.<Star| 00002650 74 3e 0a 3c 57 72 69 74 65 4c 69 6e 65 3e 0a 23 |t>.<WriteLine>.#| 00002660 45 6e 64 54 61 62 6c 65 0a 00 00 00 44 41 54 41 |EndTable....DATA| 00002670 28 01 00 00 43 6f 6d 70 72 65 73 73 4a 50 45 47 |(...CompressJPEG| 00002680 5f 46 69 6e 69 73 68 20 20 28 26 34 41 35 30 32 |_Finish (&4A502| 00002690 29 0a 23 50 61 72 65 6e 74 20 43 6f 6d 70 72 65 |).#Parent Compre| 000026a0 73 73 4a 50 45 47 5f 0a 3d 3e 09 52 30 20 3d 09 |ssJPEG_.=>.R0 =.| 000026b0 4a 50 45 47 20 74 61 67 0a 3c 3d 09 52 30 20 3d |JPEG tag.<=.R0 =| 000026c0 09 73 69 7a 65 20 6f 66 20 4a 50 45 47 20 69 6d |.size of JPEG im| 000026d0 61 67 65 20 77 69 74 68 69 6e 20 74 68 65 20 62 |age within the b| 000026e0 75 66 66 65 72 0a 0a 54 68 69 73 20 63 61 6c 6c |uffer..This call| 000026f0 20 66 69 6e 69 73 68 65 73 20 74 68 65 20 4a 50 | finishes the JP| 00002700 45 47 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 70 |EG compression p| 00002710 72 6f 63 65 73 73 2c 20 72 65 74 75 72 6e 69 6e |rocess, returnin| 00002720 67 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 |g the size of th| 00002730 65 20 63 6f 6d 70 6c 65 74 65 20 69 6d 61 67 65 |e complete image| 00002740 2e 20 20 41 6e 79 20 77 6f 72 6b 73 70 61 63 65 |. Any workspace| 00002750 20 63 6c 61 69 6d 65 64 20 62 79 20 74 68 65 20 | claimed by the | 00002760 43 6f 6d 70 72 65 73 73 4a 50 45 47 20 6d 6f 64 |CompressJPEG mod| 00002770 75 6c 65 20 66 6f 72 20 74 68 65 20 63 6f 6d 70 |ule for the comp| 00002780 72 65 73 73 69 6f 6e 20 69 73 20 72 65 6c 65 61 |ression is relea| 00002790 73 65 64 2e 44 41 54 41 33 05 00 00 43 6f 6d 70 |sed.DATA3...Comp| 000027a0 72 65 73 73 4a 50 45 47 5f 53 74 61 72 74 20 20 |ressJPEG_Start | 000027b0 28 26 34 41 35 30 30 29 0a 23 50 61 72 65 6e 74 |(&4A500).#Parent| 000027c0 20 43 6f 6d 70 72 65 73 73 4a 50 45 47 5f 0a 3d | CompressJPEG_.=| 000027d0 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 74 |>.R0 =.pointer t| 000027e0 6f 20 62 75 66 66 65 72 20 66 6f 72 20 4a 50 45 |o buffer for JPE| 000027f0 47 20 64 61 74 61 0a 09 52 31 20 3d 09 73 69 7a |G data..R1 =.siz| 00002800 65 20 6f 66 20 4a 50 45 47 20 64 61 74 61 20 62 |e of JPEG data b| 00002810 75 66 66 65 72 0a 09 52 32 20 3d 09 70 6f 69 6e |uffer..R2 =.poin| 00002820 74 65 72 20 74 6f 20 62 6c 6f 63 6b 20 6f 66 20 |ter to block of | 00002830 3c 70 61 72 61 6d 65 74 65 72 73 3d 3e 2e 70 61 |<parameters=>.pa| 00002840 72 61 6d 65 74 65 72 73 3e 0a 09 52 33 20 3d 09 |rameters>..R3 =.| 00002850 70 6f 69 6e 74 65 72 20 74 6f 20 77 6f 72 6b 73 |pointer to works| 00002860 70 61 63 65 20 61 72 65 61 2c 20 6f 72 20 30 20 |pace area, or 0 | 00002870 66 6f 72 20 74 68 65 20 43 6f 6d 70 72 65 73 73 |for the Compress| 00002880 4a 50 45 47 20 6d 6f 64 75 6c 65 20 74 6f 20 61 |JPEG module to a| 00002890 6c 6c 6f 63 61 74 65 20 69 74 73 20 6f 77 6e 20 |llocate its own | 000028a0 77 6f 72 6b 73 70 61 63 65 20 66 72 6f 6d 20 74 |workspace from t| 000028b0 68 65 20 52 4d 41 0a 09 52 34 20 3d 09 73 69 7a |he RMA..R4 =.siz| 000028c0 65 20 6f 66 20 77 6f 72 6b 73 70 61 63 65 20 61 |e of workspace a| 000028d0 72 65 61 20 28 69 66 20 52 33 20 69 73 20 6e 6f |rea (if R3 is no| 000028e0 74 20 30 29 0a 3c 3d 09 52 30 20 3d 09 4a 50 45 |t 0).<=.R0 =.JPE| 000028f0 47 20 74 61 67 2c 20 74 6f 20 62 65 20 70 61 73 |G tag, to be pas| 00002900 73 65 64 20 74 6f 20 6f 74 68 65 72 20 43 6f 6d |sed to other Com| 00002910 70 72 65 73 73 4a 50 45 47 20 53 57 49 73 0a 0a |pressJPEG SWIs..| 00002920 54 68 69 73 20 63 61 6c 6c 20 73 74 61 72 74 73 |This call starts| 00002930 20 74 68 65 20 4a 50 45 47 20 63 6f 6d 70 72 65 | the JPEG compre| 00002940 73 73 69 6f 6e 20 70 72 6f 63 65 73 73 2c 20 73 |ssion process, s| 00002950 65 74 74 69 6e 67 20 75 70 20 76 61 72 69 6f 75 |etting up variou| 00002960 73 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 |s parameters for| 00002970 20 69 74 2e 0a 0a 54 68 65 20 62 75 66 66 65 72 | it...The buffer| 00002980 20 66 6f 72 20 74 68 65 20 4a 50 45 47 20 64 61 | for the JPEG da| 00002990 74 61 20 73 68 6f 75 6c 64 20 62 65 20 61 73 20 |ta should be as | 000029a0 6c 61 72 67 65 20 61 73 20 70 6f 73 73 69 62 6c |large as possibl| 000029b0 65 2c 20 73 69 6e 63 65 20 74 68 65 20 4a 50 45 |e, since the JPE| 000029c0 47 20 63 6f 6d 70 72 65 73 73 69 6f 6e 20 72 6f |G compression ro| 000029d0 75 74 69 6e 65 73 20 63 61 6e 6e 6f 74 20 67 75 |utines cannot gu| 000029e0 61 72 61 6e 74 65 65 20 74 6f 20 63 6f 6d 70 72 |arantee to compr| 000029f0 65 73 73 20 74 68 65 20 69 6d 61 67 65 20 62 79 |ess the image by| 00002a00 20 61 20 66 69 78 65 64 20 61 6d 6f 75 6e 74 2e | a fixed amount.| 00002a10 0a 0a 49 66 20 79 6f 75 20 77 69 73 68 20 74 6f |..If you wish to| 00002a20 20 73 75 70 70 6c 79 20 79 6f 75 72 20 6f 77 6e | supply your own| 00002a30 20 77 6f 72 6b 73 70 61 63 65 20 61 72 65 61 2c | workspace area,| 00002a40 20 69 74 73 20 72 65 71 75 69 72 65 64 20 73 69 | its required si| 00002a50 7a 65 20 66 6f 72 20 61 20 63 6f 6c 6f 75 72 20 |ze for a colour | 00002a60 28 32 34 20 62 69 74 29 20 69 6d 61 67 65 20 69 |(24 bit) image i| 00002a70 73 3a 0a 09 32 30 30 30 30 20 2b 20 28 28 69 6d |s:..20000 + ((im| 00002a80 61 67 65 20 77 69 64 74 68 20 72 6f 75 6e 64 65 |age width rounde| 00002a90 64 20 75 70 20 74 6f 20 61 20 6d 75 6c 74 69 70 |d up to a multip| 00002aa0 6c 65 20 6f 66 20 31 36 29 20 d7 20 33 30 29 0a |le of 16) . 30).| 00002ab0 61 6e 64 20 69 74 73 20 72 65 71 75 69 72 65 64 |and its required| 00002ac0 20 73 69 7a 65 20 66 6f 72 20 61 20 67 72 65 79 | size for a grey| 00002ad0 73 63 61 6c 65 20 28 38 20 62 69 74 29 20 69 6d |scale (8 bit) im| 00002ae0 61 67 65 20 69 73 3a 0a 09 32 30 30 30 30 20 2b |age is:..20000 +| 00002af0 20 28 28 69 6d 61 67 65 20 77 69 64 74 68 20 72 | ((image width r| 00002b00 6f 75 6e 64 65 64 20 75 70 20 74 6f 20 61 20 6d |ounded up to a m| 00002b10 75 6c 74 69 70 6c 65 20 6f 66 20 31 36 29 20 d7 |ultiple of 16) .| 00002b20 20 39 29 0a 0a 41 6e 20 65 72 72 6f 72 20 69 73 | 9)..An error is| 00002b30 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 | returned if the| 00002b40 20 77 6f 72 6b 73 70 61 63 65 20 61 72 65 61 20 | workspace area | 00002b50 62 65 63 6f 6d 65 73 20 66 75 6c 6c 2e 0a 23 53 |becomes full..#S| 00002b60 75 62 70 61 67 65 20 70 61 72 61 6d 65 74 65 72 |ubpage parameter| 00002b70 73 0a 43 6f 6d 70 72 65 73 73 20 4a 50 45 47 20 |s.Compress JPEG | 00002b80 70 61 72 61 6d 65 74 65 72 20 62 6c 6f 63 6b 0a |parameter block.| 00002b90 4f 66 66 73 65 74 09 43 6f 6e 74 65 6e 74 73 0a |Offset.Contents.| 00002ba0 23 4c 69 6e 65 0a 30 09 77 69 64 74 68 20 6f 66 |#Line.0.width of| 00002bb0 20 69 6d 61 67 65 20 69 6e 20 70 69 78 65 6c 73 | image in pixels| 00002bc0 0a 34 09 68 65 69 67 68 74 20 6f 66 20 69 6d 61 |.4.height of ima| 00002bd0 67 65 20 69 6e 20 70 69 78 65 6c 73 0a 38 09 71 |ge in pixels.8.q| 00002be0 75 61 6c 69 74 79 20 76 61 6c 75 65 20 28 30 20 |uality value (0 | 00002bf0 2d 20 31 30 30 29 3a 20 6c 6f 77 65 72 20 71 75 |- 100): lower qu| 00002c00 61 6c 69 74 79 20 72 65 73 75 6c 74 73 20 69 6e |ality results in| 00002c10 20 73 6d 61 6c 6c 65 72 20 69 6d 61 67 65 0a 31 | smaller image.1| 00002c20 32 09 6e 75 6d 62 65 72 20 69 66 20 38 20 62 69 |2.number if 8 bi| 00002c30 74 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 69 6e 20 |t components in | 00002c40 73 6f 75 72 63 65 3a 20 33 20 3d 3e 20 32 34 20 |source: 3 => 24 | 00002c50 62 69 74 20 63 6f 6c 6f 75 72 2c 20 31 20 3d 3e |bit colour, 1 =>| 00002c60 20 38 20 62 69 74 20 67 72 65 79 73 63 61 6c 65 | 8 bit greyscale| 00002c70 0a 31 36 09 68 6f 72 69 7a 6f 6e 74 61 6c 20 44 |.16.horizontal D| 00002c80 50 49 20 6f 66 20 69 6d 61 67 65 2c 20 6f 72 20 |PI of image, or | 00002c90 30 20 69 66 20 75 6e 6b 6e 6f 77 6e 0a 32 30 09 |0 if unknown.20.| 00002ca0 76 65 72 74 69 63 61 6c 20 44 50 49 20 6f 66 20 |vertical DPI of | 00002cb0 69 6d 61 67 65 2c 20 6f 72 20 30 20 69 66 20 75 |image, or 0 if u| 00002cc0 6e 6b 6e 6f 77 6e 0a 00 44 41 54 41 e5 01 00 00 |nknown..DATA....| 00002cd0 43 6f 6d 70 72 65 73 73 4a 50 45 47 5f 57 72 69 |CompressJPEG_Wri| 00002ce0 74 65 4c 69 6e 65 20 20 28 26 34 41 35 30 31 29 |teLine (&4A501)| 00002cf0 0a 23 50 61 72 65 6e 74 20 43 6f 6d 70 72 65 73 |.#Parent Compres| 00002d00 73 4a 50 45 47 5f 0a 3d 3e 09 52 30 20 3d 09 4a |sJPEG_.=>.R0 =.J| 00002d10 50 45 47 20 74 61 67 0a 20 09 52 31 20 3d 09 70 |PEG tag. .R1 =.p| 00002d20 6f 69 6e 74 65 72 20 74 6f 20 61 20 72 6f 77 20 |ointer to a row | 00002d30 6f 66 20 70 69 78 65 6c 73 3a 0a 20 09 20 09 20 |of pixels:. . . | 00002d40 09 46 6f 72 20 63 6f 6c 6f 75 72 3a 20 61 20 62 |.For colour: a b| 00002d50 75 66 66 65 72 20 6f 66 20 63 6f 6e 74 69 6e 75 |uffer of continu| 00002d60 6f 75 73 20 52 47 42 20 76 61 6c 75 65 73 20 2d |ous RGB values -| 00002d70 20 69 65 20 61 20 62 79 74 65 20 73 74 72 65 61 | ie a byte strea| 00002d80 6d 20 6f 66 20 74 68 65 20 66 6f 72 6d 61 74 20 |m of the format | 00002d90 52 2c 20 47 2c 20 42 2c 20 52 2c 20 47 2c 20 42 |R, G, B, R, G, B| 00002da0 2e 2e 2e 0a 20 09 20 09 20 09 46 6f 72 20 67 72 |.... . . .For gr| 00002db0 65 79 73 63 61 6c 65 3a 20 61 20 62 75 66 66 65 |eyscale: a buffe| 00002dc0 72 20 6f 66 20 63 6f 6e 74 69 6e 75 6f 75 73 20 |r of continuous | 00002dd0 38 20 62 69 74 20 67 72 65 79 20 76 61 6c 75 65 |8 bit grey value| 00002de0 73 0a 3c 3d 20 09 52 30 2c 20 52 31 20 70 72 65 |s.<= .R0, R1 pre| 00002df0 73 65 72 76 65 64 0a 0a 54 68 69 73 20 63 61 6c |served..This cal| 00002e00 6c 20 63 6f 6d 70 72 65 73 73 65 73 20 6f 6e 65 |l compresses one| 00002e10 20 72 6f 77 20 6f 66 20 73 6f 75 72 63 65 20 70 | row of source p| 00002e20 69 78 65 6c 73 20 69 6e 74 6f 20 74 68 65 20 4a |ixels into the J| 00002e30 50 45 47 20 62 75 66 66 65 72 2e 20 20 49 74 20 |PEG buffer. It | 00002e40 73 68 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 64 |should be called| 00002e50 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68 20 72 | once for each r| 00002e60 6f 77 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 |ow of the source| 00002e70 20 64 61 74 61 2e 20 20 41 6e 20 65 72 72 6f 72 | data. An error| 00002e80 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 | is returned if | 00002e90 74 68 65 20 4a 50 45 47 20 62 75 66 66 65 72 20 |the JPEG buffer | 00002ea0 62 65 63 6f 6d 65 73 20 66 75 6c 6c 2e 00 00 00 |becomes full....| 00002eb0 44 41 54 41 45 08 00 00 0d 00 0a 26 f4 20 4e 65 |DATAE......&. Ne| 00002ec0 77 65 72 20 76 65 72 73 69 6f 6e 20 74 68 61 6e |wer version than| 00002ed0 20 69 6e 20 53 74 72 6f 6e 67 48 65 6c 70 0d 00 | in StrongHelp..| 00002ee0 14 1f ee 20 85 20 85 20 a2 20 30 2c f6 24 2b 22 |... . . . 0,.$+"| 00002ef0 20 61 74 20 6c 69 6e 65 20 22 2b c3 9e 0d 00 1e | at line "+.....| 00002f00 32 73 68 24 3d 22 41 44 46 53 3a 3a 47 65 72 70 |2sh$="ADFS::Gerp| 00002f10 68 2e 24 2e 41 70 70 73 2e 57 50 72 6f 63 65 73 |h.$.Apps.WProces| 00002f20 73 2e 21 4d 61 6e 75 61 6c 73 2e 53 57 49 22 0d |s.!Manuals.SWI".| 00002f30 00 28 0e de 20 6d 65 6d 25 20 32 35 36 0d 00 32 |.(.. mem% 256..2| 00002f40 21 73 63 72 61 70 72 6f 6f 74 24 3d 22 53 63 72 |!scraproot$="Scr| 00002f50 61 70 3a 53 74 72 6f 6e 67 46 69 6c 65 22 0d 00 |ap:StrongFile"..| 00002f60 3c 1a 6f 25 3d ae 28 22 53 63 72 61 70 3a 4e 65 |<.o%=.("Scrap:Ne| 00002f70 77 41 64 64 65 64 22 29 0d 00 46 20 d5 23 6f 25 |wAdded")..F .#o%| 00002f80 2c 22 4e 65 77 6c 79 20 61 64 64 65 64 20 53 57 |,"Newly added SW| 00002f90 49 20 63 61 6c 6c 73 22 0d 00 50 18 d5 23 6f 25 |I calls"..P..#o%| 00002fa0 2c 22 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 22 |,"#Parent !Root"| 00002fb0 0d 00 5a 15 d5 23 6f 25 2c 22 23 50 6f 73 74 66 |..Z..#o%,"#Postf| 00002fc0 69 78 20 5f 22 0d 00 64 1b d5 23 6f 25 2c 22 23 |ix _"..d..#o%,"#| 00002fd0 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 33 22 |Table Columns 3"| 00002fe0 0d 00 6e 12 63 6f 25 3d 30 3a 63 6f 61 73 24 3d |..n.co%=0:coas$=| 00002ff0 22 22 0d 00 78 0c 6c 61 73 74 24 3d 22 22 0d 00 |""..x.last$=""..| 00003000 82 18 e3 49 3d 26 32 30 30 b8 26 31 30 30 30 30 |...I=&200.&10000| 00003010 30 20 88 20 36 34 0d 00 8c 20 20 e7 20 28 49 20 |0 . 64... . (I | 00003020 80 20 26 32 30 30 30 30 29 3e 30 20 8c 49 2b 3d |. &20000)>0 .I+=| 00003030 26 32 30 30 30 30 0d 00 96 0b 20 73 77 69 25 3d |&20000.... swi%=| 00003040 49 0d 00 a0 06 20 f5 0d 00 aa 36 20 20 c8 99 20 |I.... ....6 .. | 00003050 22 58 4f 53 5f 53 57 49 4e 75 6d 62 65 72 54 6f |"XOS_SWINumberTo| 00003060 53 74 72 69 6e 67 22 2c 73 77 69 25 2c 6d 65 6d |String",swi%,mem| 00003070 25 2c 32 35 36 20 b8 20 2c 2c 6c 65 6e 0d 00 b4 |%,256 . ,,len...| 00003080 20 20 20 6d 65 6d 25 3f 28 6c 65 6e 2d 31 29 3d | mem%?(len-1)=| 00003090 31 33 3a 73 77 69 24 3d 24 6d 65 6d 25 0d 00 be |13:swi$=$mem%...| 000030a0 42 20 20 e7 20 a7 73 77 69 24 2c 22 55 6e 64 65 |B . .swi$,"Unde| 000030b0 66 69 6e 65 64 22 29 3e 30 20 84 20 73 77 69 24 |fined")>0 . swi$| 000030c0 3d 22 55 73 65 72 22 20 84 20 73 77 69 24 3d 22 |="User" . swi$="| 000030d0 4e 55 4c 4c 22 20 8c 20 73 77 69 24 3d 22 22 0d |NULL" . swi$="".| 000030e0 00 c8 23 20 20 e7 20 a7 73 77 69 24 2c c3 28 73 |..# . .swi$,.(s| 000030f0 77 69 25 2d 49 29 29 3e 30 20 8c 73 77 69 24 3d |wi%-I))>0 .swi$=| 00003100 22 22 0d 00 d2 12 20 20 e7 20 73 77 69 24 3c 3e |"".... . swi$<>| 00003110 22 22 20 8c 0d 00 dc 1b 20 20 20 f2 73 77 69 66 |"" ..... .swif| 00003120 6f 75 6e 64 28 73 77 69 25 2c 73 77 69 24 29 0d |ound(swi%,swi$).| 00003130 00 e6 07 20 20 cd 0d 00 f0 0d 20 20 73 77 69 25 |... ..... swi%| 00003140 2b 3d 31 0d 00 fa 1a 20 fd 20 73 77 69 25 3d 49 |+=1.... . swi%=I| 00003150 2b 36 34 20 84 20 73 77 69 24 3d 22 22 0d 01 04 |+64 . swi$=""...| 00003160 05 ed 0d 01 0e 0e e7 20 63 6f 25 3c 3e 30 20 8c |....... co%<>0 .| 00003170 0d 01 18 16 20 d5 23 63 6f 25 2c 22 23 45 6e 64 |.... .#co%,"#End| 00003180 54 61 62 6c 65 22 0d 01 22 0a 20 d9 23 63 6f 25 |Table"..". .#co%| 00003190 0d 01 2c 36 20 ff 28 22 43 6f 70 79 20 22 2b 73 |..,6 .("Copy "+s| 000031a0 63 72 61 70 72 6f 6f 74 24 2b 22 20 22 2b 73 68 |craproot$+" "+sh| 000031b0 24 2b 22 2e 22 2b 63 6f 61 73 24 2b 22 20 44 7e |$+"."+coas$+" D~| 000031c0 43 7e 56 46 22 29 0d 01 36 05 cd 0d 01 40 14 d5 |C~VF")..6....@..| 000031d0 23 6f 25 2c 22 23 45 6e 64 54 61 62 6c 65 22 0d |#o%,"#EndTable".| 000031e0 01 4a 08 d9 23 6f 25 0d 01 54 34 ff 28 22 43 6f |.J..#o%..T4.("Co| 000031f0 70 79 20 53 63 72 61 70 3a 4e 65 77 41 64 64 65 |py Scrap:NewAdde| 00003200 64 20 22 2b 73 68 24 2b 22 2e 4e 65 77 41 64 64 |d "+sh$+".NewAdd| 00003210 65 64 20 44 7e 43 7e 56 46 22 29 0d 01 5e 05 e0 |ed D~C~VF")..^..| 00003220 0d 01 68 05 3a 0d 01 72 17 dd f2 73 77 69 66 6f |..h.:..r...swifo| 00003230 75 6e 64 28 73 77 69 25 2c 63 24 29 0d 01 7c 16 |und(swi%,c$)..|.| 00003240 6d 6f 64 24 3d c0 63 24 2c a7 63 24 2c 22 5f 22 |mod$=.c$,.c$,"_"| 00003250 29 29 0d 01 86 19 63 61 6c 6c 24 3d c1 63 24 2c |))....call$=.c$,| 00003260 a7 63 24 2c 22 5f 22 29 2b 31 29 0d 01 90 1e 66 |.c$,"_")+1)....f| 00003270 74 3d a4 66 69 6c 65 74 79 70 65 28 73 68 24 2b |t=.filetype(sh$+| 00003280 22 2e 22 2b 6d 6f 64 24 29 0d 01 9a 0d e7 20 66 |"."+mod$)..... f| 00003290 74 3d 2d 32 20 8c 0d 01 a4 0f 20 e7 20 63 6f 25 |t=-2 ..... . co%| 000032a0 3c 3e 30 20 8c 0d 01 ae 1d 20 20 d5 23 63 6f 25 |<>0 ..... .#co%| 000032b0 2c 22 23 45 6e 64 54 61 62 6c 65 22 3a d9 23 63 |,"#EndTable":.#c| 000032c0 6f 25 0d 01 b8 36 20 20 ff 28 22 43 6f 70 79 20 |o%...6 .("Copy | 000032d0 22 2b 73 63 72 61 70 72 6f 6f 74 24 2b 22 20 22 |"+scraproot$+" "| 000032e0 2b 73 68 24 2b 22 2e 22 2b 63 6f 61 73 24 2b 22 |+sh$+"."+coas$+"| 000032f0 20 44 7e 43 7e 56 22 29 0d 01 c2 0b 20 20 63 6f | D~C~V").... co| 00003300 25 3d 30 0d 01 cc 06 20 cd 0d 01 d6 1c 20 ff 28 |%=0.... ..... .(| 00003310 22 43 44 69 72 20 22 2b 73 68 24 2b 22 2e 22 2b |"CDir "+sh$+"."+| 00003320 6d 6f 64 24 29 0d 01 e0 18 20 d5 23 6f 25 2c 22 |mod$).... .#o%,"| 00003330 3c 22 2b c0 6d 6f 64 24 29 2b 22 3e 22 0d 01 ea |<"+.mod$)+">"...| 00003340 18 20 63 6f 61 73 24 3d 6d 6f 64 24 2b 22 2e 21 |. coas$=mod$+".!| 00003350 52 6f 6f 74 22 0d 01 f4 16 20 63 6f 25 3d ae 28 |Root".... co%=.(| 00003360 73 63 72 61 70 72 6f 6f 74 24 29 0d 01 fe 11 20 |scraproot$).... | 00003370 d5 23 63 6f 25 2c c0 6d 6f 64 24 29 0d 02 08 1a |.#co%,.mod$)....| 00003380 20 d5 23 63 6f 25 2c 22 23 50 61 72 65 6e 74 20 | .#co%,"#Parent | 00003390 21 52 6f 6f 74 22 0d 02 12 1a 20 d5 23 63 6f 25 |!Root".... .#co%| 000033a0 2c 22 23 50 72 65 66 69 78 20 22 2b 6d 6f 64 24 |,"#Prefix "+mod$| 000033b0 0d 02 1c 1d 20 d5 23 63 6f 25 2c 22 23 54 61 62 |.... .#co%,"#Tab| 000033c0 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 22 0d 02 26 |le Columns 2"..&| 000033d0 0f 20 6c 61 73 74 24 3d 6d 6f 64 24 0d 02 30 05 |. last$=mod$..0.| 000033e0 cd 0d 02 3a 2c e7 20 6c 61 73 74 24 3d 6d 6f 64 |...:,. last$=mod| 000033f0 24 20 8c d5 23 63 6f 25 2c 63 61 6c 6c 24 3a f1 |$ ..#co%,call$:.| 00003400 6d 6f 64 24 2c 63 61 6c 6c 24 2c 66 74 0d 02 44 |mod$,call$,ft..D| 00003410 05 e1 0d 02 4e 05 3a 0d 02 58 28 f4 20 20 3e 3e |....N.:..X(. >>| 00003420 3e 3e 3e 20 53 74 6f 6c 65 6e 20 66 72 6f 6d 20 |>>> Stolen from | 00003430 4a 46 53 68 61 72 65 64 20 3c 3c 3c 3c 3c 3c 0d |JFShared <<<<<<.| 00003440 02 62 05 3a 0d 02 6c 37 f4 20 2a 2a 2a 2a 2a 2a |.b.:..l7. ******| 00003450 2a 2a 20 46 69 6c 65 20 69 6e 66 6f 72 6d 61 74 |** File informat| 00003460 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 2a 2a 2a |ion routines ***| 00003470 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 02 76 05 3a |***********..v.:| 00003480 0d 02 80 31 f4 20 46 4e 66 69 6c 65 74 79 70 65 |...1. FNfiletype| 00003490 20 3a 20 52 65 74 75 72 6e 20 74 68 65 20 66 69 | : Return the fi| 000034a0 6c 65 20 74 79 70 65 20 6f 66 20 61 20 66 69 6c |le type of a fil| 000034b0 65 0d 02 8a 32 f4 20 2d 32 3d 6e 6f 74 20 66 6f |e...2. -2=not fo| 000034c0 75 6e 64 2c 20 2d 31 3d 75 6e 74 79 70 65 64 2c |und, -1=untyped,| 000034d0 20 26 31 30 30 30 3d 64 69 72 20 6f 72 20 69 6d | &1000=dir or im| 000034e0 61 67 65 0d 02 94 22 dd 20 a4 66 69 6c 65 74 79 |age...". .filety| 000034f0 70 65 28 66 24 29 3a ea 20 66 25 2c 74 79 70 65 |pe(f$):. f%,type| 00003500 25 2c 66 6c 25 0d 02 9e 2b c8 99 20 22 58 4f 53 |%,fl%...+.. "XOS| 00003510 5f 46 69 6c 65 22 2c 32 30 2c 66 24 20 b8 20 74 |_File",20,f$ . t| 00003520 79 70 65 25 2c 2c 2c 2c 2c 2c 66 25 3b 66 6c 25 |ype%,,,,,,f%;fl%| 00003530 0d 02 a8 0e c8 8e 20 74 79 70 65 25 20 ca 0d 02 |...... type% ...| 00003540 b2 11 20 c9 20 30 3a 74 79 70 65 25 3d 2d 32 0d |.. . 0:type%=-2.| 00003550 02 bc 11 20 c9 20 31 3a 74 79 70 65 25 3d 66 25 |... . 1:type%=f%| 00003560 0d 02 c6 16 20 c9 20 32 2c 33 3a 74 79 70 65 25 |.... . 2,3:type%| 00003570 3d 26 31 30 30 30 0d 02 d0 05 cb 0d 02 da 19 e7 |=&1000..........| 00003580 20 28 66 6c 25 80 31 29 3d 31 20 8c 74 79 70 65 | (fl%.1)=1 .type| 00003590 25 3d 2d 32 0d 02 e4 0a 3d 74 79 70 65 25 0d 02 |%=-2....=type%..| 000035a0 ee 05 3a 0d 02 f8 3f f4 20 46 4e 62 61 73 65 74 |..:...?. FNbaset| 000035b0 79 70 65 20 3a 20 52 65 74 75 72 6e 20 74 68 65 |ype : Return the| 000035c0 20 66 69 6c 65 20 74 79 70 65 20 6f 66 20 61 20 | file type of a | 000035d0 64 69 72 65 63 74 6f 72 79 20 6f 72 20 69 6d 61 |directory or ima| 000035e0 67 65 0d 03 02 3a f4 20 2d 32 3d 6e 6f 74 20 66 |ge...:. -2=not f| 000035f0 6f 75 6e 64 2c 20 2d 31 3d 66 69 6c 65 2c 20 26 |ound, -1=file, &| 00003600 31 30 30 30 20 66 6f 72 20 64 69 72 2c 20 74 79 |1000 for dir, ty| 00003610 70 65 20 66 6f 72 20 69 6d 61 67 65 0d 03 0c 22 |pe for image..."| 00003620 dd 20 a4 62 61 73 65 74 79 70 65 28 66 24 29 3a |. .basetype(f$):| 00003630 ea 20 66 25 2c 74 79 70 65 25 2c 66 6c 25 0d 03 |. f%,type%,fl%..| 00003640 16 26 c8 99 20 22 58 4f 53 5f 46 69 6c 65 22 2c |.&.. "XOS_File",| 00003650 35 2c 66 24 20 b8 20 74 79 70 65 25 2c 2c 66 25 |5,f$ . type%,,f%| 00003660 3b 66 6c 25 0d 03 20 0e c8 8e 20 74 79 70 65 25 |;fl%.. ... type%| 00003670 20 ca 0d 03 2a 11 20 c9 20 30 3a 74 79 70 65 25 | ...*. . 0:type%| 00003680 3d 2d 32 0d 03 34 11 20 c9 20 31 3a 74 79 70 65 |=-2..4. . 1:type| 00003690 25 3d 2d 31 0d 03 3e 14 20 c9 20 32 3a 74 79 70 |%=-1..>. . 2:typ| 000036a0 65 25 3d 26 31 30 30 30 0d 03 48 1f 20 c9 20 33 |e%=&1000..H. . 3| 000036b0 3a 74 79 70 65 25 3d 28 66 25 20 80 20 26 46 46 |:type%=(f% . &FF| 000036c0 46 30 30 29 3e 3e 38 0d 03 52 05 cb 0d 03 5c 19 |F00)>>8..R....\.| 000036d0 e7 20 28 66 6c 25 80 31 29 3d 31 20 8c 74 79 70 |. (fl%.1)=1 .typ| 000036e0 65 25 3d 2d 32 0d 03 66 0a 3d 74 79 70 65 25 0d |e%=-2..f.=type%.| 000036f0 03 70 04 0d ff 00 00 00 44 49 52 24 2c 00 00 00 |.p......DIR$,...| 00003700 2c 00 00 00 24 37 00 00 46 fd ff ff e1 12 76 15 |,...$7..F.....v.| 00003710 a5 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 00003720 74 00 00 00 44 41 54 41 a5 00 00 00 43 72 65 61 |t...DATA....Crea| 00003730 74 6f 72 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f |tor.#Parent !Roo| 00003740 74 0a 23 50 72 65 66 69 78 20 43 72 65 61 74 6f |t.#Prefix Creato| 00003750 72 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e |r_.#Table Column| 00003760 73 20 32 0a 53 65 74 56 61 72 69 61 62 6c 65 0a |s 2.SetVariable.| 00003770 52 65 61 64 56 61 72 69 61 62 6c 65 0a 47 49 46 |ReadVariable.GIF| 00003780 43 6f 6d 70 72 65 73 73 0a 54 49 46 46 43 6f 6d |Compress.TIFFCom| 00003790 70 72 65 73 73 0a 41 49 4d 43 6f 6e 76 65 72 74 |press.AIMConvert| 000037a0 0a 50 42 4d 43 6f 6e 76 65 72 74 0a 54 61 73 6b |.PBMConvert.Task| 000037b0 53 74 61 72 74 0a 54 61 73 6b 51 75 69 74 0a 23 |Start.TaskQuit.#| 000037c0 45 6e 64 54 61 62 6c 65 0a 00 00 00 44 49 52 24 |EndTable....DIR$| 000037d0 2c 00 00 00 2c 00 00 00 f8 37 00 00 46 fd ff ff |,...,....7..F...| 000037e0 aa 11 76 15 f7 00 00 00 13 00 00 00 00 00 00 00 |..v.............| 000037f0 21 52 6f 6f 74 00 00 00 44 41 54 41 f7 00 00 00 |!Root...DATA....| 00003800 44 69 73 73 0a 23 50 61 72 65 6e 74 20 21 52 6f |Diss.#Parent !Ro| 00003810 6f 74 0a 23 50 72 65 66 69 78 20 44 69 73 73 5f |ot.#Prefix Diss_| 00003820 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 00003830 32 0a 44 69 73 61 73 73 65 6d 62 6c 65 0a 49 6e |2.Disassemble.In| 00003840 69 74 4c 61 62 65 6c 73 0a 4d 61 6b 65 4c 61 62 |itLabels.MakeLab| 00003850 65 6c 4c 6f 6f 6b 75 70 0a 46 69 6e 64 4c 61 62 |elLookup.FindLab| 00003860 65 6c 0a 46 69 6e 64 4e 61 6d 65 64 4c 61 62 65 |el.FindNamedLabe| 00003870 6c 0a 41 64 64 4c 61 62 65 6c 0a 41 64 64 4c 61 |l.AddLabel.AddLa| 00003880 62 65 6c 4e 6f 53 6f 72 74 0a 52 65 6d 6f 76 65 |belNoSort.Remove| 00003890 4c 61 62 65 6c 0a 41 73 73 65 6d 62 6c 65 0a 41 |Label.Assemble.A| 000038a0 64 64 4c 69 62 72 61 72 79 42 6c 6f 63 6b 0a 4d |ddLibraryBlock.M| 000038b0 65 72 67 65 4c 61 62 65 6c 73 0a 52 65 6d 6f 76 |ergeLabels.Remov| 000038c0 65 49 6e 76 61 6c 69 64 4c 61 62 65 6c 73 0a 52 |eInvalidLabels.R| 000038d0 65 6d 6f 76 65 53 61 6d 65 4e 61 6d 65 64 4c 61 |emoveSameNamedLa| 000038e0 62 65 6c 73 0a 23 45 6e 64 54 61 62 6c 65 0a 00 |bels.#EndTable..| 000038f0 44 49 52 24 2c 00 00 00 2c 00 00 00 1c 39 00 00 |DIR$,...,....9..| 00003900 46 fd ff ff 8e 46 c7 13 75 02 00 00 13 00 00 00 |F....F..u.......| 00003910 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 00003920 75 02 00 00 44 69 74 68 65 72 45 78 74 65 6e 64 |u...DitherExtend| 00003930 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 00003940 50 72 65 66 69 78 20 44 69 74 68 65 72 45 78 74 |Prefix DitherExt| 00003950 65 6e 64 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 |end_.#Table Colu| 00003960 6d 6e 73 20 32 0a 53 65 6c 65 63 74 54 61 62 6c |mns 2.SelectTabl| 00003970 65 0a 53 65 6c 65 63 74 47 43 4f 4c 54 61 62 6c |e.SelectGCOLTabl| 00003980 65 0a 52 65 74 75 72 6e 47 43 4f 4c 0a 53 65 74 |e.ReturnGCOL.Set| 00003990 47 43 4f 4c 0a 52 65 74 75 72 6e 43 6f 6c 6f 75 |GCOL.ReturnColou| 000039a0 72 4e 75 6d 62 65 72 0a 52 65 74 75 72 6e 47 43 |rNumber.ReturnGC| 000039b0 4f 4c 46 6f 72 4d 6f 64 65 0a 52 65 74 75 72 6e |OLForMode.Return| 000039c0 43 6f 6c 6f 75 72 4e 75 6d 62 65 72 46 6f 72 4d |ColourNumberForM| 000039d0 6f 64 65 0a 52 65 74 75 72 6e 4f 70 70 47 43 4f |ode.ReturnOppGCO| 000039e0 4c 0a 53 65 74 4f 70 70 47 43 4f 4c 0a 52 65 74 |L.SetOppGCOL.Ret| 000039f0 75 72 6e 4f 70 70 43 6f 6c 6f 75 72 4e 75 6d 62 |urnOppColourNumb| 00003a00 65 72 0a 52 65 74 75 72 6e 4f 70 70 47 43 4f 4c |er.ReturnOppGCOL| 00003a10 46 6f 72 4d 6f 64 65 0a 52 65 74 75 72 6e 4f 70 |ForMode.ReturnOp| 00003a20 70 43 6f 6c 6f 75 72 4e 75 6d 62 65 72 46 6f 72 |pColourNumberFor| 00003a30 4d 6f 64 65 0a 47 43 4f 4c 54 6f 43 6f 6c 6f 75 |Mode.GCOLToColou| 00003a40 72 4e 75 6d 62 65 72 0a 43 6f 6c 6f 75 72 4e 75 |rNumber.ColourNu| 00003a50 6d 62 65 72 54 6f 47 43 4f 4c 0a 49 6e 66 6f 0a |mberToGCOL.Info.| 00003a60 43 6f 6e 74 72 6f 6c 0a 52 65 74 75 72 6e 43 6f |Control.ReturnCo| 00003a70 6c 6f 75 72 50 61 74 74 65 72 6e 0a 52 65 74 75 |lourPattern.Retu| 00003a80 72 6e 43 6f 6c 6f 75 72 50 61 74 74 65 72 6e 54 |rnColourPatternT| 00003a90 61 62 6c 65 0a 49 6e 76 61 6c 69 64 61 74 65 50 |able.InvalidateP| 00003aa0 61 6c 65 74 74 65 0a 41 6e 74 69 61 6c 69 61 73 |alette.Antialias| 00003ab0 0a 52 65 61 64 50 61 6c 65 74 74 65 0a 52 65 74 |.ReadPalette.Ret| 00003ac0 75 72 6e 43 6f 6c 6f 75 72 50 61 74 74 65 72 6e |urnColourPattern| 00003ad0 41 72 72 61 79 0a 53 65 74 48 61 6c 66 74 6f 6e |Array.SetHalfton| 00003ae0 65 0a 52 65 74 75 72 6e 48 61 6c 66 74 6f 6e 65 |e.ReturnHalftone| 00003af0 0a 53 65 74 48 61 6c 66 74 6f 6e 65 4f 72 69 67 |.SetHalftoneOrig| 00003b00 69 6e 0a 52 65 74 75 72 6e 48 61 6c 66 74 6f 6e |in.ReturnHalfton| 00003b10 65 4f 72 69 67 69 6e 0a 53 65 6c 65 63 74 48 61 |eOrigin.SelectHa| 00003b20 6c 66 74 6f 6e 65 54 61 62 6c 65 0a 52 65 74 75 |lftoneTable.Retu| 00003b30 72 6e 48 61 6c 66 74 6f 6e 65 49 6e 74 65 6e 73 |rnHalftoneIntens| 00003b40 69 74 79 0a 52 65 74 75 72 6e 48 61 6c 66 74 6f |ity.ReturnHalfto| 00003b50 6e 65 54 61 62 6c 65 0a 53 65 74 53 63 72 65 65 |neTable.SetScree| 00003b60 6e 0a 43 61 63 68 65 53 63 72 65 65 6e 0a 53 65 |n.CacheScreen.Se| 00003b70 6c 65 63 74 43 6f 6c 6f 75 72 50 61 74 74 65 72 |lectColourPatter| 00003b80 6e 54 61 62 6c 65 0a 23 45 6e 64 54 61 62 6c 65 |nTable.#EndTable| 00003b90 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 00003ba0 c0 3b 00 00 46 fd ff ff b4 22 8e a5 8d 00 00 00 |.;..F...."......| 00003bb0 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00003bc0 44 41 54 41 8d 00 00 00 44 6f 63 75 6d 65 6e 74 |DATA....Document| 00003bd0 4d 61 6e 61 67 65 72 0a 23 50 61 72 65 6e 74 20 |Manager.#Parent | 00003be0 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 44 6f |!Root.#Prefix Do| 00003bf0 63 75 6d 65 6e 74 4d 61 6e 61 67 65 72 5f 0a 23 |cumentManager_.#| 00003c00 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 33 0a |Table Columns 3.| 00003c10 4f 70 65 6e 0a 43 6c 6f 73 65 0a 46 69 6c 65 0a |Open.Close.File.| 00003c20 46 69 6e 64 0a 41 72 67 73 0a 47 42 50 42 0a 43 |Find.Args.GBPB.C| 00003c30 6f 6d 70 61 63 74 0a 52 65 73 65 74 0a 53 74 61 |ompact.Reset.Sta| 00003c40 6d 70 0a 23 45 6e 64 54 61 62 6c 65 0a 00 00 00 |mp.#EndTable....| 00003c50 44 49 52 24 2c 00 00 00 2c 00 00 00 7c 3c 00 00 |DIR$,...,...|<..| 00003c60 46 fd ff ff 3f b7 dc 14 44 00 00 00 13 00 00 00 |F...?...D.......| 00003c70 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 00003c80 44 00 00 00 44 72 61 67 41 6e 4f 62 6a 65 63 74 |D...DragAnObject| 00003c90 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 00003ca0 50 72 65 66 69 78 20 44 72 61 67 41 6e 4f 62 6a |Prefix DragAnObj| 00003cb0 65 63 74 5f 0a 53 74 61 72 74 0a 53 74 6f 70 0a |ect_.Start.Stop.| 00003cc0 44 49 52 24 24 04 00 00 24 04 00 00 e4 40 00 00 |DIR$$...$....@..| 00003cd0 47 fd ff ff 80 d3 09 0c 91 01 00 00 13 00 00 00 |G...............| 00003ce0 00 00 00 00 21 52 6f 6f 74 00 00 00 78 42 00 00 |....!Root...xB..| 00003cf0 47 ff ff ff 75 1c 0b 0c f6 00 00 00 13 00 00 00 |G...u...........| 00003d00 00 00 00 00 42 75 66 66 65 72 41 64 64 72 65 73 |....BufferAddres| 00003d10 73 00 00 00 70 43 00 00 47 ff ff ff d6 49 0b 0c |s...pC..G....I..| 00003d20 28 01 00 00 13 00 00 00 00 00 00 00 43 6f 6e 66 |(...........Conf| 00003d30 69 67 75 72 65 00 00 00 98 44 00 00 47 ff ff ff |igure....D..G...| 00003d40 a6 ad 0b 0c 23 01 00 00 13 00 00 00 00 00 00 00 |....#...........| 00003d50 43 75 74 4e 6f 74 65 00 bc 45 00 00 47 ff ff ff |CutNote..E..G...| 00003d60 28 74 0b 0c fd 00 00 00 13 00 00 00 00 00 00 00 |(t..............| 00003d70 44 65 66 61 75 6c 74 53 74 65 72 65 6f 00 00 00 |DefaultStereo...| 00003d80 bc 46 00 00 47 ff ff ff f6 60 0a 0c 5b 00 00 00 |.F..G....`..[...| 00003d90 13 00 00 00 00 00 00 00 46 6c 75 73 68 4f 75 74 |........FlushOut| 00003da0 70 75 74 00 18 47 00 00 47 ff ff ff b0 a4 0b 0c |put..G..G.......| 00003db0 ea 00 00 00 13 00 00 00 00 00 00 00 46 72 65 65 |............Free| 00003dc0 7a 65 4f 75 74 70 75 74 00 00 00 00 04 48 00 00 |zeOutput.....H..| 00003dd0 47 ff ff ff ef d9 0a 0c a9 00 00 00 13 00 00 00 |G...............| 00003de0 00 00 00 00 49 6e 74 53 74 61 74 65 00 00 00 00 |....IntState....| 00003df0 b0 48 00 00 47 ff ff ff a4 f5 09 0c 8e 02 00 00 |.H..G...........| 00003e00 13 00 00 00 00 00 00 00 4c 6f 61 64 00 00 00 00 |........Load....| 00003e10 40 4b 00 00 47 ff ff ff fd 13 0b 0c 09 01 00 00 |@K..G...........| 00003e20 13 00 00 00 00 00 00 00 4c 6f 6f 70 00 00 00 00 |........Loop....| 00003e30 4c 4c 00 00 47 ff ff ff 72 9a 0b 0c 19 01 00 00 |LL..G...r.......| 00003e40 13 00 00 00 00 00 00 00 4d 61 73 6b 56 6f 69 63 |........MaskVoic| 00003e50 65 00 00 00 68 4d 00 00 47 ff ff ff ba ee 0a 0c |e...hM..G.......| 00003e60 27 02 00 00 13 00 00 00 00 00 00 00 4e 6f 74 65 |'...........Note| 00003e70 49 6e 66 6f 00 00 00 00 90 4f 00 00 47 ff ff ff |Info.....O..G...| 00003e80 db 51 0b 0c 03 01 00 00 13 00 00 00 00 00 00 00 |.Q..............| 00003e90 50 61 72 61 6d 73 00 00 94 50 00 00 47 ff ff ff |Params...P..G...| 00003ea0 78 be 0a 0c 63 00 00 00 13 00 00 00 00 00 00 00 |x...c...........| 00003eb0 50 61 75 73 65 00 00 00 f8 50 00 00 47 ff ff ff |Pause....P..G...| 00003ec0 87 55 0a 0c b4 01 00 00 13 00 00 00 00 00 00 00 |.U..............| 00003ed0 50 6c 61 79 49 6e 73 74 72 00 00 00 ac 52 00 00 |PlayInstr....R..| 00003ee0 47 ff ff ff fb 42 0a 0c 6e 01 00 00 13 00 00 00 |G....B..n.......| 00003ef0 00 00 00 00 50 6c 61 79 49 6e 73 74 72 50 61 63 |....PlayInstrPac| 00003f00 6b 65 64 00 1c 54 00 00 47 ff ff ff 61 95 0b 0c |ked..T..G...a...| 00003f10 5b 01 00 00 13 00 00 00 00 00 00 00 50 6c 61 79 |[...........Play| 00003f20 53 69 6e 67 6c 65 00 00 78 55 00 00 47 ff ff ff |Single..xU..G...| 00003f30 70 5b 0a 0c 8c 00 00 00 13 00 00 00 00 00 00 00 |p[..............| 00003f40 52 65 73 65 74 50 61 72 61 6d 73 00 04 56 00 00 |ResetParams..V..| 00003f50 47 ff ff ff ec 01 0a 0c 88 00 00 00 13 00 00 00 |G...............| 00003f60 00 00 00 00 52 65 73 74 61 72 74 53 6f 6e 67 00 |....RestartSong.| 00003f70 8c 56 00 00 47 ff ff ff d9 91 0b 0c 18 01 00 00 |.V..G...........| 00003f80 13 00 00 00 00 00 00 00 53 61 6d 70 6c 65 52 61 |........SampleRa| 00003f90 74 65 00 00 a4 57 00 00 47 ff ff ff d1 aa 0a 0c |te...W..G.......| 00003fa0 66 01 00 00 13 00 00 00 00 00 00 00 53 6f 6e 67 |f...........Song| 00003fb0 50 6f 73 00 0c 59 00 00 47 ff ff ff 68 1d 0a 0c |Pos..Y..G...h...| 00003fc0 8b 01 00 00 13 00 00 00 00 00 00 00 53 74 65 72 |............Ster| 00003fd0 65 6f 00 00 98 5a 00 00 47 ff ff ff ea 8d 0b 0c |eo...Z..G.......| 00003fe0 36 01 00 00 13 00 00 00 00 00 00 00 54 75 6e 65 |6...........Tune| 00003ff0 43 6f 6e 74 72 6f 6c 00 d0 5b 00 00 47 ff ff ff |Control..[..G...| 00004000 46 88 0b 0c 95 00 00 00 13 00 00 00 00 00 00 00 |F...............| 00004010 54 75 6e 65 49 6e 66 6f 00 00 00 00 68 5c 00 00 |TuneInfo....h\..| 00004020 47 ff ff ff 52 a4 ac ca f1 00 00 00 13 00 00 00 |G...R...........| 00004030 00 00 00 00 75 70 63 61 6c 6c 76 65 63 74 6f 72 |....upcallvector| 00004040 00 00 00 00 5c 5d 00 00 47 ff ff ff 11 85 0b 0c |....\]..G.......| 00004050 d8 00 00 00 13 00 00 00 00 00 00 00 56 6f 69 63 |............Voic| 00004060 65 73 00 00 34 5e 00 00 47 ff ff ff 76 82 0b 0c |es..4^..G...v...| 00004070 0f 01 00 00 13 00 00 00 00 00 00 00 56 6f 6c 00 |............Vol.| 00004080 44 5f 00 00 47 ff ff ff d8 02 0b 0c 4d 01 00 00 |D_..G.......M...| 00004090 13 00 00 00 00 00 00 00 56 75 42 61 72 00 00 00 |........VuBar...| 000040a0 94 60 00 00 47 ff ff ff c0 7e 0b 0c 28 01 00 00 |.`..G....~..(...| 000040b0 13 00 00 00 00 00 00 00 56 75 47 72 61 76 69 74 |........VuGravit| 000040c0 79 00 00 00 bc 61 00 00 47 ff ff ff 7a d0 0a 0c |y....a..G...z...| 000040d0 7e 00 00 00 13 00 00 00 00 00 00 00 57 61 69 74 |~...........Wait| 000040e0 00 00 00 00 44 41 54 41 91 01 00 00 44 53 79 6d |....DATA....DSym| 000040f0 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 00004100 50 72 65 66 69 78 20 44 53 79 6d 5f 0a 23 54 61 |Prefix DSym_.#Ta| 00004110 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 3c 4c |ble Columns 2.<L| 00004120 6f 61 64 3e 0a 3c 52 65 73 74 61 72 74 53 6f 6e |oad>.<RestartSon| 00004130 67 3e 0a 3c 56 6f 6c 3e 0a 3c 53 74 65 72 65 6f |g>.<Vol>.<Stereo| 00004140 3e 0a 3c 43 75 74 4e 6f 74 65 3e 0a 3c 50 6c 61 |>.<CutNote>.<Pla| 00004150 79 49 6e 73 74 72 50 61 63 6b 65 64 3e 0a 3c 50 |yInstrPacked>.<P| 00004160 6c 61 79 49 6e 73 74 72 3e 0a 3c 52 65 73 65 74 |layInstr>.<Reset| 00004170 50 61 72 61 6d 73 3e 0a 3c 46 6c 75 73 68 4f 75 |Params>.<FlushOu| 00004180 74 70 75 74 3e 0a 3c 46 72 65 65 7a 65 4f 75 74 |tput>.<FreezeOut| 00004190 70 75 74 3e 0a 3c 55 70 43 61 6c 6c 56 65 63 74 |put>.<UpCallVect| 000041a0 6f 72 3e 0a 3c 4d 61 73 6b 56 6f 69 63 65 3e 0a |or>.<MaskVoice>.| 000041b0 3c 53 6f 6e 67 50 6f 73 3e 0a 3c 54 75 6e 65 43 |<SongPos>.<TuneC| 000041c0 6f 6e 74 72 6f 6c 3e 0a 3c 50 61 75 73 65 3e 0a |ontrol>.<Pause>.| 000041d0 3c 56 6f 69 63 65 73 3e 0a 3c 57 61 69 74 3e 0a |<Voices>.<Wait>.| 000041e0 3c 49 6e 74 53 74 61 74 65 3e 0a 3c 4e 6f 74 65 |<IntState>.<Note| 000041f0 49 6e 66 6f 3e 0a 3c 56 75 42 61 72 3e 0a 3c 4c |Info>.<VuBar>.<L| 00004200 6f 6f 70 3e 0a 3c 42 75 66 66 65 72 41 64 64 72 |oop>.<BufferAddr| 00004210 65 73 73 3e 0a 3c 56 75 47 72 61 76 69 74 79 3e |ess>.<VuGravity>| 00004220 0a 3c 53 61 6d 70 6c 65 52 61 74 65 3e 0a 3c 43 |.<SampleRate>.<C| 00004230 6f 6e 66 69 67 75 72 65 3e 0a 3c 50 61 72 61 6d |onfigure>.<Param| 00004240 73 3e 0a 3c 54 75 6e 65 49 6e 66 6f 3e 0a 3c 50 |s>.<TuneInfo>.<P| 00004250 6c 61 79 53 69 6e 67 6c 65 3e 0a 3c 44 65 66 61 |laySingle>.<Defa| 00004260 75 6c 74 53 74 65 72 65 6f 3e 0a 23 45 6e 64 54 |ultStereo>.#EndT| 00004270 61 62 6c 65 0a 00 00 00 44 41 54 41 f6 00 00 00 |able....DATA....| 00004280 44 53 79 6d 5f 42 75 66 66 65 72 41 64 64 72 65 |DSym_BufferAddre| 00004290 73 73 20 20 28 26 34 35 38 39 35 29 0a 23 50 61 |ss (&45895).#Pa| 000042a0 72 65 6e 74 20 44 73 79 6d 5f 0a 3c 3d 09 63 75 |rent Dsym_.<=.cu| 000042b0 72 72 65 6e 74 20 73 79 73 74 65 6d 20 68 61 72 |rrent system har| 000042c0 64 77 61 72 65 20 62 75 66 66 65 72 20 61 64 64 |dware buffer add| 000042d0 72 65 73 73 20 28 77 69 74 68 20 6f 75 74 70 75 |ress (with outpu| 000042e0 74 20 64 61 74 61 20 69 6e 74 65 72 6c 65 61 76 |t data interleav| 000042f0 65 64 29 0a 0a 54 68 69 73 20 63 61 6c 6c 20 67 |ed)..This call g| 00004300 69 76 65 73 20 74 68 65 20 61 64 64 72 65 73 73 |ives the address| 00004310 20 77 68 65 72 65 20 79 6f 75 20 77 6f 75 6c 64 | where you would| 00004320 20 68 61 76 65 20 74 6f 20 70 75 74 20 73 6f 75 | have to put sou| 00004330 6e 64 20 64 61 74 61 20 74 6f 2c 20 77 68 65 6e |nd data to, when| 00004340 20 74 68 65 20 73 6f 75 6e 64 20 62 75 66 66 65 | the sound buffe| 00004350 72 20 66 69 6c 6c 20 72 65 71 75 65 73 74 20 69 |r fill request i| 00004360 73 20 62 72 6f 61 64 63 61 73 74 65 64 2e 00 00 |s broadcasted...| 00004370 44 41 54 41 28 01 00 00 44 53 79 6d 5f 43 6f 6e |DATA(...DSym_Con| 00004380 66 69 67 75 72 65 20 20 28 26 34 35 38 39 38 29 |figure (&45898)| 00004390 0a 23 50 61 72 65 6e 74 20 44 53 79 6d 5f 0a 3d |.#Parent DSym_.=| 000043a0 3e 09 52 30 20 3d 09 2d 31 20 74 6f 20 72 65 69 |>.R0 =.-1 to rei| 000043b0 6e 73 74 61 6c 6c 20 70 72 65 76 69 6f 75 73 20 |nstall previous | 000043c0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 09 20 |configuration.. | 000043d0 09 6f 74 68 65 72 2c 20 74 6f 20 63 6f 6e 66 69 |.other, to confi| 000043e0 67 75 72 65 20 74 68 65 20 73 79 73 74 65 6d 20 |gure the system | 000043f0 77 69 74 68 20 6e 65 77 20 76 6f 69 63 65 73 20 |with new voices | 00004400 6e 75 6d 62 65 72 2c 20 73 61 6d 70 6c 65 20 72 |number, sample r| 00004410 61 74 65 20 61 6e 64 20 56 75 47 72 61 76 69 74 |ate and VuGravit| 00004420 79 2e 0a 0a 4e 6f 74 65 20 74 68 61 74 20 74 68 |y...Note that th| 00004430 69 73 20 63 61 6c 6c 20 69 73 20 65 73 73 65 6e |is call is essen| 00004440 74 69 61 6c 20 74 6f 20 74 68 65 20 6f 70 74 69 |tial to the opti| 00004450 6f 6e 73 20 64 65 63 6c 61 72 65 64 20 77 69 74 |ons declared wit| 00004460 68 20 3c 44 53 79 6d 5f 56 6f 69 63 65 73 3e 2c |h <DSym_Voices>,| 00004470 20 3c 44 53 79 6d 5f 56 75 47 72 61 76 69 74 79 | <DSym_VuGravity| 00004480 3e 20 61 6e 64 20 3c 44 53 79 6d 5f 53 61 6d 70 |> and <DSym_Samp| 00004490 6c 65 52 61 74 65 3e 2e 44 41 54 41 23 01 00 00 |leRate>.DATA#...| 000044a0 44 53 79 6d 5f 43 75 74 4e 6f 74 65 20 20 28 26 |DSym_CutNote (&| 000044b0 34 35 38 38 34 29 0a 23 50 61 72 65 6e 74 20 44 |45884).#Parent D| 000044c0 53 79 6d 5f 0a 3d 3e 09 52 30 20 3d 09 76 6f 69 |Sym_.=>.R0 =.voi| 000044d0 63 65 20 6e 75 6d 62 65 72 20 28 30 2d 37 29 0a |ce number (0-7).| 000044e0 09 52 31 20 3d 09 2d 31 20 74 6f 20 72 65 61 64 |.R1 =.-1 to read| 000044f0 20 73 74 61 74 65 2c 20 6f 72 20 5c 3c 3e 2d 31 | state, or \<>-1| 00004500 20 74 6f 20 73 74 6f 70 20 6e 6f 74 65 0a 0a 3c | to stop note..<| 00004510 3d 09 52 30 20 63 6f 72 72 75 70 74 65 64 0a 09 |=.R0 corrupted..| 00004520 52 31 20 3d 09 70 72 65 76 69 6f 75 73 20 6e 6f |R1 =.previous no| 00004530 74 65 20 73 74 61 74 65 20 28 30 20 73 74 6f 70 |te state (0 stop| 00004540 70 65 64 2c 20 3e 30 20 70 6c 61 79 69 6e 67 29 |ped, >0 playing)| 00004550 0a 0a 54 68 69 73 20 63 61 6c 6c 20 65 69 74 68 |..This call eith| 00004560 65 72 20 72 65 61 64 73 20 74 68 65 20 73 74 61 |er reads the sta| 00004570 74 65 20 6f 66 20 61 20 63 65 72 74 61 69 6e 20 |te of a certain | 00004580 76 6f 69 63 65 20 6f 72 20 73 74 6f 70 73 20 74 |voice or stops t| 00004590 68 65 20 63 75 72 72 65 6e 74 6c 79 20 70 6c 61 |he currently pla| 000045a0 79 65 64 20 73 61 6d 70 6c 65 20 6f 6e 20 74 68 |yed sample on th| 000045b0 69 73 20 63 68 61 6e 6e 65 6c 2e 00 44 41 54 41 |is channel..DATA| 000045c0 fd 00 00 00 44 53 79 6d 5f 44 65 66 61 75 6c 74 |....DSym_Default| 000045d0 53 74 65 72 65 6f 20 20 28 26 34 35 38 39 43 29 |Stereo (&4589C)| 000045e0 0a 23 50 61 72 65 6e 74 20 44 53 79 6d 5f 0a 3d |.#Parent DSym_.=| 000045f0 3e 09 52 30 20 3d 09 76 6f 69 63 65 20 6e 75 6d |>.R0 =.voice num| 00004600 62 65 72 20 28 30 2d 37 29 0a 09 52 31 20 3d 09 |ber (0-7)..R1 =.| 00004610 6e 65 77 20 64 65 66 61 75 6c 74 20 73 74 65 72 |new default ster| 00004620 65 6f 20 70 6f 73 69 74 69 6f 6e 2c 20 6f 72 20 |eo position, or | 00004630 30 20 74 6f 20 72 65 61 64 0a 0a 3c 3d 09 52 31 |0 to read..<=.R1| 00004640 20 3d 09 70 72 65 76 69 6f 75 73 20 64 65 66 61 | =.previous defa| 00004650 75 6c 74 20 73 74 65 72 65 6f 20 70 6f 73 69 74 |ult stereo posit| 00004660 69 6f 6e 20 28 31 20 74 6f 20 37 29 20 66 6f 72 |ion (1 to 7) for| 00004670 20 76 6f 69 63 65 20 6e 75 6d 62 65 72 20 52 30 | voice number R0| 00004680 0a 0a 54 68 69 73 20 63 61 6c 6c 20 73 65 74 73 |..This call sets| 00004690 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 74 65 | the default ste| 000046a0 72 65 6f 20 70 6f 73 69 74 69 6f 6e 20 66 6f 72 |reo position for| 000046b0 20 61 20 76 6f 69 63 65 2e 00 00 00 44 41 54 41 | a voice....DATA| 000046c0 5b 00 00 00 44 53 79 6d 5f 46 6c 75 73 68 4f 75 |[...DSym_FlushOu| 000046d0 74 70 75 74 20 20 28 26 34 35 35 38 38 29 0a 23 |tput (&45588).#| 000046e0 50 61 72 65 6e 74 20 44 53 79 6d 5f 0a 54 68 65 |Parent DSym_.The| 000046f0 20 63 75 72 72 65 6e 74 20 6e 6f 74 65 73 20 6f | current notes o| 00004700 6e 20 61 6c 6c 20 63 68 61 6e 6e 65 6c 73 20 61 |n all channels a| 00004710 72 65 20 63 75 74 2e 00 44 41 54 41 ea 00 00 00 |re cut..DATA....| 00004720 44 53 79 6d 5f 46 72 65 65 7a 65 4f 75 74 70 75 |DSym_FreezeOutpu| 00004730 74 20 20 28 26 34 35 35 38 39 29 0a 23 50 61 72 |t (&45589).#Par| 00004740 65 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 |ent DSym_.=>.R0 | 00004750 3d 09 2d 31 20 74 6f 20 72 65 61 64 20 6f 75 74 |=.-1 to read out| 00004760 70 75 74 20 73 74 61 74 75 73 0a 09 20 09 6f 74 |put status.. .ot| 00004770 68 65 72 2c 20 74 6f 20 73 65 74 0a 0a 3c 3d 09 |her, to set..<=.| 00004780 52 30 20 3d 09 70 72 65 76 69 6f 75 73 20 6f 75 |R0 =.previous ou| 00004790 74 70 75 74 20 73 74 61 74 65 20 28 30 3d 20 6f |tput state (0= o| 000047a0 66 66 2c 20 5c 3c 3e 30 3d 20 6f 6e 29 0a 0a 54 |ff, \<>0= on)..T| 000047b0 68 69 73 20 63 61 6c 6c 20 63 6f 6e 74 72 6f 6c |his call control| 000047c0 73 2c 20 77 68 65 74 68 65 72 20 74 68 65 20 63 |s, whether the c| 000047d0 75 72 72 65 6e 74 20 6e 6f 74 65 73 20 6f 6e 20 |urrent notes on | 000047e0 61 6c 6c 20 63 68 61 6e 6e 65 6c 73 20 61 72 65 |all channels are| 000047f0 20 70 6c 61 79 65 64 20 6f 6e 20 6f 72 20 6e 6f | played on or no| 00004800 74 2e 00 00 44 41 54 41 a9 00 00 00 44 53 79 6d |t...DATA....DSym| 00004810 5f 49 6e 74 53 74 61 74 65 20 20 28 26 34 35 38 |_IntState (&458| 00004820 39 31 29 0a 23 50 61 72 65 6e 74 20 44 53 79 6d |91).#Parent DSym| 00004830 5f 0a 54 68 69 73 20 63 61 6c 6c 20 63 68 65 63 |_.This call chec| 00004840 6b 73 2c 20 77 68 61 74 20 74 68 65 20 6d 6f 64 |ks, what the mod| 00004850 75 6c 65 20 64 6f 65 73 20 69 6e 20 74 68 65 20 |ule does in the | 00004860 6d 6f 6d 65 6e 74 2e 20 43 20 69 73 20 73 65 74 |moment. C is set| 00004870 20 69 66 20 74 68 65 20 63 61 6c 6c 20 68 61 73 | if the call has| 00004880 20 69 6e 74 65 72 72 75 70 74 65 64 20 74 68 65 | interrupted the| 00004890 20 70 6c 61 79 69 6e 67 20 6f 72 20 66 69 6c 6c | playing or fill| 000048a0 69 6e 67 20 72 6f 75 74 69 6e 65 73 2e 00 00 00 |ing routines....| 000048b0 44 41 54 41 8e 02 00 00 44 53 79 6d 5f 4c 6f 61 |DATA....DSym_Loa| 000048c0 64 20 28 26 34 35 38 38 30 29 0a 23 50 61 72 65 |d (&45880).#Pare| 000048d0 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 3d |nt DSym_.=>.R0 =| 000048e0 09 2d 31 20 74 6f 20 66 72 65 65 20 52 4d 41 20 |.-1 to free RMA | 000048f0 62 75 66 66 65 72 73 0a 09 20 09 30 20 74 6f 20 |buffers.. .0 to | 00004900 6c 6f 61 64 20 66 72 6f 6d 20 6d 65 6d 6f 72 79 |load from memory| 00004910 0a 09 20 09 3e 30 20 70 6f 69 6e 74 65 72 20 74 |.. .>0 pointer t| 00004920 6f 20 66 69 6c 65 6e 61 6d 65 0a 09 52 31 20 3d |o filename..R1 =| 00004930 09 73 6f 75 72 63 65 20 73 74 61 72 74 20 61 64 |.source start ad| 00004940 64 72 65 73 73 20 28 69 66 20 52 30 20 3d 20 30 |dress (if R0 = 0| 00004950 29 0a 09 52 32 20 3d 09 30 20 74 6f 20 6c 6f 61 |)..R2 =.0 to loa| 00004960 64 20 74 6f 20 52 4d 41 0a 09 20 09 3e 30 20 64 |d to RMA.. .>0 d| 00004970 65 73 74 69 6e 61 74 69 6f 6e 20 61 64 64 72 65 |estination addre| 00004980 73 73 0a 09 52 33 20 3d 09 73 69 7a 65 20 6f 66 |ss..R3 =.size of| 00004990 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 62 75 66 | destination buf| 000049a0 66 65 72 20 28 69 66 20 52 32 20 3e 30 29 0a 09 |fer (if R2 >0)..| 000049b0 52 34 20 3d 09 30 20 63 6c 61 69 6d 20 62 75 66 |R4 =.0 claim buf| 000049c0 66 65 72 20 69 6e 20 52 4d 41 0a 09 20 09 3e 30 |fer in RMA.. .>0| 000049d0 20 73 74 61 72 74 20 61 64 64 72 65 73 73 20 6f | start address o| 000049e0 66 20 62 75 66 66 65 72 20 28 33 32 6b 20 73 70 |f buffer (32k sp| 000049f0 61 63 65 29 0a 0a 3c 3d 09 52 30 20 3d 09 6c 65 |ace)..<=.R0 =.le| 00004a00 6e 67 74 68 20 6f 66 20 74 72 61 63 6b 20 69 6e |ngth of track in| 00004a10 20 6d 65 6d 6f 72 79 0a 0a 54 68 69 73 20 6c 6f | memory..This lo| 00004a20 61 64 73 20 61 20 44 53 79 6d 2d 53 6f 6e 67 20 |ads a DSym-Song | 00004a30 65 69 74 68 65 72 20 66 72 6f 6d 20 6d 65 6d 6f |either from memo| 00004a40 72 79 20 6f 72 20 66 72 6f 6d 20 61 20 66 69 6c |ry or from a fil| 00004a50 65 20 74 6f 20 61 20 62 75 66 66 65 72 20 65 69 |e to a buffer ei| 00004a60 74 68 65 72 20 63 6c 61 69 6d 65 64 20 69 6e 20 |ther claimed in | 00004a70 52 4d 41 20 6f 72 20 61 20 67 69 76 65 6e 20 64 |RMA or a given d| 00004a80 65 73 74 69 6e 61 74 69 6f 6e 20 62 75 66 66 65 |estination buffe| 00004a90 72 2c 20 74 68 65 20 62 75 66 66 65 72 20 69 6e |r, the buffer in| 00004aa0 20 52 34 20 69 73 20 6f 6e 6c 79 20 6e 65 65 64 | R4 is only need| 00004ab0 65 64 2c 20 69 66 20 74 68 65 20 44 53 79 6d 2d |ed, if the DSym-| 00004ac0 53 6f 6e 67 20 63 6f 6e 74 61 69 6e 73 20 73 6f |Song contains so| 00004ad0 6d 65 20 70 61 63 6b 65 64 20 64 61 74 61 2e 20 |me packed data. | 00004ae0 49 66 20 79 6f 75 20 73 61 76 65 20 61 20 50 6c |If you save a Pl| 00004af0 61 79 65 72 6d 6f 64 75 6c 65 20 77 69 74 68 20 |ayermodule with | 00004b00 73 6f 6e 67 20 66 72 6f 6d 20 44 69 67 69 74 61 |song from Digita| 00004b10 6c 53 79 6d 70 68 6f 6e 79 2c 20 74 68 69 73 20 |lSymphony, this | 00004b20 53 57 49 20 69 73 20 64 69 73 61 62 6c 65 64 20 |SWI is disabled | 00004b30 69 6e 20 74 68 65 20 6d 6f 64 75 6c 65 2e 00 00 |in the module...| 00004b40 44 41 54 41 09 01 00 00 44 53 79 6d 5f 4c 6f 6f |DATA....DSym_Loo| 00004b50 70 20 20 28 26 34 35 38 39 34 29 0a 23 50 61 72 |p (&45894).#Par| 00004b60 65 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 |ent DSym_.=>.R0 | 00004b70 3d 09 2d 31 20 74 6f 20 72 65 61 64 20 6c 6f 6f |=.-1 to read loo| 00004b80 70 20 73 74 61 74 75 73 0a 09 20 09 6f 74 68 65 |p status.. .othe| 00004b90 72 2c 20 74 6f 20 73 65 74 0a 0a 3c 3d 09 52 30 |r, to set..<=.R0| 00004ba0 20 3d 09 70 72 65 76 69 6f 75 73 20 6c 6f 6f 70 | =.previous loop| 00004bb0 20 73 74 61 74 75 73 20 28 30 20 65 6e 61 62 6c | status (0 enabl| 00004bc0 65 64 2c 20 3e 30 20 64 69 73 61 62 6c 65 64 29 |ed, >0 disabled)| 00004bd0 0a 09 52 31 20 5c 3c 3e 09 30 20 69 66 20 74 68 |..R1 \<>.0 if th| 00004be0 65 20 74 75 6e 65 20 68 61 73 20 6c 6f 6f 70 65 |e tune has loope| 00004bf0 64 0a 0a 54 68 69 73 20 63 61 6c 6c 20 63 6f 6e |d..This call con| 00004c00 74 72 6f 6c 73 20 77 68 65 74 68 65 72 20 74 68 |trols whether th| 00004c10 65 20 73 6f 6e 67 20 69 73 20 61 75 74 6f 6d 61 |e song is automa| 00004c20 74 69 63 61 6c 6c 79 20 72 65 73 74 61 72 74 65 |tically restarte| 00004c30 64 20 61 74 20 65 6e 64 20 6f 66 20 6c 61 73 74 |d at end of last| 00004c40 20 70 61 74 74 65 72 6e 2e 00 00 00 44 41 54 41 | pattern....DATA| 00004c50 19 01 00 00 44 53 79 6d 5f 4d 61 73 6b 56 6f 69 |....DSym_MaskVoi| 00004c60 63 65 20 20 28 26 34 35 38 38 42 29 0a 23 50 61 |ce (&4588B).#Pa| 00004c70 72 65 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 |rent DSym_.=>.R0| 00004c80 20 3d 09 76 6f 69 63 65 20 6e 75 6d 62 65 72 20 | =.voice number | 00004c90 28 30 2d 37 29 0a 09 52 31 20 3d 09 2d 31 20 74 |(0-7)..R1 =.-1 t| 00004ca0 6f 20 72 65 61 64 20 76 6f 69 63 65 20 73 74 61 |o read voice sta| 00004cb0 74 65 0a 09 20 09 6f 74 68 65 72 2c 20 74 6f 20 |te.. .other, to | 00004cc0 73 65 74 20 76 6f 69 63 65 20 73 74 61 74 75 73 |set voice status| 00004cd0 0a 0a 3c 3d 09 52 30 20 3d 09 70 72 65 76 69 6f |..<=.R0 =.previo| 00004ce0 75 73 20 76 6f 69 63 65 20 73 74 61 74 75 73 20 |us voice status | 00004cf0 28 30 3d 20 6f 66 66 2c 20 5c 3c 3e 30 3d 6f 6e |(0= off, \<>0=on| 00004d00 29 0a 0a 54 68 69 73 20 63 61 6c 6c 20 6d 61 6b |)..This call mak| 00004d10 65 73 20 61 20 63 68 61 6e 6e 65 6c 20 71 75 69 |es a channel qui| 00004d20 65 74 20 6f 6e 20 74 68 65 20 73 70 65 61 6b 65 |et on the speake| 00004d30 72 2c 20 69 65 20 69 74 20 69 73 20 73 74 69 6c |r, ie it is stil| 00004d40 6c 20 70 6c 61 79 69 6e 67 20 62 75 74 20 6e 6f |l playing but no| 00004d50 74 20 68 65 61 72 64 20 6f 6e 20 74 68 65 20 76 |t heard on the v| 00004d60 6f 69 63 65 2e 00 00 00 44 41 54 41 27 02 00 00 |oice....DATA'...| 00004d70 44 53 79 6d 5f 4e 6f 74 65 49 6e 66 6f 20 20 28 |DSym_NoteInfo (| 00004d80 26 34 35 38 39 32 29 0a 23 50 61 72 65 6e 74 20 |&45892).#Parent | 00004d90 44 53 79 6d 5f 0a 3c 3d 09 52 30 20 3d 09 61 64 |DSym_.<=.R0 =.ad| 00004da0 64 72 65 73 73 20 6f 66 20 63 75 72 72 65 6e 74 |dress of current| 00004db0 20 6e 6f 74 65 73 20 74 61 62 6c 65 20 28 31 20 | notes table (1 | 00004dc0 77 6f 72 64 20 70 65 72 20 76 6f 69 63 65 29 20 |word per voice) | 00004dd0 6e 6f 74 65 20 69 73 20 30 20 74 6f 20 31 30 32 |note is 0 to 102| 00004de0 33 0a 09 52 31 20 3d 09 61 64 64 72 65 73 73 20 |3..R1 =.address | 00004df0 6f 66 20 63 75 72 72 65 6e 74 20 73 61 6d 70 6c |of current sampl| 00004e00 65 73 20 74 61 62 6c 65 20 28 31 20 62 79 74 65 |es table (1 byte| 00004e10 20 70 65 72 20 76 6f 69 63 65 29 20 73 61 6d 70 | per voice) samp| 00004e20 6c 65 20 69 73 20 30 20 74 6f 20 36 33 0a 09 52 |le is 0 to 63..R| 00004e30 32 20 3d 09 61 64 64 72 65 73 73 20 6f 66 20 65 |2 =.address of e| 00004e40 66 66 65 63 74 73 20 74 61 62 6c 65 20 28 31 20 |ffects table (1 | 00004e50 77 6f 72 64 20 70 65 72 20 76 6f 69 63 65 29 0a |word per voice).| 00004e60 09 20 09 62 69 74 73 20 33 30 2d 33 31 20 6d 65 |. .bits 30-31 me| 00004e70 61 6e 69 6e 67 6c 65 73 73 0a 09 20 09 62 69 74 |aningless.. .bit| 00004e80 73 20 31 36 2d 32 31 20 65 66 66 65 63 74 20 6e |s 16-21 effect n| 00004e90 72 0a 09 20 09 62 69 74 73 20 20 30 2d 31 31 20 |r.. .bits 0-11 | 00004ea0 65 66 66 65 63 74 20 76 61 6c 75 65 0a 09 52 33 |effect value..R3| 00004eb0 20 3d 09 61 64 64 72 65 73 73 20 6f 66 20 76 6f | =.address of vo| 00004ec0 6c 75 6d 65 73 20 74 61 62 6c 65 20 28 31 20 62 |lumes table (1 b| 00004ed0 79 74 65 20 70 65 72 20 76 6f 69 63 65 29 20 76 |yte per voice) v| 00004ee0 6f 6c 75 6d 65 20 69 73 20 30 20 74 6f 20 36 34 |olume is 0 to 64| 00004ef0 0a 0a 54 68 69 73 20 63 61 6c 6c 20 67 69 76 65 |..This call give| 00004f00 73 20 74 68 65 20 61 64 64 72 65 73 73 65 73 20 |s the addresses | 00004f10 6f 66 20 63 75 72 72 65 6e 74 20 6e 6f 74 65 2c |of current note,| 00004f20 20 73 61 6d 70 6c 65 2c 20 65 66 66 65 63 74 20 | sample, effect | 00004f30 61 6e 64 20 76 6f 6c 75 6d 65 20 74 61 62 6c 65 |and volume table| 00004f40 2e 20 59 6f 75 20 63 6f 75 6c 64 20 75 73 65 20 |. You could use | 00004f50 74 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e |this information| 00004f60 73 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 6f |s for example to| 00004f70 20 77 72 69 74 65 20 79 6f 75 72 20 6f 77 6e 20 | write your own | 00004f80 56 75 42 61 72 73 20 72 6f 75 74 69 6e 65 2e 00 |VuBars routine..| 00004f90 44 41 54 41 03 01 00 00 44 53 79 6d 5f 50 61 72 |DATA....DSym_Par| 00004fa0 61 6d 73 20 20 28 26 34 35 38 39 39 29 0a 23 50 |ams (&45899).#P| 00004fb0 61 72 65 6e 74 20 44 53 79 6d 5f 0a 3c 3d 09 52 |arent DSym_.<=.R| 00004fc0 30 20 3d 09 73 70 65 65 64 20 28 31 2d 26 46 46 |0 =.speed (1-&FF| 00004fd0 46 29 0a 09 52 31 20 3d 09 74 65 6d 70 6f 20 28 |F)..R1 =.tempo (| 00004fe0 31 2d 26 46 46 46 29 0a 09 52 32 20 3d 09 63 6f |1-&FFF)..R2 =.co| 00004ff0 75 6e 74 65 72 20 28 30 2d 26 46 46 45 29 0a 0a |unter (0-&FFE)..| 00005000 54 68 69 73 20 63 61 6c 6c 20 72 65 61 64 73 20 |This call reads | 00005010 74 68 65 20 63 75 72 72 65 6e 74 20 73 70 65 65 |the current spee| 00005020 64 20 76 61 72 69 61 62 6c 65 73 2e 20 54 68 65 |d variables. The| 00005030 20 63 6f 75 6e 74 65 72 20 76 61 72 69 65 73 20 | counter varies | 00005040 66 72 6f 6d 20 31 20 74 6f 20 73 70 65 65 64 2d |from 1 to speed-| 00005050 31 20 61 74 20 61 20 73 70 65 65 64 20 61 63 63 |1 at a speed acc| 00005060 6f 72 64 69 6e 67 20 74 6f 20 74 65 6d 70 6f 20 |ording to tempo | 00005070 28 35 30 20 74 69 6d 65 73 20 61 20 73 65 63 20 |(50 times a sec | 00005080 66 6f 72 20 64 65 66 61 75 6c 74 20 74 65 6d 70 |for default temp| 00005090 6f 29 2e 00 44 41 54 41 63 00 00 00 44 53 79 6d |o)..DATAc...DSym| 000050a0 5f 50 61 75 73 65 20 20 28 26 34 35 38 38 45 29 |_Pause (&4588E)| 000050b0 0a 23 50 61 72 65 6e 74 20 44 53 79 6d 5f 0a 54 |.#Parent DSym_.T| 000050c0 68 69 73 20 63 61 6c 6c 20 73 74 6f 70 73 20 74 |his call stops t| 000050d0 68 65 20 63 75 72 72 65 6e 74 20 6e 6f 74 65 73 |he current notes| 000050e0 20 61 6e 64 20 63 75 74 73 20 61 6c 6c 20 63 68 | and cuts all ch| 000050f0 61 6e 6e 65 6c 73 2e 00 44 41 54 41 b4 01 00 00 |annels..DATA....| 00005100 44 53 79 6d 5f 50 6c 61 79 49 6e 73 74 72 20 20 |DSym_PlayInstr | 00005110 28 26 34 35 38 38 36 29 0a 23 50 61 72 65 6e 74 |(&45886).#Parent| 00005120 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 3d 09 76 | DSym_.=>.R0 =.v| 00005130 6f 69 63 65 20 6e 75 6d 62 65 72 20 28 30 2d 37 |oice number (0-7| 00005140 29 0a 09 52 31 20 3d 09 6e 6f 74 65 20 6e 75 6d |)..R1 =.note num| 00005150 62 65 72 20 28 30 2d 33 36 29 0a 09 52 32 20 3d |ber (0-36)..R2 =| 00005160 09 73 61 6d 70 6c 65 20 6e 75 6d 62 65 72 20 28 |.sample number (| 00005170 30 2d 36 33 29 0a 09 52 33 20 3d 09 65 66 66 65 |0-63)..R3 =.effe| 00005180 63 74 20 6e 75 6d 62 65 72 20 28 30 2d 36 33 29 |ct number (0-63)| 00005190 0a 09 52 34 20 3d 09 65 66 66 65 63 74 20 76 61 |..R4 =.effect va| 000051a0 6c 75 65 20 28 30 2d 26 46 46 46 29 0a 09 52 35 |lue (0-&FFF)..R5| 000051b0 20 3d 09 6d 69 6e 69 6d 75 6d 20 73 75 73 74 61 | =.minimum susta| 000051c0 69 6e 20 74 69 6d 65 20 28 69 6e 20 31 2f 35 30 |in time (in 1/50| 000051d0 74 68 20 73 65 63 29 0a 09 52 36 20 5c 3c 3e 09 |th sec)..R6 \<>.| 000051e0 30 20 74 6f 20 77 61 69 74 20 66 6f 72 20 62 75 |0 to wait for bu| 000051f0 66 66 65 72 20 65 6d 70 74 79 2c 20 65 6c 73 65 |ffer empty, else| 00005200 20 64 6f 6e 27 74 20 77 61 69 74 0a 0a 3c 3d 09 | don't wait..<=.| 00005210 52 30 2d 52 36 20 63 6f 72 72 75 70 74 65 64 0a |R0-R6 corrupted.| 00005220 0a 54 68 65 20 6e 65 77 20 6e 6f 74 65 20 69 73 |.The new note is| 00005230 20 70 75 74 20 74 6f 20 74 68 65 20 62 75 66 66 | put to the buff| 00005240 65 72 20 61 6e 64 20 70 6c 61 79 65 64 2e 20 53 |er and played. S| 00005250 65 74 74 69 6e 67 20 73 75 73 74 61 69 6e 20 74 |etting sustain t| 00005260 69 6d 65 20 6d 65 61 6e 73 20 74 68 61 74 20 74 |ime means that t| 00005270 68 65 20 6e 65 77 20 6e 6f 74 65 20 68 61 73 20 |he new note has | 00005280 70 72 69 6f 72 69 74 79 20 6f 6e 20 74 68 65 20 |priority on the | 00005290 74 75 6e 65 20 6e 6f 74 65 73 20 64 75 72 69 6e |tune notes durin| 000052a0 67 20 74 68 69 73 20 74 69 6d 65 2e 44 41 54 41 |g this time.DATA| 000052b0 6e 01 00 00 44 53 79 6d 5f 50 6c 61 79 49 6e 73 |n...DSym_PlayIns| 000052c0 74 72 50 61 63 6b 65 64 20 20 28 26 34 35 38 38 |trPacked (&4588| 000052d0 35 29 0a 23 50 61 72 65 6e 74 20 44 73 79 6d 5f |5).#Parent Dsym_| 000052e0 0a 3d 3e 09 52 30 20 3d 09 76 6f 69 63 65 20 6e |.=>.R0 =.voice n| 000052f0 75 6d 62 65 72 20 28 30 2d 37 29 0a 09 52 31 20 |umber (0-7)..R1 | 00005300 3d 09 66 75 6c 6c 20 6e 6f 74 65 20 64 61 74 61 |=.full note data| 00005310 0a 09 52 35 20 3d 09 6d 69 6e 69 6d 75 6d 20 73 |..R5 =.minimum s| 00005320 75 73 74 61 69 6e 20 74 69 6d 65 20 28 69 6e 20 |ustain time (in | 00005330 31 2f 35 30 74 68 20 73 65 63 29 0a 09 52 36 20 |1/50th sec)..R6 | 00005340 5c 3c 3e 09 30 20 74 6f 20 77 61 69 74 20 66 6f |\<>.0 to wait fo| 00005350 72 20 62 75 66 66 65 72 20 65 6d 70 74 79 2c 20 |r buffer empty, | 00005360 65 6c 73 65 20 64 6f 6e 27 74 20 77 61 69 74 0a |else don't wait.| 00005370 0a 3c 3d 09 52 30 2d 52 36 20 63 6f 72 72 75 70 |.<=.R0-R6 corrup| 00005380 74 65 64 0a 0a 54 68 65 20 6e 65 77 20 6e 6f 74 |ted..The new not| 00005390 65 20 69 73 20 75 6e 70 61 63 6b 65 64 2c 20 70 |e is unpacked, p| 000053a0 75 74 20 74 6f 20 74 68 65 20 62 75 66 66 65 72 |ut to the buffer| 000053b0 20 61 6e 64 20 70 6c 61 79 65 64 2e 20 53 65 74 | and played. Set| 000053c0 74 69 6e 67 20 73 75 73 74 61 69 6e 20 74 69 6d |ting sustain tim| 000053d0 65 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 |e means that the| 000053e0 20 6e 65 77 20 6e 6f 74 65 20 68 61 73 20 70 72 | new note has pr| 000053f0 69 6f 72 69 74 79 20 6f 6e 20 74 68 65 20 74 75 |iority on the tu| 00005400 6e 65 20 6e 6f 74 65 73 20 64 75 72 69 6e 67 20 |ne notes during | 00005410 74 68 69 73 20 74 69 6d 65 2e 00 00 44 41 54 41 |this time...DATA| 00005420 5b 01 00 00 44 53 79 6d 5f 50 6c 61 79 53 69 6e |[...DSym_PlaySin| 00005430 67 6c 65 20 20 28 26 34 35 38 39 42 29 0a 23 50 |gle (&4589B).#P| 00005440 61 72 65 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 |arent DSym_.=>.R| 00005450 30 20 3d 09 2d 31 20 74 68 65 6e 20 69 66 20 52 |0 =.-1 then if R| 00005460 31 20 5c 3c 3e 2d 31 20 70 6c 61 79 20 70 61 74 |1 \<>-1 play pat| 00005470 74 65 72 6e 20 52 31 0a 09 20 09 69 66 20 52 31 |tern R1.. .if R1| 00005480 20 3d 20 2d 31 20 70 6c 61 79 20 6e 6f 72 6d 61 | = -1 play norma| 00005490 6c 0a 09 20 09 6f 74 68 65 72 2c 20 2d 31 20 74 |l.. .other, -1 t| 000054a0 68 65 6e 20 70 6c 61 79 20 70 61 74 74 65 72 6e |hen play pattern| 000054b0 73 20 66 72 6f 6d 20 52 30 20 74 6f 20 52 31 0a |s from R0 to R1.| 000054c0 09 52 32 20 3d 09 2d 31 20 74 6f 20 6e 6f 74 20 |.R2 =.-1 to not | 000054d0 6c 6f 6f 70 20 61 74 20 65 6e 64 0a 09 09 6f 74 |loop at end...ot| 000054e0 68 65 72 2c 20 2d 31 20 74 6f 20 6c 6f 6f 70 0a |her, -1 to loop.| 000054f0 0a 54 68 65 20 70 61 74 74 65 72 6e 20 70 6f 73 |.The pattern pos| 00005500 20 69 73 20 73 65 74 20 74 6f 20 30 2e 20 49 6e | is set to 0. In| 00005510 20 74 68 65 20 63 61 73 65 20 6f 66 20 70 6c 61 | the case of pla| 00005520 79 69 6e 67 20 61 20 70 61 72 74 20 6f 66 20 74 |ying a part of t| 00005530 68 65 20 73 65 71 75 65 6e 63 65 2c 20 74 68 65 |he sequence, the| 00005540 20 63 75 72 72 65 6e 74 20 70 6f 73 69 74 69 6f | current positio| 00005550 6e 20 69 73 20 73 65 74 20 74 6f 20 74 68 65 20 |n is set to the | 00005560 66 69 72 73 74 20 70 6f 73 20 69 6e 20 74 68 61 |first pos in tha| 00005570 74 20 70 61 72 74 2e 00 44 41 54 41 8c 00 00 00 |t part..DATA....| 00005580 44 53 79 6d 5f 52 65 73 65 74 50 61 72 61 6d 73 |DSym_ResetParams| 00005590 20 20 28 26 34 35 38 38 37 29 0a 23 50 61 72 65 | (&45887).#Pare| 000055a0 6e 74 20 44 53 79 6d 5f 0a 41 6c 6c 20 70 61 72 |nt DSym_.All par| 000055b0 61 6d 65 74 65 72 73 20 61 72 65 20 72 65 73 65 |ameters are rese| 000055c0 74 20 28 73 74 65 72 65 6f 2c 20 63 6f 75 6e 74 |t (stereo, count| 000055d0 65 72 2c 20 65 66 66 65 63 74 73 29 20 61 6e 64 |er, effects) and| 000055e0 20 20 63 75 72 72 65 6e 74 20 6e 6f 74 65 73 20 | current notes | 000055f0 63 75 74 20 6f 6e 20 61 6c 6c 20 63 68 61 6e 6e |cut on all chann| 00005600 65 6c 73 2e 44 41 54 41 88 00 00 00 44 53 79 6d |els.DATA....DSym| 00005610 5f 52 65 73 74 61 72 74 53 6f 6e 67 20 20 28 26 |_RestartSong (&| 00005620 34 35 38 38 31 29 0a 23 50 61 72 65 6e 74 20 44 |45881).#Parent D| 00005630 53 79 6d 5f 0a 54 68 69 73 20 63 61 6c 6c 20 72 |Sym_.This call r| 00005640 65 73 65 74 73 20 61 6c 6c 20 70 61 72 61 6d 65 |esets all parame| 00005650 74 65 72 73 2c 20 73 65 74 73 20 74 68 65 20 74 |ters, sets the t| 00005660 75 6e 65 20 70 6f 73 69 74 69 6f 6e 20 74 6f 20 |une position to | 00005670 30 20 61 6e 64 20 73 74 61 72 74 73 20 74 68 65 |0 and starts the| 00005680 20 73 6f 6e 67 20 61 67 61 69 6e 2e 44 41 54 41 | song again.DATA| 00005690 18 01 00 00 44 53 79 6d 5f 53 61 6d 70 6c 65 52 |....DSym_SampleR| 000056a0 61 74 65 20 20 28 26 34 35 38 39 37 29 0a 23 50 |ate (&45897).#P| 000056b0 61 72 65 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 |arent DSym_.=>.R| 000056c0 30 20 3d 09 2d 31 20 74 6f 20 72 65 61 64 20 73 |0 =.-1 to read s| 000056d0 61 6d 70 6c 65 20 72 61 74 65 0a 09 20 09 6f 74 |ample rate.. .ot| 000056e0 68 65 72 2c 20 74 6f 20 73 65 74 0a 0a 3c 3d 09 |her, to set..<=.| 000056f0 52 30 20 3d 09 70 72 65 76 69 6f 75 73 20 73 61 |R0 =.previous sa| 00005700 6d 70 6c 65 20 72 61 74 65 20 28 30 2d 39 39 29 |mple rate (0-99)| 00005710 0a 0a 54 68 69 73 20 63 61 6c 6c 20 73 65 74 73 |..This call sets| 00005720 20 74 68 65 20 73 61 6d 70 6c 65 20 6f 75 74 70 | the sample outp| 00005730 75 74 20 64 65 6e 73 69 74 79 2e 20 54 68 65 20 |ut density. The | 00005740 6c 6f 77 65 72 20 74 68 65 20 6e 75 6d 62 65 72 |lower the number| 00005750 20 69 73 2c 20 74 68 65 20 6c 65 73 73 20 74 69 | is, the less ti| 00005760 6d 65 20 74 68 65 20 44 53 79 6d 20 6d 6f 64 75 |me the DSym modu| 00005770 6c 65 20 6e 65 65 64 73 20 74 6f 20 63 61 6c 63 |le needs to calc| 00005780 75 6c 61 74 65 2c 20 62 75 74 20 74 68 65 20 77 |ulate, but the w| 00005790 6f 72 73 65 20 74 68 65 20 71 75 61 6c 69 74 79 |orse the quality| 000057a0 20 69 73 2e 44 41 54 41 66 01 00 00 44 53 79 6d | is.DATAf...DSym| 000057b0 5f 53 6f 6e 67 50 6f 73 20 20 28 26 34 35 38 38 |_SongPos (&4588| 000057c0 43 29 0a 23 50 61 72 65 6e 74 20 44 53 79 6d 5f |C).#Parent DSym_| 000057d0 0a 3d 3e 09 52 30 20 3d 09 2d 31 20 74 6f 20 72 |.=>.R0 =.-1 to r| 000057e0 65 61 64 20 73 65 71 75 65 6e 63 65 20 70 6f 73 |ead sequence pos| 000057f0 0a 09 09 6f 74 68 65 72 2c 20 74 6f 20 73 65 74 |...other, to set| 00005800 0a 09 52 31 20 3d 09 2d 31 20 74 6f 20 72 65 61 |..R1 =.-1 to rea| 00005810 64 20 70 61 74 74 65 72 6e 20 70 6f 73 0a 09 09 |d pattern pos...| 00005820 6f 74 68 65 72 2c 20 74 6f 20 73 65 74 0a 0a 3c |other, to set..<| 00005830 3d 09 52 30 20 3d 09 70 72 65 76 69 6f 75 73 20 |=.R0 =.previous | 00005840 73 65 71 75 65 6e 63 65 20 70 6f 73 0a 09 52 31 |sequence pos..R1| 00005850 20 3d 09 70 72 65 76 69 6f 75 73 20 70 61 74 74 | =.previous patt| 00005860 65 72 6e 20 70 6f 73 20 28 30 2d 36 33 29 0a 0a |ern pos (0-63)..| 00005870 54 68 69 73 20 63 61 6c 6c 20 72 65 61 64 73 20 |This call reads | 00005880 6f 72 20 73 65 74 73 20 74 68 65 20 70 61 74 74 |or sets the patt| 00005890 65 72 6e 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 |ern position in | 000058a0 73 6f 6e 67 20 61 6e 64 20 74 68 65 20 6e 6f 74 |song and the not| 000058b0 65 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 70 61 |e position in pa| 000058c0 74 74 65 72 6e 2e 20 49 66 20 74 68 65 20 70 61 |ttern. If the pa| 000058d0 74 74 65 72 6e 20 70 6f 73 69 74 69 6f 6e 20 69 |ttern position i| 000058e0 73 20 63 68 61 6e 67 65 64 2c 20 74 68 65 20 63 |s changed, the c| 000058f0 75 72 72 65 6e 74 20 6e 6f 74 65 20 69 73 20 72 |urrent note is r| 00005900 65 73 65 74 20 74 6f 20 30 2e 00 00 44 41 54 41 |eset to 0...DATA| 00005910 8b 01 00 00 44 53 79 6d 5f 53 74 65 72 65 6f 20 |....DSym_Stereo | 00005920 20 28 26 34 35 38 38 33 29 0a 23 50 61 72 65 6e | (&45883).#Paren| 00005930 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 3d 09 |t DSym_.=>.R0 =.| 00005940 76 6f 69 63 65 20 6e 75 6d 62 65 72 20 28 30 2d |voice number (0-| 00005950 37 29 0a 09 52 31 20 3d 09 6e 65 77 20 73 74 65 |7)..R1 =.new ste| 00005960 72 65 6f 20 70 6f 73 69 74 69 6f 6e 2c 20 6f 72 |reo position, or| 00005970 20 2d 31 32 38 20 74 6f 20 72 65 61 64 0a 0a 3c | -128 to read..<| 00005980 3d 09 52 31 20 3d 09 70 72 65 76 69 6f 75 73 20 |=.R1 =.previous | 00005990 73 74 65 72 65 6f 20 70 6f 73 69 74 69 6f 6e 20 |stereo position | 000059a0 28 2d 31 32 37 20 74 6f 20 31 32 37 29 20 66 6f |(-127 to 127) fo| 000059b0 72 20 76 6f 69 63 65 20 6e 75 6d 62 65 72 20 52 |r voice number R| 000059c0 30 0a 0a 54 68 69 73 20 63 61 6c 6c 20 73 65 74 |0..This call set| 000059d0 73 20 74 68 65 20 73 74 65 72 65 6f 20 70 6f 73 |s the stereo pos| 000059e0 69 74 69 6f 6e 20 6f 66 20 6f 6e 65 20 76 6f 69 |ition of one voi| 000059f0 63 65 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 |ce specified in | 00005a00 52 30 2e 20 41 20 70 6f 73 69 74 69 6f 6e 20 6f |R0. A position o| 00005a10 66 20 7a 65 72 6f 20 6d 65 61 6e 73 20 74 68 61 |f zero means tha| 00005a20 74 20 74 68 65 20 6c 65 66 74 20 61 6e 64 20 72 |t the left and r| 00005a30 69 67 68 74 20 73 70 65 61 6b 65 72 20 67 65 74 |ight speaker get| 00005a40 20 62 6f 74 68 20 74 68 65 20 68 61 6c 66 20 61 | both the half a| 00005a50 6d 70 6c 69 74 75 64 65 2c 20 2d 31 32 37 20 6d |mplitude, -127 m| 00005a60 65 61 6e 73 20 74 68 65 20 6c 65 66 74 20 73 70 |eans the left sp| 00005a70 65 61 6b 65 72 20 67 65 74 73 20 31 30 30 25 2c |eaker gets 100%,| 00005a80 20 74 68 65 20 72 69 67 68 74 20 6f 6e 65 20 6e | the right one n| 00005a90 6f 74 68 69 6e 67 2e 00 44 41 54 41 36 01 00 00 |othing..DATA6...| 00005aa0 44 53 79 6d 5f 54 75 6e 65 43 6f 6e 74 72 6f 6c |DSym_TuneControl| 00005ab0 20 20 28 26 34 35 38 38 44 29 0a 23 50 61 72 65 | (&4588D).#Pare| 00005ac0 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 3d |nt DSym_.=>.R0 =| 00005ad0 09 2d 31 20 74 6f 20 72 65 61 64 20 73 74 61 74 |.-1 to read stat| 00005ae0 75 73 0a 09 20 09 6f 74 68 65 72 2c 20 74 6f 20 |us.. .other, to | 00005af0 73 65 74 20 28 6c 6f 77 65 72 20 62 79 74 65 29 |set (lower byte)| 00005b00 0a 0a 3c 3d 09 52 30 20 3d 20 70 72 65 76 69 6f |..<=.R0 = previo| 00005b10 75 73 20 74 75 6e 65 20 73 74 61 74 75 73 20 28 |us tune status (| 00005b20 30 3d 20 6f 66 66 2c 20 5c 3c 3e 30 3d 20 6f 6e |0= off, \<>0= on| 00005b30 29 0a 0a 54 68 69 73 20 63 61 6c 6c 20 63 6f 6e |)..This call con| 00005b40 74 72 6f 6c 73 20 74 68 65 20 74 75 6e 65 20 64 |trols the tune d| 00005b50 65 63 6f 64 65 72 2e 20 4f 66 66 20 6d 65 61 6e |ecoder. Off mean| 00005b60 73 20 74 68 65 20 74 75 6e 65 20 64 65 63 6f 64 |s the tune decod| 00005b70 65 72 20 77 6f 6e 27 74 20 6c 65 74 20 70 6c 61 |er won't let pla| 00005b80 79 20 6e 6f 74 65 73 20 61 6e 79 6d 6f 72 65 2c |y notes anymore,| 00005b90 20 79 6f 75 20 63 61 6e 20 73 74 69 6c 6c 20 70 | you can still p| 00005ba0 6c 61 79 20 63 75 73 74 6f 6d 20 6e 6f 74 65 73 |lay custom notes| 00005bb0 2e 20 43 75 72 72 65 6e 74 20 6e 6f 74 65 73 20 |. Current notes | 00005bc0 73 74 69 6c 6c 20 70 6c 61 79 69 6e 67 2e 00 00 |still playing...| 00005bd0 44 41 54 41 95 00 00 00 44 53 79 6d 5f 54 75 6e |DATA....DSym_Tun| 00005be0 65 49 6e 66 6f 20 20 28 26 34 35 38 39 41 29 0a |eInfo (&4589A).| 00005bf0 23 50 61 72 65 6e 74 20 44 53 79 6d 5f 0a 3c 3d |#Parent DSym_.<=| 00005c00 09 52 30 20 3d 09 74 75 6e 65 20 6c 65 6e 67 74 |.R0 =.tune lengt| 00005c10 68 0a 09 52 31 20 3d 09 6e 75 6d 62 65 72 20 6f |h..R1 =.number o| 00005c20 66 20 70 61 74 74 65 72 6e 73 0a 0a 54 68 69 73 |f patterns..This| 00005c30 20 63 61 6c 6c 20 72 65 61 64 73 20 73 6f 6d 65 | call reads some| 00005c40 20 67 65 6e 65 72 61 6c 20 69 6e 66 6f 72 6d 61 | general informa| 00005c50 74 69 6f 6e 73 20 61 62 6f 75 74 20 74 68 65 20 |tions about the | 00005c60 73 6f 6e 67 2e 00 00 00 44 41 54 41 f1 00 00 00 |song....DATA....| 00005c70 44 53 79 6d 5f 55 70 63 61 6c 6c 56 65 63 74 6f |DSym_UpcallVecto| 00005c80 72 20 20 28 26 34 35 38 38 41 29 0a 23 50 61 72 |r (&4588A).#Par| 00005c90 65 6e 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 |ent DSym_.=>.R0 | 00005ca0 3d 09 2d 31 20 74 6f 20 72 65 61 64 20 75 70 63 |=.-1 to read upc| 00005cb0 61 6c 6c 20 61 64 64 72 65 73 73 0a 09 20 09 2d |all address.. .-| 00005cc0 32 20 74 6f 20 73 65 74 20 64 65 66 61 75 6c 74 |2 to set default| 00005cd0 0a 09 20 09 61 64 64 72 65 73 73 20 74 6f 20 73 |.. .address to s| 00005ce0 65 74 0a 0a 3c 3d 09 52 30 20 3d 09 70 72 65 76 |et..<=.R0 =.prev| 00005cf0 69 6f 75 73 20 75 70 63 61 6c 6c 20 61 64 64 72 |ious upcall addr| 00005d00 65 73 73 0a 0a 54 68 69 73 20 63 61 6c 6c 20 72 |ess..This call r| 00005d10 65 61 64 73 20 61 6e 64 20 77 72 69 74 65 73 20 |eads and writes | 00005d20 74 68 65 20 75 70 63 61 6c 6c 20 76 65 63 74 6f |the upcall vecto| 00005d30 72 20 61 64 64 72 65 73 73 2c 20 69 6e 66 6f 72 |r address, infor| 00005d40 6d 61 74 69 6f 6e 20 61 74 20 3c 4f 53 3a 4f 53 |mation at <OS:OS| 00005d50 5f 55 70 63 61 6c 6c 3e 2e 00 00 00 44 41 54 41 |_Upcall>....DATA| 00005d60 d8 00 00 00 44 73 79 6d 5f 56 6f 69 63 65 73 20 |....Dsym_Voices | 00005d70 20 28 26 34 35 38 38 46 29 0a 23 50 61 72 65 6e | (&4588F).#Paren| 00005d80 74 20 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 3d 09 |t DSym_.=>.R0 =.| 00005d90 2d 31 20 74 6f 20 72 65 61 64 20 68 61 72 64 77 |-1 to read hardw| 00005da0 61 72 65 20 76 6f 69 63 65 73 20 6e 75 6d 62 65 |are voices numbe| 00005db0 72 0a 09 20 09 6f 74 68 65 72 2c 20 74 6f 20 73 |r.. .other, to s| 00005dc0 65 74 20 76 6f 69 63 65 73 0a 0a 3c 3d 09 52 30 |et voices..<=.R0| 00005dd0 20 3d 09 70 72 65 76 69 6f 75 73 20 68 61 72 64 | =.previous hard| 00005de0 77 61 72 65 20 76 6f 69 63 65 73 20 6e 75 6d 62 |ware voices numb| 00005df0 65 72 20 28 31 2c 32 2c 34 20 6f 72 20 38 29 0a |er (1,2,4 or 8).| 00005e00 0a 54 68 69 73 20 63 61 6c 6c 20 63 68 61 6e 67 |.This call chang| 00005e10 65 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 |es the number of| 00005e20 20 68 61 72 64 77 61 72 65 20 63 68 61 6e 6e 65 | hardware channe| 00005e30 6c 73 2e 20 44 41 54 41 0f 01 00 00 44 53 79 6d |ls. DATA....DSym| 00005e40 5f 56 6f 6c 20 20 28 26 34 35 38 38 32 29 0a 23 |_Vol (&45882).#| 00005e50 50 61 72 65 6e 74 20 44 73 79 6d 5f 0a 3d 3e 09 |Parent Dsym_.=>.| 00005e60 52 30 20 3d 09 6e 65 77 20 6f 76 65 72 61 6c 6c |R0 =.new overall| 00005e70 20 76 6f 6c 75 6d 65 2c 20 6f 72 20 2d 31 20 74 | volume, or -1 t| 00005e80 6f 20 72 65 61 64 0a 3c 3d 09 52 30 20 3d 09 70 |o read.<=.R0 =.p| 00005e90 72 65 76 69 6f 75 73 20 6f 76 65 72 61 6c 6c 20 |revious overall | 00005ea0 76 6f 6c 75 6d 65 0a 0a 54 68 69 73 20 63 61 6c |volume..This cal| 00005eb0 6c 20 73 65 74 73 20 61 6e 64 2f 6f 72 20 72 65 |l sets and/or re| 00005ec0 61 64 73 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 |ads the overall | 00005ed0 76 6f 6c 75 6d 65 2e 20 54 68 65 20 64 65 66 61 |volume. The defa| 00005ee0 75 6c 74 20 69 73 20 36 34 20 77 68 69 63 68 20 |ult is 64 which | 00005ef0 6d 65 61 6e 73 2c 20 74 68 61 74 20 74 68 65 20 |means, that the | 00005f00 73 6f 6e 67 73 20 61 6d 70 6c 69 74 75 64 65 20 |songs amplitude | 00005f10 69 73 20 6e 6f 74 20 64 65 63 72 65 61 73 65 64 |is not decreased| 00005f20 2e 20 41 20 76 6f 6c 75 6d 65 20 6f 66 20 30 20 |. A volume of 0 | 00005f30 6d 65 61 6e 73 20 61 20 71 75 69 65 74 20 73 6f |means a quiet so| 00005f40 6e 67 2e 00 44 41 54 41 4d 01 00 00 44 53 79 6d |ng..DATAM...DSym| 00005f50 5f 56 75 42 61 72 20 20 28 26 34 35 38 39 33 29 |_VuBar (&45893)| 00005f60 0a 23 50 61 72 65 6e 74 20 44 53 79 6d 5f 0a 3d |.#Parent DSym_.=| 00005f70 3e 09 52 30 20 3d 09 76 6f 69 63 65 20 6e 75 6d |>.R0 =.voice num| 00005f80 62 65 72 20 28 30 2d 37 29 0a 3c 3d 09 52 31 20 |ber (0-7).<=.R1 | 00005f90 3d 09 56 75 20 62 61 72 20 68 65 69 67 68 74 20 |=.Vu bar height | 00005fa0 28 30 2d 36 34 29 0a 0a 54 68 69 73 20 63 61 6c |(0-64)..This cal| 00005fb0 6c 20 67 69 76 65 73 20 79 6f 75 20 74 68 65 20 |l gives you the | 00005fc0 63 75 72 72 65 6e 74 20 56 75 42 61 72 20 68 65 |current VuBar he| 00005fd0 69 67 68 74 2e 20 49 20 63 6f 6e 73 69 64 65 72 |ight. I consider| 00005fe0 20 74 68 69 73 20 63 61 6c 6c 20 6e 6f 74 20 74 | this call not t| 00005ff0 68 61 74 20 67 6f 6f 64 2c 20 62 65 63 61 75 73 |hat good, becaus| 00006000 65 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f |e the informatio| 00006010 6e 20 69 73 20 6e 6f 74 20 67 69 76 65 6e 20 6f |n is not given o| 00006020 6e 20 77 68 61 74 20 79 6f 75 20 68 65 61 72 2c |n what you hear,| 00006030 20 62 75 74 20 6f 6e 6c 79 20 6f 6e 20 65 76 65 | but only on eve| 00006040 72 79 20 70 6c 61 79 65 64 20 6e 6f 74 65 2c 20 |ry played note, | 00006050 73 6f 20 79 6f 75 20 63 61 6e 27 74 20 67 65 74 |so you can't get| 00006060 20 65 76 65 6e 74 75 61 6c 20 70 69 74 63 68 20 | eventual pitch | 00006070 62 65 6e 64 69 6e 67 20 6f 72 20 61 6e 79 20 65 |bending or any e| 00006080 66 66 65 63 74 73 20 61 6e 64 20 73 6f 20 6f 6e |ffects and so on| 00006090 2e 00 00 00 44 41 54 41 28 01 00 00 44 53 79 6d |....DATA(...DSym| 000060a0 5f 56 75 47 72 61 76 69 74 79 20 20 28 26 34 35 |_VuGravity (&45| 000060b0 38 39 36 29 0a 23 50 61 72 65 6e 74 20 44 53 79 |896).#Parent DSy| 000060c0 6d 5f 0a 3d 3e 09 52 30 20 3d 09 2d 31 20 74 6f |m_.=>.R0 =.-1 to| 000060d0 20 72 65 61 64 20 56 75 47 72 61 76 69 74 79 0a | read VuGravity.| 000060e0 09 20 09 6f 74 68 65 72 2c 20 74 6f 20 73 65 74 |. .other, to set| 000060f0 20 28 6c 6f 77 65 72 20 62 79 74 65 29 0a 0a 3c | (lower byte)..<| 00006100 3d 09 52 30 20 3d 09 70 72 65 76 69 6f 75 73 20 |=.R0 =.previous | 00006110 67 72 61 76 69 74 79 20 6f 66 20 56 75 42 61 72 |gravity of VuBar| 00006120 20 28 30 2d 32 35 35 29 0a 0a 54 68 69 73 20 63 | (0-255)..This c| 00006130 61 6c 6c 20 73 65 74 73 2c 20 68 6f 77 20 6c 6f |all sets, how lo| 00006140 6e 67 20 69 74 20 74 61 6b 65 73 20 75 6e 74 69 |ng it takes unti| 00006150 6c 20 74 68 65 20 56 75 42 61 72 20 73 6c 69 64 |l the VuBar slid| 00006160 65 73 20 64 6f 77 6e 20 66 72 6f 6d 20 36 34 20 |es down from 64 | 00006170 74 6f 20 30 2c 20 77 68 65 72 65 20 32 35 35 20 |to 0, where 255 | 00006180 6d 65 61 6e 73 20 68 69 67 68 65 73 74 20 73 70 |means highest sp| 00006190 65 65 64 2c 20 61 6e 64 20 30 20 6d 65 61 6e 73 |eed, and 0 means| 000061a0 20 6c 6f 6e 67 65 73 74 20 74 69 6d 65 20 74 6f | longest time to| 000061b0 20 73 6c 69 64 65 20 64 6f 77 6e 2e 44 41 54 41 | slide down.DATA| 000061c0 7e 00 00 00 44 53 79 6d 5f 57 61 69 74 20 20 28 |~...DSym_Wait (| 000061d0 26 34 35 38 39 30 29 0a 23 50 61 72 65 6e 74 20 |&45890).#Parent | 000061e0 44 53 79 6d 5f 0a 3d 3e 09 52 30 20 3d 09 76 6f |DSym_.=>.R0 =.vo| 000061f0 69 63 65 20 6e 75 6d 62 65 72 20 28 30 2d 37 29 |ice number (0-7)| 00006200 0a 0a 43 20 69 73 20 73 65 74 20 69 66 20 63 75 |..C is set if cu| 00006210 73 74 6f 6d 20 6e 6f 74 65 20 62 75 66 66 65 72 |stom note buffer| 00006220 20 69 73 20 6e 6f 74 20 65 6d 70 74 79 2c 20 65 | is not empty, e| 00006230 6c 73 65 20 63 6c 65 61 72 2e 00 00 44 49 52 24 |lse clear...DIR$| 00006240 2c 00 00 00 2c 00 00 00 68 62 00 00 47 fd ff ff |,...,...hb..G...| 00006250 05 5b bc 21 f9 00 00 00 13 00 00 00 00 00 00 00 |.[.!............| 00006260 21 52 6f 6f 74 00 00 00 44 41 54 41 f9 00 00 00 |!Root...DATA....| 00006270 44 79 6e 61 6d 69 74 65 0a 23 50 61 72 65 6e 74 |Dynamite.#Parent| 00006280 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 44 | !Root.#Prefix D| 00006290 79 6e 61 6d 69 74 65 5f 0a 23 54 61 62 6c 65 20 |ynamite_.#Table | 000062a0 43 6f 6c 75 6d 6e 73 20 32 0a 41 6c 6c 6f 63 0a |Columns 2.Alloc.| 000062b0 46 72 65 65 0a 46 72 65 65 57 69 74 68 49 44 0a |Free.FreeWithID.| 000062c0 42 6c 6f 63 6b 49 6e 66 6f 0a 43 68 61 6e 67 65 |BlockInfo.Change| 000062d0 49 44 0a 52 65 73 69 7a 65 0a 4d 69 64 45 78 74 |ID.Resize.MidExt| 000062e0 65 6e 64 0a 53 61 76 65 0a 4c 6f 61 64 0a 52 65 |end.Save.Load.Re| 000062f0 64 75 63 65 0a 43 6f 6d 70 61 63 74 0a 4c 6f 63 |duce.Compact.Loc| 00006300 6b 0a 55 6e 6c 6f 63 6b 0a 43 6c 61 69 6d 41 6e |k.Unlock.ClaimAn| 00006310 63 68 6f 72 0a 52 65 6c 65 61 73 65 41 6e 63 68 |chor.ReleaseAnch| 00006320 6f 72 0a 52 65 61 64 53 70 72 69 74 65 53 69 7a |or.ReadSpriteSiz| 00006330 65 0a 44 65 73 63 72 69 62 65 0a 49 6e 74 65 67 |e.Describe.Integ| 00006340 72 69 74 79 43 68 65 63 6b 0a 43 68 61 6e 67 65 |rityCheck.Change| 00006350 41 6e 63 68 6f 72 0a 23 45 6e 64 54 61 62 6c 65 |Anchor.#EndTable| 00006360 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 00006370 90 63 00 00 46 fd ff ff cd 4c c7 13 df 00 00 00 |.c..F....L......| 00006380 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00006390 44 41 54 41 df 00 00 00 45 75 63 6c 69 64 0a 23 |DATA....Euclid.#| 000063a0 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 |Parent !Root.#Pr| 000063b0 65 66 69 78 20 45 75 63 6c 69 64 5f 0a 23 54 61 |efix Euclid_.#Ta| 000063c0 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 49 6e |ble Columns 2.In| 000063d0 69 74 69 61 6c 69 73 65 0a 44 72 61 77 0a 4c 6f |itialise.Draw.Lo| 000063e0 61 64 0a 53 61 76 65 0a 41 70 70 65 6e 64 0a 46 |ad.Save.Append.F| 000063f0 69 6e 64 0a 43 72 65 61 74 65 0a 44 65 73 74 72 |ind.Create.Destr| 00006400 6f 79 0a 53 65 74 0a 53 68 6f 77 0a 49 6e 73 65 |oy.Set.Show.Inse| 00006410 72 74 0a 44 65 6c 65 74 65 0a 54 72 61 6e 73 6c |rt.Delete.Transl| 00006420 61 74 65 0a 5a 6f 6f 6d 0a 52 6f 74 61 74 65 0a |ate.Zoom.Rotate.| 00006430 4c 69 73 74 0a 42 6f 75 6e 64 69 6e 67 53 70 68 |List.BoundingSph| 00006440 65 72 65 0a 43 6c 6f 73 65 44 6f 77 6e 0a 4d 69 |ere.CloseDown.Mi| 00006450 73 63 4f 70 0a 43 6f 6d 70 72 65 73 73 0a 45 78 |scOp.Compress.Ex| 00006460 70 61 6e 64 0a 23 45 6e 64 54 61 62 6c 65 0a 00 |pand.#EndTable..| 00006470 44 49 52 24 2c 00 00 00 2c 00 00 00 9c 64 00 00 |DIR$,...,....d..| 00006480 46 fd ff ff 0c 52 c7 13 a3 00 00 00 13 00 00 00 |F....R..........| 00006490 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 000064a0 a3 00 00 00 46 69 6c 65 42 75 66 66 65 72 0a 23 |....FileBuffer.#| 000064b0 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 |Parent !Root.#Pr| 000064c0 65 66 69 78 20 46 69 6c 65 42 75 66 66 65 72 5f |efix FileBuffer_| 000064d0 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 000064e0 32 0a 4f 70 65 6e 0a 43 6c 6f 73 65 0a 43 6c 65 |2.Open.Close.Cle| 000064f0 61 72 0a 52 65 61 64 0a 52 65 61 64 42 79 74 65 |ar.Read.ReadByte| 00006500 0a 57 72 69 74 65 0a 57 72 69 74 65 42 79 74 65 |.Write.WriteByte| 00006510 0a 52 65 61 64 50 54 52 0a 57 72 69 74 65 50 54 |.ReadPTR.WritePT| 00006520 52 0a 54 61 73 6b 53 74 61 72 74 0a 54 61 73 6b |R.TaskStart.Task| 00006530 51 75 69 74 0a 23 45 6e 64 54 61 62 6c 65 0a 00 |Quit.#EndTable..| 00006540 44 49 52 24 f4 01 00 00 f4 01 00 00 34 67 00 00 |DIR$........4g..| 00006550 47 fd ff ff 86 5e f3 91 f1 00 00 00 33 00 00 00 |G....^......3...| 00006560 00 00 00 00 21 52 6f 6f 74 00 00 00 28 68 00 00 |....!Root...(h..| 00006570 47 ff ff ff bf 66 f1 91 de 01 00 00 33 00 00 00 |G....f......3...| 00006580 00 00 00 00 4f 62 6a 65 63 74 44 65 73 63 00 00 |....ObjectDesc..| 00006590 08 6a 00 00 47 ff ff ff 6d 75 f1 91 21 01 00 00 |.j..G...mu..!...| 000065a0 33 00 00 00 00 00 00 00 4f 62 6a 65 63 74 4e 61 |3.......ObjectNa| 000065b0 6d 65 00 00 2c 6b 00 00 47 ff ff ff 48 8b f1 91 |me..,k..G...H...| 000065c0 c9 00 00 00 33 00 00 00 00 00 00 00 43 72 65 61 |....3.......Crea| 000065d0 74 65 53 70 72 69 74 65 00 00 00 00 f8 6b 00 00 |teSprite.....k..| 000065e0 47 ff ff ff 92 b5 f1 91 4a 02 00 00 33 00 00 00 |G.......J...3...| 000065f0 00 00 00 00 53 65 74 53 70 72 69 74 65 00 00 00 |....SetSprite...| 00006600 44 6e 00 00 47 ff ff ff 70 dd f1 91 6a 01 00 00 |Dn..G...p...j...| 00006610 33 00 00 00 00 00 00 00 43 6f 70 79 53 70 72 69 |3.......CopySpri| 00006620 74 65 00 00 b0 6f 00 00 47 ff ff ff 6a e9 f1 91 |te...o..G...j...| 00006630 4d 00 00 00 33 00 00 00 00 00 00 00 52 65 61 64 |M...3.......Read| 00006640 43 68 6f 69 63 65 73 00 00 70 00 00 47 ff ff ff |Choices..p..G...| 00006650 43 ed f1 91 4c 00 00 00 33 00 00 00 00 00 00 00 |C...L...3.......| 00006660 4e 65 77 43 68 6f 69 63 65 73 00 00 4c 70 00 00 |NewChoices..Lp..| 00006670 47 ff ff ff fc f0 f1 91 4a 00 00 00 33 00 00 00 |G.......J...3...| 00006680 00 00 00 00 4c 6f 61 64 4b 65 79 73 00 00 00 00 |....LoadKeys....| 00006690 98 70 00 00 47 ff ff ff ca ce ac ca 38 01 00 00 |.p..G.......8...| 000066a0 33 00 00 00 00 00 00 00 6b 65 79 6e 61 6d 65 00 |3.......keyname.| 000066b0 d0 71 00 00 47 ff ff ff f1 64 81 e9 87 01 00 00 |.q..G....d......| 000066c0 33 00 00 00 00 00 00 00 56 69 65 77 65 72 44 65 |3.......ViewerDe| 000066d0 73 63 00 00 58 73 00 00 47 ff ff ff e8 42 f2 91 |sc..Xs..G....B..| 000066e0 92 00 00 00 33 00 00 00 00 00 00 00 42 6f 6f 74 |....3.......Boot| 000066f0 00 00 00 00 ec 73 00 00 47 ff ff ff 95 14 f3 91 |.....s..G.......| 00006700 bd 05 00 00 33 00 00 00 00 00 00 00 53 65 6c 65 |....3.......Sele| 00006710 63 74 00 00 ac 79 00 00 47 ff ff ff e3 58 f3 91 |ct...y..G....X..| 00006720 62 03 00 00 33 00 00 00 00 00 00 00 53 70 72 69 |b...3.......Spri| 00006730 74 65 00 00 44 41 54 41 f1 00 00 00 50 72 6f 46 |te..DATA....ProF| 00006740 69 6c 65 72 20 28 54 68 6f 6d 61 73 20 4f 6c 73 |iler (Thomas Ols| 00006750 73 6f 6e 29 0a 23 50 61 72 65 6e 74 20 21 52 6f |son).#Parent !Ro| 00006760 6f 74 0a 23 50 72 65 66 69 78 20 46 69 6c 65 72 |ot.#Prefix Filer| 00006770 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 |_.#Table Columns| 00006780 20 33 0a 3c 4f 62 6a 65 63 74 44 65 73 63 3e 0a | 3.<ObjectDesc>.| 00006790 3c 4f 62 6a 65 63 74 4e 61 6d 65 3e 0a 3c 43 72 |<ObjectName>.<Cr| 000067a0 65 61 74 65 53 70 72 69 74 65 3e 0a 3c 53 65 74 |eateSprite>.<Set| 000067b0 53 70 72 69 74 65 3e 0a 3c 43 6f 70 79 53 70 72 |Sprite>.<CopySpr| 000067c0 69 74 65 3e 0a 3c 52 65 61 64 43 68 6f 69 63 65 |ite>.<ReadChoice| 000067d0 73 3e 0a 3c 4e 65 77 43 68 6f 69 63 65 73 3e 0a |s>.<NewChoices>.| 000067e0 3c 4c 6f 61 64 4b 65 79 73 3e 0a 3c 4b 65 79 4e |<LoadKeys>.<KeyN| 000067f0 61 6d 65 3e 0a 3c 56 69 65 77 65 72 44 65 73 63 |ame>.<ViewerDesc| 00006800 3e 0a 3c 42 6f 6f 74 3e 0a 3c 53 65 6c 65 63 74 |>.<Boot>.<Select| 00006810 3e 0a 3c 53 70 72 69 74 65 3e 0a 23 45 6e 64 54 |>.<Sprite>.#EndT| 00006820 61 62 6c 65 0a 00 00 00 44 41 54 41 de 01 00 00 |able....DATA....| 00006830 46 69 6c 65 72 5f 4f 62 6a 65 63 74 44 65 73 63 |Filer_ObjectDesc| 00006840 0a 23 50 61 72 65 6e 74 20 46 69 6c 65 72 5f 0a |.#Parent Filer_.| 00006850 3d 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 |=>.R0 =.pointer | 00006860 74 6f 20 4f 62 6a 65 63 74 20 6e 61 6d 65 20 28 |to Object name (| 00006870 77 69 6c 6c 20 62 65 20 63 61 6e 6f 6e 69 63 61 |will be canonica| 00006880 6c 69 73 65 64 29 0a 3c 3d 09 52 32 20 3d 09 70 |lised).<=.R2 =.p| 00006890 6f 69 6e 74 65 72 20 74 6f 20 56 69 65 77 65 72 |ointer to Viewer| 000068a0 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 6f 72 | description, or| 000068b0 20 30 20 69 66 20 6e 6f 74 20 76 69 73 69 62 6c | 0 if not visibl| 000068c0 65 0a 09 52 33 20 3d 09 70 6f 69 6e 74 65 72 20 |e..R3 =.pointer | 000068d0 74 6f 20 4f 62 6a 65 63 74 20 64 65 73 63 72 69 |to Object descri| 000068e0 70 74 69 6f 6e 2c 20 6f 72 20 30 20 69 66 20 6e |ption, or 0 if n| 000068f0 6f 74 20 76 69 73 69 62 6c 65 0a 0a 54 68 69 73 |ot visible..This| 00006900 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 70 6f 69 | will return poi| 00006910 6e 74 65 72 73 20 74 6f 20 64 65 73 63 72 69 70 |nters to descrip| 00006920 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 6f 62 6a |tions of the obj| 00006930 65 63 74 20 61 6e 64 20 74 68 65 20 76 69 65 77 |ect and the view| 00006940 65 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 |er containing it| 00006950 20 69 66 20 69 74 20 69 73 20 63 75 72 72 65 6e | if it is curren| 00006960 74 6c 79 20 76 69 73 69 62 6c 65 2e 20 49 66 20 |tly visible. If | 00006970 74 68 65 20 76 69 65 77 65 72 20 74 68 61 74 20 |the viewer that | 00006980 73 68 6f 75 6c 64 20 68 61 76 65 20 63 6f 6e 74 |should have cont| 00006990 61 69 6e 65 64 20 74 68 65 20 6f 62 6a 65 63 74 |ained the object| 000069a0 20 69 73 20 76 69 73 69 62 6c 65 2c 20 62 75 74 | is visible, but| 000069b0 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73 20 6e | the object is n| 000069c0 6f 74 2c 20 52 33 20 77 69 6c 6c 20 62 65 20 30 |ot, R3 will be 0| 000069d0 20 6f 6e 20 65 78 69 74 20 61 6e 64 20 52 32 20 | on exit and R2 | 000069e0 77 69 6c 6c 20 70 6f 69 6e 74 20 74 6f 20 74 68 |will point to th| 000069f0 65 20 76 69 65 77 65 72 20 64 65 73 63 72 69 70 |e viewer descrip| 00006a00 74 69 6f 6e 2e 0a 00 00 44 41 54 41 21 01 00 00 |tion....DATA!...| 00006a10 46 69 6c 65 72 5f 4f 62 6a 65 63 74 4e 61 6d 65 |Filer_ObjectName| 00006a20 0a 23 50 61 72 65 6e 74 20 46 69 6c 65 72 5f 0a |.#Parent Filer_.| 00006a30 3d 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 |=>.R0 =.pointer | 00006a40 74 6f 20 62 75 66 66 65 72 20 66 6f 72 20 6e 61 |to buffer for na| 00006a50 6d 65 20 28 32 35 36 20 62 79 74 65 73 29 0a 09 |me (256 bytes)..| 00006a60 52 32 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 |R2 =.pointer to | 00006a70 56 69 65 77 65 72 20 64 65 73 63 72 69 70 74 69 |Viewer descripti| 00006a80 6f 6e 2c 20 6f 72 20 30 20 69 66 20 6e 6f 74 20 |on, or 0 if not | 00006a90 76 69 73 69 62 6c 65 0a 09 52 33 20 3d 09 70 6f |visible..R3 =.po| 00006aa0 69 6e 74 65 72 20 74 6f 20 4f 62 6a 65 63 74 20 |inter to Object | 00006ab0 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 6f 72 20 |description, or | 00006ac0 30 20 69 66 20 6e 6f 74 20 76 69 73 69 62 6c 65 |0 if not visible| 00006ad0 0a 3c 3d 09 61 6c 6c 20 70 72 65 73 65 72 76 65 |.<=.all preserve| 00006ae0 64 0a 0a 54 68 69 73 20 77 69 6c 6c 20 67 65 6e |d..This will gen| 00006af0 65 72 61 74 65 20 61 20 66 75 6c 6c 20 70 61 74 |erate a full pat| 00006b00 68 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 66 69 |hname for the fi| 00006b10 6c 65 20 64 65 66 69 6e 65 64 20 62 79 20 52 32 |le defined by R2| 00006b20 20 61 6e 64 20 52 33 2e 0a 00 00 00 44 41 54 41 | and R3.....DATA| 00006b30 c9 00 00 00 46 69 6c 65 72 5f 43 72 65 61 74 65 |....Filer_Create| 00006b40 53 70 72 69 74 65 0a 23 50 61 72 65 6e 74 20 46 |Sprite.#Parent F| 00006b50 69 6c 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 70 6f |iler_.=>.R0 =.po| 00006b60 69 6e 74 65 72 20 74 6f 20 73 70 72 69 74 65 20 |inter to sprite | 00006b70 6e 61 6d 65 0a 09 52 31 20 3d 09 53 70 72 69 74 |name..R1 =.Sprit| 00006b80 65 20 6d 6f 64 65 0a 3c 3d 09 52 31 20 3d 09 70 |e mode.<=.R1 =.p| 00006b90 6f 69 6e 74 65 72 20 74 6f 20 73 70 72 69 74 65 |ointer to sprite| 00006ba0 20 61 72 65 61 0a 09 52 32 20 3d 09 70 6f 69 6e | area..R2 =.poin| 00006bb0 74 65 72 20 74 6f 20 73 70 72 69 74 65 0a 0a 54 |ter to sprite..T| 00006bc0 68 69 73 20 77 69 6c 6c 20 63 72 65 61 74 65 20 |his will create | 00006bd0 61 20 73 70 72 69 74 65 20 69 6e 20 74 68 65 20 |a sprite in the | 00006be0 46 69 6c 65 72 27 73 20 73 70 72 69 74 65 20 70 |Filer's sprite p| 00006bf0 6f 6f 6c 2e 0a 00 00 00 44 41 54 41 4a 02 00 00 |ool.....DATAJ...| 00006c00 46 69 6c 65 72 5f 53 65 74 53 70 72 69 74 65 0a |Filer_SetSprite.| 00006c10 23 50 61 72 65 6e 74 20 46 69 6c 65 72 5f 0a 3d |#Parent Filer_.=| 00006c20 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 74 |>.R0 =.pointer t| 00006c30 6f 20 73 70 72 69 74 65 20 6e 61 6d 65 20 76 61 |o sprite name va| 00006c40 6c 69 64 61 74 69 6f 6e 20 28 69 6e 63 6c 75 64 |lidation (includ| 00006c50 69 6e 67 20 6c 65 61 64 69 6e 67 20 27 53 27 29 |ing leading 'S')| 00006c60 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 |..R1 =.pointer t| 00006c70 6f 20 66 75 6c 6c 20 70 61 74 68 6e 61 6d 65 0a |o full pathname.| 00006c80 3c 3d 09 61 6c 6c 20 70 72 65 73 65 72 76 65 64 |<=.all preserved| 00006c90 0a 0a 54 68 69 73 20 77 69 6c 6c 20 75 73 65 20 |..This will use | 00006ca0 74 68 65 20 67 69 76 65 6e 20 73 70 72 69 74 65 |the given sprite| 00006cb0 20 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 20 | for the object | 00006cc0 67 69 76 65 6e 20 69 6e 20 52 31 2e 20 49 66 20 |given in R1. If | 00006cd0 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 69 73 |the directory is| 00006ce0 20 73 74 69 6c 6c 20 6f 70 65 6e 2c 20 74 68 65 | still open, the| 00006cf0 20 73 70 72 69 74 65 20 77 69 6c 6c 20 72 65 70 | sprite will rep| 00006d00 6c 61 63 65 20 74 68 65 20 6f 6e 65 20 63 75 72 |lace the one cur| 00006d10 72 65 6e 74 6c 79 20 75 73 65 64 2c 20 77 68 69 |rently used, whi| 00006d20 63 68 20 77 69 6c 6c 20 75 73 75 61 6c 6c 79 20 |ch will usually | 00006d30 62 65 20 27 66 69 6c 65 5f 77 61 69 74 27 2e 20 |be 'file_wait'. | 00006d40 49 66 20 74 68 65 20 6f 62 6a 65 63 74 20 69 73 |If the object is| 00006d50 20 6e 6f 74 20 76 69 73 69 62 6c 65 2c 20 6e 6f | not visible, no| 00006d60 74 68 69 6e 67 20 77 69 6c 6c 20 68 61 70 70 65 |thing will happe| 00006d70 6e 2e 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73 6f |n...You can also| 00006d80 20 72 65 70 6f 72 74 20 61 6e 20 65 72 72 6f 72 | report an error| 00006d90 20 77 69 74 68 20 74 68 69 73 20 53 57 49 2e 20 | with this SWI. | 00006da0 54 68 65 20 73 70 72 69 74 65 20 77 69 6c 6c 20 |The sprite will | 00006db0 63 68 61 6e 67 65 20 74 6f 20 27 66 69 6c 65 5f |change to 'file_| 00006dc0 65 72 72 27 2c 20 61 6e 64 20 74 68 65 20 74 65 |err', and the te| 00006dd0 78 74 20 77 69 6c 6c 20 62 65 20 73 68 6f 77 6e |xt will be shown| 00006de0 20 69 6e 20 74 68 65 20 69 6e 66 6f 62 6f 78 2e | in the infobox.| 00006df0 20 54 68 65 20 65 72 72 6f 72 20 6e 75 6d 62 65 | The error numbe| 00006e00 72 20 73 68 6f 75 6c 64 20 68 61 76 65 20 62 69 |r should have bi| 00006e10 74 73 20 32 34 2d 33 30 20 63 6c 65 61 72 20 69 |ts 24-30 clear i| 00006e20 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20 72 65 |n order to be re| 00006e30 63 6f 67 6e 69 73 65 64 20 61 73 20 73 75 63 68 |cognised as such| 00006e40 2e 0a 00 00 44 41 54 41 6a 01 00 00 46 69 6c 65 |....DATAj...File| 00006e50 72 5f 43 6f 70 79 53 70 72 69 74 65 0a 23 50 61 |r_CopySprite.#Pa| 00006e60 72 65 6e 74 20 46 69 6c 65 72 5f 0a 3d 3e 09 52 |rent Filer_.=>.R| 00006e70 30 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 73 |0 =.pointer to s| 00006e80 70 72 69 74 65 20 6e 61 6d 65 0a 3c 3d 09 61 6c |prite name.<=.al| 00006e90 6c 20 70 72 65 73 65 72 76 65 64 0a 0a 54 68 69 |l preserved..Thi| 00006ea0 73 20 77 69 6c 6c 20 74 61 6b 65 20 61 20 63 6f |s will take a co| 00006eb0 70 79 20 6f 66 20 74 68 65 20 73 70 72 69 74 65 |py of the sprite| 00006ec0 20 61 6e 64 20 70 75 74 20 69 74 20 69 6e 20 74 | and put it in t| 00006ed0 68 65 20 46 69 6c 65 72 27 73 20 73 70 72 69 74 |he Filer's sprit| 00006ee0 65 20 70 6f 6f 6c 2e 20 59 6f 75 20 73 68 6f 75 |e pool. You shou| 00006ef0 6c 64 20 63 61 6c 6c 20 74 68 69 73 20 61 66 74 |ld call this aft| 00006f00 65 72 20 63 6f 6d 70 6c 65 74 69 6e 67 20 79 6f |er completing yo| 00006f10 75 72 20 62 61 63 6b 67 72 6f 75 6e 64 20 70 72 |ur background pr| 00006f20 6f 63 65 73 73 20 6f 66 20 64 72 61 77 69 6e 67 |ocess of drawing| 00006f30 20 74 68 65 20 73 70 72 69 74 65 2e 20 41 66 74 | the sprite. Aft| 00006f40 65 72 20 63 61 6c 6c 69 6e 67 20 74 68 69 73 20 |er calling this | 00006f50 53 57 49 20 79 6f 75 20 63 61 6e 20 64 69 73 70 |SWI you can disp| 00006f60 6f 73 65 20 6f 66 20 74 68 65 20 73 70 72 69 74 |ose of the sprit| 00006f70 65 20 61 6e 64 20 63 61 6c 6c 20 3c 46 69 6c 65 |e and call <File| 00006f80 72 5f 53 65 74 53 70 72 69 74 65 3e 2e 0a 0a 2a |r_SetSprite>...*| 00006f90 4e 6f 74 65 3a 2a 20 4e 6f 74 20 69 6d 70 6c 65 |Note:* Not imple| 00006fa0 6d 65 6e 74 65 64 20 79 65 74 20 3a 2d 28 00 00 |mented yet :-(..| 00006fb0 44 41 54 41 4d 00 00 00 46 69 6c 65 72 5f 52 65 |DATAM...Filer_Re| 00006fc0 61 64 43 68 6f 69 63 65 73 0a 23 50 61 72 65 6e |adChoices.#Paren| 00006fd0 74 20 46 69 6c 65 72 5f 0a 54 68 69 73 20 63 61 |t Filer_.This ca| 00006fe0 6c 6c 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e |ll is for intern| 00006ff0 61 6c 20 75 73 65 20 6f 6e 6c 79 2e 0a 00 00 00 |al use only.....| 00007000 44 41 54 41 4c 00 00 00 46 69 6c 65 72 5f 4e 65 |DATAL...Filer_Ne| 00007010 77 43 68 6f 69 63 65 73 0a 23 50 61 72 65 6e 74 |wChoices.#Parent| 00007020 20 46 69 6c 65 72 5f 0a 54 68 69 73 20 63 61 6c | Filer_.This cal| 00007030 6c 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e 61 |l is for interna| 00007040 6c 20 75 73 65 20 6f 6e 6c 79 2e 0a 44 41 54 41 |l use only..DATA| 00007050 4a 00 00 00 46 69 6c 65 72 5f 4c 6f 61 64 4b 65 |J...Filer_LoadKe| 00007060 79 73 0a 23 50 61 72 65 6e 74 20 46 69 6c 65 72 |ys.#Parent Filer| 00007070 5f 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 20 66 |_.This call is f| 00007080 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20 |or internal use | 00007090 6f 6e 6c 79 2e 0a 00 00 44 41 54 41 38 01 00 00 |only....DATA8...| 000070a0 46 69 6c 65 72 5f 4b 65 79 4e 61 6d 65 0a 23 50 |Filer_KeyName.#P| 000070b0 61 72 65 6e 74 20 46 69 6c 65 72 5f 0a 3d 3e 09 |arent Filer_.=>.| 000070c0 52 30 20 3d 09 3c 6b 65 79 20 63 6f 64 65 3d 3e |R0 =.<key code=>| 000070d0 57 69 6d 70 3a 57 69 6d 70 5f 50 6f 6c 6c 38 61 |Wimp:Wimp_Poll8a| 000070e0 3e 0a 3c 3d 09 52 30 20 3d 09 70 6f 69 6e 74 65 |>.<=.R0 =.pointe| 000070f0 72 20 74 6f 20 6b 65 79 20 6e 61 6d 65 0a 0a 54 |r to key name..T| 00007100 68 69 73 20 53 57 49 20 73 68 6f 75 6c 64 20 72 |his SWI should r| 00007110 65 61 6c 6c 79 20 68 61 76 65 20 62 65 65 6e 20 |eally have been | 00007120 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 |provided by the | 00007130 54 6f 6f 6c 62 6f 78 2c 20 62 75 74 20 73 69 6e |Toolbox, but sin| 00007140 63 65 20 69 74 20 69 73 6e 27 74 2c 20 49 27 76 |ce it isn't, I'v| 00007150 65 20 70 75 74 20 69 74 20 69 6e 20 50 72 6f 46 |e put it in ProF| 00007160 69 6c 65 72 2e 20 54 68 65 20 72 65 61 73 6f 6e |iler. The reason| 00007170 20 66 6f 72 20 74 68 69 73 20 53 57 49 20 69 73 | for this SWI is| 00007180 20 74 6f 20 67 65 74 20 61 20 63 6f 6e 73 69 73 | to get a consis| 00007190 74 65 6e 74 20 6e 61 6d 69 6e 67 20 6f 66 20 6b |tent naming of k| 000071a0 65 79 73 2e 20 49 74 20 72 65 74 75 72 6e 73 20 |eys. It returns | 000071b0 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 |the name of the | 000071c0 67 69 76 65 6e 20 6b 65 79 20 63 6f 64 65 2e 0a |given key code..| 000071d0 44 41 54 41 87 01 00 00 46 69 6c 65 72 5f 56 69 |DATA....Filer_Vi| 000071e0 65 77 65 72 44 65 73 63 0a 23 50 61 72 65 6e 74 |ewerDesc.#Parent| 000071f0 20 46 69 6c 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 | Filer_.=>.R0 =.| 00007200 70 6f 69 6e 74 65 72 20 74 6f 20 63 61 6e 6f 6e |pointer to canon| 00007210 69 63 61 6c 20 64 69 72 65 63 74 6f 72 79 20 6e |ical directory n| 00007220 61 6d 65 0a 3c 3d 09 52 32 20 3d 09 70 6f 69 6e |ame.<=.R2 =.poin| 00007230 74 65 72 20 74 6f 20 76 69 65 77 65 72 20 64 65 |ter to viewer de| 00007240 73 63 72 69 70 74 69 6f 6e 2c 20 6f 72 20 30 20 |scription, or 0 | 00007250 69 66 20 6e 6f 74 20 76 69 73 69 62 6c 65 0a 0a |if not visible..| 00007260 43 6f 6e 76 65 72 74 73 20 61 20 6e 61 6d 65 20 |Converts a name | 00007270 74 6f 20 61 20 76 69 65 77 65 72 20 64 65 73 63 |to a viewer desc| 00007280 72 69 70 74 69 6f 6e 2e 20 59 6f 75 20 6e 65 65 |ription. You nee| 00007290 64 20 74 6f 20 6b 6e 6f 77 20 74 68 65 20 66 6f |d to know the fo| 000072a0 72 6d 61 74 20 6f 66 20 74 68 65 20 64 65 73 63 |rmat of the desc| 000072b0 72 69 70 74 6f 72 20 62 6c 6f 63 6b 20 74 6f 20 |riptor block to | 000072c0 6d 61 6b 65 20 75 73 65 20 6f 66 20 69 74 2c 20 |make use of it, | 000072d0 61 6e 64 20 61 73 20 74 68 61 74 20 66 6f 72 6d |and as that form| 000072e0 61 74 20 63 61 6e 20 73 74 69 6c 6c 20 63 68 61 |at can still cha| 000072f0 6e 67 65 2c 20 69 74 20 68 61 73 20 6e 6f 74 20 |nge, it has not | 00007300 62 65 65 6e 20 64 6f 63 75 6d 65 6e 74 65 64 20 |been documented | 00007310 68 65 72 65 2e 20 41 74 20 74 68 65 20 6d 6f 6d |here. At the mom| 00007320 65 6e 74 20 69 73 20 63 61 6e 20 62 65 20 75 73 |ent is can be us| 00007330 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 |ed to determine | 00007340 69 66 20 74 68 65 20 76 69 65 77 65 72 20 69 73 |if the viewer is| 00007350 20 6f 70 65 6e 2e 0a 00 44 41 54 41 92 00 00 00 | open...DATA....| 00007360 46 69 6c 65 72 5f 42 6f 6f 74 0a 23 50 61 72 65 |Filer_Boot.#Pare| 00007370 6e 74 20 46 69 6c 65 72 5f 0a 3d 3e 09 52 30 20 |nt Filer_.=>.R0 | 00007380 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 63 61 6e |=.pointer to can| 00007390 6f 6e 69 63 61 6c 20 64 69 72 65 63 74 6f 72 79 |onical directory| 000073a0 20 6e 61 6d 65 0a 3c 3d 09 61 6c 6c 20 70 72 65 | name.<=.all pre| 000073b0 73 65 72 76 65 64 0a 0a 44 6f 65 73 20 65 78 61 |served..Does exa| 000073c0 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 73 |ctly the same as| 000073d0 20 74 68 65 20 2a 46 69 6c 65 72 5f 42 6f 6f 74 | the *Filer_Boot| 000073e0 20 63 6f 6d 6d 61 6e 64 2e 0a 00 00 44 41 54 41 | command....DATA| 000073f0 bd 05 00 00 46 69 6c 65 72 5f 53 65 6c 65 63 74 |....Filer_Select| 00007400 0a 23 50 61 72 65 6e 74 20 46 69 6c 65 72 5f 0a |.#Parent Filer_.| 00007410 3d 3e 09 52 30 20 3d 09 3c 72 65 61 73 6f 6e 20 |=>.R0 =.<reason | 00007420 63 6f 64 65 3d 3e 2e 72 65 61 73 6f 6e 73 3e 0a |code=>.reasons>.| 00007430 09 6f 74 68 65 72 73 20 64 65 70 65 6e 64 65 6e |.others dependen| 00007440 74 20 6f 6e 20 72 65 61 73 6f 6e 20 63 6f 64 65 |t on reason code| 00007450 0a 0a 54 68 69 73 20 63 61 6c 6c 20 63 61 6e 20 |..This call can | 00007460 62 65 20 75 73 65 64 20 74 6f 20 72 65 61 64 20 |be used to read | 00007470 6f 72 20 63 6f 6e 74 72 6f 6c 20 74 68 65 20 73 |or control the s| 00007480 65 6c 65 63 74 69 6f 6e 2e 20 49 74 20 69 73 20 |election. It is | 00007490 75 73 65 64 20 62 79 20 74 68 65 20 76 61 72 69 |used by the vari| 000074a0 61 62 6c 65 20 46 69 6c 65 72 24 53 65 6c 65 63 |able Filer$Selec| 000074b0 74 65 64 20 61 6d 6f 6e 67 20 6f 74 68 65 72 20 |ted among other | 000074c0 74 68 69 6e 67 73 2e 20 54 68 65 20 27 63 75 72 |things. The 'cur| 000074d0 72 65 6e 74 20 76 69 65 77 65 72 27 20 69 6e 20 |rent viewer' in | 000074e0 74 68 69 73 20 63 6f 6e 74 65 78 74 20 6d 65 61 |this context mea| 000074f0 6e 73 20 74 68 65 20 6f 6e 65 20 74 68 61 74 20 |ns the one that | 00007500 68 61 73 20 74 68 65 20 69 6e 70 75 74 20 66 6f |has the input fo| 00007510 63 75 73 2e 0a 23 73 75 62 70 61 67 65 20 72 65 |cus..#subpage re| 00007520 61 73 6f 6e 73 0a 46 69 6c 65 72 5f 53 65 6c 65 |asons.Filer_Sele| 00007530 63 74 20 72 65 61 73 6f 6e 73 0a 52 65 61 73 6f |ct reasons.Reaso| 00007540 6e 09 4d 65 61 6e 69 6e 67 0a 23 4c 69 6e 65 0a |n.Meaning.#Line.| 00007550 30 09 3c 53 65 6c 65 63 74 20 66 69 6c 65 3d 3e |0.<Select file=>| 00007560 2e 30 3e 0a 31 09 3c 41 64 64 20 66 69 6c 65 20 |.0>.1.<Add file | 00007570 74 6f 20 73 65 6c 65 63 74 69 6f 6e 3d 3e 2e 31 |to selection=>.1| 00007580 3e 0a 31 36 09 3c 52 65 61 64 20 63 75 72 72 65 |>.16.<Read curre| 00007590 6e 74 20 76 69 65 77 65 72 3d 3e 2e 31 36 3e 0a |nt viewer=>.16>.| 000075a0 31 37 09 3c 52 65 61 64 20 6f 6e 65 20 73 65 6c |17.<Read one sel| 000075b0 65 63 74 65 64 20 66 69 6c 65 3d 3e 2e 31 37 3e |ected file=>.17>| 000075c0 0a 31 38 09 3c 52 65 61 64 20 6d 75 6c 74 69 70 |.18.<Read multip| 000075d0 6c 65 20 73 65 6c 65 63 74 65 64 20 66 69 6c 65 |le selected file| 000075e0 73 3d 3e 2e 31 38 3e 0a 23 73 75 62 70 61 67 65 |s=>.18>.#subpage| 000075f0 20 30 0a 46 69 6c 65 72 5f 53 65 6c 65 63 74 20 | 0.Filer_Select | 00007600 30 0a 3d 3e 09 52 30 20 3d 09 30 20 28 73 65 6c |0.=>.R0 =.0 (sel| 00007610 65 63 74 20 66 69 6c 65 29 0a 09 52 31 20 3d 09 |ect file)..R1 =.| 00007620 70 6f 69 6e 74 65 72 20 74 6f 20 66 69 6c 65 6e |pointer to filen| 00007630 61 6d 65 0a 3c 3d 09 61 6c 6c 20 70 72 65 73 65 |ame.<=.all prese| 00007640 72 76 65 64 0a 0a 53 65 6c 65 63 74 73 20 61 20 |rved..Selects a | 00007650 73 69 6e 67 6c 65 20 66 69 6c 65 2c 20 63 6c 65 |single file, cle| 00007660 61 72 69 6e 67 20 74 68 65 20 73 65 6c 65 63 74 |aring the select| 00007670 69 6f 6e 20 69 6e 20 74 68 61 74 20 76 69 65 77 |ion in that view| 00007680 65 72 2e 0a 23 73 75 62 70 61 67 65 20 31 0a 46 |er..#subpage 1.F| 00007690 69 6c 65 72 5f 53 65 6c 65 63 74 20 31 0a 3d 3e |iler_Select 1.=>| 000076a0 09 52 30 20 3d 09 31 20 28 41 64 64 20 66 69 6c |.R0 =.1 (Add fil| 000076b0 65 29 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 |e)..R1 =.pointer| 000076c0 20 74 6f 20 66 69 6c 65 20 74 6f 20 61 64 64 0a | to file to add.| 000076d0 3c 3d 09 61 6c 6c 20 70 72 65 73 65 72 76 65 64 |<=.all preserved| 000076e0 0a 0a 41 64 64 73 20 61 20 66 69 6c 65 20 74 6f |..Adds a file to| 000076f0 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e 20 69 | the selection i| 00007700 6e 20 74 68 65 20 76 69 65 77 65 72 20 69 74 20 |n the viewer it | 00007710 69 73 20 69 6e 2e 0a 23 73 75 62 70 61 67 65 20 |is in..#subpage | 00007720 31 36 0a 46 69 6c 65 72 5f 53 65 6c 65 63 74 20 |16.Filer_Select | 00007730 31 36 0a 3d 3e 09 52 30 20 3d 09 31 36 20 28 52 |16.=>.R0 =.16 (R| 00007740 65 61 64 20 63 75 72 72 65 6e 74 20 76 69 65 77 |ead current view| 00007750 65 72 29 0a 3c 3d 09 52 31 20 3d 09 70 6f 69 6e |er).<=.R1 =.poin| 00007760 74 65 72 20 74 6f 20 76 69 65 77 65 72 20 6e 61 |ter to viewer na| 00007770 6d 65 2c 20 6f 72 20 30 20 69 66 20 6e 6f 6e 65 |me, or 0 if none| 00007780 0a 0a 52 65 61 64 73 20 74 68 65 20 76 69 65 77 |..Reads the view| 00007790 65 72 20 77 68 69 63 68 20 68 61 73 20 74 68 65 |er which has the| 000077a0 20 63 75 72 72 65 6e 74 20 69 6e 70 75 74 20 66 | current input f| 000077b0 6f 63 75 73 2e 0a 23 73 75 62 70 61 67 65 20 31 |ocus..#subpage 1| 000077c0 37 0a 46 69 6c 65 72 5f 53 65 6c 65 63 74 20 31 |7.Filer_Select 1| 000077d0 37 0a 3d 3e 09 52 30 20 3d 09 31 37 20 28 52 65 |7.=>.R0 =.17 (Re| 000077e0 61 64 20 6f 6e 65 20 66 69 6c 65 29 0a 09 52 31 |ad one file)..R1| 000077f0 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 76 69 | =.pointer to vi| 00007800 65 77 65 72 20 6e 61 6d 65 2c 20 6f 72 20 30 20 |ewer name, or 0 | 00007810 66 6f 72 20 76 69 65 77 65 72 20 77 69 74 68 20 |for viewer with | 00007820 66 6f 63 75 73 0a 3c 3d 09 52 31 20 3d 09 6f 62 |focus.<=.R1 =.ob| 00007830 6a 65 63 74 20 6e 61 6d 65 2c 20 6f 72 20 30 20 |ject name, or 0 | 00007840 69 66 20 6e 6f 6e 65 20 73 65 6c 65 63 74 65 64 |if none selected| 00007850 0a 0a 52 65 61 64 73 20 61 20 73 69 6e 67 6c 65 |..Reads a single| 00007860 20 66 69 6c 65 20 66 72 6f 6d 20 73 65 6c 65 63 | file from selec| 00007870 74 69 6f 6e 20 69 6e 20 61 20 76 69 65 77 65 72 |tion in a viewer| 00007880 2e 0a 23 73 75 62 70 61 67 65 20 31 38 0a 46 69 |..#subpage 18.Fi| 00007890 6c 65 72 5f 53 65 6c 65 63 74 20 31 38 0a 3d 3e |ler_Select 18.=>| 000078a0 09 52 30 20 3d 09 31 38 20 28 52 65 61 64 20 6d |.R0 =.18 (Read m| 000078b0 75 6c 74 69 70 6c 65 20 66 69 6c 65 73 29 0a 09 |ultiple files)..| 000078c0 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 |R1 =.pointer to | 000078d0 76 69 65 77 65 72 20 6e 61 6d 65 2c 20 6f 72 20 |viewer name, or | 000078e0 30 20 66 6f 72 20 76 69 65 77 65 72 20 77 69 74 |0 for viewer wit| 000078f0 68 20 66 6f 63 75 73 0a 09 52 33 20 3d 09 63 6f |h focus..R3 =.co| 00007900 6e 74 65 78 74 2c 20 6f 72 20 30 20 66 6f 72 20 |ntext, or 0 for | 00007910 66 69 72 73 74 20 63 61 6c 6c 0a 3c 3d 09 52 31 |first call.<=.R1| 00007920 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 6f 62 | =.pointer to ob| 00007930 6a 65 63 74 20 6e 61 6d 65 2c 20 6f 72 20 30 20 |ject name, or 0 | 00007940 66 6f 72 20 66 69 72 73 74 20 66 69 6c 65 0a 09 |for first file..| 00007950 52 33 20 3d 09 6e 65 77 20 63 6f 6e 74 65 78 74 |R3 =.new context| 00007960 2c 20 6f 72 20 30 20 69 66 20 66 69 6e 69 73 68 |, or 0 if finish| 00007970 65 64 0a 0a 52 65 61 64 73 20 6d 75 6c 74 69 70 |ed..Reads multip| 00007980 6c 65 20 66 69 6c 65 73 20 66 72 6f 6d 20 74 68 |le files from th| 00007990 65 20 73 65 6c 65 63 74 69 6f 6e 20 69 6e 20 61 |e selection in a| 000079a0 20 76 69 65 77 65 72 2e 0a 00 00 00 44 41 54 41 | viewer.....DATA| 000079b0 62 03 00 00 46 69 6c 65 72 5f 53 70 72 69 74 65 |b...Filer_Sprite| 000079c0 0a 23 50 61 72 65 6e 74 20 46 69 6c 65 72 5f 0a |.#Parent Filer_.| 000079d0 3d 3e 09 52 30 20 3d 09 64 65 73 69 72 65 64 20 |=>.R0 =.desired | 000079e0 73 70 72 69 74 65 20 68 65 69 67 68 74 20 28 30 |sprite height (0| 000079f0 3d 36 38 20 6f 73 20 75 6e 69 74 73 2c 20 31 3d |=68 os units, 1=| 00007a00 33 36 20 6f 73 20 75 6e 69 74 73 29 0a 09 52 31 |36 os units)..R1| 00007a10 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 6f 62 | =.pointer to ob| 00007a20 6a 65 63 74 20 6e 61 6d 65 0a 09 52 32 20 3d 09 |ject name..R2 =.| 00007a30 74 61 73 6b 20 68 61 6e 64 6c 65 20 74 6f 20 72 |task handle to r| 00007a40 65 70 6c 79 20 74 6f 20 28 30 20 66 6f 72 20 62 |eply to (0 for b| 00007a50 72 6f 61 64 63 61 73 74 29 0a 3c 3d 09 52 30 20 |roadcast).<=.R0 | 00007a60 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 6f 70 74 |=.pointer to opt| 00007a70 69 6f 6e 61 6c 20 73 70 72 69 74 65 20 74 6f 20 |ional sprite to | 00007a80 75 73 65 20 69 6e 20 6d 65 61 6e 74 69 6d 65 0a |use in meantime.| 00007a90 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 20 74 68 |.This call is th| 00007aa0 65 20 6d 61 69 6e 20 69 6e 74 65 72 66 61 63 65 |e main interface| 00007ab0 20 74 6f 20 62 69 6e 64 69 6e 67 20 73 70 72 69 | to binding spri| 00007ac0 74 65 73 20 74 6f 20 64 69 73 63 20 6f 62 6a 65 |tes to disc obje| 00007ad0 63 74 73 2e 20 55 6e 6c 69 6b 65 20 65 61 72 6c |cts. Unlike earl| 00007ae0 69 65 72 20 64 61 79 73 20 77 68 65 72 65 20 65 |ier days where e| 00007af0 76 65 72 79 20 61 70 70 6c 69 63 61 74 69 6f 6e |very application| 00007b00 20 68 61 64 20 69 74 73 20 6f 77 6e 20 76 69 65 | had its own vie| 00007b10 77 20 6f 66 20 74 68 65 73 65 20 74 68 69 6e 67 |w of these thing| 00007b20 73 2c 20 74 68 65 20 66 69 6c 65 72 20 70 72 6f |s, the filer pro| 00007b30 76 69 64 65 73 20 74 68 69 73 20 53 57 49 20 74 |vides this SWI t| 00007b40 6f 20 6b 65 65 70 20 69 74 20 69 6e 20 6f 6e 65 |o keep it in one| 00007b50 20 70 6c 61 63 65 2e 20 54 68 65 20 66 69 6c 65 | place. The file| 00007b60 72 20 63 61 6e 20 62 65 20 65 78 74 65 6e 64 65 |r can be extende| 00007b70 64 20 77 69 74 68 20 70 72 6f 67 72 61 6d 73 20 |d with programs | 00007b80 6c 69 6b 65 20 74 68 65 20 53 70 72 69 74 65 20 |like the Sprite | 00007b90 43 6c 69 65 6e 74 73 2c 20 61 6e 64 20 74 68 65 |Clients, and the| 00007ba0 73 65 20 65 78 74 65 6e 74 69 6f 6e 73 20 77 69 |se extentions wi| 00007bb0 6c 6c 20 61 6c 73 6f 20 62 65 20 63 6f 6e 73 69 |ll also be consi| 00007bc0 64 65 72 65 64 20 77 68 65 6e 20 74 68 69 73 20 |dered when this | 00007bd0 53 57 49 20 69 73 20 63 61 6c 6c 65 64 2e 0a 0a |SWI is called...| 00007be0 41 66 74 65 72 20 63 61 6c 6c 69 6e 67 20 74 68 |After calling th| 00007bf0 69 73 20 53 57 49 2c 20 61 20 6d 65 73 73 61 67 |is SWI, a messag| 00007c00 65 20 77 69 6c 6c 20 62 65 20 73 65 6e 74 20 77 |e will be sent w| 00007c10 68 65 6e 20 74 68 65 20 73 70 72 69 74 65 20 68 |hen the sprite h| 00007c20 61 73 20 62 65 65 6e 20 66 6f 75 6e 64 2e 20 46 |as been found. F| 00007c30 69 6e 64 69 6e 67 20 74 68 65 20 73 70 72 69 74 |inding the sprit| 00007c40 65 20 6d 61 79 20 6d 65 61 6e 20 74 68 61 74 20 |e may mean that | 00007c50 61 70 70 73 20 61 72 65 20 62 6f 6f 74 65 64 20 |apps are booted | 00007c60 61 6e 64 20 6d 61 6e 79 20 6f 74 68 65 72 20 74 |and many other t| 00007c70 68 69 6e 67 73 2c 20 73 6f 20 74 68 65 72 65 20 |hings, so there | 00007c80 69 73 20 6e 6f 20 6d 61 78 69 6d 75 6d 20 72 65 |is no maximum re| 00007c90 70 6c 79 20 64 65 6c 61 79 2e 20 49 6e 64 65 65 |ply delay. Indee| 00007ca0 64 2c 20 69 66 20 74 68 65 20 6f 62 6a 65 63 74 |d, if the object| 00007cb0 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 2c 20 | doesn't exist, | 00007cc0 74 68 65 72 65 20 77 69 6c 6c 20 62 65 20 6e 6f |there will be no| 00007cd0 20 72 65 70 6c 79 20 61 74 20 61 6c 6c 2e 20 54 | reply at all. T| 00007ce0 68 69 73 20 69 73 73 75 65 20 6d 61 79 20 62 65 |his issue may be| 00007cf0 20 61 64 64 72 65 73 73 65 64 20 69 6e 20 6c 61 | addressed in la| 00007d00 74 65 72 20 76 65 72 73 69 6f 6e 73 2e 0a 00 00 |ter versions....| 00007d10 44 41 54 41 9f 02 00 00 0d 00 01 11 f4 20 3e 53 |DATA......... >S| 00007d20 57 49 2d 66 69 6c 74 65 72 0d 00 02 04 0d 00 03 |WI-filter.......| 00007d30 13 de 20 63 6f 64 65 25 20 31 30 2a 31 30 32 34 |.. code% 10*1024| 00007d40 0d 00 04 04 0d 00 05 17 e3 20 70 61 73 73 25 20 |......... pass% | 00007d50 3d 20 30 20 b8 20 32 20 88 20 32 0d 00 06 04 0d |= 0 . 2 . 2.....| 00007d60 00 07 14 20 20 20 20 20 20 50 25 20 3d 20 63 6f |... P% = co| 00007d70 64 65 25 0d 00 08 04 0d 00 09 1d 5b 20 20 20 20 |de%........[ | 00007d80 20 4f 50 54 20 20 20 20 20 20 20 20 70 61 73 73 | OPT pass| 00007d90 25 20 20 20 0d 00 0a 04 0d 00 0b 37 20 20 20 20 |% .......7 | 00007da0 20 20 3b 20 52 30 20 3d 20 73 65 61 72 63 68 20 | ; R0 = search | 00007db0 77 6f 72 64 20 28 53 68 6f 75 6c 64 20 6e 65 76 |word (Should nev| 00007dc0 65 72 20 62 65 20 6d 6f 64 69 66 69 65 64 29 0d |er be modified).| 00007dd0 00 0c 38 20 20 20 20 20 20 3b 20 52 31 20 3d 20 |..8 ; R1 = | 00007de0 62 75 66 66 65 72 20 66 6f 72 20 73 74 6f 72 69 |buffer for stori| 00007df0 6e 67 20 6d 6f 64 69 66 69 65 64 20 73 65 61 72 |ng modified sear| 00007e00 63 68 20 77 6f 72 64 0d 00 0d 1d 20 20 20 20 20 |ch word.... | 00007e10 20 3b 20 52 31 33 20 3d 20 73 6d 61 6c 6c 20 73 | ; R13 = small s| 00007e20 74 61 63 6b 0d 00 0e 04 0d 00 0f 47 20 20 20 20 |tack.......G | 00007e30 20 20 3b 20 52 65 74 75 72 6e 20 70 74 72 20 74 | ; Return ptr t| 00007e40 6f 20 73 65 61 72 63 68 20 77 6f 72 64 20 69 6e |o search word in| 00007e50 20 52 30 2c 20 6f 72 20 2d 31 20 74 6f 20 72 65 | R0, or -1 to re| 00007e60 6a 65 63 74 20 63 6f 6d 70 6c 65 74 65 6c 79 0d |ject completely.| 00007e70 00 10 49 20 20 20 20 20 20 3b 20 28 74 68 69 73 |..I ; (this| 00007e80 20 63 61 6e 20 62 65 20 69 6e 69 74 69 61 6c 20 | can be initial | 00007e90 52 30 20 6f 72 20 52 31 20 6f 72 20 61 20 70 6f |R0 or R1 or a po| 00007ea0 69 6e 74 65 72 20 69 6e 74 6f 20 6f 6e 65 20 6f |inter into one o| 00007eb0 66 20 74 68 6f 73 65 29 0d 00 11 04 0d 00 12 1d |f those)........| 00007ec0 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 20 20 | STMFD | 00007ed0 52 31 33 21 2c 7b 31 34 7d 0d 00 13 1c 20 20 20 |R13!,{14}.... | 00007ee0 20 20 20 4c 44 52 42 20 20 20 20 20 20 52 31 34 | LDRB R14| 00007ef0 2c 5b 52 30 5d 0d 00 14 1d 20 20 20 20 20 20 43 |,[R0].... C| 00007f00 4d 50 20 20 20 20 20 20 20 52 31 34 2c 23 97 22 |MP R14,#."| 00007f10 58 22 0d 00 15 1d 20 20 20 20 20 20 43 4d 50 6e |X".... CMPn| 00007f20 65 20 20 20 20 20 52 31 34 2c 23 97 22 78 22 0d |e R14,#."x".| 00007f30 00 16 1c 20 20 20 20 20 20 41 44 44 65 71 20 20 |... ADDeq | 00007f40 20 20 20 52 30 2c 52 30 2c 23 31 0d 00 17 1e 20 | R0,R0,#1.... | 00007f50 20 20 20 20 20 4c 44 4d 46 44 20 20 20 20 20 52 | LDMFD R| 00007f60 31 33 21 2c 7b 50 43 7d 5e 0d 00 18 04 0d 00 19 |13!,{PC}^.......| 00007f70 05 5d 0d 00 1a 04 0d 00 1b 05 ed 0d 00 1c 04 0d |.]..............| 00007f80 00 1d 29 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c |..).. "OS_File",| 00007f90 31 30 2c 22 21 50 72 65 22 2c 26 46 46 43 2c 2c |10,"!Pre",&FFC,,| 00007fa0 63 6f 64 65 25 2c 50 25 0d 00 1e 05 e0 0d ff 00 |code%,P%........| 00007fb0 44 49 52 24 2c 00 00 00 2c 00 00 00 dc 7f 00 00 |DIR$,...,.......| 00007fc0 46 fd ff ff 63 bf dc 14 49 00 00 00 13 00 00 00 |F...c...I.......| 00007fd0 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 00007fe0 49 00 00 00 46 6f 6e 74 44 72 61 77 0a 23 50 61 |I...FontDraw.#Pa| 00007ff0 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 |rent !Root.#Pref| 00008000 69 78 20 46 6f 6e 74 44 72 61 77 5f 0a 46 69 6e |ix FontDraw_.Fin| 00008010 64 46 6f 6e 74 0a 4c 6f 73 65 46 6f 6e 74 0a 50 |dFont.LoseFont.P| 00008020 61 69 6e 74 0a 00 00 00 44 49 52 24 2c 00 00 00 |aint....DIR$,...| 00008030 2c 00 00 00 54 80 00 00 46 fd ff ff 02 cc dc 14 |,...T...F.......| 00008040 4d 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |M...........!Roo| 00008050 74 00 00 00 44 41 54 41 4d 00 00 00 46 72 6f 6e |t...DATAM...Fron| 00008060 74 45 6e 64 0a 23 50 61 72 65 6e 74 20 21 52 6f |tEnd.#Parent !Ro| 00008070 6f 74 0a 23 50 72 65 66 69 78 20 46 72 6f 6e 74 |ot.#Prefix Front| 00008080 45 6e 64 5f 0a 45 78 74 65 6e 64 65 64 43 6d 64 |End_.ExtendedCmd| 00008090 4c 69 6e 65 0a 46 72 65 65 43 6d 64 4c 69 6e 65 |Line.FreeCmdLine| 000080a0 0a 00 00 00 44 49 52 24 70 01 00 00 70 01 00 00 |....DIR$p...p...| 000080b0 14 82 00 00 47 fd ff ff 01 ad c0 d2 9b 00 00 00 |....G...........| 000080c0 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 000080d0 b0 82 00 00 47 ff ff ff 4b ad c0 d2 de 00 00 00 |....G...K.......| 000080e0 13 00 00 00 00 00 00 00 4f 70 65 6e 00 00 00 00 |........Open....| 000080f0 90 83 00 00 47 ff ff ff 6f ad c0 d2 cf 00 00 00 |....G...o.......| 00008100 13 00 00 00 00 00 00 00 53 74 6f 72 65 00 00 00 |........Store...| 00008110 60 84 00 00 47 ff ff ff 3b ad c0 d2 1e 01 00 00 |`...G...;.......| 00008120 13 00 00 00 00 00 00 00 46 65 74 63 68 00 00 00 |........Fetch...| 00008130 80 85 00 00 47 ff ff ff 32 ad c0 d2 cf 00 00 00 |....G...2.......| 00008140 13 00 00 00 00 00 00 00 45 78 69 73 74 73 00 00 |........Exists..| 00008150 50 86 00 00 47 ff ff ff 40 ad c0 d2 ec 00 00 00 |P...G...@.......| 00008160 13 00 00 00 00 00 00 00 46 69 72 73 74 4b 65 79 |........FirstKey| 00008170 00 00 00 00 3c 87 00 00 47 ff ff ff 46 ad c0 d2 |....<...G...F...| 00008180 ce 01 00 00 13 00 00 00 00 00 00 00 4e 65 78 74 |............Next| 00008190 4b 65 79 00 0c 89 00 00 47 ff ff ff 07 ad c0 d2 |Key.....G.......| 000081a0 70 00 00 00 13 00 00 00 00 00 00 00 43 6c 6f 73 |p...........Clos| 000081b0 65 00 00 00 7c 89 00 00 47 ff ff ff 2d ad c0 d2 |e...|...G...-...| 000081c0 db 00 00 00 13 00 00 00 00 00 00 00 44 65 6c 65 |............Dele| 000081d0 74 65 00 00 58 8a 00 00 47 ff ff ff 04 ad c0 d2 |te..X...G.......| 000081e0 b7 00 00 00 13 00 00 00 00 00 00 00 43 6c 65 61 |............Clea| 000081f0 72 00 00 00 10 8b 00 00 47 ff ff ff 6a ad c0 d2 |r.......G...j...| 00008200 07 01 00 00 13 00 00 00 00 00 00 00 4f 70 65 6e |............Open| 00008210 49 6e 00 00 44 41 54 41 9b 00 00 00 47 64 62 6d |In..DATA....Gdbm| 00008220 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 00008230 50 72 65 66 69 78 20 47 64 62 6d 5f 0a 23 54 61 |Prefix Gdbm_.#Ta| 00008240 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 3c 4f |ble Columns 2.<O| 00008250 70 65 6e 3e 0a 3c 53 74 6f 72 65 3e 0a 3c 46 65 |pen>.<Store>.<Fe| 00008260 74 63 68 3e 0a 3c 45 78 69 73 74 73 3e 0a 3c 46 |tch>.<Exists>.<F| 00008270 69 72 73 74 4b 65 79 3e 0a 3c 4e 65 78 74 4b 65 |irstKey>.<NextKe| 00008280 79 3e 0a 3c 43 6c 6f 73 65 3e 0a 3c 44 65 6c 65 |y>.<Close>.<Dele| 00008290 74 65 3e 0a 3c 43 6c 65 61 72 3e 0a 3c 4f 70 65 |te>.<Clear>.<Ope| 000082a0 6e 49 6e 3e 0a 23 45 6e 64 54 61 62 6c 65 0a 00 |nIn>.#EndTable..| 000082b0 44 41 54 41 de 00 00 00 47 64 62 6d 5f 4f 70 65 |DATA....Gdbm_Ope| 000082c0 6e 0a 23 50 61 72 65 6e 74 20 47 64 62 6d 5f 0a |n.#Parent Gdbm_.| 000082d0 3d 3e 09 52 30 20 3d 09 50 6f 69 6e 74 65 72 20 |=>.R0 =.Pointer | 000082e0 74 6f 20 66 69 6c 65 6e 61 6d 65 0a 3c 3d 09 52 |to filename.<=.R| 000082f0 30 20 3d 09 66 69 6c 65 20 68 61 6e 64 6c 65 0a |0 =.file handle.| 00008300 0a 4f 70 65 6e 73 20 61 20 64 61 74 61 62 61 73 |.Opens a databas| 00008310 65 20 66 69 6c 65 20 66 6f 72 20 72 65 61 64 69 |e file for readi| 00008320 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 2c 20 |ng and writing, | 00008330 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20 68 61 |returning the ha| 00008340 6e 64 6c 65 20 6f 66 20 74 68 65 20 66 69 6c 65 |ndle of the file| 00008350 20 73 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20 | so that it can | 00008360 62 65 20 75 73 65 64 20 69 6e 20 6f 74 68 65 72 |be used in other| 00008370 20 63 61 6c 6c 73 2e 20 52 65 74 75 72 6e 73 20 | calls. Returns | 00008380 30 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0a 00 00 |0 on failure....| 00008390 44 41 54 41 cf 00 00 00 47 64 62 6d 5f 53 74 6f |DATA....Gdbm_Sto| 000083a0 72 65 0a 23 50 61 72 65 6e 74 20 47 64 62 6d 5f |re.#Parent Gdbm_| 000083b0 0a 3d 3e 09 52 30 20 3d 09 66 69 6c 65 20 68 61 |.=>.R0 =.file ha| 000083c0 6e 64 6c 65 20 66 72 6f 6d 20 3c 47 64 62 6d 5f |ndle from <Gdbm_| 000083d0 4f 70 65 6e 3e 0a 09 52 31 20 3d 09 70 6f 69 6e |Open>..R1 =.poin| 000083e0 74 65 72 20 74 6f 20 6b 65 79 77 6f 72 64 0a 09 |ter to keyword..| 000083f0 52 32 20 3d 09 6c 65 6e 67 74 68 20 6f 66 20 6b |R2 =.length of k| 00008400 65 79 77 6f 72 64 0a 09 52 33 20 3d 09 62 75 66 |eyword..R3 =.buf| 00008410 66 65 72 20 66 6f 72 20 64 61 74 61 0a 09 52 34 |fer for data..R4| 00008420 20 3d 09 6c 65 6e 67 74 68 20 6f 66 20 64 61 74 | =.length of dat| 00008430 61 0a 0a 53 74 6f 72 65 73 20 64 61 74 61 20 75 |a..Stores data u| 00008440 6e 64 65 72 20 61 20 6b 65 79 77 6f 72 64 20 69 |nder a keyword i| 00008450 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 00 |n the database..| 00008460 44 41 54 41 1e 01 00 00 47 64 62 6d 5f 46 65 74 |DATA....Gdbm_Fet| 00008470 63 68 0a 23 50 61 72 65 6e 74 20 47 64 62 6d 5f |ch.#Parent Gdbm_| 00008480 0a 3d 3e 09 52 30 20 3d 09 66 69 6c 65 20 68 61 |.=>.R0 =.file ha| 00008490 6e 64 6c 65 20 66 72 6f 6d 20 3c 47 64 62 6d 5f |ndle from <Gdbm_| 000084a0 4f 70 65 6e 3e 20 6f 72 20 3c 47 64 62 6d 5f 4f |Open> or <Gdbm_O| 000084b0 70 65 6e 49 6e 3e 0a 09 52 31 20 3d 09 70 6f 69 |penIn>..R1 =.poi| 000084c0 6e 74 65 72 20 74 6f 20 6b 65 79 77 6f 72 64 0a |nter to keyword.| 000084d0 09 52 32 20 3d 09 6c 65 6e 67 74 68 20 6f 66 20 |.R2 =.length of | 000084e0 6b 65 79 77 6f 72 64 0a 09 52 33 20 3d 09 62 75 |keyword..R3 =.bu| 000084f0 66 66 65 72 20 66 6f 72 20 64 61 74 61 0a 09 52 |ffer for data..R| 00008500 34 20 3d 09 6c 65 6e 67 74 68 20 6f 66 20 62 75 |4 =.length of bu| 00008510 66 66 65 72 0a 3c 3d 09 52 30 20 3d 09 6c 65 6e |ffer.<=.R0 =.len| 00008520 67 74 68 20 6f 66 20 64 61 74 61 20 72 65 61 64 |gth of data read| 00008530 2c 20 6f 72 20 30 20 69 66 20 6b 65 79 20 6e 6f |, or 0 if key no| 00008540 74 20 66 6f 75 6e 64 0a 0a 52 65 74 72 69 65 76 |t found..Retriev| 00008550 65 73 20 64 61 74 61 20 66 69 6c 65 64 20 75 6e |es data filed un| 00008560 64 65 72 20 61 20 6b 65 79 77 6f 72 64 20 69 6e |der a keyword in| 00008570 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 00 00 | the database...| 00008580 44 41 54 41 cf 00 00 00 47 64 62 6d 5f 45 78 69 |DATA....Gdbm_Exi| 00008590 73 74 73 0a 23 50 61 72 65 6e 74 20 47 64 62 6d |sts.#Parent Gdbm| 000085a0 5f 0a 3d 3e 09 52 30 20 3d 09 66 69 6c 65 20 68 |_.=>.R0 =.file h| 000085b0 61 6e 64 6c 65 20 66 72 6f 6d 20 3c 47 64 62 6d |andle from <Gdbm| 000085c0 5f 4f 70 65 6e 3e 6f 72 20 3c 47 64 62 6d 5f 4f |_Open>or <Gdbm_O| 000085d0 70 65 6e 49 6e 3e 0a 09 52 31 20 3d 09 70 6f 69 |penIn>..R1 =.poi| 000085e0 6e 74 65 72 20 74 6f 20 6b 65 79 77 6f 72 64 0a |nter to keyword.| 000085f0 09 52 32 20 3d 09 6c 65 6e 67 74 68 20 6f 66 20 |.R2 =.length of | 00008600 6b 65 79 77 6f 72 64 0a 3c 3d 09 52 30 20 3d 09 |keyword.<=.R0 =.| 00008610 31 20 69 66 20 6b 65 79 20 65 78 69 73 74 73 2c |1 if key exists,| 00008620 20 30 20 6f 74 68 65 72 77 69 73 65 0a 0a 43 68 | 0 otherwise..Ch| 00008630 65 63 6b 73 20 77 68 65 74 68 65 72 20 61 20 6b |ecks whether a k| 00008640 65 79 77 6f 72 64 20 65 78 69 73 74 73 2e 0a 00 |eyword exists...| 00008650 44 41 54 41 ec 00 00 00 47 64 62 6d 5f 46 69 72 |DATA....Gdbm_Fir| 00008660 73 74 4b 65 79 0a 23 50 61 72 65 6e 74 20 47 64 |stKey.#Parent Gd| 00008670 62 6d 5f 0a 3d 3e 09 52 30 20 3d 09 66 69 6c 65 |bm_.=>.R0 =.file| 00008680 20 68 61 6e 64 6c 65 20 66 72 6f 6d 20 3c 47 64 | handle from <Gd| 00008690 62 6d 5f 4f 70 65 6e 3e 6f 72 20 3c 47 64 62 6d |bm_Open>or <Gdbm| 000086a0 5f 4f 70 65 6e 49 6e 3e 0a 09 52 31 20 3d 09 70 |_OpenIn>..R1 =.p| 000086b0 6f 69 6e 74 65 72 20 74 6f 20 62 75 66 66 65 72 |ointer to buffer| 000086c0 0a 09 52 32 20 3d 09 6c 65 6e 67 74 68 20 6f 66 |..R2 =.length of| 000086d0 20 62 75 66 66 65 72 0a 3c 3d 09 52 30 20 3d 09 | buffer.<=.R0 =.| 000086e0 6c 65 6e 67 74 68 20 6f 66 20 6b 65 79 77 6f 72 |length of keywor| 000086f0 64 2c 20 6f 72 20 2d 31 20 69 66 20 6e 6f 20 6b |d, or -1 if no k| 00008700 65 79 77 6f 72 64 73 20 65 78 69 73 74 0a 0a 52 |eywords exist..R| 00008710 65 74 75 72 6e 73 20 74 68 65 20 66 69 72 73 74 |eturns the first| 00008720 20 6b 65 79 77 6f 72 64 20 66 72 6f 6d 20 74 68 | keyword from th| 00008730 65 20 64 61 74 61 62 61 73 65 2e 0a 44 41 54 41 |e database..DATA| 00008740 ce 01 00 00 47 64 62 6d 5f 4e 65 78 74 4b 65 79 |....Gdbm_NextKey| 00008750 0a 23 50 61 72 65 6e 74 20 47 64 62 6d 5f 0a 3d |.#Parent Gdbm_.=| 00008760 3e 09 52 30 20 3d 09 66 69 6c 65 20 68 61 6e 64 |>.R0 =.file hand| 00008770 6c 65 20 66 72 6f 6d 20 3c 47 64 62 6d 5f 4f 70 |le from <Gdbm_Op| 00008780 65 6e 3e 6f 72 20 3c 47 64 62 6d 5f 4f 70 65 6e |en>or <Gdbm_Open| 00008790 49 6e 3e 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |In>..R1 =.pointe| 000087a0 72 20 74 6f 20 6c 61 73 74 20 6b 65 79 77 6f 72 |r to last keywor| 000087b0 64 0a 09 52 32 20 3d 09 6c 65 6e 67 74 68 20 6f |d..R2 =.length o| 000087c0 66 20 6b 65 79 77 6f 72 64 0a 09 52 33 20 3d 09 |f keyword..R3 =.| 000087d0 70 6f 69 6e 74 65 72 20 74 6f 20 62 75 66 66 65 |pointer to buffe| 000087e0 72 0a 09 52 34 20 3d 09 6c 65 6e 67 74 68 20 6f |r..R4 =.length o| 000087f0 66 20 62 75 66 66 65 72 0a 3c 3d 09 52 30 20 3d |f buffer.<=.R0 =| 00008800 09 6c 65 6e 67 74 68 20 6f 66 20 6b 65 79 77 6f |.length of keywo| 00008810 72 64 2c 20 6f 72 20 2d 31 20 69 66 20 6e 6f 20 |rd, or -1 if no | 00008820 6b 65 79 77 6f 72 64 73 20 65 78 69 73 74 0a 0a |keywords exist..| 00008830 52 65 74 75 72 6e 73 20 74 68 65 20 6e 65 78 74 |Returns the next| 00008840 20 6b 65 79 77 6f 72 64 20 66 72 6f 6d 20 74 68 | keyword from th| 00008850 65 20 64 61 74 61 62 61 73 65 2e 0a 0a 4e 4f 54 |e database...NOT| 00008860 45 3a 20 4b 65 79 77 6f 72 64 73 20 61 72 65 20 |E: Keywords are | 00008870 6f 72 64 65 72 65 64 20 69 6e 20 61 20 68 61 73 |ordered in a has| 00008880 68 20 74 61 62 6c 65 20 6f 72 64 65 72 2e 20 54 |h table order. T| 00008890 68 69 73 20 69 73 20 6e 6f 74 20 6e 65 63 65 73 |his is not neces| 000088a0 73 61 72 69 6c 79 20 61 6c 70 68 61 62 65 74 69 |sarily alphabeti| 000088b0 63 2c 20 61 6e 64 20 73 68 6f 75 6c 64 20 6e 6f |c, and should no| 000088c0 74 20 62 65 20 72 65 6c 69 65 64 20 6f 6e 20 69 |t be relied on i| 000088d0 66 20 3c 47 64 62 6d 5f 44 65 6c 65 74 65 3e 20 |f <Gdbm_Delete> | 000088e0 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 74 68 65 |is called in the| 000088f0 20 6d 69 64 73 74 20 6f 66 20 61 20 4e 65 78 74 | midst of a Next| 00008900 4b 65 79 20 6c 6f 6f 70 2e 0a 00 00 44 41 54 41 |Key loop....DATA| 00008910 70 00 00 00 47 64 62 6d 5f 43 6c 6f 73 65 0a 23 |p...Gdbm_Close.#| 00008920 50 61 72 65 6e 74 20 47 64 62 6d 5f 0a 3d 3e 09 |Parent Gdbm_.=>.| 00008930 52 30 20 3d 09 66 69 6c 65 20 68 61 6e 64 6c 65 |R0 =.file handle| 00008940 20 66 72 6f 6d 20 3c 47 64 62 6d 5f 4f 70 65 6e | from <Gdbm_Open| 00008950 3e 20 6f 72 20 3c 47 64 62 6d 5f 4f 70 65 6e 49 |> or <Gdbm_OpenI| 00008960 6e 3e 0a 0a 43 6c 6f 73 65 73 20 61 20 64 61 74 |n>..Closes a dat| 00008970 61 62 61 73 65 20 66 69 6c 65 2e 0a 44 41 54 41 |abase file..DATA| 00008980 db 00 00 00 47 64 62 6d 5f 44 65 6c 65 74 65 0a |....Gdbm_Delete.| 00008990 23 50 61 72 65 6e 74 20 47 64 62 6d 5f 0a 3d 3e |#Parent Gdbm_.=>| 000089a0 09 52 30 20 3d 09 66 69 6c 65 20 68 61 6e 64 6c |.R0 =.file handl| 000089b0 65 20 66 72 6f 6d 20 3c 47 64 62 6d 5f 4f 70 65 |e from <Gdbm_Ope| 000089c0 6e 3e 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 |n>..R1 =.pointer| 000089d0 20 74 6f 20 6c 61 73 74 20 6b 65 79 77 6f 72 64 | to last keyword| 000089e0 0a 09 52 32 20 3d 09 6c 65 6e 67 74 68 20 6f 66 |..R2 =.length of| 000089f0 20 6b 65 79 77 6f 72 64 0a 0a 44 65 6c 65 74 65 | keyword..Delete| 00008a00 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 |s the specified | 00008a10 6b 65 79 2e 20 49 66 20 74 68 65 20 66 69 6c 65 |key. If the file| 00008a20 20 77 61 73 20 6f 70 65 6e 65 64 20 77 69 74 68 | was opened with| 00008a30 20 3c 47 64 62 6d 5f 4f 70 65 6e 49 6e 3e 20 74 | <Gdbm_OpenIn> t| 00008a40 68 69 73 20 53 57 49 20 68 61 73 20 6e 6f 20 65 |his SWI has no e| 00008a50 66 66 65 63 74 2e 0a 00 44 41 54 41 b7 00 00 00 |ffect...DATA....| 00008a60 47 64 62 6d 5f 43 6c 65 61 72 0a 23 50 61 72 65 |Gdbm_Clear.#Pare| 00008a70 6e 74 20 47 64 62 6d 5f 0a 3d 3e 09 52 30 20 3d |nt Gdbm_.=>.R0 =| 00008a80 09 66 69 6c 65 20 68 61 6e 64 6c 65 20 66 72 6f |.file handle fro| 00008a90 6d 20 3c 47 64 62 6d 5f 4f 70 65 6e 3e 0a 0a 44 |m <Gdbm_Open>..D| 00008aa0 65 6c 65 74 65 73 20 61 6c 6c 20 74 68 65 20 65 |eletes all the e| 00008ab0 6e 74 72 69 65 73 20 69 6e 20 74 68 65 20 64 61 |ntries in the da| 00008ac0 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20 |tabase file. If | 00008ad0 74 68 65 20 66 69 6c 65 20 77 61 73 20 6f 70 65 |the file was ope| 00008ae0 6e 65 64 20 77 69 74 68 20 3c 47 64 62 6d 5f 4f |ned with <Gdbm_O| 00008af0 70 65 6e 49 6e 3e 20 74 68 69 73 20 53 57 49 20 |penIn> this SWI | 00008b00 68 61 73 20 6e 6f 20 65 66 66 65 63 74 2e 0a 00 |has no effect...| 00008b10 44 41 54 41 07 01 00 00 47 64 62 6d 5f 4f 70 65 |DATA....Gdbm_Ope| 00008b20 6e 49 6e 0a 23 50 61 72 65 6e 74 20 47 64 62 6d |nIn.#Parent Gdbm| 00008b30 5f 0a 3d 3e 09 52 30 20 3d 09 50 6f 69 6e 74 65 |_.=>.R0 =.Pointe| 00008b40 72 20 74 6f 20 66 69 6c 65 6e 61 6d 65 0a 3c 3d |r to filename.<=| 00008b50 09 52 30 20 3d 09 66 69 6c 65 20 68 61 6e 64 6c |.R0 =.file handl| 00008b60 65 0a 0a 54 68 69 73 20 53 57 49 20 69 73 20 61 |e..This SWI is a| 00008b70 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20 67 64 |vailable from gd| 00008b80 62 6d 20 76 65 72 73 69 6f 6e 20 30 2e 30 33 2e |bm version 0.03.| 00008b90 20 4f 70 65 6e 73 20 61 20 64 61 74 61 62 61 73 | Opens a databas| 00008ba0 65 20 66 69 6c 65 20 66 6f 72 20 72 65 61 64 69 |e file for readi| 00008bb0 6e 67 20 6f 6e 6c 79 2c 20 72 65 74 75 72 6e 69 |ng only, returni| 00008bc0 6e 67 20 74 68 65 20 68 61 6e 64 6c 65 20 6f 66 |ng the handle of| 00008bd0 20 74 68 65 20 66 69 6c 65 20 73 6f 20 74 68 61 | the file so tha| 00008be0 74 20 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 |t it can be used| 00008bf0 20 69 6e 20 6f 74 68 65 72 20 63 61 6c 6c 73 2e | in other calls.| 00008c00 20 52 65 74 75 72 6e 73 20 30 20 6f 6e 20 66 61 | Returns 0 on fa| 00008c10 69 6c 75 72 65 2e 0a 00 44 49 52 24 2c 00 00 00 |ilure...DIR$,...| 00008c20 2c 00 00 00 44 8c 00 00 46 fd ff ff 15 46 c7 13 |,...D...F....F..| 00008c30 81 01 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 00008c40 74 00 00 00 44 41 54 41 81 01 00 00 47 44 72 61 |t...DATA....GDra| 00008c50 77 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a |w.#Parent !Root.| 00008c60 23 50 72 65 66 69 78 20 47 44 72 61 77 5f 0a 23 |#Prefix GDraw_.#| 00008c70 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a |Table Columns 2.| 00008c80 50 72 6f 63 65 73 73 50 61 74 68 0a 50 72 6f 63 |ProcessPath.Proc| 00008c90 65 73 73 50 61 74 68 46 50 0a 46 69 6c 6c 0a 46 |essPathFP.Fill.F| 00008ca0 69 6c 6c 46 50 0a 53 74 72 6f 6b 65 0a 53 74 72 |illFP.Stroke.Str| 00008cb0 6f 6b 65 46 50 0a 53 74 72 6f 6b 65 50 61 74 68 |okeFP.StrokePath| 00008cc0 0a 53 74 72 6f 6b 65 50 61 74 68 46 50 0a 46 6c |.StrokePathFP.Fl| 00008cd0 61 74 74 65 6e 50 61 74 68 0a 46 6c 61 74 74 65 |attenPath.Flatte| 00008ce0 6e 50 61 74 68 46 50 0a 54 72 61 6e 73 66 6f 72 |nPathFP.Transfor| 00008cf0 6d 50 61 74 68 0a 54 72 61 6e 73 66 6f 72 6d 50 |mPath.TransformP| 00008d00 61 74 68 46 50 0a 50 72 6f 63 65 73 73 43 6c 69 |athFP.ProcessCli| 00008d10 70 50 61 74 68 0a 50 72 6f 63 65 73 73 43 6c 69 |pPath.ProcessCli| 00008d20 70 50 61 74 68 46 50 0a 43 6c 69 70 50 61 74 68 |pPathFP.ClipPath| 00008d30 0a 43 6c 69 70 50 61 74 68 46 50 0a 43 6c 69 70 |.ClipPathFP.Clip| 00008d40 50 61 74 68 54 6f 50 61 74 68 0a 43 6c 69 70 50 |PathToPath.ClipP| 00008d50 61 74 68 54 6f 50 61 74 68 46 50 0a 43 6c 65 61 |athToPathFP.Clea| 00008d60 72 43 6c 69 70 52 65 67 69 6f 6e 0a 53 65 74 43 |rClipRegion.SetC| 00008d70 6c 69 70 52 65 67 69 6f 6e 0a 53 65 74 46 69 6c |lipRegion.SetFil| 00008d80 6c 53 74 79 6c 65 0a 46 69 6c 6c 52 65 67 69 6f |lStyle.FillRegio| 00008d90 6e 0a 53 65 74 50 72 69 6e 74 46 6c 61 67 0a 52 |n.SetPrintFlag.R| 00008da0 65 61 64 46 69 6c 6c 53 74 79 6c 65 0a 47 65 74 |eadFillStyle.Get| 00008db0 43 6c 69 70 52 65 67 69 6f 6e 0a 23 45 6e 64 54 |ClipRegion.#EndT| 00008dc0 61 62 6c 65 0a 00 00 00 44 49 52 24 2c 00 00 00 |able....DIR$,...| 00008dd0 2c 00 00 00 f4 8d 00 00 46 fd ff ff b8 06 72 18 |,.......F.....r.| 00008de0 83 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 00008df0 74 00 00 00 44 41 54 41 83 00 00 00 47 53 70 72 |t...DATA....GSpr| 00008e00 69 74 65 45 78 74 65 6e 64 0a 23 50 61 72 65 6e |iteExtend.#Paren| 00008e10 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 |t !Root.#Prefix | 00008e20 47 53 70 72 69 74 65 45 78 74 65 6e 64 5f 0a 23 |GSpriteExtend_.#| 00008e30 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 31 0a |Table Columns 1.| 00008e40 50 6c 6f 74 53 70 72 69 74 65 0a 53 77 69 74 63 |PlotSprite.Switc| 00008e50 68 4f 75 74 70 75 74 54 6f 53 70 72 69 74 65 0a |hOutputToSprite.| 00008e60 52 65 61 64 56 61 72 69 61 62 6c 65 0a 23 45 6e |ReadVariable.#En| 00008e70 64 54 61 62 6c 65 0a 00 44 49 52 24 2c 00 00 00 |dTable..DIR$,...| 00008e80 2c 00 00 00 a4 8e 00 00 46 fd ff ff 92 4d c7 13 |,.......F....M..| 00008e90 ca 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 00008ea0 74 00 00 00 44 41 54 41 ca 00 00 00 48 79 70 68 |t...DATA....Hyph| 00008eb0 65 6e 61 74 6f 72 0a 23 50 61 72 65 6e 74 20 21 |enator.#Parent !| 00008ec0 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 48 79 70 |Root.#Prefix Hyp| 00008ed0 68 65 6e 61 74 6f 72 5f 0a 23 54 61 62 6c 65 20 |henator_.#Table | 00008ee0 43 6f 6c 75 6d 6e 73 20 32 0a 52 65 73 65 74 44 |Columns 2.ResetD| 00008ef0 69 63 74 69 6f 6e 61 72 79 0a 43 72 65 61 74 65 |ictionary.Create| 00008f00 44 69 63 74 69 6f 6e 61 72 79 0a 43 6f 70 79 44 |Dictionary.CopyD| 00008f10 69 63 74 69 6f 6e 61 72 79 0a 45 6e 71 75 69 72 |ictionary.Enquir| 00008f20 65 44 69 63 74 69 6f 6e 61 72 79 0a 46 69 6e 64 |eDictionary.Find| 00008f30 57 6f 72 64 0a 41 64 64 57 6f 72 64 0a 52 65 6d |Word.AddWord.Rem| 00008f40 6f 76 65 57 6f 72 64 0a 48 79 70 68 65 6e 61 74 |oveWord.Hyphenat| 00008f50 65 0a 47 65 74 57 6f 72 64 73 0a 45 6e 75 6d 57 |e.GetWords.EnumW| 00008f60 6f 72 64 0a 23 45 6e 64 54 61 62 6c 65 0a 00 00 |ord.#EndTable...| 00008f70 44 49 52 24 2c 00 00 00 2c 00 00 00 9c 8f 00 00 |DIR$,...,.......| 00008f80 46 fd ff ff 50 4d c7 13 f6 00 00 00 13 00 00 00 |F...PM..........| 00008f90 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 00008fa0 f6 00 00 00 49 6d 61 67 65 45 78 74 65 6e 64 0a |....ImageExtend.| 00008fb0 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 |#Parent !Root.#P| 00008fc0 72 65 66 69 78 20 49 6d 61 67 65 45 78 74 65 6e |refix ImageExten| 00008fd0 64 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e |d_.#Table Column| 00008fe0 73 20 32 0a 49 6e 66 6f 0a 50 75 74 53 70 72 69 |s 2.Info.PutSpri| 00008ff0 74 65 54 72 61 6e 73 66 6f 72 6d 65 64 0a 50 75 |teTransformed.Pu| 00009000 74 53 70 72 69 74 65 54 6f 42 75 66 66 65 72 54 |tSpriteToBufferT| 00009010 72 61 6e 73 66 6f 72 6d 65 64 0a 50 75 74 53 74 |ransformed.PutSt| 00009020 72 69 6e 67 54 72 61 6e 73 66 6f 72 6d 65 64 0a |ringTransformed.| 00009030 47 65 74 42 42 6f 78 0a 47 65 74 49 6d 61 67 65 |GetBBox.GetImage| 00009040 42 42 6f 78 0a 4d 61 6b 65 4d 61 74 72 69 78 0a |BBox.MakeMatrix.| 00009050 4d 61 6b 65 48 61 6c 66 74 6f 6e 65 54 69 6c 65 |MakeHalftoneTile| 00009060 0a 41 64 64 4b 65 72 6e 65 6c 54 6f 4d 61 74 72 |.AddKernelToMatr| 00009070 69 78 0a 4d 61 6b 65 53 69 6d 70 6c 65 53 63 72 |ix.MakeSimpleScr| 00009080 65 65 6e 54 69 6c 65 0a 23 45 6e 64 54 61 62 6c |eenTile.#EndTabl| 00009090 65 0a 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |e...DIR$,...,...| 000090a0 c0 90 00 00 46 fd ff ff 2e 43 c7 13 94 00 00 00 |....F....C......| 000090b0 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 000090c0 44 41 54 41 94 00 00 00 49 6d 70 75 6c 73 65 0a |DATA....Impulse.| 000090d0 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 |#Parent !Root.#P| 000090e0 72 65 66 69 78 20 49 6d 70 75 6c 73 65 5f 0a 23 |refix Impulse_.#| 000090f0 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a |Table Columns 2.| 00009100 49 6e 69 74 69 61 6c 69 73 65 0a 44 65 63 6f 64 |Initialise.Decod| 00009110 65 0a 53 65 6e 64 4d 65 73 73 61 67 65 0a 54 72 |e.SendMessage.Tr| 00009120 61 6e 73 6d 69 74 44 61 74 61 0a 46 65 74 63 68 |ansmitData.Fetch| 00009130 44 61 74 61 0a 43 6c 6f 73 65 44 6f 77 6e 0a 44 |Data.CloseDown.D| 00009140 65 66 65 72 52 65 70 6c 79 0a 23 45 6e 64 54 61 |eferReply.#EndTa| 00009150 62 6c 65 0a 44 49 52 24 2c 00 00 00 2c 00 00 00 |ble.DIR$,...,...| 00009160 80 91 00 00 46 fd ff ff 0a 4e c7 13 d9 00 00 00 |....F....N......| 00009170 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00009180 44 41 54 41 d9 00 00 00 49 6e 74 65 72 66 61 63 |DATA....Interfac| 00009190 65 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a |e.#Parent !Root.| 000091a0 23 50 72 65 66 69 78 20 49 6e 74 65 72 66 61 63 |#Prefix Interfac| 000091b0 65 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e |e_.#Table Column| 000091c0 73 20 32 0a 53 6c 61 62 42 75 74 74 6f 6e 0a 52 |s 2.SlabButton.R| 000091d0 65 6e 64 65 72 33 64 57 69 6e 64 6f 77 0a 49 6e |ender3dWindow.In| 000091e0 69 74 69 61 6c 69 73 65 0a 43 6c 6f 73 65 44 6f |itialise.CloseDo| 000091f0 77 6e 0a 53 65 74 57 6f 72 6b 61 72 65 61 50 6f |wn.SetWorkareaPo| 00009200 69 6e 74 65 72 0a 52 65 6d 6f 76 65 57 6f 72 6b |inter.RemoveWork| 00009210 61 72 65 61 50 6f 69 6e 74 65 72 0a 50 6f 6c 6c |areaPointer.Poll| 00009220 0a 53 65 6e 64 48 65 6c 70 0a 50 72 65 50 72 6f |.SendHelp.PrePro| 00009230 63 65 73 73 4b 65 79 0a 50 6c 6f 74 33 64 49 63 |cessKey.Plot3dIc| 00009240 6f 6e 0a 42 6f 75 6e 64 69 6e 67 42 6f 78 0a 23 |on.BoundingBox.#| 00009250 45 6e 64 54 61 62 6c 65 0a 00 00 00 44 49 52 24 |EndTable....DIR$| 00009260 2c 00 00 00 2c 00 00 00 88 92 00 00 47 fd ff ff |,...,.......G...| 00009270 83 69 7d 82 ff 00 00 00 03 00 00 00 00 00 00 00 |.i}.............| 00009280 21 52 6f 6f 74 00 00 00 44 41 54 41 ff 00 00 00 |!Root...DATA....| 00009290 49 5a 69 70 46 53 0a 23 50 61 72 65 6e 74 20 21 |IZipFS.#Parent !| 000092a0 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 49 5a 69 |Root.#Prefix IZi| 000092b0 70 46 53 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 |pFS_.#Table Colu| 000092c0 6d 6e 73 20 32 0a 49 6e 69 74 69 61 6c 69 73 65 |mns 2.Initialise| 000092d0 0a 45 6a 65 63 74 0a 4c 6f 63 6b 0a 55 6e 6c 6f |.Eject.Lock.Unlo| 000092e0 63 6b 0a 53 43 53 49 43 6f 6d 6d 61 6e 64 0a 44 |ck.SCSICommand.D| 000092f0 65 76 69 63 65 49 6e 71 75 69 72 79 0a 44 65 76 |eviceInquiry.Dev| 00009300 69 63 65 73 0a 52 65 73 65 74 0a 52 65 61 64 4f |ices.Reset.ReadO| 00009310 70 0a 57 72 69 74 65 4f 70 0a 44 69 73 63 4f 70 |p.WriteOp.DiscOp| 00009320 0a 4d 69 73 63 4f 70 0a 44 72 69 76 65 73 0a 46 |.MiscOp.Drives.F| 00009330 72 65 65 53 70 61 63 65 0a 44 65 73 63 72 69 62 |reeSpace.Describ| 00009340 65 44 69 73 63 0a 47 65 74 53 74 61 74 75 73 0a |eDisc.GetStatus.| 00009350 56 65 72 69 66 79 4f 70 0a 57 72 69 74 65 50 72 |VerifyOp.WritePr| 00009360 6f 74 65 63 74 0a 44 69 73 63 46 6f 72 6d 61 74 |otect.DiscFormat| 00009370 0a 42 6f 6f 74 43 68 61 6e 67 65 64 0a 23 45 6e |.BootChanged.#En| 00009380 64 54 61 62 6c 65 0a 00 44 49 52 24 ac 01 00 00 |dTable..DIR$....| 00009390 ac 01 00 00 34 95 00 00 47 fd ff ff 2b 30 f2 d6 |....4...G...+0..| 000093a0 be 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 000093b0 74 00 00 00 f4 95 00 00 47 ff ff ff eb c6 f5 d6 |t.......G.......| 000093c0 43 01 00 00 33 00 00 00 00 00 00 00 53 65 74 4f |C...3.......SetO| 000093d0 70 74 69 6f 6e 73 00 00 38 97 00 00 47 ff ff ff |ptions..8...G...| 000093e0 82 d3 f5 d6 37 01 00 00 33 00 00 00 00 00 00 00 |....7...3.......| 000093f0 47 65 74 4f 70 74 69 6f 6e 73 00 00 70 98 00 00 |GetOptions..p...| 00009400 47 ff ff ff 12 fe f3 d6 20 01 00 00 33 00 00 00 |G....... ...3...| 00009410 00 00 00 00 43 72 65 61 74 65 42 75 66 66 65 72 |....CreateBuffer| 00009420 00 00 00 00 90 99 00 00 47 ff ff ff b8 4f f1 d6 |........G....O..| 00009430 6d 00 00 00 33 00 00 00 00 00 00 00 44 65 6c 65 |m...3.......Dele| 00009440 74 65 42 75 66 66 65 72 00 00 00 00 00 9a 00 00 |teBuffer........| 00009450 47 ff ff ff 6f ee f1 d6 93 00 00 00 33 00 00 00 |G...o.......3...| 00009460 00 00 00 00 41 70 70 65 6e 64 4c 69 6e 65 00 00 |....AppendLine..| 00009470 94 9a 00 00 47 ff ff ff 26 fc f1 d6 71 00 00 00 |....G...&...q...| 00009480 33 00 00 00 00 00 00 00 44 65 6c 65 74 65 4c 69 |3.......DeleteLi| 00009490 6e 65 00 00 08 9b 00 00 47 ff ff ff bd 16 f4 d6 |ne......G.......| 000094a0 b8 00 00 00 33 00 00 00 00 00 00 00 47 65 74 4c |....3.......GetL| 000094b0 69 6e 65 00 c0 9b 00 00 47 ff ff ff d4 d9 f1 d6 |ine.....G.......| 000094c0 8e 00 00 00 33 00 00 00 00 00 00 00 47 65 74 50 |....3.......GetP| 000094d0 6f 73 00 00 50 9c 00 00 47 ff ff ff 02 38 f2 d6 |os..P...G....8..| 000094e0 ca 01 00 00 33 00 00 00 00 00 00 00 53 65 74 50 |....3.......SetP| 000094f0 6f 73 00 00 1c 9e 00 00 47 fd ff ff 6e bf f5 d6 |os......G...n...| 00009500 48 01 00 00 13 00 00 00 00 00 00 00 66 6c 61 67 |H...........flag| 00009510 73 00 00 00 64 9f 00 00 47 fd ff ff de c1 f5 d6 |s...d...G.......| 00009520 07 01 00 00 33 00 00 00 00 00 00 00 63 75 72 73 |....3.......curs| 00009530 6f 72 73 00 44 41 54 41 be 00 00 00 4c 69 6e 65 |ors.DATA....Line| 00009540 45 64 69 74 6f 72 0a 23 50 61 72 65 6e 74 20 21 |Editor.#Parent !| 00009550 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 4c 69 6e |Root.#Prefix Lin| 00009560 65 45 64 69 74 6f 72 5f 0a 23 54 61 62 6c 65 20 |eEditor_.#Table | 00009570 43 6f 6c 75 6d 6e 73 20 32 0a 3c 53 65 74 4f 70 |Columns 2.<SetOp| 00009580 74 69 6f 6e 73 3e 0a 3c 47 65 74 4f 70 74 69 6f |tions>.<GetOptio| 00009590 6e 73 3e 0a 3c 43 72 65 61 74 65 42 75 66 66 65 |ns>.<CreateBuffe| 000095a0 72 3e 0a 3c 44 65 6c 65 74 65 42 75 66 66 65 72 |r>.<DeleteBuffer| 000095b0 3e 0a 3c 53 65 74 50 6f 73 3e 0a 3c 47 65 74 50 |>.<SetPos>.<GetP| 000095c0 6f 73 3e 0a 3c 47 65 74 4c 69 6e 65 3e 0a 3c 41 |os>.<GetLine>.<A| 000095d0 70 70 65 6e 64 4c 69 6e 65 3e 0a 3c 44 65 6c 65 |ppendLine>.<Dele| 000095e0 74 65 4c 69 6e 65 3e 0a 23 45 6e 64 54 61 62 6c |teLine>.#EndTabl| 000095f0 65 0a 00 00 44 41 54 41 43 01 00 00 4c 69 6e 65 |e...DATAC...Line| 00009600 45 64 69 74 6f 72 5f 53 65 74 4f 70 74 69 6f 6e |Editor_SetOption| 00009610 73 0a 23 50 61 72 65 6e 74 20 4c 69 6e 65 45 64 |s.#Parent LineEd| 00009620 69 74 6f 72 5f 0a 3d 3e 09 52 30 20 3d 09 62 75 |itor_.=>.R0 =.bu| 00009630 66 66 65 72 20 73 69 7a 65 20 69 6e 20 6b 69 6c |ffer size in kil| 00009640 6f 62 79 74 65 73 2c 20 6f 72 20 30 20 66 6f 72 |obytes, or 0 for| 00009650 20 64 65 66 61 75 6c 74 0a 09 52 31 20 3d 09 3c | default..R1 =.<| 00009660 66 6c 61 67 73 3d 3e 4c 69 6e 65 45 64 69 74 6f |flags=>LineEdito| 00009670 72 5f 66 6c 61 67 73 3e 0a 09 52 32 20 3d 09 6d |r_flags>..R2 =.m| 00009680 69 6e 69 6d 75 6d 20 6c 65 6e 67 74 68 20 74 6f |inimum length to| 00009690 20 72 65 63 6f 72 64 2c 20 6f 72 20 30 20 66 6f | record, or 0 fo| 000096a0 72 20 6e 6f 20 6d 69 6e 69 6d 75 6d 0a 09 52 33 |r no minimum..R3| 000096b0 20 3d 09 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 | =.maximum lengt| 000096c0 68 20 74 6f 20 72 65 63 6f 72 64 2c 20 6f 72 20 |h to record, or | 000096d0 30 20 66 6f 72 20 6e 6f 20 6d 61 78 69 6d 75 6d |0 for no maximum| 000096e0 0a 09 52 34 20 3d 09 3c 63 75 72 73 6f 72 73 3d |..R4 =.<cursors=| 000096f0 3e 4c 69 6e 65 45 64 69 74 6f 72 5f 63 75 72 73 |>LineEditor_curs| 00009700 6f 72 73 3e 0a 0a 53 65 74 73 20 6f 70 74 69 6f |ors>..Sets optio| 00009710 6e 73 20 66 6f 72 20 74 68 65 20 67 6c 6f 62 61 |ns for the globa| 00009720 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2d 65 |l command line-e| 00009730 64 69 74 6f 72 2e 0a 00 44 41 54 41 37 01 00 00 |ditor...DATA7...| 00009740 4c 69 6e 65 45 64 69 74 6f 72 5f 47 65 74 4f 70 |LineEditor_GetOp| 00009750 74 69 6f 6e 73 0a 23 50 61 72 65 6e 74 20 4c 69 |tions.#Parent Li| 00009760 6e 65 45 64 69 74 6f 72 5f 0a 3c 3d 09 52 30 20 |neEditor_.<=.R0 | 00009770 3d 09 62 75 66 66 65 72 20 73 69 7a 65 2c 20 6f |=.buffer size, o| 00009780 72 20 30 20 66 6f 72 20 64 65 66 61 75 6c 74 0a |r 0 for default.| 00009790 09 52 31 20 3d 09 3c 66 6c 61 67 73 3d 3e 4c 69 |.R1 =.<flags=>Li| 000097a0 6e 65 45 64 69 74 6f 72 5f 46 6c 61 67 73 3e 0a |neEditor_Flags>.| 000097b0 09 52 32 20 3d 09 6d 69 6e 69 6d 75 6d 20 6c 65 |.R2 =.minimum le| 000097c0 6e 67 74 68 20 74 6f 20 72 65 63 6f 72 64 2c 20 |ngth to record, | 000097d0 6f 72 20 30 20 66 6f 72 20 6e 6f 20 6d 69 6e 69 |or 0 for no mini| 000097e0 6d 75 6d 0a 09 52 33 20 3d 09 6d 61 78 69 6d 75 |mum..R3 =.maximu| 000097f0 6d 20 6c 65 6e 67 74 68 20 74 6f 20 72 65 63 6f |m length to reco| 00009800 72 64 2c 20 6f 72 20 30 20 66 6f 72 20 6e 6f 20 |rd, or 0 for no | 00009810 6d 61 78 69 6d 75 6d 0a 09 52 34 20 3d 09 3c 63 |maximum..R4 =.<c| 00009820 75 72 73 6f 72 73 3d 3e 4c 69 6e 65 45 64 69 74 |ursors=>LineEdit| 00009830 6f 72 5f 43 75 72 73 6f 72 73 3e 0a 0a 52 65 61 |or_Cursors>..Rea| 00009840 64 73 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 74 |ds options for t| 00009850 68 65 20 67 6c 6f 62 61 6c 20 63 6f 6d 6d 61 6e |he global comman| 00009860 64 20 6c 69 6e 65 2d 65 64 69 74 6f 72 2e 0a 00 |d line-editor...| 00009870 44 41 54 41 20 01 00 00 4c 69 6e 65 45 64 69 74 |DATA ...LineEdit| 00009880 6f 72 5f 43 72 65 61 74 65 42 75 66 66 65 72 0a |or_CreateBuffer.| 00009890 23 50 61 72 65 6e 74 20 4c 69 6e 65 45 64 69 74 |#Parent LineEdit| 000098a0 6f 72 5f 0a 3d 3e 09 52 30 20 3d 09 62 75 66 66 |or_.=>.R0 =.buff| 000098b0 65 72 20 73 69 7a 65 2c 20 6f 72 20 30 20 66 6f |er size, or 0 fo| 000098c0 72 20 64 65 66 61 75 6c 74 0a 09 52 31 20 3d 09 |r default..R1 =.| 000098d0 65 78 70 61 6e 73 69 6f 6e 20 77 6f 72 64 20 28 |expansion word (| 000098e0 30 29 2c 20 6f 72 20 74 61 73 6b 68 61 6e 64 6c |0), or taskhandl| 000098f0 65 20 66 6f 72 20 61 75 74 6f 2d 64 65 6c 65 74 |e for auto-delet| 00009900 65 2c 20 6f 72 20 2d 31 20 66 6f 72 20 6e 6f 6e |e, or -1 for non| 00009910 65 0a 09 52 32 20 3d 09 65 78 70 61 6e 73 69 6f |e..R2 =.expansio| 00009920 6e 20 77 6f 72 64 20 69 66 20 52 31 20 69 73 20 |n word if R1 is | 00009930 74 61 73 6b 68 61 6e 64 6c 65 2c 20 6f 72 20 6e |taskhandle, or n| 00009940 6f 6e 65 0a 3c 3d 09 52 30 20 3d 09 68 61 6e 64 |one.<=.R0 =.hand| 00009950 6c 65 2c 20 6f 72 20 30 20 69 66 20 63 61 6e 27 |le, or 0 if can'| 00009960 74 20 63 72 65 61 74 65 0a 0a 43 72 65 61 74 65 |t create..Create| 00009970 73 20 61 20 6e 65 77 20 70 72 69 76 61 74 65 20 |s a new private | 00009980 68 69 73 74 6f 72 79 20 62 75 66 66 65 72 2e 0a |history buffer..| 00009990 44 41 54 41 6d 00 00 00 4c 69 6e 65 45 64 69 74 |DATAm...LineEdit| 000099a0 6f 72 5f 44 65 6c 65 74 65 42 75 66 66 65 72 0a |or_DeleteBuffer.| 000099b0 23 50 61 72 65 6e 74 20 4c 69 6e 65 45 64 69 74 |#Parent LineEdit| 000099c0 6f 72 5f 0a 3c 3d 09 52 30 20 3d 09 62 75 66 66 |or_.<=.R0 =.buff| 000099d0 65 72 20 68 61 6e 64 6c 65 0a 0a 44 65 6c 65 74 |er handle..Delet| 000099e0 65 73 20 61 20 70 72 69 76 61 74 65 20 68 69 73 |es a private his| 000099f0 74 6f 72 79 20 62 75 66 66 65 72 2e 0a 00 00 00 |tory buffer.....| 00009a00 44 41 54 41 93 00 00 00 4c 69 6e 65 45 64 69 74 |DATA....LineEdit| 00009a10 6f 72 5f 41 70 70 65 6e 64 4c 69 6e 65 0a 23 50 |or_AppendLine.#P| 00009a20 61 72 65 6e 74 20 4c 69 6e 65 45 64 69 74 6f 72 |arent LineEditor| 00009a30 5f 0a 3d 3e 09 52 30 20 3d 09 62 75 66 66 65 72 |_.=>.R0 =.buffer| 00009a40 20 68 61 6e 64 6c 65 0a 09 52 31 20 3d 09 70 6f | handle..R1 =.po| 00009a50 69 6e 74 65 72 20 74 6f 20 6c 69 6e 65 20 74 6f |inter to line to| 00009a60 20 61 64 64 2c 20 63 74 72 6c 20 74 65 72 6d 69 | add, ctrl termi| 00009a70 6e 61 74 65 64 0a 0a 41 64 64 73 20 61 20 6c 69 |nated..Adds a li| 00009a80 6e 65 20 74 6f 20 74 68 65 20 68 69 73 74 6f 72 |ne to the histor| 00009a90 79 2e 0a 00 44 41 54 41 71 00 00 00 4c 69 6e 65 |y...DATAq...Line| 00009aa0 45 64 69 74 6f 72 5f 44 65 6c 65 74 65 4c 69 6e |Editor_DeleteLin| 00009ab0 65 0a 23 50 61 72 65 6e 74 20 4c 69 6e 65 45 64 |e.#Parent LineEd| 00009ac0 69 74 6f 72 5f 0a 3d 3e 09 52 30 20 3d 09 62 75 |itor_.=>.R0 =.bu| 00009ad0 66 66 65 72 20 68 61 6e 64 6c 65 0a 0a 44 65 6c |ffer handle..Del| 00009ae0 65 74 65 73 20 74 68 65 20 6c 61 73 74 20 6c 69 |etes the last li| 00009af0 6e 65 20 66 72 6f 6d 20 74 68 65 20 68 69 73 74 |ne from the hist| 00009b00 6f 72 79 2e 0a 00 00 00 44 41 54 41 b8 00 00 00 |ory.....DATA....| 00009b10 4c 69 6e 65 45 64 69 74 6f 72 5f 47 65 74 4c 69 |LineEditor_GetLi| 00009b20 6e 65 0a 23 50 61 72 65 6e 74 20 4c 69 6e 65 45 |ne.#Parent LineE| 00009b30 64 69 74 6f 72 5f 0a 3d 3e 09 52 30 20 3d 09 62 |ditor_.=>.R0 =.b| 00009b40 75 66 66 65 72 20 68 61 6e 64 6c 65 0a 09 52 31 |uffer handle..R1| 00009b50 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 62 75 | =.pointer to bu| 00009b60 66 66 65 72 0a 09 52 32 20 3d 09 62 75 66 66 65 |ffer..R2 =.buffe| 00009b70 72 20 6c 65 6e 67 74 68 0a 3c 3d 09 52 32 20 3d |r length.<=.R2 =| 00009b80 09 61 63 74 75 61 6c 20 6c 65 6e 67 74 68 0a 0a |.actual length..| 00009b90 52 65 61 64 73 20 74 68 65 20 70 6f 73 69 74 69 |Reads the positi| 00009ba0 6f 6e 20 69 6e 20 61 20 70 72 69 76 61 74 65 20 |on in a private | 00009bb0 68 69 73 74 6f 72 79 20 62 75 66 66 65 72 2e 0a |history buffer..| 00009bc0 44 41 54 41 8e 00 00 00 4c 69 6e 65 45 64 69 74 |DATA....LineEdit| 00009bd0 6f 72 5f 47 65 74 50 6f 73 69 74 69 6f 6e 0a 23 |or_GetPosition.#| 00009be0 50 61 72 65 6e 74 20 4c 69 6e 65 45 64 69 74 6f |Parent LineEdito| 00009bf0 72 5f 0a 3d 3e 09 52 30 20 3d 09 62 75 66 66 65 |r_.=>.R0 =.buffe| 00009c00 72 20 68 61 6e 64 6c 65 0a 3c 3d 09 52 31 20 3d |r handle.<=.R1 =| 00009c10 09 6c 69 6e 65 20 6e 75 6d 62 65 72 0a 0a 52 65 |.line number..Re| 00009c20 61 64 73 20 74 68 65 20 70 6f 73 69 74 69 6f 6e |ads the position| 00009c30 20 69 6e 20 61 20 70 72 69 76 61 74 65 20 68 69 | in a private hi| 00009c40 73 74 6f 72 79 20 62 75 66 66 65 72 2e 0a 00 00 |story buffer....| 00009c50 44 41 54 41 ca 01 00 00 4c 69 6e 65 45 64 69 74 |DATA....LineEdit| 00009c60 6f 72 5f 53 65 74 50 6f 73 69 74 69 6f 6e 0a 23 |or_SetPosition.#| 00009c70 50 61 72 65 6e 74 20 4c 69 6e 65 45 64 69 74 6f |Parent LineEdito| 00009c80 72 5f 0a 3d 3e 09 52 30 20 3d 09 62 75 66 66 65 |r_.=>.R0 =.buffe| 00009c90 72 20 68 61 6e 64 6c 65 0a 09 52 31 20 3d 09 6c |r handle..R1 =.l| 00009ca0 69 6e 65 20 6e 75 6d 62 65 72 2c 20 6f 72 20 3c |ine number, or <| 00009cb0 27 73 70 65 63 69 61 6c 27 3d 3e 2e 73 70 65 63 |'special'=>.spec| 00009cc0 69 61 6c 3e 20 63 6f 64 65 73 0a 0a 53 65 74 73 |ial> codes..Sets| 00009cd0 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 69 6e | the position in| 00009ce0 20 61 20 70 72 69 76 61 74 65 20 68 69 73 74 6f | a private histo| 00009cf0 72 79 20 62 75 66 66 65 72 2e 0a 23 53 75 62 70 |ry buffer..#Subp| 00009d00 61 67 65 20 73 70 65 63 69 61 6c 0a 53 70 65 63 |age special.Spec| 00009d10 69 61 6c 20 70 6f 73 69 74 69 6f 6e 20 63 6f 64 |ial position cod| 00009d20 65 73 0a 56 61 6c 75 65 09 09 50 6f 73 69 74 69 |es.Value..Positi| 00009d30 6f 6e 0a 23 4c 69 6e 65 0a 2d 76 65 09 09 4e 75 |on.#Line.-ve..Nu| 00009d40 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 20 66 72 |mber of lines fr| 00009d50 6f 6d 20 65 6e 64 20 6f 66 20 68 69 73 74 6f 72 |om end of histor| 00009d60 79 0a 26 37 46 46 46 46 46 46 46 09 45 6e 64 20 |y.&7FFFFFFF.End | 00009d70 6f 66 20 62 75 66 66 65 72 0a 26 38 30 30 30 30 |of buffer.&80000| 00009d80 30 30 30 09 70 72 65 76 69 6f 75 73 20 6c 69 6e |000.previous lin| 00009d90 65 2c 20 77 72 61 70 70 69 6e 67 20 74 6f 20 65 |e, wrapping to e| 00009da0 6e 64 0a 26 38 30 30 30 30 30 30 31 09 70 72 65 |nd.&80000001.pre| 00009db0 76 69 6f 75 73 20 6c 69 6e 65 2c 20 73 74 6f 70 |vious line, stop| 00009dc0 70 69 6e 67 20 61 74 20 73 74 61 72 74 0a 26 38 |ping at start.&8| 00009dd0 30 30 30 30 30 30 32 09 6e 65 78 74 20 6c 69 6e |0000002.next lin| 00009de0 65 2c 20 73 74 6f 70 70 69 6e 67 20 61 74 20 65 |e, stopping at e| 00009df0 6e 64 0a 26 38 30 30 30 30 30 30 33 09 6e 65 78 |nd.&80000003.nex| 00009e00 74 20 6c 69 6e 65 2c 20 77 72 61 70 70 69 6e 67 |t line, wrapping| 00009e10 20 74 6f 20 73 74 61 72 74 0a 00 00 44 41 54 41 | to start...DATA| 00009e20 48 01 00 00 4c 69 6e 65 45 64 69 74 6f 72 20 66 |H...LineEditor f| 00009e30 6c 61 67 73 0a 23 50 61 72 65 6e 74 20 4c 69 6e |lags.#Parent Lin| 00009e40 65 45 64 69 74 6f 72 5f 53 65 74 4f 70 74 69 6f |eEditor_SetOptio| 00009e50 6e 73 0a 42 69 74 09 4d 65 61 6e 69 6e 67 20 69 |ns.Bit.Meaning i| 00009e60 66 20 73 65 74 0a 23 4c 69 6e 65 0a 30 09 54 61 |f set.#Line.0.Ta| 00009e70 73 6b 57 69 6e 64 6f 77 73 20 68 61 76 65 20 6c |skWindows have l| 00009e80 6f 63 61 6c 20 62 75 66 66 65 72 73 0a 31 09 54 |ocal buffers.1.T| 00009e90 72 61 69 6c 69 6e 67 20 64 6f 74 73 20 77 69 6c |railing dots wil| 00009ea0 6c 20 62 65 20 61 70 70 65 6e 64 65 64 20 74 6f |l be appended to| 00009eb0 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6d 70 6c | directory compl| 00009ec0 65 74 69 6f 6e 73 0a 32 09 44 65 66 61 75 6c 74 |etions.2.Default| 00009ed0 20 74 6f 20 6f 76 65 72 74 79 70 65 20 6d 6f 64 | to overtype mod| 00009ee0 65 0a 33 09 4b 65 65 70 20 64 75 70 6c 69 63 61 |e.3.Keep duplica| 00009ef0 74 65 20 6c 69 6e 65 73 20 69 6e 20 68 69 73 74 |te lines in hist| 00009f00 6f 72 79 0a 34 09 44 6f 6e 27 74 20 64 6f 20 7e |ory.4.Don't do ~| 00009f10 20 65 78 70 61 6e 73 69 6f 6e 0a 35 09 44 6f 6e | expansion.5.Don| 00009f20 27 74 20 64 65 20 21 2d 74 79 70 65 20 65 76 65 |'t de !-type eve| 00009f30 6e 74 73 20 28 65 67 20 21 21 29 0a 36 09 44 6f |nts (eg !!).6.Do| 00009f40 6e 27 74 20 64 6f 20 5e 74 77 6f 5e 74 68 72 65 |n't do ^two^thre| 00009f50 65 20 74 79 70 65 20 72 65 70 6c 61 63 65 6d 65 |e type replaceme| 00009f60 6e 74 73 0a 44 41 54 41 07 01 00 00 4c 69 6e 65 |nts.DATA....Line| 00009f70 45 64 69 74 6f 72 20 63 75 72 73 6f 72 73 0a 23 |Editor cursors.#| 00009f80 50 61 72 65 6e 74 20 4c 69 6e 65 45 64 69 74 6f |Parent LineEdito| 00009f90 72 5f 53 65 74 4f 70 74 69 6f 6e 73 0a 42 79 74 |r_SetOptions.Byt| 00009fa0 65 09 43 6f 6e 74 65 6e 74 73 0a 23 4c 69 6e 65 |e.Contents.#Line| 00009fb0 0a 30 09 4e 6f 72 6d 61 6c 20 63 75 72 73 6f 72 |.0.Normal cursor| 00009fc0 20 74 79 70 65 0a 31 09 4f 76 65 72 74 79 70 65 | type.1.Overtype| 00009fd0 20 63 75 72 73 6f 72 20 74 79 70 65 0a 0a 43 75 | cursor type..Cu| 00009fe0 72 73 6f 72 20 74 79 70 65 73 3a 0a 0a 42 69 74 |rsor types:..Bit| 00009ff0 09 4d 65 61 6e 69 6e 67 20 69 66 20 73 65 74 0a |.Meaning if set.| 0000a000 23 4c 69 6e 65 0a 30 09 63 75 72 73 6f 72 20 69 |#Line.0.cursor i| 0000a010 73 20 61 20 62 6c 6f 63 6b 2c 20 6f 74 68 65 72 |s a block, other| 0000a020 77 69 73 65 20 63 75 72 73 6f 72 20 69 73 20 61 |wise cursor is a| 0000a030 6e 20 75 6e 64 65 72 6c 69 6e 65 0a 31 09 63 75 |n underline.1.cu| 0000a040 72 73 6f 72 20 69 73 20 73 74 65 61 64 79 2c 20 |rsor is steady, | 0000a050 6f 74 68 65 72 77 69 73 65 20 63 75 72 73 6f 72 |otherwise cursor| 0000a060 20 69 73 20 63 75 72 73 6f 72 0a 00 44 49 52 24 | is cursor..DIR$| 0000a070 2c 00 00 00 2c 00 00 00 98 a0 00 00 46 fd ff ff |,...,.......F...| 0000a080 9c e4 dc 14 50 00 00 00 13 00 00 00 00 00 00 00 |....P...........| 0000a090 21 52 6f 6f 74 00 00 00 44 41 54 41 50 00 00 00 |!Root...DATAP...| 0000a0a0 4c 5a 57 42 0a 23 50 61 72 65 6e 74 20 21 52 6f |LZWB.#Parent !Ro| 0000a0b0 6f 74 0a 23 50 72 65 66 69 78 20 4c 5a 57 42 5f |ot.#Prefix LZWB_| 0000a0c0 0a 43 6f 6d 70 72 65 73 73 0a 44 65 63 6f 6d 70 |.Compress.Decomp| 0000a0d0 72 65 73 73 0a 54 61 73 6b 53 74 61 72 74 0a 54 |ress.TaskStart.T| 0000a0e0 61 73 6b 51 75 69 74 0a 44 49 52 24 50 00 00 00 |askQuit.DIR$P...| 0000a0f0 50 00 00 00 38 a1 00 00 47 fd ff ff f8 54 07 0c |P...8...G....T..| 0000a100 51 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |Q...........!Roo| 0000a110 74 00 00 00 8c a1 00 00 47 ff ff ff 10 54 07 0c |t.......G....T..| 0000a120 a0 01 00 00 13 00 00 00 00 00 00 00 44 65 63 6f |............Deco| 0000a130 6d 70 72 65 73 73 00 00 44 41 54 41 51 00 00 00 |mpress..DATAQ...| 0000a140 4c 5a 57 44 0a 23 50 61 72 65 6e 74 20 21 52 6f |LZWD.#Parent !Ro| 0000a150 6f 74 0a 23 50 72 65 66 69 78 20 4c 5a 57 44 5f |ot.#Prefix LZWD_| 0000a160 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 0000a170 32 0a 3c 44 65 63 6f 6d 70 72 65 73 73 3e 0a 23 |2.<Decompress>.#| 0000a180 45 6e 64 54 61 62 6c 65 0a 00 00 00 44 41 54 41 |EndTable....DATA| 0000a190 a0 01 00 00 4c 5a 57 44 5f 44 65 63 6f 6d 70 72 |....LZWD_Decompr| 0000a1a0 65 73 73 20 20 28 26 43 44 31 30 30 29 0a 23 50 |ess (&CD100).#P| 0000a1b0 61 72 65 6e 74 20 4c 5a 57 44 5f 0a 3d 3e 09 52 |arent LZWD_.=>.R| 0000a1c0 30 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 73 |0 =.pointer to s| 0000a1d0 6f 75 72 63 65 20 66 69 6c 65 6e 61 6d 65 0a 09 |ource filename..| 0000a1e0 52 31 20 3d 09 64 65 73 74 69 6e 61 74 69 6f 6e |R1 =.destination| 0000a1f0 20 61 64 64 72 65 73 73 0a 09 52 32 20 3d 09 6c | address..R2 =.l| 0000a200 65 6e 67 74 68 20 6f 66 20 64 65 73 74 69 6e 61 |ength of destina| 0000a210 74 69 6f 6e 20 62 75 66 66 65 72 0a 0a 3c 3d 09 |tion buffer..<=.| 0000a220 52 30 20 63 6f 72 72 75 70 74 65 64 20 6f 72 20 |R0 corrupted or | 0000a230 65 72 72 6f 72 20 62 6c 6f 63 6b 20 70 6f 69 6e |error block poin| 0000a240 74 65 72 0a 09 52 32 20 3d 09 6c 65 6e 67 74 68 |ter..R2 =.length| 0000a250 20 6f 66 20 62 79 74 65 73 20 75 73 65 64 20 69 | of bytes used i| 0000a260 6e 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 62 75 |n destination bu| 0000a270 66 66 65 72 0a 09 61 6c 6c 20 6f 74 68 65 72 20 |ffer..all other | 0000a280 72 65 67 69 73 74 65 72 73 20 70 72 65 73 65 72 |registers preser| 0000a290 76 65 64 0a 0a 54 68 69 73 20 63 61 6c 6c 20 69 |ved..This call i| 0000a2a0 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 64 20 69 |s not provided i| 0000a2b0 6e 20 74 68 65 20 6d 61 69 6e 20 6d 6f 64 75 6c |n the main modul| 0000a2c0 65 20 62 75 74 20 69 6e 20 74 68 65 20 73 6d 61 |e but in the sma| 0000a2d0 6c 6c 2c 20 65 78 74 72 61 20 66 6f 72 20 64 65 |ll, extra for de| 0000a2e0 6d 6f 73 20 6f 72 20 73 6f 20 77 72 69 74 74 65 |mos or so writte| 0000a2f0 6e 20 6d 69 6e 69 20 6d 6f 64 75 6c 65 20 4c 5a |n mini module LZ| 0000a300 57 44 2e 20 49 74 20 69 73 20 32 35 25 20 66 61 |WD. It is 25% fa| 0000a310 73 74 65 72 20 74 68 61 6e 20 3c 4c 5a 57 5f 44 |ster than <LZW_D| 0000a320 65 63 6f 6d 70 72 65 73 73 3e 2e 0a 44 49 52 24 |ecompress>..DIR$| 0000a330 98 00 00 00 98 00 00 00 c4 a3 00 00 47 fd ff ff |............G...| 0000a340 cf 5a 07 0c 4c 00 00 00 13 00 00 00 00 00 00 00 |.Z..L...........| 0000a350 21 52 6f 6f 74 00 00 00 10 a4 00 00 47 ff ff ff |!Root.......G...| 0000a360 30 0d 07 0c c6 02 00 00 13 00 00 00 00 00 00 00 |0...............| 0000a370 43 6f 6d 70 72 65 73 73 00 00 00 00 d8 a6 00 00 |Compress........| 0000a380 47 ff ff ff 24 63 07 0c cf 02 00 00 13 00 00 00 |G...$c..........| 0000a390 00 00 00 00 44 65 63 6f 6d 70 72 65 73 73 00 00 |....Decompress..| 0000a3a0 a8 a9 00 00 47 ff ff ff f7 3f 07 0c 86 00 00 00 |....G....?......| 0000a3b0 13 00 00 00 00 00 00 00 43 6f 6d 70 72 65 73 73 |........Compress| 0000a3c0 4f 6e 00 00 44 41 54 41 4c 00 00 00 4c 5a 57 0a |On..DATAL...LZW.| 0000a3d0 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 |#Parent !Root.#P| 0000a3e0 72 65 66 69 78 20 4c 5a 57 5f 0a 3c 43 6f 6d 70 |refix LZW_.<Comp| 0000a3f0 72 65 73 73 3e 0a 3c 44 65 63 6f 6d 70 72 65 73 |ress>.<Decompres| 0000a400 73 3e 0a 3c 43 6f 6d 70 72 65 73 73 4f 6e 3e 0a |s>.<CompressOn>.| 0000a410 44 41 54 41 c6 02 00 00 4c 5a 57 5f 43 6f 6d 70 |DATA....LZW_Comp| 0000a420 72 65 73 73 20 20 28 26 43 44 30 30 30 29 0a 23 |ress (&CD000).#| 0000a430 50 61 72 65 6e 74 20 4c 5a 57 5f 0a 3d 3e 09 52 |Parent LZW_.=>.R| 0000a440 30 20 3d 09 66 6c 61 67 73 0a 09 20 09 62 69 74 |0 =.flags.. .bit| 0000a450 20 30 20 3d 09 31 20 73 6f 75 72 63 65 20 69 6e | 0 =.1 source in| 0000a460 20 6d 65 6d 6f 72 79 0a 09 20 09 20 09 30 20 73 | memory.. . .0 s| 0000a470 6f 75 72 63 65 20 69 73 20 61 20 66 69 6c 65 0a |ource is a file.| 0000a480 09 20 09 62 69 74 20 31 20 3d 09 31 20 64 65 73 |. .bit 1 =.1 des| 0000a490 74 69 6e 61 74 69 6f 6e 20 69 6e 20 6d 65 6d 6f |tination in memo| 0000a4a0 72 79 0a 09 20 09 20 09 30 20 64 65 73 74 69 6e |ry.. . .0 destin| 0000a4b0 61 74 69 6f 6e 20 69 73 20 61 20 66 69 6c 65 0a |ation is a file.| 0000a4c0 09 52 31 20 3d 09 61 64 64 72 65 73 73 20 69 6e |.R1 =.address in| 0000a4d0 20 6d 65 6d 6f 72 79 20 69 66 20 62 69 74 20 30 | memory if bit 0| 0000a4e0 20 3d 20 31 0a 09 20 09 70 6f 69 6e 74 65 72 20 | = 1.. .pointer | 0000a4f0 74 6f 20 73 6f 75 72 63 65 20 6e 61 6d 65 20 69 |to source name i| 0000a500 66 20 62 69 74 20 30 20 3d 20 30 0a 09 52 32 20 |f bit 0 = 0..R2 | 0000a510 3d 09 64 65 73 74 69 6e 61 74 69 6f 6e 20 61 64 |=.destination ad| 0000a520 64 72 65 73 73 20 69 66 20 62 69 74 20 31 3d 20 |dress if bit 1= | 0000a530 31 0a 09 20 09 70 6f 69 6e 74 65 72 20 74 6f 20 |1.. .pointer to | 0000a540 64 65 73 74 69 6e 61 74 69 6f 6e 20 6e 61 6d 65 |destination name| 0000a550 20 62 69 74 20 31 3d 20 30 0a 09 52 33 20 3d 09 | bit 1= 0..R3 =.| 0000a560 69 66 20 62 69 74 20 30 3d 20 31 20 6c 65 6e 67 |if bit 0= 1 leng| 0000a570 74 68 20 6f 66 20 73 6f 75 72 63 65 20 69 6e 20 |th of source in | 0000a580 62 79 74 65 73 0a 09 52 34 20 3d 09 69 66 20 62 |bytes..R4 =.if b| 0000a590 69 74 20 31 3d 20 31 20 6c 65 6e 67 74 68 20 6f |it 1= 1 length o| 0000a5a0 66 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 62 75 |f destination bu| 0000a5b0 66 66 65 72 0a 0a 3c 3d 09 52 30 20 69 73 20 63 |ffer..<=.R0 is c| 0000a5c0 6f 72 72 75 70 74 65 64 20 6f 72 20 63 6f 6e 74 |orrupted or cont| 0000a5d0 61 69 6e 73 20 65 72 72 6f 72 20 70 6f 69 6e 74 |ains error point| 0000a5e0 65 72 0a 09 52 35 20 3d 20 69 66 20 62 69 74 20 |er..R5 = if bit | 0000a5f0 31 3d 20 31 20 6e 75 6d 62 65 72 20 6f 66 20 62 |1= 1 number of b| 0000a600 79 74 65 73 20 75 73 65 64 0a 09 61 6c 6c 20 6f |ytes used..all o| 0000a610 74 68 65 72 20 72 65 67 69 73 74 65 72 20 61 72 |ther register ar| 0000a620 65 20 70 72 65 73 65 72 76 65 64 0a 0a 54 68 69 |e preserved..Thi| 0000a630 73 20 63 61 6c 6c 20 63 6f 6d 70 72 65 73 73 65 |s call compresse| 0000a640 73 20 61 20 66 69 6c 65 20 6f 72 20 61 20 62 6c |s a file or a bl| 0000a650 6f 63 6b 20 6f 66 20 64 61 74 61 20 69 6e 20 6d |ock of data in m| 0000a660 65 6d 6f 72 79 20 74 6f 20 61 20 66 69 6c 65 20 |emory to a file | 0000a670 6f 72 20 61 20 62 6c 6f 63 6b 20 6f 66 20 64 61 |or a block of da| 0000a680 74 61 20 69 6e 20 6d 65 6d 6f 72 79 20 75 73 69 |ta in memory usi| 0000a690 6e 67 20 74 68 65 20 4c 5a 57 20 63 6f 6d 70 72 |ng the LZW compr| 0000a6a0 65 73 73 69 6e 67 20 61 6c 67 6f 72 69 74 68 6d |essing algorithm| 0000a6b0 2e 20 41 73 20 62 75 66 66 65 72 20 69 74 20 75 |. As buffer it u| 0000a6c0 73 65 73 20 74 68 65 20 73 63 72 65 65 6e 20 6d |ses the screen m| 0000a6d0 65 6d 6f 72 79 2e 00 00 44 41 54 41 cf 02 00 00 |emory...DATA....| 0000a6e0 4c 5a 57 5f 44 65 63 6f 6d 70 72 65 73 73 20 20 |LZW_Decompress | 0000a6f0 28 26 43 44 30 30 31 29 0a 23 50 61 72 65 6e 74 |(&CD001).#Parent| 0000a700 20 4c 5a 57 5f 0a 3d 3e 09 52 30 20 3d 09 66 6c | LZW_.=>.R0 =.fl| 0000a710 61 67 73 0a 09 20 09 62 69 74 20 30 20 3d 09 31 |ags.. .bit 0 =.1| 0000a720 20 73 6f 75 72 63 65 20 69 6e 20 6d 65 6d 6f 72 | source in memor| 0000a730 79 0a 09 20 09 20 09 30 20 73 6f 75 72 63 65 20 |y.. . .0 source | 0000a740 69 73 20 61 20 66 69 6c 65 0a 09 20 09 62 69 74 |is a file.. .bit| 0000a750 20 31 20 3d 09 31 20 64 65 73 74 69 6e 61 74 69 | 1 =.1 destinati| 0000a760 6f 6e 20 69 6e 20 6d 65 6d 6f 72 79 0a 09 20 09 |on in memory.. .| 0000a770 20 09 30 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 | .0 destination | 0000a780 69 73 20 61 20 66 69 6c 65 0a 09 52 31 20 3d 09 |is a file..R1 =.| 0000a790 61 64 64 72 65 73 73 20 69 6e 20 6d 65 6d 6f 72 |address in memor| 0000a7a0 79 20 69 66 20 62 69 74 20 30 3d 20 31 0a 09 20 |y if bit 0= 1.. | 0000a7b0 09 70 6f 69 6e 74 65 72 20 74 6f 20 73 6f 75 72 |.pointer to sour| 0000a7c0 63 65 20 6e 61 6d 65 20 69 66 20 62 69 74 20 30 |ce name if bit 0| 0000a7d0 3d 20 30 0a 09 52 32 20 3d 09 64 65 73 74 69 6e |= 0..R2 =.destin| 0000a7e0 61 74 69 6f 6e 20 61 64 64 72 65 73 73 20 69 66 |ation address if| 0000a7f0 20 62 69 74 20 31 3d 20 31 0a 09 20 09 70 6f 69 | bit 1= 1.. .poi| 0000a800 6e 74 65 72 20 74 6f 20 64 65 73 74 69 6e 61 74 |nter to destinat| 0000a810 69 6f 6e 20 6e 61 6d 65 20 62 69 74 20 31 3d 20 |ion name bit 1= | 0000a820 30 0a 09 52 33 20 3d 09 69 66 20 62 69 74 20 30 |0..R3 =.if bit 0| 0000a830 3d 20 31 20 6c 65 6e 67 74 68 20 6f 66 20 73 6f |= 1 length of so| 0000a840 75 72 63 65 20 69 6e 20 62 79 74 65 73 0a 09 52 |urce in bytes..R| 0000a850 34 20 3d 09 69 66 20 62 69 74 20 31 3d 20 31 20 |4 =.if bit 1= 1 | 0000a860 6c 65 6e 67 74 68 20 6f 66 20 64 65 73 74 69 6e |length of destin| 0000a870 61 74 69 6f 6e 20 62 75 66 66 65 72 0a 0a 3c 3d |ation buffer..<=| 0000a880 09 52 30 20 69 73 20 63 6f 72 72 75 70 74 65 64 |.R0 is corrupted| 0000a890 20 6f 72 20 63 6f 6e 74 61 69 6e 73 20 65 72 72 | or contains err| 0000a8a0 6f 72 20 70 6f 69 6e 74 65 72 0a 09 52 35 20 3d |or pointer..R5 =| 0000a8b0 09 69 66 20 62 69 74 20 31 3d 20 31 20 6e 75 6d |.if bit 1= 1 num| 0000a8c0 62 65 72 20 6f 66 20 62 79 74 65 73 20 75 73 65 |ber of bytes use| 0000a8d0 64 0a 09 61 6c 6c 20 6f 74 68 65 72 20 72 65 67 |d..all other reg| 0000a8e0 69 73 74 65 72 20 61 72 65 20 70 72 65 73 65 72 |ister are preser| 0000a8f0 76 65 64 0a 0a 54 68 69 73 20 63 61 6c 6c 20 64 |ved..This call d| 0000a900 65 63 6f 6d 70 72 65 73 73 65 73 20 61 20 66 69 |ecompresses a fi| 0000a910 6c 65 20 6f 72 20 61 20 62 6c 6f 63 6b 20 6f 66 |le or a block of| 0000a920 20 64 61 74 61 20 69 6e 20 6d 65 6d 6f 72 79 20 | data in memory | 0000a930 74 6f 20 61 20 66 69 6c 65 20 6f 72 20 61 20 62 |to a file or a b| 0000a940 6c 6f 63 6b 20 6f 66 20 64 61 74 61 20 69 6e 20 |lock of data in | 0000a950 6d 65 6d 6f 72 79 20 70 61 63 6b 65 64 20 75 73 |memory packed us| 0000a960 69 6e 67 20 74 68 65 20 4c 5a 57 20 63 6f 6d 70 |ing the LZW comp| 0000a970 72 65 73 73 69 6e 67 20 61 6c 67 6f 72 69 74 68 |ressing algorith| 0000a980 6d 2e 20 41 73 20 62 75 66 66 65 72 20 69 74 20 |m. As buffer it | 0000a990 75 73 65 73 20 74 68 65 20 73 63 72 65 65 6e 20 |uses the screen | 0000a9a0 6d 65 6d 6f 72 79 2e 00 44 41 54 41 86 00 00 00 |memory..DATA....| 0000a9b0 4c 5a 57 5f 43 6f 6d 70 72 65 73 73 4f 6e 20 20 |LZW_CompressOn | 0000a9c0 28 26 43 44 30 30 32 29 0a 23 50 61 72 65 6e 74 |(&CD002).#Parent| 0000a9d0 20 4c 5a 57 5f 0a 57 6f 72 6b 73 20 61 73 20 3c | LZW_.Works as <| 0000a9e0 4c 5a 57 5f 43 6f 6d 70 72 65 73 73 3e 20 62 75 |LZW_Compress> bu| 0000a9f0 74 20 61 70 70 65 6e 64 73 20 74 68 65 20 63 6f |t appends the co| 0000aa00 6d 70 72 65 73 73 65 64 20 64 61 74 61 20 74 6f |mpressed data to| 0000aa10 20 61 6e 20 65 78 69 73 74 69 6e 67 20 64 65 73 | an existing des| 0000aa20 74 69 6e 61 74 69 6f 6e 20 66 69 6c 65 2e 00 00 |tination file...| 0000aa30 44 49 52 24 2c 00 00 00 2c 00 00 00 5c aa 00 00 |DIR$,...,...\...| 0000aa40 46 fd ff ff ef 11 76 15 6c 00 00 00 13 00 00 00 |F.....v.l.......| 0000aa50 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 0000aa60 6c 00 00 00 4d 61 6b 65 47 49 46 0a 23 50 61 72 |l...MakeGIF.#Par| 0000aa70 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 |ent !Root.#Prefi| 0000aa80 78 20 4d 61 6b 65 47 49 46 5f 0a 23 54 61 62 6c |x MakeGIF_.#Tabl| 0000aa90 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 53 65 74 56 |e Columns 2.SetV| 0000aaa0 61 72 69 61 62 6c 65 0a 52 65 61 64 56 61 72 69 |ariable.ReadVari| 0000aab0 61 62 6c 65 0a 43 6f 6d 70 72 65 73 73 0a 23 45 |able.Compress.#E| 0000aac0 6e 64 54 61 62 6c 65 0a 44 49 52 24 2c 00 00 00 |ndTable.DIR$,...| 0000aad0 2c 00 00 00 f4 aa 00 00 47 fd ff ff 3a 69 7d 82 |,.......G...:i}.| 0000aae0 81 00 00 00 03 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 0000aaf0 74 00 00 00 44 41 54 41 81 00 00 00 4d 6f 44 65 |t...DATA....MoDe| 0000ab00 6c 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a |l.#Parent !Root.| 0000ab10 23 50 72 65 66 69 78 20 4d 6f 44 65 6c 5f 0a 23 |#Prefix MoDel_.#| 0000ab20 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a |Table Columns 2.| 0000ab30 4f 6e 0a 4f 66 66 0a 41 64 64 72 65 73 73 0a 57 |On.Off.Address.W| 0000ab40 61 74 63 68 46 69 6c 65 73 0a 4c 6f 73 65 46 69 |atchFiles.LoseFi| 0000ab50 6c 65 73 0a 49 67 6e 6f 72 65 44 69 73 63 73 0a |les.IgnoreDiscs.| 0000ab60 57 61 74 63 68 44 69 73 63 73 0a 23 45 6e 64 54 |WatchDiscs.#EndT| 0000ab70 61 62 6c 65 0a 00 00 00 44 49 52 24 2c 00 00 00 |able....DIR$,...| 0000ab80 2c 00 00 00 a4 ab 00 00 46 fd ff ff 43 11 76 15 |,.......F...C.v.| 0000ab90 91 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 0000aba0 74 00 00 00 44 41 54 41 91 00 00 00 4e 65 74 4d |t...DATA....NetM| 0000abb0 6f 6e 69 74 6f 72 0a 23 50 61 72 65 6e 74 20 21 |onitor.#Parent !| 0000abc0 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 4e 65 74 |Root.#Prefix Net| 0000abd0 4d 6f 6e 69 74 6f 72 5f 0a 23 54 61 62 6c 65 20 |Monitor_.#Table | 0000abe0 43 6f 6c 75 6d 6e 73 20 32 0a 50 72 69 6e 74 43 |Columns 2.PrintC| 0000abf0 68 61 72 0a 44 65 66 69 6e 65 54 61 73 6b 0a 41 |har.DefineTask.A| 0000ac00 62 61 6e 64 6f 6e 54 61 73 6b 0a 43 6f 6e 76 65 |bandonTask.Conve| 0000ac10 72 74 46 6f 6e 74 0a 55 73 65 46 6f 6e 74 0a 52 |rtFont.UseFont.R| 0000ac20 65 73 74 6f 72 65 46 6f 6e 74 0a 23 45 6e 64 54 |estoreFont.#EndT| 0000ac30 61 62 6c 65 0a 00 00 00 44 49 52 24 2c 00 00 00 |able....DIR$,...| 0000ac40 2c 00 00 00 64 ac 00 00 47 fd ff ff dc 10 84 82 |,...d...G.......| 0000ac50 4c 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |L...........!Roo| 0000ac60 74 00 00 00 44 41 54 41 4c 00 00 00 4e 48 0a 23 |t...DATAL...NH.#| 0000ac70 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 |Parent !Root.#Pr| 0000ac80 65 66 69 78 20 4e 48 5f 0a 23 54 61 62 6c 65 20 |efix NH_.#Table | 0000ac90 43 6f 6c 75 6d 6e 73 20 32 0a 41 6e 74 69 54 77 |Columns 2.AntiTw| 0000aca0 69 74 74 65 72 0a 23 45 6e 64 54 61 62 6c 65 0a |itter.#EndTable.| 0000acb0 44 49 52 24 2c 00 00 00 2c 00 00 00 dc ac 00 00 |DIR$,...,.......| 0000acc0 47 fd ff ff 1b 6a ab ca 47 01 00 00 13 00 00 00 |G....j..G.......| 0000acd0 00 00 00 00 21 72 6f 6f 74 00 00 00 44 41 54 41 |....!root...DATA| 0000ace0 47 01 00 00 4f 4c 45 0a 23 50 61 72 65 6e 74 20 |G...OLE.#Parent | 0000acf0 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 4f 4c |!Root.#Prefix OL| 0000ad00 45 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e |E_.#Table Column| 0000ad10 73 32 0a 56 65 72 73 69 6f 6e 0a 4c 69 6e 6b 46 |s2.Version.LinkF| 0000ad20 69 6c 65 0a 44 65 4c 69 6e 6b 46 69 6c 65 0a 46 |ile.DeLinkFile.F| 0000ad30 69 6c 65 53 74 61 74 75 73 0a 49 6e 76 61 6c 69 |ileStatus.Invali| 0000ad40 64 61 74 65 0a 53 69 6d 75 6c 61 74 65 53 65 73 |date.SimulateSes| 0000ad50 73 69 6f 6e 0a 23 45 6e 64 54 61 62 6c 65 0a 0a |sion.#EndTable..| 0000ad60 4d 65 73 73 61 67 65 73 20 3a 0a 23 57 72 61 70 |Messages :.#Wrap| 0000ad70 20 6f 66 66 0a 23 49 6e 64 65 6e 74 20 32 0a 3c | off.#Indent 2.<| 0000ad80 38 30 45 31 45 20 4f 4c 45 5f 46 69 6c 65 43 68 |80E1E OLE_FileCh| 0000ad90 61 6e 67 65 64 3d 3e 77 69 6d 70 3a 4d 73 67 5f |anged=>wimp:Msg_| 0000ada0 38 30 45 31 45 3e 0a 3c 38 30 45 32 31 20 4f 4c |80E1E>.<80E21 OL| 0000adb0 45 5f 4f 70 65 6e 53 65 73 73 69 6f 6e 3d 3e 77 |E_OpenSession=>w| 0000adc0 69 6d 70 3a 6d 73 67 5f 38 30 45 32 31 3e 0a 3c |imp:msg_80E21>.<| 0000add0 38 30 45 32 32 20 4f 4c 45 5f 4f 70 65 6e 53 65 |80E22 OLE_OpenSe| 0000ade0 73 73 69 6f 6e 41 63 6b 3d 3e 77 69 6d 70 3a 6d |ssionAck=>wimp:m| 0000adf0 73 67 5f 38 30 45 32 32 3e 0a 3c 38 30 45 32 33 |sg_80E22>.<80E23| 0000ae00 20 4f 4c 45 5f 43 6c 6f 73 65 53 65 73 73 69 6f | OLE_CloseSessio| 0000ae10 6e 3d 3e 77 69 6d 70 3a 6d 73 67 5f 38 30 45 32 |n=>wimp:msg_80E2| 0000ae20 33 3e 0a 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |3>..DIR$,...,...| 0000ae30 50 ae 00 00 46 fd ff ff fd b3 c4 55 05 01 00 00 |P...F......U....| 0000ae40 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 0000ae50 44 41 54 41 05 01 00 00 50 6f 63 6b 65 74 46 53 |DATA....PocketFS| 0000ae60 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 0000ae70 50 72 65 66 69 78 20 50 6f 63 6b 65 74 46 53 5f |Prefix PocketFS_| 0000ae80 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 0000ae90 32 0a 54 69 63 6b 65 72 0a 53 65 72 69 61 6c 4f |2.Ticker.SerialO| 0000aea0 70 65 6e 0a 53 65 72 69 61 6c 43 6c 6f 73 65 0a |pen.SerialClose.| 0000aeb0 53 65 72 69 61 6c 53 65 74 44 54 52 0a 53 65 72 |SerialSetDTR.Ser| 0000aec0 69 61 6c 53 65 74 52 54 53 0a 53 65 72 69 61 6c |ialSetRTS.Serial| 0000aed0 50 72 69 6d 65 54 58 0a 47 65 74 43 61 63 68 65 |PrimeTX.GetCache| 0000aee0 4d 65 6d 0a 46 72 65 65 43 61 63 68 65 4d 65 6d |Mem.FreeCacheMem| 0000aef0 0a 43 61 63 68 65 49 6e 69 74 0a 43 61 63 68 65 |.CacheInit.Cache| 0000af00 46 69 6e 61 6c 0a 44 65 73 63 72 69 62 65 43 61 |Final.DescribeCa| 0000af10 63 68 65 0a 43 61 63 68 65 42 6c 6f 63 6b 0a 46 |che.CacheBlock.F| 0000af20 69 6e 64 43 61 63 68 65 45 6e 74 72 79 0a 53 74 |indCacheEntry.St| 0000af30 61 74 75 73 0a 44 69 73 6d 6f 75 6e 74 0a 53 6f |atus.Dismount.So| 0000af40 66 74 44 69 73 6d 6f 75 6e 74 0a 23 45 6e 64 54 |ftDismount.#EndT| 0000af50 61 62 6c 65 0a 00 00 00 44 49 52 24 2c 00 00 00 |able....DIR$,...| 0000af60 2c 00 00 00 84 af 00 00 46 fd ff ff 6f f5 c4 55 |,.......F...o..U| 0000af70 45 01 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |E...........!Roo| 0000af80 74 00 00 00 44 41 54 41 45 01 00 00 50 6f 63 6b |t...DATAE...Pock| 0000af90 65 74 4c 69 6e 6b 0a 23 50 61 72 65 6e 74 20 21 |etLink.#Parent !| 0000afa0 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 50 6f 63 |Root.#Prefix Poc| 0000afb0 6b 65 74 4c 69 6e 6b 5f 0a 23 54 61 62 6c 65 20 |ketLink_.#Table | 0000afc0 43 6f 6c 75 6d 6e 73 20 33 0a 53 74 61 72 74 4c |Columns 3.StartL| 0000afd0 69 6e 6b 0a 43 6c 6f 73 65 4c 69 6e 6b 0a 70 5f |ink.CloseLink.p_| 0000afe0 6f 70 65 6e 0a 70 5f 63 6c 6f 73 65 0a 70 5f 72 |open.p_close.p_r| 0000aff0 65 61 64 0a 70 5f 77 72 69 74 65 0a 70 5f 69 6f |ead.p_write.p_io| 0000b000 77 0a 45 6e 71 75 69 72 65 0a 45 72 72 6f 72 43 |w.Enquire.ErrorC| 0000b010 6f 6e 76 0a 50 61 6e 69 63 43 6f 6e 76 0a 70 5f |onv.PanicConv.p_| 0000b020 66 70 61 72 73 65 0a 70 5f 63 68 64 69 72 0a 70 |fparse.p_chdir.p| 0000b030 5f 64 65 6c 65 74 65 0a 70 5f 72 65 6e 61 6d 65 |_delete.p_rename| 0000b040 0a 70 5f 6d 6b 64 69 72 0a 70 5f 73 66 73 74 61 |.p_mkdir.p_sfsta| 0000b050 74 0a 70 5f 66 64 61 74 65 0a 70 5f 74 65 73 74 |t.p_fdate.p_test| 0000b060 70 74 68 0a 70 5f 66 69 6e 66 6f 0a 70 5f 64 69 |pth.p_finfo.p_di| 0000b070 6e 66 6f 0a 70 5f 6e 69 6e 66 6f 0a 44 61 74 65 |nfo.p_ninfo.Date| 0000b080 54 6f 50 6f 63 6b 65 74 0a 5a 61 70 4c 69 6e 6b |ToPocket.ZapLink| 0000b090 0a 44 61 74 65 46 72 6f 6d 50 6f 63 6b 65 74 0a |.DateFromPocket.| 0000b0a0 4e 61 6d 65 46 72 6f 6d 48 61 6e 64 6c 65 0a 70 |NameFromHandle.p| 0000b0b0 5f 73 65 65 6b 0a 70 5f 6c 6f 63 63 68 67 0a 23 |_seek.p_locchg.#| 0000b0c0 45 6e 64 54 61 62 6c 65 0a 00 00 00 44 49 52 24 |EndTable....DIR$| 0000b0d0 2c 00 00 00 2c 00 00 00 f8 b0 00 00 47 fd ff ff |,...,.......G...| 0000b0e0 de 6b 7d 82 78 00 00 00 03 00 00 00 00 00 00 00 |.k}.x...........| 0000b0f0 21 52 6f 6f 74 00 00 00 44 41 54 41 78 00 00 00 |!Root...DATAx...| 0000b100 50 50 41 44 72 69 76 65 72 0a 23 50 61 72 65 6e |PPADriver.#Paren| 0000b110 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 |t !Root.#Prefix | 0000b120 50 50 41 44 72 69 76 65 72 5f 0a 23 54 61 62 6c |PPADriver_.#Tabl| 0000b130 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 49 6e 69 74 |e Columns 2.Init| 0000b140 69 61 6c 69 73 65 0a 53 43 53 49 43 6f 6d 6d 61 |ialise.SCSIComma| 0000b150 6e 64 0a 53 43 53 49 43 6f 6d 6d 61 6e 64 52 65 |nd.SCSICommandRe| 0000b160 74 72 69 65 73 0a 23 45 6e 64 54 61 62 6c 65 0a |tries.#EndTable.| 0000b170 44 49 52 24 74 04 00 00 74 04 00 00 e4 b5 00 00 |DIR$t...t.......| 0000b180 46 fd ff ff 9e 49 93 a5 af 01 00 00 13 00 00 00 |F....I..........| 0000b190 00 00 00 00 21 52 6f 6f 74 00 00 00 94 b7 00 00 |....!Root.......| 0000b1a0 46 ff ff ff 66 75 e0 d0 f4 06 00 00 13 00 00 00 |F...fu..........| 0000b1b0 00 00 00 00 4c 6f 61 64 00 00 00 00 88 be 00 00 |....Load........| 0000b1c0 46 ff ff ff 2d 59 93 a5 c3 00 00 00 13 00 00 00 |F...-Y..........| 0000b1d0 00 00 00 00 53 74 61 72 74 00 00 00 4c bf 00 00 |....Start...L...| 0000b1e0 46 ff ff ff 62 5e 93 a5 fa 00 00 00 13 00 00 00 |F...b^..........| 0000b1f0 00 00 00 00 53 74 6f 70 00 00 00 00 48 c0 00 00 |....Stop....H...| 0000b200 46 ff ff ff c0 63 93 a5 ed 00 00 00 13 00 00 00 |F....c..........| 0000b210 00 00 00 00 50 61 75 73 65 00 00 00 38 c1 00 00 |....Pause...8...| 0000b220 46 ff ff ff 80 69 93 a5 70 03 00 00 13 00 00 00 |F....i..p.......| 0000b230 00 00 00 00 43 6c 65 61 72 00 00 00 a8 c4 00 00 |....Clear.......| 0000b240 46 ff ff ff 44 7d 93 a5 ba 05 00 00 13 00 00 00 |F...D}..........| 0000b250 00 00 00 00 49 6e 66 6f 00 00 00 00 64 ca 00 00 |....Info....d...| 0000b260 46 ff ff ff a4 84 93 a5 98 01 00 00 13 00 00 00 |F...............| 0000b270 00 00 00 00 50 6f 73 00 fc cb 00 00 46 ff ff ff |....Pos.....F...| 0000b280 f4 2c 98 a5 dc 03 00 00 13 00 00 00 00 00 00 00 |.,..............| 0000b290 45 66 66 65 63 74 43 6f 6e 74 72 6f 6c 00 00 00 |EffectControl...| 0000b2a0 d8 cf 00 00 46 ff ff ff 08 94 93 a5 7d 01 00 00 |....F.......}...| 0000b2b0 13 00 00 00 00 00 00 00 56 6f 6c 75 6d 65 00 00 |........Volume..| 0000b2c0 58 d1 00 00 46 ff ff ff 44 90 93 a5 05 02 00 00 |X...F...D.......| 0000b2d0 13 00 00 00 00 00 00 00 53 65 74 53 61 6d 70 6c |........SetSampl| 0000b2e0 65 53 70 65 65 64 00 00 60 d3 00 00 46 ff ff ff |eSpeed..`...F...| 0000b2f0 b2 99 93 a5 48 02 00 00 13 00 00 00 00 00 00 00 |....H...........| 0000b300 44 4d 41 42 75 66 66 65 72 00 00 00 a8 d5 00 00 |DMABuffer.......| 0000b310 46 ff ff ff 18 a3 93 a5 e0 03 00 00 13 00 00 00 |F...............| 0000b320 00 00 00 00 52 65 6d 6f 76 65 43 68 61 6e 6e 65 |....RemoveChanne| 0000b330 6c 00 00 00 88 d9 00 00 46 ff ff ff e4 ae 93 a5 |l.......F.......| 0000b340 4a 01 00 00 13 00 00 00 00 00 00 00 52 65 73 74 |J...........Rest| 0000b350 6f 72 65 43 68 61 6e 6e 65 6c 00 00 d4 da 00 00 |oreChannel......| 0000b360 46 ff ff ff d4 c8 93 a5 1c 04 00 00 13 00 00 00 |F...............| 0000b370 00 00 00 00 53 74 65 72 65 6f 00 00 f0 de 00 00 |....Stereo......| 0000b380 46 ff ff ff 28 ce 93 a5 96 01 00 00 13 00 00 00 |F...(...........| 0000b390 00 00 00 00 52 65 61 64 53 6f 6e 67 4c 65 6e 67 |....ReadSongLeng| 0000b3a0 74 68 00 00 88 e0 00 00 46 ff ff ff bf d2 93 a5 |th......F.......| 0000b3b0 69 01 00 00 13 00 00 00 00 00 00 00 52 65 61 64 |i...........Read| 0000b3c0 53 65 71 75 65 6e 63 65 54 61 62 6c 65 00 00 00 |SequenceTable...| 0000b3d0 f4 e1 00 00 46 ff ff ff b8 e2 93 a5 e0 02 00 00 |....F...........| 0000b3e0 13 00 00 00 00 00 00 00 56 55 42 61 72 43 6f 6e |........VUBarCon| 0000b3f0 74 72 6f 6c 00 00 00 00 d4 e4 00 00 46 ff ff ff |trol........F...| 0000b400 a5 ce 90 a5 29 02 00 00 13 00 00 00 00 00 00 00 |....)...........| 0000b410 52 65 61 64 56 55 4c 65 76 65 6c 73 00 00 00 00 |ReadVULevels....| 0000b420 00 e7 00 00 46 ff ff ff 81 f1 93 a5 4a 03 00 00 |....F.......J...| 0000b430 13 00 00 00 00 00 00 00 52 65 61 64 53 61 6d 70 |........ReadSamp| 0000b440 6c 65 54 61 62 6c 65 00 4c ea 00 00 46 ff ff ff |leTable.L...F...| 0000b450 80 f9 93 a5 b4 03 00 00 13 00 00 00 00 00 00 00 |................| 0000b460 52 65 61 64 53 70 65 65 64 00 00 00 00 ee 00 00 |ReadSpeed.......| 0000b470 46 ff ff ff 34 04 94 a5 8c 03 00 00 13 00 00 00 |F...4...........| 0000b480 00 00 00 00 50 6c 61 79 53 61 6d 70 6c 65 00 00 |....PlaySample..| 0000b490 8c f1 00 00 46 ff ff ff ee af 96 a5 58 01 00 00 |....F.......X...| 0000b4a0 13 00 00 00 00 00 00 00 53 6f 6e 67 53 74 61 74 |........SongStat| 0000b4b0 75 73 00 00 e4 f2 00 00 46 ff ff ff 88 f1 96 a5 |us......F.......| 0000b4c0 e0 04 00 00 13 00 00 00 00 00 00 00 52 65 61 64 |............Read| 0000b4d0 50 6c 61 79 69 6e 67 54 69 6d 65 00 c4 f7 00 00 |PlayingTime.....| 0000b4e0 46 ff ff ff fc f9 96 a5 04 03 00 00 13 00 00 00 |F...............| 0000b4f0 00 00 00 00 50 6c 61 79 52 61 77 53 61 6d 70 6c |....PlayRawSampl| 0000b500 65 00 00 00 c8 fa 00 00 46 ff ff ff 49 ff 96 a5 |e.......F...I...| 0000b510 89 06 00 00 13 00 00 00 00 00 00 00 53 6f 75 6e |............Soun| 0000b520 64 43 6f 6e 74 72 6f 6c 00 00 00 00 54 01 01 00 |dControl....T...| 0000b530 46 ff ff ff b4 9f 91 a5 a0 02 00 00 13 00 00 00 |F...............| 0000b540 00 00 00 00 53 57 49 54 61 62 6c 65 41 64 64 72 |....SWITableAddr| 0000b550 65 73 73 00 f4 03 01 00 46 ff ff ff 45 a8 e0 d0 |ess.....F...E...| 0000b560 7e 04 00 00 13 00 00 00 00 00 00 00 52 65 67 69 |~...........Regi| 0000b570 73 74 65 72 53 61 6d 70 6c 65 00 00 74 08 01 00 |sterSample..t...| 0000b580 46 ff ff ff 83 30 97 a5 bb 03 00 00 13 00 00 00 |F....0..........| 0000b590 00 00 00 00 53 65 74 53 70 65 65 64 00 00 00 00 |....SetSpeed....| 0000b5a0 30 0c 01 00 46 fd ff ff 29 6c 98 a5 71 01 00 00 |0...F...)l..q...| 0000b5b0 13 00 00 00 00 00 00 00 65 66 66 65 63 74 73 00 |........effects.| 0000b5c0 a4 0d 01 00 46 fd ff ff 41 37 7f f5 ad 01 00 00 |....F...A7......| 0000b5d0 13 00 00 00 00 00 00 00 65 2d 65 66 66 65 63 74 |........e-effect| 0000b5e0 73 00 00 00 44 41 54 41 af 01 00 00 51 54 4d 0a |s...DATA....QTM.| 0000b5f0 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 |#Parent !Root.#P| 0000b600 72 65 66 69 78 20 51 54 4d 5f 0a 23 54 61 62 6c |refix QTM_.#Tabl| 0000b610 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 3c 4c 6f 61 |e Columns 2.<Loa| 0000b620 64 3e 0a 3c 53 74 61 72 74 3e 0a 3c 53 74 6f 70 |d>.<Start>.<Stop| 0000b630 3e 0a 3c 50 61 75 73 65 3e 0a 3c 43 6c 65 61 72 |>.<Pause>.<Clear| 0000b640 3e 0a 3c 49 6e 66 6f 3e 0a 3c 50 6f 73 3e 0a 3c |>.<Info>.<Pos>.<| 0000b650 45 66 66 65 63 74 43 6f 6e 74 72 6f 6c 3e 0a 3c |EffectControl>.<| 0000b660 56 6f 6c 75 6d 65 3e 0a 3c 53 65 74 53 61 6d 70 |Volume>.<SetSamp| 0000b670 6c 65 53 70 65 65 64 3e 0a 3c 44 4d 41 42 75 66 |leSpeed>.<DMABuf| 0000b680 66 65 72 3e 0a 3c 52 65 6d 6f 76 65 43 68 61 6e |fer>.<RemoveChan| 0000b690 6e 65 6c 3e 0a 3c 52 65 73 74 6f 72 65 43 68 61 |nel>.<RestoreCha| 0000b6a0 6e 6e 65 6c 3e 0a 3c 53 74 65 72 65 6f 3e 0a 3c |nnel>.<Stereo>.<| 0000b6b0 52 65 61 64 53 6f 6e 67 4c 65 6e 67 74 68 3e 0a |ReadSongLength>.| 0000b6c0 3c 52 65 61 64 53 65 71 75 65 6e 63 65 54 61 62 |<ReadSequenceTab| 0000b6d0 6c 65 3e 0a 3c 56 55 42 61 72 43 6f 6e 74 72 6f |le>.<VUBarContro| 0000b6e0 6c 3e 0a 3c 52 65 61 64 56 55 4c 65 76 65 6c 73 |l>.<ReadVULevels| 0000b6f0 3e 0a 3c 52 65 61 64 53 61 6d 70 6c 65 54 61 62 |>.<ReadSampleTab| 0000b700 6c 65 3e 0a 3c 52 65 61 64 53 70 65 65 64 3e 0a |le>.<ReadSpeed>.| 0000b710 3c 50 6c 61 79 53 61 6d 70 6c 65 3e 0a 3c 53 6f |<PlaySample>.<So| 0000b720 6e 67 53 74 61 74 75 73 3e 0a 3c 52 65 61 64 50 |ngStatus>.<ReadP| 0000b730 6c 61 79 69 6e 67 54 69 6d 65 3e 0a 3c 50 6c 61 |layingTime>.<Pla| 0000b740 79 52 61 77 53 61 6d 70 6c 65 3e 0a 3c 53 6f 75 |yRawSample>.<Sou| 0000b750 6e 64 43 6f 6e 74 72 6f 6c 3e 0a 3c 53 57 49 54 |ndControl>.<SWIT| 0000b760 61 62 6c 65 41 64 64 72 65 73 73 3e 0a 3c 52 65 |ableAddress>.<Re| 0000b770 67 69 73 74 65 72 53 61 6d 70 6c 65 3e 0a 3c 53 |gisterSample>.<S| 0000b780 65 74 53 70 65 65 64 3e 0a 23 45 6e 64 54 61 62 |etSpeed>.#EndTab| 0000b790 6c 65 0a 00 44 41 54 41 f4 06 00 00 51 54 4d 5f |le..DATA....QTM_| 0000b7a0 4c 6f 61 64 20 20 28 26 34 37 45 34 30 29 0a 23 |Load (&47E40).#| 0000b7b0 50 61 72 65 6e 74 20 51 54 4d 5f 0a 54 68 65 72 |Parent QTM_.Ther| 0000b7c0 65 20 61 72 65 20 74 68 72 65 65 20 66 6f 72 6d |e are three form| 0000b7d0 73 20 6f 66 20 74 68 69 73 20 63 61 6c 6c 20 3a |s of this call :| 0000b7e0 0a 3d 3e 09 20 09 3c 46 6f 72 6d 20 31 3d 3e 2e |.=>. .<Form 1=>.| 0000b7f0 66 6f 72 6d 31 3e 09 09 3c 46 6f 72 6d 20 32 3d |form1>..<Form 2=| 0000b800 3e 2e 66 6f 72 6d 32 3e 09 3c 46 6f 72 6d 20 33 |>.form2>.<Form 3| 0000b810 3d 3e 2e 66 6f 72 6d 33 3e 0a 09 52 30 20 3d 09 |=>.form3>..R0 =.| 0000b820 66 69 6c 65 6e 61 6d 65 09 09 09 30 09 09 09 2d |filename...0...-| 0000b830 31 0a 09 52 31 20 3d 09 61 64 64 72 65 73 73 2c |1..R1 =.address,| 0000b840 20 6f 72 20 30 20 66 6f 72 20 51 54 4d 20 6d 65 | or 0 for QTM me| 0000b850 6d 6f 72 79 09 61 64 64 72 65 73 73 20 20 20 20 |mory.address | 0000b860 20 20 20 20 09 09 09 61 64 64 72 65 73 73 20 74 | ...address t| 0000b870 6f 20 63 6f 70 79 20 66 72 6f 6d 0a 0a 3c 3d 09 |o copy from..<=.| 0000b880 52 30 2c 20 52 31 20 70 72 65 73 65 72 76 65 64 |R0, R1 preserved| 0000b890 0a 0a 54 68 65 20 61 64 64 72 65 73 73 20 61 6e |..The address an| 0000b8a0 64 20 74 79 70 65 20 6f 66 20 74 68 65 20 6c 6f |d type of the lo| 0000b8b0 61 64 65 64 20 73 6f 6e 67 20 63 61 6e 20 62 65 |aded song can be| 0000b8c0 20 72 65 61 64 20 62 79 20 3c 51 54 4d 5f 49 6e | read by <QTM_In| 0000b8d0 66 6f 3e 2e 0a 0a 4e 6f 74 65 3a 20 57 68 65 6e |fo>...Note: When| 0000b8e0 20 61 20 73 6f 6e 67 20 69 73 20 6c 6f 61 64 65 | a song is loade| 0000b8f0 64 20 28 62 79 20 61 6e 79 20 6d 65 74 68 6f 64 |d (by any method| 0000b900 29 20 69 74 73 20 73 61 6d 70 6c 65 20 64 61 74 |) its sample dat| 0000b910 61 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 |a is converted i| 0000b920 6e 74 6f 20 38 2d 62 69 74 20 6c 6f 67 61 72 69 |nto 8-bit logari| 0000b930 74 68 6d 69 63 20 64 61 74 61 2c 20 66 72 6f 6d |thmic data, from| 0000b940 20 73 69 67 6e 65 64 20 6c 69 6e 65 61 72 20 64 | signed linear d| 0000b950 61 74 61 2e 20 31 35 20 69 6e 73 74 2e 20 66 6f |ata. 15 inst. fo| 0000b960 72 6d 61 74 20 73 6f 6e 67 73 20 61 72 65 20 63 |rmat songs are c| 0000b970 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 33 31 |onverted to a 31| 0000b980 20 69 6e 73 74 2e 20 66 6f 72 6d 61 74 20 61 74 | inst. format at| 0000b990 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 20 | the same time. | 0000b9a0 54 68 65 20 73 61 6d 70 6c 65 20 64 61 74 61 20 |The sample data | 0000b9b0 43 41 4e 20 62 65 20 63 6f 6e 76 65 72 74 65 64 |CAN be converted| 0000b9c0 20 62 61 63 6b 20 74 6f 20 73 69 67 6e 65 64 20 | back to signed | 0000b9d0 6c 69 6e 65 61 72 2c 20 73 6f 20 74 68 65 20 73 |linear, so the s| 0000b9e0 6f 6e 67 20 63 61 6e 20 62 65 20 73 61 76 65 64 |ong can be saved| 0000b9f0 20 6f 72 20 72 65 2d 6c 6f 61 64 65 64 20 65 74 | or re-loaded et| 0000ba00 63 2e 20 62 79 20 63 61 6c 6c 69 6e 67 20 3c 51 |c. by calling <Q| 0000ba10 54 4d 5f 43 6c 65 61 72 3e 20 77 69 74 68 20 52 |TM_Clear> with R| 0000ba20 30 3d 2d 31 2c 20 61 6c 74 68 6f 75 67 68 20 74 |0=-1, although t| 0000ba30 68 65 20 73 6f 6e 67 20 66 6f 72 6d 61 74 20 77 |he song format w| 0000ba40 69 6c 6c 20 6e 6f 74 20 62 65 20 63 6f 6e 76 65 |ill not be conve| 0000ba50 72 74 65 64 20 62 61 63 6b 2c 20 61 6e 64 20 77 |rted back, and w| 0000ba60 69 6c 6c 20 72 65 6d 61 69 6e 20 61 73 20 33 31 |ill remain as 31| 0000ba70 20 69 6e 73 74 2e 0a 0a 56 20 66 6c 61 67 20 73 | inst...V flag s| 0000ba80 65 74 20 69 66 20 74 68 65 72 65 20 77 61 73 20 |et if there was | 0000ba90 6e 6f 74 20 65 6e 6f 75 67 68 20 73 70 61 63 65 |not enough space| 0000baa0 20 69 6e 20 74 68 65 20 52 4d 41 20 66 6f 72 20 | in the RMA for | 0000bab0 74 68 65 20 73 6f 6e 67 2c 20 74 68 65 20 66 69 |the song, the fi| 0000bac0 6c 65 20 77 61 73 20 6e 6f 74 20 66 6f 75 6e 64 |le was not found| 0000bad0 2c 20 74 68 65 20 6d 75 73 69 63 20 66 6f 72 6d |, the music form| 0000bae0 61 74 20 77 61 73 20 6e 6f 74 20 75 6e 64 65 72 |at was not under| 0000baf0 73 74 6f 6f 64 2c 20 6f 72 20 61 6e 20 69 6c 6c |stood, or an ill| 0000bb00 65 67 61 6c 20 6d 65 6d 6f 72 79 20 61 64 64 72 |egal memory addr| 0000bb10 65 73 73 20 77 61 73 20 73 70 65 63 69 66 69 65 |ess was specifie| 0000bb20 64 2e 0a 23 53 75 62 70 61 67 65 20 66 6f 72 6d |d..#Subpage form| 0000bb30 31 0a 51 54 4d 5f 4c 6f 61 64 20 66 6f 72 6d 20 |1.QTM_Load form | 0000bb40 31 0a 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 |1.Depending on t| 0000bb50 68 65 20 76 61 6c 75 65 20 69 6e 20 52 31 2c 20 |he value in R1, | 0000bb60 51 54 4d 20 77 69 6c 6c 20 65 69 74 68 65 72 20 |QTM will either | 0000bb70 6c 6f 61 64 20 74 68 65 20 73 70 65 63 69 66 69 |load the specifi| 0000bb80 65 64 20 73 6f 6e 67 20 66 69 6c 65 20 69 6e 74 |ed song file int| 0000bb90 6f 20 51 54 4d 27 73 20 6f 77 6e 20 6d 65 6d 6f |o QTM's own memo| 0000bba0 72 79 20 28 52 31 3d 30 29 2c 20 6f 72 20 74 6f |ry (R1=0), or to| 0000bbb0 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 64 64 72 | the memory addr| 0000bbc0 65 73 73 20 67 69 76 65 6e 20 69 6e 20 52 31 20 |ess given in R1 | 0000bbd0 28 52 31 5c 3c 3e 30 29 2e 0a 23 53 75 62 70 61 |(R1\<>0)..#Subpa| 0000bbe0 67 65 20 66 6f 72 6d 32 0a 51 54 4d 5f 4c 6f 61 |ge form2.QTM_Loa| 0000bbf0 64 20 66 6f 72 6d 20 32 0a 51 54 4d 20 77 69 6c |d form 2.QTM wil| 0000bc00 6c 20 69 6e 69 74 69 61 6c 69 73 65 20 74 68 65 |l initialise the| 0000bc10 20 73 6f 6e 67 20 70 6f 69 6e 74 65 64 20 74 6f | song pointed to| 0000bc20 20 62 79 20 52 31 2c 20 61 74 20 74 68 61 74 20 | by R1, at that | 0000bc30 61 64 64 72 65 73 73 2e 0a 54 68 69 73 20 65 6e |address..This en| 0000bc40 61 62 6c 65 73 20 61 20 70 72 6f 67 72 61 6d 20 |ables a program | 0000bc50 74 6f 20 6c 6f 61 64 20 61 20 73 6f 6e 67 20 69 |to load a song i| 0000bc60 6e 74 6f 20 69 74 73 20 6f 77 6e 20 72 65 73 65 |nto its own rese| 0000bc70 72 76 65 64 20 6d 65 6d 6f 72 79 20 28 65 67 2e |rved memory (eg.| 0000bc80 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 65 6d | application mem| 0000bc90 6f 72 79 20 6f 72 20 69 74 73 20 6f 77 6e 20 52 |ory or its own R| 0000bca0 4d 41 20 62 6c 6f 63 6b 29 20 61 6e 64 20 67 65 |MA block) and ge| 0000bcb0 74 20 51 54 4d 20 74 6f 20 70 6c 61 79 20 69 74 |t QTM to play it| 0000bcc0 20 66 72 6f 6d 20 74 68 65 72 65 2c 20 72 61 74 | from there, rat| 0000bcd0 68 65 72 20 74 68 61 6e 20 66 72 6f 6d 20 61 20 |her than from a | 0000bce0 51 54 4d 2d 63 6f 6e 74 72 6f 6c 6c 65 64 20 52 |QTM-controlled R| 0000bcf0 4d 41 20 62 6c 6f 63 6b 2e 0a 23 53 75 62 70 61 |MA block..#Subpa| 0000bd00 67 65 20 66 6f 72 6d 33 0a 51 54 4d 20 77 69 6c |ge form3.QTM wil| 0000bd10 6c 20 43 4f 50 59 20 74 68 65 20 73 6f 6e 67 20 |l COPY the song | 0000bd20 66 72 6f 6d 20 74 68 65 20 61 64 64 72 65 73 73 |from the address| 0000bd30 20 67 69 76 65 6e 20 69 6e 20 52 31 2c 20 74 6f | given in R1, to| 0000bd40 20 69 74 73 20 6f 77 6e 20 6d 65 6d 6f 72 79 20 | its own memory | 0000bd50 28 52 4d 41 29 20 61 6e 64 20 75 73 65 20 69 74 |(RMA) and use it| 0000bd60 20 66 72 6f 6d 20 74 68 65 72 65 2e 0a 0a 4e 6f | from there...No| 0000bd70 74 65 3a 20 49 66 20 74 68 65 20 61 64 64 72 65 |te: If the addre| 0000bd80 73 73 20 69 6e 20 52 31 20 69 73 20 74 68 65 20 |ss in R1 is the | 0000bd90 53 54 41 52 54 20 6f 66 20 61 6e 20 52 4d 41 20 |START of an RMA | 0000bda0 62 6c 6f 63 6b 2c 20 51 54 4d 20 77 69 6c 6c 20 |block, QTM will | 0000bdb0 74 61 6b 65 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 |take control of | 0000bdc0 74 68 69 73 20 62 6c 6f 63 6b 2c 20 61 6e 64 20 |this block, and | 0000bdd0 72 65 6c 65 61 73 65 20 69 74 20 61 66 74 65 72 |release it after| 0000bde0 20 74 72 61 6e 73 66 65 72 69 6e 67 20 74 68 65 | transfering the| 0000bdf0 20 73 6f 6e 67 2e 20 54 68 69 73 20 69 73 20 64 | song. This is d| 0000be00 6f 6e 65 20 74 6f 20 72 65 64 75 63 65 20 70 6f |one to reduce po| 0000be10 73 73 69 62 6c 65 20 66 72 61 67 6d 65 6e 74 61 |ssible fragmenta| 0000be20 74 69 6f 6e 20 6f 66 20 74 68 65 20 52 4d 41 2e |tion of the RMA.| 0000be30 20 54 68 65 20 6c 6f 61 64 65 72 20 70 72 6f 67 | The loader prog| 0000be40 72 61 6d 20 6d 75 73 74 20 2a 4e 4f 54 2a 20 61 |ram must *NOT* a| 0000be50 63 63 65 73 73 20 74 68 65 20 6f 6c 64 20 52 4d |ccess the old RM| 0000be60 41 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 |A address of the| 0000be70 20 73 6f 6e 67 2c 20 61 66 74 65 72 20 74 68 69 | song, after thi| 0000be80 73 20 63 61 6c 6c 2e 0a 44 41 54 41 c3 00 00 00 |s call..DATA....| 0000be90 51 54 4d 5f 53 74 61 72 74 20 20 28 26 34 37 45 |QTM_Start (&47E| 0000bea0 34 31 29 0a 23 50 61 72 65 6e 74 20 51 54 4d 5f |41).#Parent QTM_| 0000beb0 0a 54 68 69 73 20 53 57 49 20 77 69 6c 6c 20 73 |.This SWI will s| 0000bec0 74 61 72 74 20 74 68 65 20 63 75 72 72 65 6e 74 |tart the current| 0000bed0 20 73 6f 6e 67 20 70 6c 61 79 69 6e 67 20 28 61 | song playing (a| 0000bee0 6e 64 20 73 74 61 72 74 20 75 70 20 74 68 65 20 |nd start up the | 0000bef0 73 6f 75 6e 64 20 73 79 73 74 65 6d 29 2c 20 61 |sound system), a| 0000bf00 66 74 65 72 20 6c 6f 61 64 69 6e 67 2c 20 6f 72 |fter loading, or| 0000bf10 20 62 65 69 6e 67 20 70 61 75 73 65 64 20 6f 72 | being paused or| 0000bf20 20 73 74 6f 70 70 65 64 2e 0a 0a 56 20 66 6c 61 | stopped...V fla| 0000bf30 67 20 73 65 74 20 69 66 20 6e 6f 20 73 6f 6e 67 |g set if no song| 0000bf40 20 69 73 20 6c 6f 61 64 65 64 0a 00 44 41 54 41 | is loaded..DATA| 0000bf50 fa 00 00 00 51 54 4d 5f 53 74 6f 70 20 20 28 26 |....QTM_Stop (&| 0000bf60 34 37 45 34 32 29 0a 23 50 61 72 65 6e 74 20 51 |47E42).#Parent Q| 0000bf70 54 4d 5f 0a 54 68 69 73 20 53 57 49 20 77 69 6c |TM_.This SWI wil| 0000bf80 6c 20 73 74 6f 70 20 74 68 65 20 63 75 72 72 65 |l stop the curre| 0000bf90 6e 74 20 73 6f 6e 67 20 70 6c 61 79 69 6e 67 2c |nt song playing,| 0000bfa0 20 73 77 69 74 63 68 20 6f 66 66 20 51 54 4d 27 | switch off QTM'| 0000bfb0 73 20 73 6f 75 6e 64 20 63 6f 6e 74 72 6f 6c 6c |s sound controll| 0000bfc0 65 72 73 20 61 6e 64 20 72 65 73 65 74 20 61 6c |ers and reset al| 0000bfd0 6c 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 73 |l the internal s| 0000bfe0 6f 6e 67 20 76 61 72 69 61 62 6c 65 73 2c 20 69 |ong variables, i| 0000bff0 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 70 6f 73 |ncluding the pos| 0000c000 69 74 69 6f 6e 20 63 6f 75 6e 74 65 72 73 20 2d |ition counters -| 0000c010 20 77 68 69 63 68 20 69 74 20 73 65 74 73 20 74 | which it sets t| 0000c020 6f 20 30 2e 0a 0a 56 20 66 6c 61 67 20 73 65 74 |o 0...V flag set| 0000c030 20 69 66 20 6e 6f 20 73 6f 6e 67 20 69 73 20 6c | if no song is l| 0000c040 6f 61 64 65 64 0a 00 00 44 41 54 41 ed 00 00 00 |oaded...DATA....| 0000c050 51 54 4d 5f 50 61 75 73 65 20 20 28 26 34 37 45 |QTM_Pause (&47E| 0000c060 34 33 29 0a 23 50 61 72 65 6e 74 20 51 54 4d 5f |43).#Parent QTM_| 0000c070 0a 54 68 69 73 20 68 61 73 20 74 68 65 20 73 61 |.This has the sa| 0000c080 6d 65 20 65 66 66 65 63 74 20 61 73 20 3c 51 54 |me effect as <QT| 0000c090 4d 5f 53 74 6f 70 3e 2c 20 61 6c 74 68 6f 75 67 |M_Stop>, althoug| 0000c0a0 68 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65 73 |h it doesn't res| 0000c0b0 65 74 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 |et the internal | 0000c0c0 76 61 72 69 61 62 6c 65 73 2c 20 73 6f 20 77 68 |variables, so wh| 0000c0d0 65 6e 20 74 68 65 20 73 6f 6e 67 20 69 73 20 72 |en the song is r| 0000c0e0 65 2d 73 74 61 72 74 65 64 2c 20 69 74 20 77 69 |e-started, it wi| 0000c0f0 6c 6c 20 63 6f 6e 74 69 6e 75 65 20 66 72 6f 6d |ll continue from| 0000c100 20 74 68 65 20 73 61 6d 65 20 70 6f 73 69 74 69 | the same positi| 0000c110 6f 6e 2e 0a 0a 56 20 66 6c 61 67 20 73 65 74 20 |on...V flag set | 0000c120 69 66 20 6e 6f 20 73 6f 6e 67 20 69 73 20 6c 6f |if no song is lo| 0000c130 61 64 65 64 0a 00 00 00 44 41 54 41 70 03 00 00 |aded....DATAp...| 0000c140 51 54 4d 5f 43 6c 65 61 72 20 20 28 26 34 37 45 |QTM_Clear (&47E| 0000c150 34 34 29 0a 23 50 61 72 65 6e 74 20 51 54 4d 5f |44).#Parent QTM_| 0000c160 0a 3d 3e 09 52 30 20 3d 09 2d 31 20 74 6f 20 63 |.=>.R0 =.-1 to c| 0000c170 6f 6e 76 65 72 74 20 73 61 6d 70 6c 65 73 20 62 |onvert samples b| 0000c180 61 63 6b 20 74 6f 20 73 69 67 6e 65 64 20 6c 69 |ack to signed li| 0000c190 6e 65 61 72 20 66 6f 72 6d 61 74 0a 09 20 09 6f |near format.. .o| 0000c1a0 74 68 65 72 20 64 6f 6e 27 74 20 63 6f 6e 76 65 |ther don't conve| 0000c1b0 72 74 20 73 61 6d 70 6c 65 73 0a 0a 3c 3d 09 52 |rt samples..<=.R| 0000c1c0 30 20 69 73 20 70 72 65 73 65 72 76 65 64 0a 0a |0 is preserved..| 0000c1d0 54 68 69 73 20 53 57 49 20 77 69 6c 6c 20 73 77 |This SWI will sw| 0000c1e0 69 74 63 68 20 6f 66 66 20 74 68 65 20 51 54 4d |itch off the QTM| 0000c1f0 20 73 6f 75 6e 64 20 73 79 73 74 65 6d 20 61 6e | sound system an| 0000c200 64 20 73 74 6f 70 20 74 68 65 20 63 75 72 72 65 |d stop the curre| 0000c210 6e 74 20 73 6f 6e 67 20 70 6c 61 79 69 6e 67 2c |nt song playing,| 0000c220 20 72 65 6c 65 61 73 69 6e 67 20 61 6e 79 20 6d | releasing any m| 0000c230 65 6d 6f 72 79 20 75 73 65 64 20 66 6f 72 20 74 |emory used for t| 0000c240 68 65 20 73 6f 6e 67 20 69 66 20 69 74 20 77 61 |he song if it wa| 0000c250 73 20 6c 6f 61 64 65 64 20 69 6e 74 6f 20 52 4d |s loaded into RM| 0000c260 41 2e 20 54 68 65 20 73 6f 6e 67 20 63 61 6e 6e |A. The song cann| 0000c270 6f 74 20 62 65 20 72 65 73 74 61 72 74 65 64 20 |ot be restarted | 0000c280 61 66 74 65 72 20 74 68 69 73 20 63 6f 6d 6d 61 |after this comma| 0000c290 6e 64 2c 20 75 6e 6c 65 73 73 20 69 74 20 69 73 |nd, unless it is| 0000c2a0 20 72 65 6c 6f 61 64 65 64 20 28 66 72 6f 6d 20 | reloaded (from | 0000c2b0 75 73 65 72 2d 72 65 73 65 72 76 65 64 20 6d 65 |user-reserved me| 0000c2c0 6d 6f 72 79 2c 20 64 69 73 63 2c 20 65 74 63 2e |mory, disc, etc.| 0000c2d0 29 20 75 73 69 6e 67 20 3c 51 54 4d 5f 4c 6f 61 |) using <QTM_Loa| 0000c2e0 64 3e 2e 0a 0a 54 68 65 20 43 55 52 52 45 4e 54 |d>...The CURRENT| 0000c2f0 20 73 6f 6e 67 20 63 61 6e 20 6f 6e 6c 79 20 62 | song can only b| 0000c300 65 20 72 65 6c 6f 61 64 65 64 20 66 72 6f 6d 20 |e reloaded from | 0000c310 75 73 65 72 2d 72 65 73 65 72 76 65 64 20 28 6e |user-reserved (n| 0000c320 6f 74 20 51 54 4d 27 73 29 20 6d 65 6d 6f 72 79 |ot QTM's) memory| 0000c330 0a 61 66 74 65 72 20 63 61 6c 6c 69 6e 67 20 3c |.after calling <| 0000c340 51 54 4d 5f 43 6c 65 61 72 3e 2c 20 69 66 20 74 |QTM_Clear>, if t| 0000c350 68 65 20 73 61 6d 70 6c 65 73 20 68 61 76 65 20 |he samples have | 0000c360 62 65 65 6e 20 63 6f 6e 76 65 72 74 65 64 20 62 |been converted b| 0000c370 61 63 6b 20 74 6f 0a 73 69 67 6e 65 64 20 6c 69 |ack to.signed li| 0000c380 6e 65 61 72 20 66 6f 72 6d 61 74 20 28 66 72 6f |near format (fro| 0000c390 6d 20 74 68 65 20 6c 6f 67 61 72 69 74 68 6d 69 |m the logarithmi| 0000c3a0 63 20 66 6f 72 6d 61 74 20 74 68 65 79 20 77 65 |c format they we| 0000c3b0 72 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 0a |re converted to.| 0000c3c0 77 68 65 6e 20 74 68 65 20 73 6f 6e 67 20 77 61 |when the song wa| 0000c3d0 73 20 6c 6f 61 64 65 64 29 2e 20 54 68 69 73 20 |s loaded). This | 0000c3e0 63 61 6e 20 62 65 20 64 6f 6e 65 20 62 79 20 73 |can be done by s| 0000c3f0 65 74 74 69 6e 67 20 52 30 20 74 6f 20 2d 31 20 |etting R0 to -1 | 0000c400 62 65 66 6f 72 65 0a 63 61 6c 6c 69 6e 67 20 3c |before.calling <| 0000c410 51 54 4d 5f 43 6c 65 61 72 3e 2e 20 53 65 65 20 |QTM_Clear>. See | 0000c420 3c 51 54 4d 5f 4c 6f 61 64 3e 20 66 6f 72 20 69 |<QTM_Load> for i| 0000c430 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 28 72 |nformation on (r| 0000c440 65 29 6c 6f 61 64 69 6e 67 20 61 0a 73 6f 6e 67 |e)loading a.song| 0000c450 20 74 68 61 74 20 69 73 20 61 6c 72 65 61 64 79 | that is already| 0000c460 20 73 74 6f 72 65 64 20 69 6e 20 6d 65 6d 6f 72 | stored in memor| 0000c470 79 2e 0a 0a 4e 6f 20 65 72 72 6f 72 20 69 73 20 |y...No error is | 0000c480 72 65 70 6f 72 74 65 64 20 69 66 20 74 68 65 72 |reported if ther| 0000c490 65 20 69 73 20 6e 6f 74 20 61 20 73 6f 6e 67 20 |e is not a song | 0000c4a0 6c 6f 61 64 65 64 2e 0a 44 41 54 41 ba 05 00 00 |loaded..DATA....| 0000c4b0 51 54 4d 5f 49 6e 66 6f 20 20 28 26 34 37 45 34 |QTM_Info (&47E4| 0000c4c0 35 29 0a 23 50 61 72 65 6e 74 20 51 54 4d 5f 0a |5).#Parent QTM_.| 0000c4d0 3c 3d 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 |<=.R0 =.pointer | 0000c4e0 74 6f 20 74 72 61 63 6b 20 6e 61 6d 65 20 28 30 |to track name (0| 0000c4f0 20 74 65 72 6d 69 6e 61 74 65 64 29 0a 09 52 31 | terminated)..R1| 0000c500 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 75 | =.pointer to au| 0000c510 74 68 6f 72 20 6e 61 6d 65 20 28 30 20 74 65 72 |thor name (0 ter| 0000c520 6d 69 6e 61 74 65 64 29 20 6f 72 20 30 20 69 66 |minated) or 0 if| 0000c530 20 6e 6f 6e 65 0a 09 52 32 20 3d 09 3c 73 6f 6e | none..R2 =.<son| 0000c540 67 20 6f 72 69 67 69 6e 3d 3e 2e 6f 72 69 67 69 |g origin=>.origi| 0000c550 6e 73 3e 0a 09 52 33 20 3d 09 6e 75 6d 62 65 72 |ns>..R3 =.number| 0000c560 20 6f 66 20 63 68 61 6e 6e 65 6c 73 20 28 63 75 | of channels (cu| 0000c570 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 34 20 63 |rrently only 4 c| 0000c580 68 61 6e 6e 65 6c 73 29 0a 09 52 34 20 3d 09 66 |hannels)..R4 =.f| 0000c590 69 6c 65 20 6c 65 6e 67 74 68 20 28 69 6e 20 62 |ile length (in b| 0000c5a0 79 74 65 73 29 0a 09 52 35 20 3d 09 67 61 72 62 |ytes)..R5 =.garb| 0000c5b0 61 67 65 20 64 61 74 61 20 73 69 7a 65 20 28 2d |age data size (-| 0000c5c0 76 65 20 69 66 20 64 61 74 61 20 6d 69 73 73 69 |ve if data missi| 0000c5d0 6e 67 29 0a 09 52 36 20 3d 09 61 64 64 72 65 73 |ng)..R6 =.addres| 0000c5e0 73 20 77 68 65 72 65 20 73 6f 6e 67 20 69 73 20 |s where song is | 0000c5f0 6c 6f 61 64 65 64 0a 0a 54 68 69 73 20 53 57 49 |loaded..This SWI| 0000c600 20 72 65 74 75 72 6e 73 20 67 65 6e 65 72 61 6c | returns general| 0000c610 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f | information abo| 0000c620 75 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 |ut the current t| 0000c630 72 61 63 6b 20 6c 6f 61 64 65 64 20 69 6e 20 51 |rack loaded in Q| 0000c640 54 4d 2e 0a 0a 49 74 20 61 6c 73 6f 20 75 73 65 |TM...It also use| 0000c650 73 20 61 6e 20 27 69 6e 74 65 6c 6c 69 67 65 6e |s an 'intelligen| 0000c660 74 20 61 75 74 68 6f 72 20 64 65 74 65 63 74 6f |t author detecto| 0000c670 72 27 20 72 6f 75 74 69 6e 65 2c 20 74 6f 20 73 |r' routine, to s| 0000c680 65 61 72 63 68 20 74 68 72 6f 75 67 68 20 74 68 |earch through th| 0000c690 65 20 73 61 6d 70 6c 65 20 6e 61 6d 65 73 20 28 |e sample names (| 0000c6a0 75 73 75 61 6c 6c 79 20 75 73 65 64 20 62 79 20 |usually used by | 0000c6b0 61 75 74 68 6f 72 73 2c 20 74 6f 20 73 74 6f 72 |authors, to stor| 0000c6c0 65 20 74 68 65 69 72 20 6e 61 6d 65 20 6f 72 20 |e their name or | 0000c6d0 67 72 6f 75 70 29 20 74 6f 20 73 65 65 20 69 66 |group) to see if| 0000c6e0 20 69 74 20 63 61 6e 20 66 69 6e 64 20 61 6e 79 | it can find any| 0000c6f0 74 68 69 6e 67 20 74 68 61 74 20 72 65 73 65 6d |thing that resem| 0000c700 62 6c 65 73 20 61 20 6e 61 6d 65 2e 20 49 66 20 |bles a name. If | 0000c710 69 74 20 73 75 63 63 65 65 64 73 2c 20 61 20 70 |it succeeds, a p| 0000c720 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6e 61 |ointer to the na| 0000c730 6d 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 |me is returned i| 0000c740 6e 20 52 31 2c 20 6f 74 68 65 72 77 69 73 65 20 |n R1, otherwise | 0000c750 30 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a |0 is returned...| 0000c760 4e 6f 74 65 3a 20 54 68 65 20 27 73 6f 6e 67 20 |Note: The 'song | 0000c770 6f 72 69 67 69 6e 27 20 76 61 6c 75 65 20 28 52 |origin' value (R| 0000c780 32 29 2c 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 |2), corresponds | 0000c790 74 6f 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 |to the original | 0000c7a0 73 6f 6e 67 20 74 79 70 65 2c 20 4e 4f 54 20 74 |song type, NOT t| 0000c7b0 68 65 20 66 6f 72 6d 61 74 20 6f 66 20 74 68 65 |he format of the| 0000c7c0 20 73 6f 6e 67 20 69 6e 20 6d 65 6d 6f 72 79 2e | song in memory.| 0000c7d0 20 41 66 74 65 72 20 6c 6f 61 64 69 6e 67 2c 20 | After loading, | 0000c7e0 51 54 4d 20 63 6f 6e 76 65 72 74 73 20 61 6c 6c |QTM converts all| 0000c7f0 20 73 6f 6e 67 73 20 74 6f 20 74 68 65 20 33 31 | songs to the 31| 0000c800 20 69 6e 73 74 2e 20 50 72 6f 54 72 61 63 6b 65 | inst. ProTracke| 0000c810 72 20 66 6f 72 6d 61 74 2e 20 46 75 74 75 72 65 |r format. Future| 0000c820 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 51 54 4d | versions of QTM| 0000c830 2c 20 68 6f 77 65 76 65 72 2c 20 6d 61 79 20 73 |, however, may s| 0000c840 75 70 70 6f 72 74 20 64 69 66 66 65 72 65 6e 74 |upport different| 0000c850 20 73 6f 6e 67 20 74 79 70 65 73 20 69 6e 20 6d | song types in m| 0000c860 65 6d 6f 72 79 2e 20 54 6f 20 61 76 6f 69 64 20 |emory. To avoid | 0000c870 70 72 6f 62 6c 65 6d 73 20 77 69 74 68 20 6e 65 |problems with ne| 0000c880 77 20 74 79 70 65 73 20 62 65 69 6e 67 20 73 75 |w types being su| 0000c890 70 70 6f 72 74 65 64 2c 20 69 74 20 63 61 6e 20 |pported, it can | 0000c8a0 62 65 20 61 73 73 75 6d 65 64 20 74 68 61 74 20 |be assumed that | 0000c8b0 61 6e 79 20 73 6f 6e 67 20 72 65 74 75 72 6e 69 |any song returni| 0000c8c0 6e 67 20 61 20 76 61 6c 75 65 20 69 6e 20 52 32 |ng a value in R2| 0000c8d0 20 5c 3c 20 26 31 30 20 28 31 36 29 2c 20 77 69 | \< &10 (16), wi| 0000c8e0 6c 6c 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 |ll be stored in | 0000c8f0 6d 65 6d 6f 72 79 20 61 73 20 61 20 34 20 63 68 |memory as a 4 ch| 0000c900 61 6e 6e 65 6c 2c 20 33 31 20 69 6e 73 74 2e 20 |annel, 31 inst. | 0000c910 50 72 6f 54 72 61 63 6b 65 72 20 66 6f 72 6d 61 |ProTracker forma| 0000c920 74 20 73 6f 6e 67 2e 20 53 6f 6e 67 20 65 64 69 |t song. Song edi| 0000c930 74 6f 72 73 20 61 6e 64 20 64 69 73 70 6c 61 79 |tors and display| 0000c940 20 70 72 6f 67 72 61 6d 73 20 73 68 6f 75 6c 64 | programs should| 0000c950 20 63 68 65 63 6b 20 74 68 69 73 20 76 61 6c 75 | check this valu| 0000c960 65 2c 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 |e, to ensure tha| 0000c970 74 20 74 68 65 20 6c 6f 61 64 65 64 20 73 6f 6e |t the loaded son| 0000c980 67 20 69 73 20 69 6e 20 74 68 65 20 65 78 70 65 |g is in the expe| 0000c990 63 74 65 64 20 66 6f 72 6d 61 74 20 66 6f 72 20 |cted format for | 0000c9a0 74 68 65 20 70 72 6f 67 72 61 6d 2e 0a 0a 56 20 |the program...V | 0000c9b0 66 6c 61 67 20 73 65 74 20 69 66 20 6e 6f 20 73 |flag set if no s| 0000c9c0 6f 6e 67 20 69 73 20 6c 6f 61 64 65 64 0a 23 53 |ong is loaded.#S| 0000c9d0 75 62 70 61 67 65 20 6f 72 69 67 69 6e 73 0a 51 |ubpage origins.Q| 0000c9e0 54 4d 20 53 6f 6e 67 20 6f 72 69 67 69 6e 73 0a |TM Song origins.| 0000c9f0 76 61 6c 75 65 09 6f 72 69 67 69 6e 0a 23 4c 69 |value.origin.#Li| 0000ca00 6e 65 0a 30 09 31 35 20 69 6e 73 74 2e 20 53 6f |ne.0.15 inst. So| 0000ca10 75 6e 64 20 54 72 61 63 6b 65 72 0a 31 09 33 31 |und Tracker.1.31| 0000ca20 20 69 6e 73 74 2e 20 53 6f 75 6e 64 20 54 72 61 | inst. Sound Tra| 0000ca30 63 6b 65 72 0a 32 09 33 31 20 69 6e 73 74 2e 20 |cker.2.31 inst. | 0000ca40 50 72 6f 54 72 61 63 6b 65 72 0a 33 09 33 31 20 |ProTracker.3.31 | 0000ca50 69 6e 73 74 2e 20 53 74 61 72 74 72 65 6b 6b 65 |inst. Startrekke| 0000ca60 72 0a 00 00 44 41 54 41 98 01 00 00 51 54 4d 5f |r...DATA....QTM_| 0000ca70 50 6f 73 20 20 28 26 34 37 45 34 36 29 0a 23 50 |Pos (&47E46).#P| 0000ca80 61 72 65 6e 74 20 51 54 4d 5f 0a 3d 3e 09 52 30 |arent QTM_.=>.R0| 0000ca90 20 3d 09 6e 65 77 20 73 65 71 75 65 6e 63 65 20 | =.new sequence | 0000caa0 70 6f 73 69 74 69 6f 6e 20 28 30 2d 31 32 37 29 |position (0-127)| 0000cab0 2c 20 2d 31 20 74 6f 20 72 65 61 64 20 63 75 72 |, -1 to read cur| 0000cac0 72 65 6e 74 20 70 6f 73 69 74 69 6f 6e 0a 09 52 |rent position..R| 0000cad0 31 20 3d 09 6e 65 77 20 65 76 65 6e 74 20 70 6f |1 =.new event po| 0000cae0 73 69 74 69 6f 6e 20 28 30 2d 36 33 29 2c 20 2d |sition (0-63), -| 0000caf0 31 20 74 6f 20 72 65 61 64 0a 0a 3c 3d 09 52 30 |1 to read..<=.R0| 0000cb00 20 3d 09 70 72 65 76 69 6f 75 73 20 73 65 71 75 | =.previous sequ| 0000cb10 65 6e 63 65 20 70 6f 73 69 74 69 6f 6e 20 28 30 |ence position (0| 0000cb20 2d 31 32 37 29 0a 09 52 31 20 3d 09 70 72 65 76 |-127)..R1 =.prev| 0000cb30 69 6f 75 73 20 65 76 65 6e 74 20 70 6f 73 69 74 |ious event posit| 0000cb40 69 6f 6e 20 28 30 2d 36 33 29 0a 0a 54 68 69 73 |ion (0-63)..This| 0000cb50 20 53 57 49 20 63 61 6e 20 62 65 20 75 73 65 64 | SWI can be used| 0000cb60 20 74 6f 20 72 65 61 64 20 6f 72 20 61 6c 74 65 | to read or alte| 0000cb70 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 |r the current se| 0000cb80 71 75 65 6e 63 65 20 6f 72 20 65 76 65 6e 74 20 |quence or event | 0000cb90 70 6f 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 20 |position in the | 0000cba0 63 75 72 72 65 6e 74 20 73 6f 6e 67 2e 0a 0a 56 |current song...V| 0000cbb0 20 66 6c 61 67 20 73 65 74 20 69 66 20 6e 6f 20 | flag set if no | 0000cbc0 73 6f 6e 67 20 69 73 20 6c 6f 61 64 65 64 20 6f |song is loaded o| 0000cbd0 72 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 2f 65 |r the position/e| 0000cbe0 76 65 6e 74 20 6e 75 6d 62 65 72 20 69 73 20 6f |vent number is o| 0000cbf0 75 74 20 6f 66 20 72 61 6e 67 65 0a 44 41 54 41 |ut of range.DATA| 0000cc00 dc 03 00 00 51 54 4d 5f 45 66 66 65 63 74 43 6f |....QTM_EffectCo| 0000cc10 6e 74 72 6f 6c 20 20 28 26 34 37 45 34 37 29 0a |ntrol (&47E47).| 0000cc20 23 50 61 72 65 6e 74 20 51 54 4d 5f 0a 3d 3e 09 |#Parent QTM_.=>.| 0000cc30 52 30 20 3d 09 3c 65 66 66 65 63 74 20 6e 75 6d |R0 =.<effect num| 0000cc40 62 65 72 3d 3e 51 54 4d 5f 65 66 66 65 63 74 73 |ber=>QTM_effects| 0000cc50 3e 20 28 26 30 2d 26 46 2c 26 45 30 2d 26 45 46 |> (&0-&F,&E0-&EF| 0000cc60 20 66 6f 72 20 3c 27 45 27 20 65 66 66 65 63 74 | for <'E' effect| 0000cc70 73 3d 3e 51 54 4d 5f 65 2d 65 66 66 65 63 74 73 |s=>QTM_e-effects| 0000cc80 3e 29 20 6f 72 20 2d 31 20 74 6f 20 72 65 61 64 |>) or -1 to read| 0000cc90 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 0a 09 | current state..| 0000cca0 52 31 20 3d 09 6e 65 77 20 73 74 61 74 65 20 6f |R1 =.new state o| 0000ccb0 66 20 65 66 66 65 63 74 20 28 30 2d 6f 66 66 2f |f effect (0-off/| 0000ccc0 31 2d 6f 6e 29 0a 0a 3c 3d 09 52 30 20 3d 09 70 |1-on)..<=.R0 =.p| 0000ccd0 72 65 76 69 6f 75 73 20 65 66 66 65 63 74 20 73 |revious effect s| 0000cce0 74 61 74 65 20 77 6f 72 64 20 28 26 30 2d 26 46 |tate word (&0-&F| 0000ccf0 29 20 31 20 62 69 74 20 70 65 72 20 65 66 66 65 |) 1 bit per effe| 0000cd00 63 74 2c 20 31 36 20 62 69 74 73 0a 09 52 31 20 |ct, 16 bits..R1 | 0000cd10 3d 09 70 72 65 76 69 6f 75 73 20 65 66 66 65 63 |=.previous effec| 0000cd20 74 20 73 74 61 74 65 20 77 6f 72 64 20 28 26 45 |t state word (&E| 0000cd30 30 2d 26 45 46 29 20 61 73 20 61 62 6f 76 65 0a |0-&EF) as above.| 0000cd40 0a 54 68 69 73 20 53 57 49 20 63 61 6e 20 62 65 |.This SWI can be| 0000cd50 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20 | used to change | 0000cd60 74 68 65 20 73 74 61 74 65 20 6f 66 20 61 6e 79 |the state of any| 0000cd70 20 65 66 66 65 63 74 20 28 61 73 20 73 65 65 6e | effect (as seen| 0000cd80 20 62 79 20 74 68 65 20 51 54 4d 20 65 66 66 65 | by the QTM effe| 0000cd90 63 74 20 68 61 6e 64 6c 65 72 73 29 2e 20 44 69 |ct handlers). Di| 0000cda0 73 61 62 6c 69 6e 67 20 61 6e 20 65 66 66 65 63 |sabling an effec| 0000cdb0 74 20 77 69 6c 6c 20 73 74 6f 70 20 51 54 4d 20 |t will stop QTM | 0000cdc0 74 61 6b 69 6e 67 20 61 6e 79 20 61 63 74 69 6f |taking any actio| 0000cdd0 6e 20 6f 76 65 72 20 69 74 2e 20 46 6f 72 20 65 |n over it. For e| 0000cde0 78 61 6d 70 6c 65 2c 20 64 69 73 61 62 6c 69 6e |xample, disablin| 0000cdf0 67 20 65 66 66 65 63 74 20 26 46 20 77 69 6c 6c |g effect &F will| 0000ce00 20 6e 6f 74 20 61 6c 6c 6f 77 20 73 70 65 65 64 | not allow speed| 0000ce10 2f 74 65 6d 70 6f 20 63 68 61 6e 67 65 73 20 74 |/tempo changes t| 0000ce20 6f 20 74 61 6b 65 20 70 6c 61 63 65 2c 20 61 6e |o take place, an| 0000ce30 64 20 74 68 65 20 73 6f 6e 67 20 6d 61 79 20 73 |d the song may s| 0000ce40 6f 75 6e 64 20 74 6f 6f 20 66 61 73 74 20 6f 72 |ound too fast or| 0000ce50 20 73 6c 6f 77 2e 0a 0a 4f 6e 63 65 20 72 65 2d | slow...Once re-| 0000ce60 65 6e 61 62 6c 65 64 2c 20 74 68 65 20 65 66 66 |enabled, the eff| 0000ce70 65 63 74 28 73 29 20 77 69 6c 6c 20 62 65 20 72 |ect(s) will be r| 0000ce80 75 6e 20 61 73 20 75 73 75 61 6c 20 61 67 61 69 |un as usual agai| 0000ce90 6e 2e 0a 0a 54 68 65 20 63 6f 6e 74 65 6e 74 73 |n...The contents| 0000cea0 20 6f 66 20 52 30 20 61 6e 64 20 52 31 20 6f 6e | of R0 and R1 on| 0000ceb0 20 65 78 69 74 20 61 72 65 20 61 20 63 6f 70 79 | exit are a copy| 0000cec0 20 6f 66 20 74 68 65 20 65 66 66 65 63 74 20 77 | of the effect w| 0000ced0 6f 72 64 73 20 75 73 65 64 20 62 79 20 51 54 4d |ords used by QTM| 0000cee0 20 2d 20 65 61 63 68 20 68 61 73 20 31 36 20 62 | - each has 16 b| 0000cef0 69 74 73 20 75 73 65 64 2c 20 77 69 74 68 20 65 |its used, with e| 0000cf00 61 63 68 20 62 69 74 20 72 65 70 72 65 73 65 6e |ach bit represen| 0000cf10 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 20 6f |ting the state o| 0000cf20 66 20 74 68 61 74 20 65 66 66 65 63 74 20 30 2d |f that effect 0-| 0000cf30 6f 66 66 2c 20 31 2d 6f 6e 2e 20 52 30 20 63 6f |off, 1-on. R0 co| 0000cf40 6e 74 61 69 6e 73 20 74 68 65 20 66 6c 61 67 73 |ntains the flags| 0000cf50 20 66 6f 72 20 74 68 65 20 6e 6f 72 6d 61 6c 20 | for the normal | 0000cf60 65 66 66 65 63 74 73 20 28 26 30 2d 26 46 29 2c |effects (&0-&F),| 0000cf70 20 52 31 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 | R1 contains the| 0000cf80 20 66 6c 61 67 73 20 66 6f 72 20 74 68 65 20 27 | flags for the '| 0000cf90 45 27 20 65 66 66 65 63 74 73 20 28 26 45 30 2d |E' effects (&E0-| 0000cfa0 26 45 46 29 2e 0a 0a 56 20 66 6c 61 67 20 73 65 |&EF)...V flag se| 0000cfb0 74 20 69 66 20 74 68 65 20 65 66 66 65 63 74 20 |t if the effect | 0000cfc0 6e 75 6d 62 65 72 20 77 61 73 20 6f 75 74 20 6f |number was out o| 0000cfd0 66 20 72 61 6e 67 65 0a 44 41 54 41 7d 01 00 00 |f range.DATA}...| 0000cfe0 51 54 4d 5f 56 6f 6c 75 6d 65 20 20 28 26 34 37 |QTM_Volume (&47| 0000cff0 45 34 38 29 0a 23 50 61 72 65 6e 74 20 51 54 4d |E48).#Parent QTM| 0000d000 5f 0a 3d 3e 09 52 30 20 3d 09 6e 65 77 20 6f 76 |_.=>.R0 =.new ov| 0000d010 65 72 61 6c 6c 20 76 6f 6c 75 6d 65 20 28 30 2d |erall volume (0-| 0000d020 36 34 29 20 6f 72 20 2d 31 20 74 6f 20 72 65 61 |64) or -1 to rea| 0000d030 64 20 63 75 72 72 65 6e 74 20 76 6f 6c 75 6d 65 |d current volume| 0000d040 0a 3c 3d 09 52 30 20 3d 09 70 72 65 76 69 6f 75 |.<=.R0 =.previou| 0000d050 73 20 76 6f 6c 75 6d 65 20 28 30 2d 36 34 29 0a |s volume (0-64).| 0000d060 0a 54 68 69 73 20 53 57 49 20 61 6c 6c 6f 77 73 |.This SWI allows| 0000d070 20 79 6f 75 20 73 65 74 20 74 68 65 20 6f 76 65 | you set the ove| 0000d080 72 61 6c 6c 20 6f 75 74 70 75 74 20 76 6f 6c 75 |rall output volu| 0000d090 6d 65 20 66 72 6f 6d 20 74 68 65 20 51 54 4d 20 |me from the QTM | 0000d0a0 73 6f 75 6e 64 20 68 61 6e 64 6c 65 72 73 2e 20 |sound handlers. | 0000d0b0 54 68 65 20 76 6f 6c 75 6d 65 20 69 73 20 69 6e |The volume is in| 0000d0c0 20 61 20 6c 69 6e 65 61 72 20 66 6f 72 6d 20 28 | a linear form (| 0000d0d0 30 2d 36 34 29 2c 20 61 73 20 75 73 65 64 20 66 |0-64), as used f| 0000d0e0 6f 72 20 76 6f 6c 75 6d 65 73 20 69 6e 20 50 72 |or volumes in Pr| 0000d0f0 6f 54 72 61 63 6b 65 72 20 73 6f 6e 67 73 2e 20 |oTracker songs. | 0000d100 47 72 61 64 75 61 6c 20 66 61 64 65 73 20 63 61 |Gradual fades ca| 0000d110 6e 20 62 65 20 67 65 6e 65 72 61 74 65 64 20 75 |n be generated u| 0000d120 73 69 6e 67 20 74 68 69 73 20 53 57 49 2e 0a 0a |sing this SWI...| 0000d130 56 20 66 6c 61 67 20 73 65 74 20 69 66 20 76 6f |V flag set if vo| 0000d140 6c 75 6d 65 20 69 73 20 6f 75 74 20 6f 66 20 72 |lume is out of r| 0000d150 61 6e 67 65 0a 00 00 00 44 41 54 41 05 02 00 00 |ange....DATA....| 0000d160 51 54 4d 5f 53 65 74 53 61 6d 70 6c 65 53 70 65 |QTM_SetSampleSpe| 0000d170 65 64 20 20 28 26 34 37 45 34 39 29 0a 23 50 61 |ed (&47E49).#Pa| 0000d180 72 65 6e 74 20 51 54 4d 5f 0a 3d 3e 09 52 30 20 |rent QTM_.=>.R0 | 0000d190 3d 09 6e 65 77 20 73 61 6d 70 6c 65 20 73 70 65 |=.new sample spe| 0000d1a0 65 64 20 28 31 36 2d 39 36 b5 53 29 20 6f 72 20 |ed (16-96.S) or | 0000d1b0 2d 31 20 74 6f 20 72 65 61 64 20 63 75 72 72 65 |-1 to read curre| 0000d1c0 6e 74 20 73 70 65 65 64 0a 3c 3d 09 52 30 20 3d |nt speed.<=.R0 =| 0000d1d0 09 70 72 65 76 69 6f 75 73 20 73 61 6d 70 6c 65 |.previous sample| 0000d1e0 20 73 70 65 65 64 20 28 31 36 2d 39 36 b5 53 29 | speed (16-96.S)| 0000d1f0 0a 0a 54 68 69 73 20 53 57 49 20 6c 65 74 73 20 |..This SWI lets | 0000d200 79 6f 75 20 73 65 74 20 74 68 65 20 74 69 6d 65 |you set the time| 0000d210 20 62 65 74 77 65 65 6e 20 73 61 6d 70 6c 65 20 | between sample | 0000d220 6f 75 74 70 75 74 73 20 28 69 65 2e 20 73 61 6d |outputs (ie. sam| 0000d230 70 6c 65 20 71 75 61 6c 69 74 79 29 20 74 6f 20 |ple quality) to | 0000d240 61 20 76 61 6c 75 65 20 62 65 74 77 65 65 6e 20 |a value between | 0000d250 31 36 b5 53 20 61 6e 64 20 39 36 b5 53 2e 20 53 |16.S and 96.S. S| 0000d260 6d 61 6c 6c 65 72 20 73 70 65 65 64 20 76 61 6c |maller speed val| 0000d270 75 65 73 20 67 69 76 65 20 62 65 74 74 65 72 20 |ues give better | 0000d280 73 61 6d 70 6c 65 20 71 75 61 6c 69 74 79 2c 20 |sample quality, | 0000d290 62 75 74 20 61 6c 73 6f 20 75 73 65 20 6d 6f 72 |but also use mor| 0000d2a0 65 20 70 72 6f 63 65 73 73 6f 72 20 74 69 6d 65 |e processor time| 0000d2b0 2c 20 73 6c 6f 77 69 6e 67 20 74 68 65 20 63 6f |, slowing the co| 0000d2c0 6d 70 75 74 65 72 20 64 6f 77 6e 20 6d 6f 72 65 |mputer down more| 0000d2d0 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 70 |. The default sp| 0000d2e0 65 65 64 20 69 73 20 33 32 b5 53 2e 0a 0a 4e 6f |eed is 32.S...No| 0000d2f0 74 65 3a 20 49 66 20 38 20 63 68 61 6e 6e 65 6c |te: If 8 channel| 0000d300 73 20 61 72 65 20 65 6e 61 62 6c 65 64 2c 20 74 |s are enabled, t| 0000d310 68 65 20 6d 69 6e 69 6d 75 6d 20 73 61 6d 70 6c |he minimum sampl| 0000d320 65 20 73 70 65 65 64 20 69 73 20 32 34 b5 53 2e |e speed is 24.S.| 0000d330 0a 0a 56 20 66 6c 61 67 20 73 65 74 20 69 66 20 |..V flag set if | 0000d340 73 61 6d 70 6c 65 20 73 70 65 65 64 20 69 73 20 |sample speed is | 0000d350 6f 75 74 20 6f 66 20 72 61 6e 67 65 0a 00 00 00 |out of range....| 0000d360 44 41 54 41 48 02 00 00 51 54 4d 5f 44 4d 41 42 |DATAH...QTM_DMAB| 0000d370 75 66 66 65 72 20 20 28 26 34 37 45 34 41 29 0a |uffer (&47E4A).| 0000d380 23 50 61 72 65 6e 74 20 51 54 4d 5f 0a 3c 3d 09 |#Parent QTM_.<=.| 0000d390 52 30 20 3d 09 61 64 64 72 65 73 73 20 6f 66 20 |R0 =.address of | 0000d3a0 6c 61 73 74 20 75 73 65 64 20 44 4d 41 20 73 6f |last used DMA so| 0000d3b0 75 6e 64 20 62 75 66 66 65 72 2e 0a 0a 42 79 20 |und buffer...By | 0000d3c0 75 73 69 6e 67 20 74 68 69 73 20 53 57 49 2c 20 |using this SWI, | 0000d3d0 69 74 20 77 6f 75 6c 64 20 62 65 20 70 6f 73 73 |it would be poss| 0000d3e0 69 62 6c 65 20 74 6f 20 69 6d 70 6c 65 6d 65 6e |ible to implemen| 0000d3f0 74 20 73 6f 75 6e 64 20 6f 75 74 70 75 74 20 6f |t sound output o| 0000d400 73 63 69 6c 6c 6f 73 63 6f 70 65 73 2c 20 6f 72 |scilloscopes, or| 0000d410 20 76 6f 6c 75 6d 65 20 61 63 74 69 76 61 74 65 | volume activate| 0000d420 64 20 28 72 65 61 6c 29 20 56 55 20 62 61 72 73 |d (real) VU bars| 0000d430 2e 20 54 68 65 20 64 61 74 61 20 69 6e 20 74 68 |. The data in th| 0000d440 65 20 44 4d 41 20 62 75 66 66 65 72 20 69 73 20 |e DMA buffer is | 0000d450 73 74 6f 72 65 64 20 61 73 3a 20 5b 63 31 5d 2c |stored as: [c1],| 0000d460 5b 63 32 5d 2c 5b 63 33 5d 2c 5b 63 30 5d 2c 5b |[c2],[c3],[c0],[| 0000d470 63 31 5d 2c 5b 63 32 5d 2e 2e 2e 65 74 63 2c 20 |c1],[c2]...etc, | 0000d480 31 20 62 79 74 65 20 66 6f 72 20 65 61 63 68 20 |1 byte for each | 0000d490 63 68 61 6e 6e 65 6c 2e 20 54 68 65 20 44 4d 41 |channel. The DMA| 0000d4a0 20 62 75 66 66 65 72 20 73 69 7a 65 20 75 73 65 | buffer size use| 0000d4b0 64 20 62 79 20 51 54 4d 20 69 73 20 32 30 38 2a |d by QTM is 208*| 0000d4c0 5c 3c 6e 6f 2e 20 6f 66 20 63 68 61 6e 6e 65 6c |\<no. of channel| 0000d4d0 73 3e 20 6c 6f 6e 67 2e 0a 0a 54 68 65 20 61 64 |s> long...The ad| 0000d4e0 64 72 65 73 73 20 72 65 74 75 72 6e 65 64 20 69 |dress returned i| 0000d4f0 6e 20 52 30 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 |n R0 will only b| 0000d500 65 20 61 63 63 75 72 61 74 65 20 69 66 20 74 68 |e accurate if th| 0000d510 65 20 51 54 4d 20 73 6f 75 6e 64 20 73 79 73 74 |e QTM sound syst| 0000d520 65 6d 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 |em is currently | 0000d530 61 63 74 69 76 65 2e 20 54 6f 20 63 68 65 63 6b |active. To check| 0000d540 20 77 68 65 74 68 65 72 20 74 68 69 73 20 69 73 | whether this is| 0000d550 20 74 68 65 20 63 61 73 65 2c 20 75 73 65 20 3c | the case, use <| 0000d560 51 54 4d 5f 53 6f 75 6e 64 43 6f 6e 74 72 6f 6c |QTM_SoundControl| 0000d570 3e 2c 20 74 6f 20 72 65 61 64 20 74 68 65 20 73 |>, to read the s| 0000d580 6f 75 6e 64 20 73 79 73 74 65 6d 20 73 74 61 74 |ound system stat| 0000d590 65 20 28 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 |e (number of cha| 0000d5a0 6e 6e 65 6c 73 29 2e 0a 44 41 54 41 e0 03 00 00 |nnels)..DATA....| 0000d5b0 51 54 4d 5f 52 65 6d 6f 76 65 43 68 61 6e 6e 65 |QTM_RemoveChanne| 0000d5c0 6c 20 20 28 26 34 37 45 34 42 29 0a 23 50 61 72 |l (&47E4B).#Par| 0000d5d0 65 6e 74 20 51 54 4d 5f 0a 3d 3e 09 52 30 20 3d |ent QTM_.=>.R0 =| 0000d5e0 09 63 68 61 6e 6e 65 6c 20 6e 75 6d 62 65 72 20 |.channel number | 0000d5f0 74 6f 20 72 65 6d 6f 76 65 20 66 72 6f 6d 20 73 |to remove from s| 0000d600 6f 6e 67 20 70 6c 61 79 65 72 20 28 31 2d 38 29 |ong player (1-8)| 0000d610 0a 0a 3c 3d 09 52 30 20 3d 09 70 72 65 76 69 6f |..<=.R0 =.previo| 0000d620 75 73 20 73 74 61 74 65 20 6f 66 20 74 68 61 74 |us state of that| 0000d630 20 63 68 61 6e 6e 65 6c 3a 09 30 20 3d 20 61 6c | channel:.0 = al| 0000d640 72 65 61 64 79 20 72 65 6d 6f 76 65 64 0a 09 20 |ready removed.. | 0000d650 09 20 09 09 09 09 31 20 3d 20 51 54 4d 20 63 68 |. ....1 = QTM ch| 0000d660 61 6e 6e 65 6c 0a 0a 54 68 69 73 20 53 57 49 20 |annel..This SWI | 0000d670 68 61 73 20 74 68 65 20 65 66 66 65 63 74 20 6f |has the effect o| 0000d680 66 20 27 72 65 6d 6f 76 69 6e 67 27 20 74 68 65 |f 'removing' the| 0000d690 20 67 69 76 65 6e 20 63 68 61 6e 6e 65 6c 20 66 | given channel f| 0000d6a0 72 6f 6d 20 74 68 65 20 51 54 4d 20 70 6c 61 79 |rom the QTM play| 0000d6b0 65 72 20 72 6f 75 74 69 6e 65 2e 20 54 68 69 73 |er routine. This| 0000d6c0 20 6d 65 61 6e 73 20 6e 6f 20 73 61 6d 70 6c 65 | means no sample| 0000d6d0 73 20 66 72 6f 6d 20 74 68 65 20 73 6f 6e 67 20 |s from the song | 0000d6e0 77 69 6c 6c 20 62 65 20 70 6c 61 79 65 64 20 74 |will be played t| 0000d6f0 68 72 6f 75 67 68 20 74 68 69 73 20 63 68 61 6e |hrough this chan| 0000d700 6e 65 6c 2c 20 61 6c 74 68 6f 75 67 68 20 69 74 |nel, although it| 0000d710 20 69 73 20 73 74 69 6c 6c 20 70 6f 73 73 69 62 | is still possib| 0000d720 6c 65 20 74 6f 20 70 6c 61 79 20 73 61 6d 70 6c |le to play sampl| 0000d730 65 73 20 64 69 72 65 63 74 6c 79 2c 20 75 73 69 |es directly, usi| 0000d740 6e 67 20 74 68 65 20 50 6c 61 79 53 61 6d 70 6c |ng the PlaySampl| 0000d750 65 20 53 57 49 73 2c 20 6f 72 20 74 68 72 6f 75 |e SWIs, or throu| 0000d760 67 68 20 74 68 65 20 54 72 61 6e 73 70 61 72 65 |gh the Transpare| 0000d770 6e 74 20 73 6f 75 6e 64 20 73 79 73 74 65 6d 20 |nt sound system | 0000d780 28 69 66 20 61 63 74 69 76 65 29 2e 0a 0a 57 68 |(if active)...Wh| 0000d790 69 6c 65 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 |ile the channel | 0000d7a0 69 73 20 27 72 65 6d 6f 76 65 64 27 2c 20 74 68 |is 'removed', th| 0000d7b0 65 20 70 6c 61 79 65 72 20 77 69 6c 6c 20 63 6f |e player will co| 0000d7c0 6e 74 69 6e 75 65 20 74 6f 20 6b 65 65 70 20 75 |ntinue to keep u| 0000d7d0 70 20 74 6f 20 64 61 74 65 20 74 68 65 20 65 66 |p to date the ef| 0000d7e0 66 65 63 74 73 20 61 6e 64 20 73 61 6d 70 6c 65 |fects and sample| 0000d7f0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 6f | information, so| 0000d800 20 74 68 61 74 20 77 68 65 6e 20 74 68 65 20 63 | that when the c| 0000d810 68 61 6e 6e 65 6c 20 69 73 20 72 65 73 74 6f 72 |hannel is restor| 0000d820 65 64 2c 20 74 68 65 20 73 6f 6e 67 20 77 69 6c |ed, the song wil| 0000d830 6c 20 63 6f 6e 74 69 6e 75 65 20 61 73 20 69 66 |l continue as if| 0000d840 20 6e 6f 74 68 69 6e 67 20 68 61 64 20 68 61 70 | nothing had hap| 0000d850 70 65 6e 65 64 2e 0a 0a 4e 6f 74 65 3a 20 51 54 |pened...Note: QT| 0000d860 4d 20 76 31 2e 32 32 20 64 6f 65 73 20 6e 6f 74 |M v1.22 does not| 0000d870 20 75 73 65 20 63 68 61 6e 6e 65 6c 73 20 35 2d | use channels 5-| 0000d880 38 20 66 6f 72 20 73 6f 6e 67 20 70 6c 61 79 69 |8 for song playi| 0000d890 6e 67 2c 20 73 6f 20 61 6c 74 68 6f 75 67 68 20 |ng, so although | 0000d8a0 74 68 65 79 20 63 61 6e 20 62 65 20 27 72 65 6d |they can be 'rem| 0000d8b0 6f 76 65 64 27 2c 20 74 68 69 73 20 77 69 6c 6c |oved', this will| 0000d8c0 20 6d 61 6b 65 20 6e 6f 20 6e 6f 74 69 63 65 61 | make no noticea| 0000d8d0 62 6c 65 20 64 69 66 66 65 72 65 6e 63 65 20 61 |ble difference a| 0000d8e0 73 20 74 68 65 79 20 63 61 6e 20 6f 6e 6c 79 20 |s they can only | 0000d8f0 62 65 20 75 73 65 64 20 66 6f 72 20 73 61 6d 70 |be used for samp| 0000d900 6c 65 20 70 6c 61 79 69 6e 67 20 61 6e 79 77 61 |le playing anywa| 0000d910 79 21 0a 0a 56 20 66 6c 61 67 20 73 65 74 20 69 |y!..V flag set i| 0000d920 66 20 63 68 61 6e 6e 65 6c 20 6e 75 6d 62 65 72 |f channel number| 0000d930 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 | is out of range| 0000d940 0a 49 6e 74 65 72 72 75 70 74 73 3a 20 49 52 51 |.Interrupts: IRQ| 0000d950 20 69 6e 74 65 72 72 75 70 74 73 20 64 69 73 61 | interrupts disa| 0000d960 62 6c 65 64 20 77 68 69 6c 65 20 51 54 4d 20 73 |bled while QTM s| 0000d970 6f 75 6e 64 20 66 6c 61 67 73 20 61 72 65 20 61 |ound flags are a| 0000d980 6c 74 65 72 65 64 2e 0a 44 41 54 41 4a 01 00 00 |ltered..DATAJ...| 0000d990 51 54 4d 5f 52 65 73 74 6f 72 65 43 68 61 6e 6e |QTM_RestoreChann| 0000d9a0 65 6c 20 20 28 26 34 37 45 34 43 29 0a 23 50 61 |el (&47E4C).#Pa| 0000d9b0 72 65 6e 74 20 51 54 4d 5f 0a 23 57 72 61 70 20 |rent QTM_.#Wrap | 0000d9c0 6f 66 66 0a 3d 3e 09 52 30 20 3d 09 63 68 61 6e |off.=>.R0 =.chan| 0000d9d0 6e 65 6c 20 6e 75 6d 62 65 72 20 74 6f 20 72 65 |nel number to re| 0000d9e0 73 74 6f 72 65 20 28 31 2d 38 29 0a 3c 3d 09 52 |store (1-8).<=.R| 0000d9f0 30 20 3d 09 70 72 65 76 69 6f 75 73 20 73 74 61 |0 =.previous sta| 0000da00 74 65 20 6f 66 20 74 68 61 74 20 63 68 61 6e 6e |te of that chann| 0000da10 65 6c 3a 09 30 20 3d 20 70 72 65 76 69 6f 75 73 |el:.0 = previous| 0000da20 6c 79 20 72 65 6d 6f 76 65 64 0a 09 20 09 20 09 |ly removed.. . .| 0000da30 09 09 09 31 20 3d 20 61 6c 72 65 61 64 79 20 61 |...1 = already a| 0000da40 20 51 54 4d 20 63 68 61 6e 6e 65 6c 0a 23 57 72 | QTM channel.#Wr| 0000da50 61 70 0a 0a 54 68 69 73 20 53 57 49 20 69 73 20 |ap..This SWI is | 0000da60 75 73 65 64 20 74 6f 20 72 65 73 74 6f 72 65 20 |used to restore | 0000da70 63 68 61 6e 6e 65 6c 73 20 70 72 65 76 69 6f 75 |channels previou| 0000da80 73 6c 79 20 72 65 6d 6f 76 65 64 20 62 79 20 3c |sly removed by <| 0000da90 51 54 4d 5f 52 65 6d 6f 76 65 43 68 61 6e 6e 65 |QTM_RemoveChanne| 0000daa0 6c 3e 2e 0a 0a 56 20 66 6c 61 67 20 73 65 74 20 |l>...V flag set | 0000dab0 69 66 20 63 68 61 6e 6e 65 6c 20 6e 75 6d 62 65 |if channel numbe| 0000dac0 72 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 |r is out of rang| 0000dad0 65 0a 00 00 44 41 54 41 1c 04 00 00 51 54 4d 5f |e...DATA....QTM_| 0000dae0 53 74 65 72 65 6f 20 20 28 26 34 37 45 34 44 29 |Stereo (&47E4D)| 0000daf0 0a 23 50 61 72 65 6e 74 20 51 54 4d 5f 0a 3d 3e |.#Parent QTM_.=>| 0000db00 09 52 30 20 3d 09 3c 63 68 61 6e 6e 65 6c 20 6e |.R0 =.<channel n| 0000db10 75 6d 62 65 72 3d 3e 2e 75 73 72 63 68 61 6e 6e |umber=>.usrchann| 0000db20 65 6c 3e 20 74 6f 20 61 6c 74 65 72 0a 09 20 09 |el> to alter.. .| 0000db30 6f 72 20 30 20 66 6f 72 20 3c 70 72 65 2d 70 72 |or 0 for <pre-pr| 0000db40 6f 67 72 61 6d 6d 65 64 20 73 65 74 74 69 6e 67 |ogrammed setting| 0000db50 73 3d 3e 2e 70 72 67 63 68 61 6e 6e 65 6c 3e 0a |s=>.prgchannel>.| 0000db60 0a 3c 3d 09 52 30 20 69 73 20 70 72 65 73 65 72 |.<=.R0 is preser| 0000db70 76 65 64 0a 09 49 66 20 52 30 20 3d 20 31 2d 38 |ved..If R0 = 1-8| 0000db80 20 74 68 65 6e 20 52 31 20 3d 20 70 72 65 76 69 | then R1 = previ| 0000db90 6f 75 73 20 73 74 65 72 65 6f 20 70 6f 73 69 74 |ous stereo posit| 0000dba0 69 6f 6e 0a 09 49 66 20 52 30 20 3d 20 30 20 74 |ion..If R0 = 0 t| 0000dbb0 68 65 6e 20 52 31 20 69 73 20 63 6f 72 72 75 70 |hen R1 is corrup| 0000dbc0 74 65 64 0a 0a 54 68 69 73 20 53 57 49 20 61 6c |ted..This SWI al| 0000dbd0 6c 6f 77 73 20 74 68 65 20 73 74 65 72 65 6f 20 |lows the stereo | 0000dbe0 70 6f 73 69 74 69 6f 6e 73 20 66 6f 72 20 65 61 |positions for ea| 0000dbf0 63 68 20 63 68 61 6e 6e 65 6c 20 74 6f 20 62 65 |ch channel to be| 0000dc00 20 61 6c 74 65 72 65 64 20 69 6e 64 65 70 65 6e | altered indepen| 0000dc10 64 65 6e 74 6c 79 2c 20 6f 72 20 61 6c 6c 20 74 |dently, or all t| 0000dc20 6f 67 65 74 68 65 72 2e 20 49 66 20 52 30 3d 31 |ogether. If R0=1| 0000dc30 2d 38 20 6f 6e 20 65 6e 74 72 79 2c 20 74 68 65 |-8 on entry, the| 0000dc40 6e 20 52 31 20 6d 75 73 74 20 62 65 20 65 69 74 |n R1 must be eit| 0000dc50 68 65 72 20 61 20 76 61 6c 69 64 20 73 74 65 72 |her a valid ster| 0000dc60 65 6f 20 70 6f 73 69 74 69 6f 6e 20 28 2d 31 32 |eo position (-12| 0000dc70 37 20 74 6f 20 31 32 37 29 20 6f 72 20 2d 31 32 |7 to 127) or -12| 0000dc80 38 20 74 6f 20 72 65 61 64 20 74 68 65 20 70 72 |8 to read the pr| 0000dc90 65 76 69 6f 75 73 20 70 6f 73 69 74 69 6f 6e 2e |evious position.| 0000dca0 20 49 66 20 52 30 3d 30 20 6f 6e 20 65 6e 74 72 | If R0=0 on entr| 0000dcb0 79 2c 20 74 68 65 6e 20 52 31 20 6d 75 73 74 20 |y, then R1 must | 0000dcc0 62 65 20 69 6e 20 74 68 65 20 72 61 6e 67 65 20 |be in the range | 0000dcd0 30 2d 34 20 74 6f 20 61 6c 74 65 72 20 61 6c 6c |0-4 to alter all| 0000dce0 20 74 68 65 20 63 68 61 6e 6e 65 6c 73 20 74 6f | the channels to| 0000dcf0 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 70 72 | one of these pr| 0000dd00 65 2d 70 72 6f 67 72 61 6d 6d 65 64 20 76 61 6c |e-programmed val| 0000dd10 75 65 73 2e 0a 23 53 75 62 70 61 67 65 20 75 73 |ues..#Subpage us| 0000dd20 72 63 68 61 6e 6e 65 6c 0a 55 73 65 72 20 63 68 |rchannel.User ch| 0000dd30 61 6e 6e 65 6c 20 73 74 65 72 65 6f 20 73 65 74 |annel stereo set| 0000dd40 74 69 6e 67 73 0a 52 30 20 3d 09 31 2d 38 0a 52 |tings.R0 =.1-8.R| 0000dd50 31 20 3d 09 2d 31 32 37 20 28 6c 65 66 74 29 20 |1 =.-127 (left) | 0000dd60 74 6f 20 31 32 37 20 28 72 69 67 68 74 29 0a 09 |to 127 (right)..| 0000dd70 6f 72 20 2d 31 32 38 20 74 6f 20 72 65 61 64 20 |or -128 to read | 0000dd80 63 75 72 72 65 6e 74 20 70 6f 73 69 74 69 6f 6e |current position| 0000dd90 0a 23 53 75 62 70 61 67 65 20 70 72 67 63 68 61 |.#Subpage prgcha| 0000dda0 6e 6e 65 6c 0a 52 30 20 3d 09 30 0a 52 31 20 3d |nnel.R0 =.0.R1 =| 0000ddb0 09 30 09 3c 64 65 66 61 75 6c 74 20 73 74 65 72 |.0.<default ster| 0000ddc0 65 6f 20 70 6f 73 69 74 69 6f 6e 73 3d 3e 2e 64 |eo positions=>.d| 0000ddd0 65 66 61 75 6c 74 3e 0a 09 31 09 41 6d 69 67 61 |efault>..1.Amiga| 0000dde0 20 28 66 75 6c 6c 29 20 73 74 65 72 65 6f 20 70 | (full) stereo p| 0000ddf0 6f 73 69 74 69 6f 6e 73 0a 09 32 09 63 65 6e 74 |ositions..2.cent| 0000de00 72 65 64 20 28 6e 6f 20 73 74 65 72 65 6f 29 0a |red (no stereo).| 0000de10 09 33 09 66 75 6c 6c 20 6c 65 66 74 0a 09 34 09 |.3.full left..4.| 0000de20 66 75 6c 6c 20 72 69 67 68 74 0a 23 53 75 62 70 |full right.#Subp| 0000de30 61 67 65 20 64 65 66 61 75 6c 74 0a 44 65 66 61 |age default.Defa| 0000de40 75 6c 74 20 73 74 65 72 65 6f 20 73 65 74 74 69 |ult stereo setti| 0000de50 6e 67 73 0a 43 68 61 6e 6e 65 6c 73 20 31 2c 35 |ngs.Channels 1,5| 0000de60 20 50 6f 73 69 74 69 6f 6e 3a 20 2d 37 39 20 28 | Position: -79 (| 0000de70 6c 65 66 74 29 0a 43 68 61 6e 6e 65 6c 73 20 32 |left).Channels 2| 0000de80 2c 36 20 50 6f 73 69 74 69 6f 6e 3a 20 20 37 39 |,6 Position: 79| 0000de90 20 28 72 69 67 68 74 29 0a 43 68 61 6e 6e 65 6c | (right).Channel| 0000dea0 73 20 33 2c 37 20 50 6f 73 69 74 69 6f 6e 3a 20 |s 3,7 Position: | 0000deb0 20 34 37 20 28 73 6c 69 67 68 74 6c 79 20 72 69 | 47 (slightly ri| 0000dec0 67 68 74 29 0a 43 68 61 6e 6e 65 6c 73 20 34 2c |ght).Channels 4,| 0000ded0 38 20 50 6f 73 69 74 69 6f 6e 3a 20 2d 34 37 20 |8 Position: -47 | 0000dee0 28 73 6c 69 67 68 74 6c 79 20 6c 65 66 74 29 0a |(slightly left).| 0000def0 44 41 54 41 96 01 00 00 51 54 4d 5f 52 65 61 64 |DATA....QTM_Read| 0000df00 53 6f 6e 67 4c 65 6e 67 74 68 20 20 28 26 34 37 |SongLength (&47| 0000df10 45 34 45 29 0a 23 50 61 72 65 6e 74 20 51 54 4d |E4E).#Parent QTM| 0000df20 5f 0a 3c 3d 09 52 30 20 3d 09 6e 75 6d 62 65 72 |_.<=.R0 =.number| 0000df30 20 6f 66 20 73 65 71 75 65 6e 63 65 73 20 69 6e | of sequences in| 0000df40 20 63 75 72 72 65 6e 74 20 73 6f 6e 67 20 28 31 | current song (1| 0000df50 2d 31 32 38 29 0a 09 52 31 20 3d 09 6d 61 78 69 |-128)..R1 =.maxi| 0000df60 6d 75 6d 20 70 61 74 74 65 72 6e 20 6e 75 6d 62 |mum pattern numb| 0000df70 65 72 20 69 6e 20 73 6f 6e 67 20 28 69 65 2e 20 |er in song (ie. | 0000df80 6e 75 6d 62 65 72 20 6f 66 20 70 61 74 74 65 72 |number of patter| 0000df90 6e 73 2d 31 29 0a 0a 54 68 69 73 20 53 57 49 20 |ns-1)..This SWI | 0000dfa0 61 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 72 65 |allows you to re| 0000dfb0 61 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 |ad the number of| 0000dfc0 20 73 65 71 75 65 6e 63 65 73 20 61 6e 64 20 6d | sequences and m| 0000dfd0 61 78 69 6d 75 6d 20 70 61 74 74 65 72 6e 20 6e |aximum pattern n| 0000dfe0 75 6d 62 65 72 20 69 6e 20 74 68 65 20 63 75 72 |umber in the cur| 0000dff0 72 65 6e 74 20 73 6f 6e 67 2e 20 54 68 65 20 6d |rent song. The m| 0000e000 61 78 69 6d 75 6d 20 70 61 74 74 65 72 6e 20 6e |aximum pattern n| 0000e010 75 6d 62 65 72 20 69 73 20 41 4c 57 41 59 53 20 |umber is ALWAYS | 0000e020 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 |the number of pa| 0000e030 74 74 65 72 6e 73 20 70 72 65 73 65 6e 74 2d 31 |tterns present-1| 0000e040 2c 20 73 69 6e 63 65 20 63 6f 75 6e 74 69 6e 67 |, since counting| 0000e050 20 73 74 61 72 74 73 20 61 74 20 30 2c 20 6e 6f | starts at 0, no| 0000e060 74 20 31 2e 0a 0a 56 20 66 6c 61 67 20 73 65 74 |t 1...V flag set| 0000e070 20 69 66 20 6e 6f 20 73 6f 6e 67 20 69 73 20 6c | if no song is l| 0000e080 6f 61 64 65 64 0a 00 00 44 41 54 41 69 01 00 00 |oaded...DATAi...| 0000e090 51 54 4d 5f 52 65 61 64 53 65 71 75 65 6e 63 65 |QTM_ReadSequence| 0000e0a0 54 61 62 6c 65 20 20 28 26 34 37 45 34 46 29 0a |Table (&47E4F).| 0000e0b0 23 50 61 72 65 6e 74 20 51 54 4d 5f 0a 3d 3e 09 |#Parent QTM_.=>.| 0000e0c0 52 30 20 3d 20 73 65 71 75 65 6e 63 65 20 6e 75 |R0 = sequence nu| 0000e0d0 6d 62 65 72 20 74 6f 20 72 65 61 64 20 28 30 2d |mber to read (0-| 0000e0e0 31 32 37 29 0a 3c 3d 09 52 30 20 3d 20 70 61 74 |127).<=.R0 = pat| 0000e0f0 74 65 72 6e 20 6e 75 6d 62 65 72 20 73 74 6f 72 |tern number stor| 0000e100 65 64 20 61 74 20 74 68 61 74 20 70 6f 73 69 74 |ed at that posit| 0000e110 69 6f 6e 0a 0a 54 68 69 73 20 53 57 49 20 65 6e |ion..This SWI en| 0000e120 61 62 6c 65 73 20 79 6f 75 20 74 6f 20 72 65 61 |ables you to rea| 0000e130 64 20 74 68 65 20 70 61 74 74 65 72 6e 20 74 6f |d the pattern to| 0000e140 20 62 65 20 70 6c 61 79 65 64 20 61 74 20 61 20 | be played at a | 0000e150 67 69 76 65 6e 20 70 6f 73 69 74 69 6f 6e 20 69 |given position i| 0000e160 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 6f |n the current so| 0000e170 6e 67 27 73 20 73 65 71 75 65 6e 63 65 20 74 61 |ng's sequence ta| 0000e180 62 6c 65 2e 0a 0a 56 20 66 6c 61 67 20 73 65 74 |ble...V flag set| 0000e190 20 69 66 20 6e 6f 20 73 6f 6e 67 20 69 73 20 6c | if no song is l| 0000e1a0 6f 61 64 65 64 20 6f 72 20 69 66 20 73 65 71 75 |oaded or if sequ| 0000e1b0 65 6e 63 65 20 6e 75 6d 62 65 72 20 69 73 20 6c |ence number is l| 0000e1c0 61 72 67 65 72 20 74 68 61 6e 20 74 68 65 20 73 |arger than the s| 0000e1d0 6f 6e 67 27 73 20 6d 61 78 69 6d 75 6d 20 73 65 |ong's maximum se| 0000e1e0 71 75 65 6e 63 65 20 70 6f 73 69 74 69 6f 6e 2e |quence position.| 0000e1f0 0a 00 00 00 44 41 54 41 e0 02 00 00 51 54 4d 5f |....DATA....QTM_| 0000e200 56 55 42 61 72 43 6f 6e 74 72 6f 6c 20 20 28 26 |VUBarControl (&| 0000e210 34 37 45 35 30 29 0a 23 50 61 72 65 6e 74 20 51 |47E50).#Parent Q| 0000e220 54 4d 5f 0a 3d 3e 09 52 30 20 3d 09 3c 63 6f 6e |TM_.=>.R0 =.<con| 0000e230 74 72 6f 6c 20 76 61 6c 75 65 3d 3e 2e 63 6f 6e |trol value=>.con| 0000e240 74 72 6f 6c 3e 0a 09 52 31 20 3d 09 6e 65 77 20 |trol>..R1 =.new | 0000e250 56 55 20 67 72 61 76 69 74 79 2c 20 6f 72 20 2d |VU gravity, or -| 0000e260 31 20 74 6f 20 72 65 61 64 0a 0a 3c 3d 09 52 30 |1 to read..<=.R0| 0000e270 20 3d 09 70 72 65 76 69 6f 75 73 20 56 55 20 63 | =.previous VU c| 0000e280 6f 6e 74 72 6f 6c 6c 65 72 20 73 74 61 74 65 0a |ontroller state.| 0000e290 09 52 31 20 3d 09 70 72 65 76 69 6f 75 73 20 56 |.R1 =.previous V| 0000e2a0 55 20 62 61 72 20 67 72 61 76 69 74 79 0a 0a 54 |U bar gravity..T| 0000e2b0 68 69 73 20 53 57 49 20 61 6c 6c 6f 77 73 20 63 |his SWI allows c| 0000e2c0 6f 6e 74 72 6f 6c 20 6f 66 20 74 68 65 20 68 69 |ontrol of the hi| 0000e2d0 67 68 6c 79 20 61 63 63 75 72 61 74 65 20 56 55 |ghly accurate VU| 0000e2e0 20 62 61 72 20 72 6f 75 74 69 6e 65 20 63 6f 6e | bar routine con| 0000e2f0 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 51 54 |tained in the QT| 0000e300 4d 20 6d 6f 64 75 6c 65 2e 20 54 68 65 20 64 65 |M module. The de| 0000e310 66 61 75 6c 74 20 73 65 74 74 69 6e 67 73 20 66 |fault settings f| 0000e320 6f 72 20 74 68 65 20 56 55 20 62 61 72 20 72 6f |or the VU bar ro| 0000e330 75 74 69 6e 65 20 61 72 65 3a 20 67 72 61 76 69 |utine are: gravi| 0000e340 74 79 20 3d 20 32 20 28 6c 69 6e 65 73 20 70 65 |ty = 2 (lines pe| 0000e350 72 20 35 30 74 68 20 6f 66 20 61 20 73 65 63 6f |r 50th of a seco| 0000e360 6e 64 29 20 61 6e 64 20 74 68 65 20 56 55 20 62 |nd) and the VU b| 0000e370 61 72 20 63 6f 6e 74 72 6f 6c 6c 65 72 20 6f 66 |ar controller of| 0000e380 66 2e 0a 0a 4e 6f 74 65 3a 20 43 75 72 72 65 6e |f...Note: Curren| 0000e390 74 6c 79 20 51 54 4d 20 56 55 20 62 61 72 73 20 |tly QTM VU bars | 0000e3a0 61 72 65 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 |are only availab| 0000e3b0 6c 65 20 66 6f 72 20 63 68 61 6e 6e 65 6c 73 20 |le for channels | 0000e3c0 31 2d 34 2e 0a 23 53 75 62 70 61 67 65 20 63 6f |1-4..#Subpage co| 0000e3d0 6e 74 72 6f 6c 0a 51 54 4d 20 56 55 42 61 72 20 |ntrol.QTM VUBar | 0000e3e0 63 6f 6e 74 72 6f 6c 20 76 61 6c 75 65 73 0a 5c |control values.\| 0000e3f0 23 09 6d 65 61 6e 69 6e 67 0a 23 4c 69 6e 65 0a |#.meaning.#Line.| 0000e400 30 09 73 77 69 74 63 68 20 74 68 65 20 56 55 20 |0.switch the VU | 0000e410 62 61 72 20 63 6f 6e 74 72 6f 6c 6c 65 72 73 20 |bar controllers | 0000e420 6f 66 66 0a 31 09 73 65 74 20 74 68 65 20 56 55 |off.1.set the VU| 0000e430 20 62 61 72 20 63 6f 6e 74 72 6f 6c 6c 65 72 20 | bar controller | 0000e440 74 6f 20 75 73 65 20 27 66 61 6b 65 27 20 56 55 |to use 'fake' VU| 0000e450 20 62 61 72 73 0a 32 09 73 65 74 20 74 68 65 20 | bars.2.set the | 0000e460 56 55 20 62 61 72 20 63 6f 6e 74 72 6f 6c 6c 65 |VU bar controlle| 0000e470 72 20 74 6f 20 75 73 65 20 27 65 66 66 65 63 74 |r to use 'effect| 0000e480 27 20 56 55 20 62 61 72 73 0a 33 09 73 65 74 20 |' VU bars.3.set | 0000e490 74 68 65 20 56 55 20 62 61 72 20 63 6f 6e 74 72 |the VU bar contr| 0000e4a0 6f 6c 6c 65 72 20 74 6f 20 75 73 65 20 27 72 65 |oller to use 're| 0000e4b0 61 6c 27 20 56 55 20 62 61 72 73 0a 2d 31 09 72 |al' VU bars.-1.r| 0000e4c0 65 61 64 20 63 75 72 72 65 6e 74 20 73 65 74 74 |ead current sett| 0000e4d0 69 6e 67 0a 44 41 54 41 29 02 00 00 51 54 4d 5f |ing.DATA)...QTM_| 0000e4e0 52 65 61 64 56 55 4c 65 76 65 6c 73 20 20 28 26 |ReadVULevels (&| 0000e4f0 34 37 45 35 31 29 0a 23 50 61 72 65 6e 74 20 51 |47E51).#Parent Q| 0000e500 54 4d 5f 0a 3d 3e 09 52 30 20 3d 09 43 68 61 6e |TM_.=>.R0 =.Chan| 0000e510 6e 65 6c 20 6e 75 6d 62 65 72 20 28 31 2d 34 29 |nel number (1-4)| 0000e520 20 6f 72 20 30 20 66 6f 72 20 61 6c 6c 20 63 68 | or 0 for all ch| 0000e530 61 6e 6e 65 6c 73 0a 0a 3c 3d 09 49 66 20 52 30 |annels..<=.If R0| 0000e540 20 3d 20 31 2d 34 20 6f 6e 20 65 6e 74 72 79 2c | = 1-4 on entry,| 0000e550 20 74 68 65 6e 0a 09 20 20 20 52 30 20 3d 20 56 | then.. R0 = V| 0000e560 55 20 62 61 72 20 68 65 69 67 68 74 20 66 6f 72 |U bar height for| 0000e570 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 73 70 65 | the channel spe| 0000e580 63 69 66 69 65 64 20 69 6e 20 52 30 20 28 30 2d |cified in R0 (0-| 0000e590 36 34 29 0a 09 49 66 20 52 30 20 3d 20 30 20 6f |64)..If R0 = 0 o| 0000e5a0 6e 20 65 6e 74 72 79 2c 20 74 68 65 6e 20 0a 09 |n entry, then ..| 0000e5b0 20 20 20 52 30 20 3d 20 77 6f 72 64 20 63 6f 6e | R0 = word con| 0000e5c0 74 61 69 6e 69 6e 67 20 31 20 62 79 74 65 20 70 |taining 1 byte p| 0000e5d0 65 72 20 63 68 61 6e 6e 65 6c 20 6f 66 20 61 6c |er channel of al| 0000e5e0 6c 20 74 68 65 20 34 20 63 68 61 6e 6e 65 6c 73 |l the 4 channels| 0000e5f0 27 20 56 55 20 62 61 72 20 68 65 69 67 68 74 73 |' VU bar heights| 0000e600 20 28 30 2d 36 34 2c 20 65 61 63 68 20 62 79 74 | (0-64, each byt| 0000e610 65 29 0a 0a 54 68 69 73 20 53 57 49 20 6c 65 74 |e)..This SWI let| 0000e620 73 20 79 6f 75 20 72 65 61 64 20 74 68 65 20 63 |s you read the c| 0000e630 75 72 72 65 6e 74 20 56 55 20 6c 65 76 65 6c 73 |urrent VU levels| 0000e640 20 6f 66 20 74 68 65 20 51 54 4d 20 56 55 20 62 | of the QTM VU b| 0000e650 61 72 20 68 61 6e 64 6c 65 72 2e 20 54 68 69 73 |ar handler. This| 0000e660 20 63 61 6c 6c 20 73 68 6f 75 6c 64 20 6f 6e 6c | call should onl| 0000e670 79 20 62 65 20 75 73 65 64 20 69 66 20 74 68 65 |y be used if the| 0000e680 20 56 55 20 62 61 72 20 68 61 6e 64 6c 65 72 20 | VU bar handler | 0000e690 68 61 73 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 |has been enabled| 0000e6a0 20 75 73 69 6e 67 20 3c 51 54 4d 5f 56 55 42 61 | using <QTM_VUBa| 0000e6b0 72 43 6f 6e 74 72 6f 6c 3e 2e 0a 0a 4e 6f 74 65 |rControl>...Note| 0000e6c0 3a 20 43 75 72 72 65 6e 74 6c 79 20 51 54 4d 20 |: Currently QTM | 0000e6d0 56 55 20 62 61 72 73 20 61 72 65 20 6f 6e 6c 79 |VU bars are only| 0000e6e0 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 63 | available for c| 0000e6f0 68 61 6e 6e 65 6c 73 20 31 2d 34 2e 0a 00 00 00 |hannels 1-4.....| 0000e700 44 41 54 41 4a 03 00 00 51 54 4d 5f 52 65 61 64 |DATAJ...QTM_Read| 0000e710 53 61 6d 70 6c 65 54 61 62 6c 65 20 20 28 26 34 |SampleTable (&4| 0000e720 37 45 35 32 29 0a 23 50 61 72 65 6e 74 20 51 54 |7E52).#Parent QT| 0000e730 4d 5f 0a 3d 3e 09 52 30 20 3d 09 73 61 6d 70 6c |M_.=>.R0 =.sampl| 0000e740 65 20 6e 75 6d 62 65 72 20 28 31 2d 36 34 29 0a |e number (1-64).| 0000e750 0a 3c 3d 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 |.<=.R0 =.pointer| 0000e760 20 74 6f 20 32 32 20 62 79 74 65 20 62 6c 6f 63 | to 22 byte bloc| 0000e770 6b 20 28 6e 6f 74 20 74 65 72 6d 69 6e 61 74 65 |k (not terminate| 0000e780 64 29 20 63 6f 6e 74 61 69 6e 69 6e 67 20 73 61 |d) containing sa| 0000e790 6d 70 6c 65 20 6e 61 6d 65 20 28 6f 72 20 61 20 |mple name (or a | 0000e7a0 30 20 62 79 74 65 2c 20 69 66 20 6e 6f 20 73 61 |0 byte, if no sa| 0000e7b0 6d 70 6c 65 20 6e 61 6d 65 29 0a 09 52 31 20 3d |mple name)..R1 =| 0000e7c0 09 73 61 6d 70 6c 65 20 6c 65 6e 67 74 68 20 28 |.sample length (| 0000e7d0 69 6e 20 62 79 74 65 73 29 0a 09 52 32 20 3d 09 |in bytes)..R2 =.| 0000e7e0 72 65 70 65 61 74 20 6f 66 66 73 65 74 20 28 62 |repeat offset (b| 0000e7f0 79 74 65 73 20 66 72 6f 6d 20 73 74 61 72 74 20 |ytes from start | 0000e800 6f 66 20 73 61 6d 70 6c 65 29 0a 09 52 33 20 3d |of sample)..R3 =| 0000e810 09 72 65 70 65 61 74 20 6c 65 6e 67 74 68 20 28 |.repeat length (| 0000e820 69 6e 20 62 79 74 65 73 29 0a 09 52 34 20 3d 09 |in bytes)..R4 =.| 0000e830 64 65 66 61 75 6c 74 20 76 6f 6c 75 6d 65 20 28 |default volume (| 0000e840 30 2d 36 34 29 0a 09 52 35 20 3d 09 66 69 6e 65 |0-64)..R5 =.fine| 0000e850 20 74 75 6e 69 6e 67 20 76 61 6c 75 65 20 28 2d | tuning value (-| 0000e860 38 20 74 6f 20 2b 37 29 0a 09 52 36 20 3d 09 61 |8 to +7)..R6 =.a| 0000e870 64 64 72 65 73 73 20 6f 66 20 72 61 77 20 73 61 |ddress of raw sa| 0000e880 6d 70 6c 65 20 64 61 74 61 20 28 6c 6f 67 61 72 |mple data (logar| 0000e890 69 74 68 6d 69 63 20 66 6f 72 6d 61 74 29 0a 0a |ithmic format)..| 0000e8a0 54 68 69 73 20 53 57 49 20 61 6c 6c 6f 77 73 20 |This SWI allows | 0000e8b0 79 6f 75 20 74 6f 20 72 65 61 64 20 69 6e 66 6f |you to read info| 0000e8c0 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 |rmation from the| 0000e8d0 20 51 54 4d 20 73 61 6d 70 6c 65 20 74 61 62 6c | QTM sample tabl| 0000e8e0 65 2c 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e |e, which contain| 0000e8f0 73 20 75 70 20 74 6f 20 36 34 20 73 61 6d 70 6c |s up to 64 sampl| 0000e900 65 73 2e 20 4e 6f 6e 2d 65 78 69 73 74 65 6e 74 |es. Non-existent| 0000e910 20 73 61 6d 70 6c 65 73 20 77 69 6c 6c 20 72 65 | samples will re| 0000e920 74 75 72 6e 20 7a 65 72 6f 20 69 6e 20 52 31 2d |turn zero in R1-| 0000e930 52 36 2c 20 61 6e 64 20 52 30 20 77 69 6c 6c 20 |R6, and R0 will | 0000e940 70 6f 69 6e 74 20 74 6f 20 61 20 30 20 62 79 74 |point to a 0 byt| 0000e950 65 2e 0a 0a 4e 6f 74 65 3a 20 42 65 63 61 75 73 |e...Note: Becaus| 0000e960 65 20 6f 6e 6c 79 20 73 61 6d 70 6c 65 73 20 31 |e only samples 1| 0000e970 2d 33 31 20 61 72 65 20 75 73 65 64 20 62 79 20 |-31 are used by | 0000e980 73 6f 6e 67 73 2c 20 73 61 6d 70 6c 65 73 20 33 |songs, samples 3| 0000e990 32 2d 36 34 20 63 61 6e 20 62 65 20 75 73 65 64 |2-64 can be used| 0000e9a0 20 66 6f 72 20 73 6f 75 6e 64 20 65 66 66 65 63 | for sound effec| 0000e9b0 74 73 20 28 69 6e 20 67 61 6d 65 73 20 65 74 63 |ts (in games etc| 0000e9c0 2e 29 20 61 6e 64 20 63 61 6e 20 62 65 20 72 65 |.) and can be re| 0000e9d0 67 69 73 74 65 72 65 64 20 73 65 70 61 72 61 74 |gistered separat| 0000e9e0 65 6c 79 2c 20 75 73 69 6e 67 20 3c 51 54 4d 5f |ely, using <QTM_| 0000e9f0 52 65 67 69 73 74 65 72 53 61 6d 70 6c 65 3e 2e |RegisterSample>.| 0000ea00 0a 0a 56 20 66 6c 61 67 20 73 65 74 20 69 66 20 |..V flag set if | 0000ea10 73 61 6d 70 6c 65 20 6e 75 6d 62 65 72 20 69 73 |sample number is| 0000ea20 20 6f 75 74 20 6f 66 20 74 68 65 20 72 61 6e 67 | out of the rang| 0000ea30 65 20 31 2d 36 34 20 6f 72 20 73 6f 6e 67 20 6e |e 1-64 or song n| 0000ea40 6f 74 20 6c 6f 61 64 65 64 0a 00 00 44 41 54 41 |ot loaded...DATA| 0000ea50 b4 03 00 00 51 54 4d 5f 52 65 61 64 53 70 65 65 |....QTM_ReadSpee| 0000ea60 64 20 20 28 26 34 37 45 35 33 29 0a 23 50 61 72 |d (&47E53).#Par| 0000ea70 65 6e 74 20 51 54 4d 5f 0a 3c 3d 09 52 30 20 3d |ent QTM_.<=.R0 =| 0000ea80 09 63 75 72 72 65 6e 74 20 73 6f 6e 67 20 73 70 |.current song sp| 0000ea90 65 65 64 20 28 30 30 2d 33 31 29 0a 09 52 31 20 |eed (00-31)..R1 | 0000eaa0 3d 09 63 75 72 72 65 6e 74 20 73 6f 6e 67 20 43 |=.current song C| 0000eab0 49 41 20 74 65 6d 70 6f 20 73 65 74 74 69 6e 67 |IA tempo setting| 0000eac0 20 28 33 32 2d 32 35 35 29 0a 09 52 32 20 3d 09 | (32-255)..R2 =.| 0000ead0 73 70 65 65 64 20 63 6f 75 6e 74 65 72 20 76 61 |speed counter va| 0000eae0 6c 75 65 20 28 30 31 2d 73 70 65 65 64 29 0a 0a |lue (01-speed)..| 0000eaf0 54 68 69 73 20 53 57 49 20 72 65 74 75 72 6e 73 |This SWI returns| 0000eb00 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 | information on | 0000eb10 74 68 65 20 63 75 72 72 65 6e 74 20 73 70 65 65 |the current spee| 0000eb20 64 2c 20 74 65 6d 70 6f 20 61 6e 64 20 63 6f 75 |d, tempo and cou| 0000eb30 6e 74 65 72 20 76 61 6c 75 65 73 20 6f 66 20 74 |nter values of t| 0000eb40 68 65 20 63 75 72 72 65 6e 74 20 73 6f 6e 67 2e |he current song.| 0000eb50 20 54 68 65 20 73 70 65 65 64 20 76 61 6c 75 65 | The speed value| 0000eb60 20 28 52 30 29 20 69 73 20 74 68 65 20 6e 75 6d | (R0) is the num| 0000eb70 62 65 72 20 6f 66 20 74 69 6d 65 73 20 74 68 65 |ber of times the| 0000eb80 20 73 6f 6e 67 20 63 6f 6e 74 72 6f 6c 6c 65 72 | song controller| 0000eb90 20 68 61 73 20 74 6f 20 62 65 20 63 61 6c 6c 65 | has to be calle| 0000eba0 64 2c 20 62 65 66 6f 72 65 20 69 74 20 70 6c 61 |d, before it pla| 0000ebb0 79 73 20 74 68 65 20 6e 65 78 74 20 6e 6f 74 65 |ys the next note| 0000ebc0 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 73 |, the default is| 0000ebd0 20 36 20 74 69 6d 65 73 2e 20 49 66 20 61 20 73 | 6 times. If a s| 0000ebe0 70 65 65 64 20 6f 66 20 30 20 69 73 20 72 65 74 |peed of 0 is ret| 0000ebf0 75 72 6e 65 64 2c 20 74 68 65 20 73 6f 6e 67 20 |urned, the song | 0000ec00 69 73 20 6e 6f 74 20 70 6c 61 79 69 6e 67 2e 0a |is not playing..| 0000ec10 0a 54 68 65 20 43 49 41 20 74 65 6d 70 6f 20 73 |.The CIA tempo s| 0000ec20 65 74 74 69 6e 67 20 63 6f 6e 74 72 6f 6c 73 20 |etting controls | 0000ec30 68 6f 77 20 66 61 73 74 20 74 68 65 20 73 6f 6e |how fast the son| 0000ec40 67 20 63 6f 6e 74 72 6f 6c 6c 65 72 20 69 73 20 |g controller is | 0000ec50 63 61 6c 6c 65 64 2e 20 54 68 65 20 64 65 66 61 |called. The defa| 0000ec60 75 6c 74 20 69 73 20 35 30 20 74 69 6d 65 73 20 |ult is 50 times | 0000ec70 61 20 73 65 63 6f 6e 64 2c 20 74 65 6d 70 6f 20 |a second, tempo | 0000ec80 31 32 35 2e 20 28 54 68 65 20 6e 61 6d 65 20 43 |125. (The name C| 0000ec90 49 41 20 74 65 6d 70 6f 20 63 6f 6d 65 73 20 66 |IA tempo comes f| 0000eca0 72 6f 6d 20 43 6f 6d 70 6c 65 78 20 49 6e 74 65 |rom Complex Inte| 0000ecb0 72 66 61 63 65 20 41 64 61 70 74 6f 72 2c 20 77 |rface Adaptor, w| 0000ecc0 68 69 63 68 20 77 61 73 20 75 73 65 64 20 6f 6e |hich was used on| 0000ecd0 20 74 68 65 20 41 6d 69 67 61 20 74 6f 20 63 6f | the Amiga to co| 0000ece0 6e 74 72 6f 6c 20 50 72 6f 54 72 61 63 6b 65 72 |ntrol ProTracker| 0000ecf0 27 73 20 69 6e 74 65 72 72 75 70 74 20 73 70 65 |'s interrupt spe| 0000ed00 65 64 2e 29 0a 0a 54 68 65 20 73 70 65 65 64 20 |ed.)..The speed | 0000ed10 63 6f 75 6e 74 65 72 20 28 52 32 29 20 76 61 72 |counter (R2) var| 0000ed20 69 65 73 20 66 72 6f 6d 20 31 20 74 6f 20 74 68 |ies from 1 to th| 0000ed30 65 20 63 75 72 72 65 6e 74 20 73 70 65 65 64 20 |e current speed | 0000ed40 28 52 30 29 2e 20 49 74 20 69 73 20 64 65 63 72 |(R0). It is decr| 0000ed50 65 6d 65 6e 74 65 64 20 6f 6e 63 65 20 65 76 65 |emented once eve| 0000ed60 72 79 20 74 69 6d 65 20 74 68 65 20 73 6f 6e 67 |ry time the song| 0000ed70 20 63 6f 6e 74 72 6f 6c 6c 65 72 20 69 73 20 63 | controller is c| 0000ed80 61 6c 6c 65 64 2c 20 75 6e 74 69 6c 20 69 74 20 |alled, until it | 0000ed90 72 65 61 63 68 65 73 20 30 2c 20 77 68 65 6e 20 |reaches 0, when | 0000eda0 74 68 65 20 6e 65 78 74 20 6e 6f 74 65 20 69 73 |the next note is| 0000edb0 20 70 6c 61 79 65 64 20 61 6e 64 20 74 68 65 20 | played and the | 0000edc0 63 6f 75 6e 74 65 72 20 69 73 20 72 65 73 65 74 |counter is reset| 0000edd0 20 74 6f 20 74 68 65 20 73 70 65 65 64 2e 0a 0a | to the speed...| 0000ede0 56 20 66 6c 61 67 20 73 65 74 20 69 66 20 6e 6f |V flag set if no| 0000edf0 20 73 6f 6e 67 20 69 73 20 6c 6f 61 64 65 64 0a | song is loaded.| 0000ee00 44 41 54 41 8c 03 00 00 51 54 4d 5f 50 6c 61 79 |DATA....QTM_Play| 0000ee10 53 61 6d 70 6c 65 20 20 28 26 34 37 45 35 34 29 |Sample (&47E54)| 0000ee20 0a 23 50 61 72 65 6e 74 20 51 54 4d 5f 0a 3d 3e |.#Parent QTM_.=>| 0000ee30 09 52 30 20 3d 20 63 68 61 6e 6e 65 6c 20 6e 75 |.R0 = channel nu| 0000ee40 6d 62 65 72 20 28 31 2d 38 29 0a 09 52 31 20 3d |mber (1-8)..R1 =| 0000ee50 20 73 61 6d 70 6c 65 20 6e 75 6d 62 65 72 20 28 | sample number (| 0000ee60 30 2c 31 2d 36 34 29 2c 20 30 20 74 6f 20 63 6c |0,1-64), 0 to cl| 0000ee70 65 61 72 20 63 68 61 6e 6e 65 6c 0a 09 52 32 20 |ear channel..R2 | 0000ee80 3d 20 6e 6f 74 65 20 6e 75 6d 62 65 72 20 28 31 |= note number (1| 0000ee90 2d 33 36 20 66 6f 72 20 73 74 61 6e 64 61 72 64 |-36 for standard| 0000eea0 2c 20 31 31 33 2d 38 35 36 20 66 6f 72 20 61 6d |, 113-856 for am| 0000eeb0 69 67 61 20 70 69 74 63 68 29 0a 09 52 33 20 3d |iga pitch)..R3 =| 0000eec0 20 6c 69 6e 65 61 72 20 76 6f 6c 75 6d 65 20 28 | linear volume (| 0000eed0 30 2d 36 34 29 0a 0a 3c 3d 09 52 30 2d 52 33 20 |0-64)..<=.R0-R3 | 0000eee0 70 72 65 73 65 72 76 65 64 0a 0a 54 68 69 73 20 |preserved..This | 0000eef0 53 57 49 20 61 6c 6c 6f 77 73 20 79 6f 75 20 74 |SWI allows you t| 0000ef00 6f 20 70 6c 61 79 20 61 6e 79 20 6f 66 20 74 68 |o play any of th| 0000ef10 65 20 36 34 20 73 61 6d 70 6c 65 73 20 68 65 6c |e 64 samples hel| 0000ef20 64 20 69 6e 20 74 68 65 20 51 54 4d 20 73 61 6d |d in the QTM sam| 0000ef30 70 6c 65 20 74 61 62 6c 65 20 6f 6e 20 61 6e 79 |ple table on any| 0000ef40 20 6f 66 20 74 68 65 20 34 20 6f 72 20 38 20 61 | of the 4 or 8 a| 0000ef50 76 61 69 6c 61 62 6c 65 20 63 68 61 6e 6e 65 6c |vailable channel| 0000ef60 73 2e 20 41 20 73 61 6d 70 6c 65 20 63 61 6e 20 |s. A sample can | 0000ef70 62 65 20 70 6c 61 79 65 64 20 61 74 20 61 6e 79 |be played at any| 0000ef80 20 74 69 6d 65 2c 20 69 6e 63 6c 75 64 69 6e 67 | time, including| 0000ef90 20 77 68 69 6c 65 20 61 20 73 6f 6e 67 20 69 73 | while a song is| 0000efa0 20 70 6c 61 79 69 6e 67 2c 20 61 6c 74 68 6f 75 | playing, althou| 0000efb0 67 68 20 74 68 65 20 73 61 6d 70 6c 65 20 6d 61 |gh the sample ma| 0000efc0 79 20 62 65 20 63 75 74 20 73 68 6f 72 74 20 69 |y be cut short i| 0000efd0 66 20 74 68 65 20 73 6f 6e 67 20 69 73 20 70 6c |f the song is pl| 0000efe0 61 79 69 6e 67 2e 20 50 6c 61 79 69 6e 67 20 61 |aying. Playing a| 0000eff0 20 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 20 73 61 | non-existent sa| 0000f000 6d 70 6c 65 20 77 69 6c 6c 20 72 65 73 75 6c 74 |mple will result| 0000f010 20 69 6e 20 6e 6f 74 68 69 6e 67 20 62 65 69 6e | in nothing bein| 0000f020 67 20 70 6c 61 79 65 64 2e 20 54 68 65 20 73 61 |g played. The sa| 0000f030 6d 70 6c 65 73 20 61 62 6f 76 65 20 33 31 20 63 |mples above 31 c| 0000f040 61 6e 20 62 65 20 75 73 65 64 20 61 66 74 65 72 |an be used after| 0000f050 20 74 68 65 79 20 61 72 65 20 72 65 67 69 73 74 | they are regist| 0000f060 65 72 65 64 2c 20 75 73 69 6e 67 20 3c 51 54 4d |ered, using <QTM| 0000f070 5f 52 65 67 69 73 74 65 72 53 61 6d 70 6c 65 3e |_RegisterSample>| 0000f080 2e 0a 0a 54 68 69 73 20 53 57 49 20 77 69 6c 6c |...This SWI will| 0000f090 20 61 6c 73 6f 20 73 74 61 72 74 20 75 70 20 74 | also start up t| 0000f0a0 68 65 20 51 54 4d 20 73 6f 75 6e 64 20 73 79 73 |he QTM sound sys| 0000f0b0 74 65 6d 20 69 66 20 69 74 20 69 73 20 63 61 6c |tem if it is cal| 0000f0c0 6c 65 64 20 77 68 69 6c 65 20 74 68 65 0a 73 6f |led while the.so| 0000f0d0 6e 67 20 69 73 20 73 74 6f 70 70 65 64 20 6f 72 |ng is stopped or| 0000f0e0 20 70 61 75 73 65 64 2c 20 74 68 6f 75 67 68 20 | paused, though | 0000f0f0 69 74 20 77 69 6c 6c 20 6e 6f 74 20 73 77 69 74 |it will not swit| 0000f100 63 68 20 74 68 65 20 73 79 73 74 65 6d 20 6f 66 |ch the system of| 0000f110 66 20 61 66 74 65 72 0a 74 68 65 20 73 61 6d 70 |f after.the samp| 0000f120 6c 65 20 66 69 6e 69 73 68 65 73 2c 20 75 73 65 |le finishes, use| 0000f130 20 3c 51 54 4d 5f 53 6f 75 6e 64 43 6f 6e 74 72 | <QTM_SoundContr| 0000f140 6f 6c 3e 20 74 6f 20 64 6f 20 74 68 69 73 2e 0a |ol> to do this..| 0000f150 0a 56 20 66 6c 61 67 20 73 65 74 20 69 66 20 61 |.V flag set if a| 0000f160 6e 79 20 6f 66 20 74 68 65 20 72 65 67 69 73 74 |ny of the regist| 0000f170 65 72 73 20 63 6f 6e 74 61 69 6e 20 69 6c 6c 65 |ers contain ille| 0000f180 67 61 6c 20 76 61 6c 75 65 73 2e 0a 44 41 54 41 |gal values..DATA| 0000f190 58 01 00 00 51 54 4d 5f 53 6f 6e 67 53 74 61 74 |X...QTM_SongStat| 0000f1a0 75 73 20 20 28 26 34 37 45 35 35 29 0a 23 50 61 |us (&47E55).#Pa| 0000f1b0 72 65 6e 74 20 51 54 4d 5f 0a 3c 3d 09 52 30 20 |rent QTM_.<=.R0 | 0000f1c0 3d 20 3c 73 6f 6e 67 20 73 74 61 74 75 73 20 66 |= <song status f| 0000f1d0 6c 61 67 73 3d 3e 2e 66 6c 61 67 73 3e 0a 0a 54 |lags=>.flags>..T| 0000f1e0 68 69 73 20 53 57 49 20 61 6c 6c 6f 77 73 20 79 |his SWI allows y| 0000f1f0 6f 75 20 74 6f 20 72 65 61 64 20 74 68 65 20 63 |ou to read the c| 0000f200 75 72 72 65 6e 74 20 73 74 61 74 75 73 20 6f 66 |urrent status of| 0000f210 20 74 68 65 20 51 54 4d 20 73 6f 6e 67 20 63 6f | the QTM song co| 0000f220 6e 74 72 6f 6c 6c 65 72 2e 0a 0a 4e 6f 20 65 72 |ntroller...No er| 0000f230 72 6f 72 20 69 73 20 67 65 6e 65 72 61 74 65 64 |ror is generated| 0000f240 20 69 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 | if there is no | 0000f250 73 6f 6e 67 20 6c 6f 61 64 65 64 2e 0a 23 53 75 |song loaded..#Su| 0000f260 62 70 61 67 65 20 66 6c 61 67 73 0a 51 54 4d 20 |bpage flags.QTM | 0000f270 53 6f 6e 67 20 73 74 61 74 75 73 20 66 6c 61 67 |Song status flag| 0000f280 73 0a 42 69 74 09 6d 65 61 6e 69 6e 67 20 69 66 |s.Bit.meaning if| 0000f290 20 73 65 74 0a 23 4c 69 6e 65 0a 30 09 73 6f 6e | set.#Line.0.son| 0000f2a0 67 20 6c 6f 61 64 65 64 0a 31 09 73 6f 6e 67 20 |g loaded.1.song | 0000f2b0 6c 6f 61 64 65 64 20 69 6e 20 52 4d 41 0a 32 09 |loaded in RMA.2.| 0000f2c0 73 6f 6e 67 20 63 75 72 72 65 6e 74 6c 20 70 6c |song currentl pl| 0000f2d0 61 79 69 6e 67 0a 33 2d 33 31 09 72 65 73 65 72 |aying.3-31.reser| 0000f2e0 76 65 64 0a 44 41 54 41 e0 04 00 00 51 54 4d 5f |ved.DATA....QTM_| 0000f2f0 52 65 61 64 50 6c 61 79 69 6e 67 54 69 6d 65 20 |ReadPlayingTime | 0000f300 20 28 26 34 37 45 35 36 29 0a 23 50 61 72 65 6e | (&47E56).#Paren| 0000f310 74 20 51 54 4d 5f 0a 3c 3d 09 52 30 20 3d 09 74 |t QTM_.<=.R0 =.t| 0000f320 6f 74 61 6c 20 70 6c 61 79 69 6e 67 20 74 69 6d |otal playing tim| 0000f330 65 20 73 6f 20 66 61 72 20 28 73 65 63 6f 6e 64 |e so far (second| 0000f340 73 29 0a 09 52 31 20 3d 09 74 69 6d 65 20 73 69 |s)..R1 =.time si| 0000f350 6e 63 65 20 6c 61 73 74 20 3c 51 54 4d 5f 53 74 |nce last <QTM_St| 0000f360 61 72 74 3e 20 28 73 65 63 6f 6e 64 73 29 0a 09 |art> (seconds)..| 0000f370 52 32 20 3d 09 74 6f 74 61 6c 20 70 6c 61 79 69 |R2 =.total playi| 0000f380 6e 67 20 74 69 6d 65 20 6f 66 20 74 68 65 20 77 |ng time of the w| 0000f390 68 6f 6c 65 20 73 6f 6e 67 20 28 73 65 63 6f 6e |hole song (secon| 0000f3a0 64 73 29 0a 0a 54 68 69 73 20 53 57 49 20 61 6c |ds)..This SWI al| 0000f3b0 6c 6f 77 73 20 79 6f 75 20 74 6f 20 72 65 61 64 |lows you to read| 0000f3c0 20 74 68 65 20 74 77 6f 20 51 54 4d 20 73 6f 6e | the two QTM son| 0000f3d0 67 20 74 69 6d 65 72 73 20 61 6e 64 20 74 68 65 |g timers and the| 0000f3e0 20 74 6f 74 61 6c 20 74 69 6d 65 20 6f 66 20 74 | total time of t| 0000f3f0 68 65 20 63 75 72 72 65 6e 74 20 73 6f 6e 67 2e |he current song.| 0000f400 20 54 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 | The contents of| 0000f410 20 52 30 20 61 6e 64 20 52 31 20 6f 6e 20 65 78 | R0 and R1 on ex| 0000f420 69 74 20 61 72 65 20 63 61 6c 63 75 6c 61 74 65 |it are calculate| 0000f430 64 20 66 72 6f 6d 20 74 68 65 20 69 6e 74 65 72 |d from the inter| 0000f440 6e 61 6c 20 31 30 30 48 7a 20 74 69 6d 65 72 2c |nal 100Hz timer,| 0000f450 20 62 75 74 20 74 68 65 20 63 6f 6e 74 65 6e 74 | but the content| 0000f460 73 20 6f 66 20 52 32 20 72 65 6c 79 20 6f 6e 20 |s of R2 rely on | 0000f470 61 20 73 70 65 63 69 61 6c 20 31 30 30 25 20 61 |a special 100% a| 0000f480 63 63 75 72 61 74 65 2c 20 73 6f 6e 67 20 6c 65 |ccurate, song le| 0000f490 6e 67 74 68 20 63 61 6c 63 75 6c 61 74 69 6f 6e |ngth calculation| 0000f4a0 20 72 6f 75 74 69 6e 65 2e 2e 2e 0a 0a 54 68 65 | routine.....The| 0000f4b0 20 2a 2a 20 7b 2a 7d 51 54 4d 2d 55 6c 74 72 61 | ** {*}QTM-Ultra| 0000f4c0 2d 6d 65 67 61 2d 74 69 6d 65 2d 77 6f 72 6b 65 |-mega-time-worke| 0000f4d0 72 2d 6f 75 74 65 72 7b 2a 7d 20 2a 2a 20 69 73 |r-outer{*} ** is| 0000f4e0 20 74 68 65 20 66 69 72 73 74 20 73 6f 6e 67 20 | the first song | 0000f4f0 74 69 6d 65 20 63 61 6c 63 75 6c 61 74 69 6f 6e |time calculation| 0000f500 20 72 6f 75 74 69 6e 65 20 6f 6e 20 74 68 65 20 | routine on the | 0000f510 41 72 63 2c 20 61 6e 64 20 74 68 65 20 6f 6e 6c |Arc, and the onl| 0000f520 79 20 72 6f 75 74 69 6e 65 20 6f 6e 20 61 6e 79 |y routine on any| 0000f530 20 63 6f 6d 70 75 74 65 72 20 77 68 69 63 68 20 | computer which | 0000f540 63 61 6e 20 61 63 63 75 72 61 74 65 6c 79 20 77 |can accurately w| 0000f550 6f 72 6b 20 6f 75 74 20 74 69 6d 65 73 20 63 6f |ork out times co| 0000f560 72 72 65 63 74 6c 79 20 77 69 74 68 20 65 66 66 |rrectly with eff| 0000f570 65 63 74 73 20 73 75 63 68 20 61 73 20 43 49 41 |ects such as CIA| 0000f580 20 74 65 6d 70 6f 73 2c 20 70 61 74 74 65 72 6e | tempos, pattern| 0000f590 20 6c 6f 6f 70 73 20 61 6e 64 20 70 61 74 74 65 | loops and patte| 0000f5a0 72 6e 20 64 65 6c 61 79 73 2e 20 54 68 65 20 72 |rn delays. The r| 0000f5b0 6f 75 74 69 6e 65 20 77 6f 72 6b 73 20 62 79 20 |outine works by | 0000f5c0 73 63 61 6e 6e 69 6e 67 20 74 68 72 6f 75 67 68 |scanning through| 0000f5d0 20 61 6c 6c 20 74 68 65 20 73 6f 6e 67 27 73 20 | all the song's | 0000f5e0 70 61 74 74 65 72 6e 73 2c 20 69 6e 20 74 68 65 |patterns, in the| 0000f5f0 20 63 6f 72 72 65 63 74 20 6f 72 64 65 72 2c 20 | correct order, | 0000f600 63 61 6c 63 75 6c 61 74 69 6e 67 20 74 68 65 20 |calculating the | 0000f610 74 69 6d 65 20 6f 66 20 65 61 63 68 20 65 76 65 |time of each eve| 0000f620 6e 74 20 61 73 20 69 74 20 67 6f 65 73 2c 20 61 |nt as it goes, a| 0000f630 6e 64 20 74 61 6b 69 6e 67 20 69 6e 74 6f 20 61 |nd taking into a| 0000f640 63 63 6f 75 6e 74 20 61 6e 79 20 73 70 65 65 64 |ccount any speed| 0000f650 2c 20 74 65 6d 70 6f 2c 20 6c 6f 6f 70 20 6f 72 |, tempo, loop or| 0000f660 20 64 65 6c 61 79 20 73 65 74 74 69 6e 67 73 20 | delay settings | 0000f670 74 68 61 74 20 6d 61 79 20 62 65 20 69 6e 20 75 |that may be in u| 0000f680 73 65 2e 0a 0a 57 68 65 6e 20 74 68 69 73 20 53 |se...When this S| 0000f690 57 49 20 69 73 20 63 61 6c 6c 65 64 20 66 6f 72 |WI is called for| 0000f6a0 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 | the first time | 0000f6b0 61 66 74 65 72 20 6c 6f 61 64 69 6e 67 20 61 20 |after loading a | 0000f6c0 73 6f 6e 67 2c 20 74 68 65 20 74 6f 74 61 6c 20 |song, the total | 0000f6d0 6c 65 6e 67 74 68 20 77 69 6c 6c 20 62 65 20 77 |length will be w| 0000f6e0 6f 72 6b 65 64 20 6f 75 74 20 75 73 69 6e 67 20 |orked out using | 0000f6f0 74 68 65 20 73 70 65 63 69 61 6c 20 72 6f 75 74 |the special rout| 0000f700 69 6e 65 2e 20 4f 6e 20 6c 61 74 65 72 20 63 61 |ine. On later ca| 0000f710 6c 6c 73 20 74 6f 20 74 68 69 73 20 53 57 49 20 |lls to this SWI | 0000f720 28 77 68 69 6c 65 20 74 68 65 20 73 61 6d 65 20 |(while the same | 0000f730 73 6f 6e 67 20 69 73 20 6c 6f 61 64 65 64 29 2c |song is loaded),| 0000f740 20 74 68 65 20 74 6f 74 61 6c 20 6c 65 6e 67 74 | the total lengt| 0000f750 68 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 72 65 |h will not be re| 0000f760 2d 63 61 6c 63 75 6c 61 74 65 64 2c 20 62 75 74 |-calculated, but| 0000f770 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 61 | the original ca| 0000f780 6c 63 75 6c 61 74 69 6f 6e 20 77 69 6c 6c 20 75 |lculation will u| 0000f790 73 65 64 2c 20 74 6f 20 73 61 76 65 20 74 69 6d |sed, to save tim| 0000f7a0 65 2e 0a 0a 56 20 66 6c 61 67 20 73 65 74 20 69 |e...V flag set i| 0000f7b0 66 20 6e 6f 20 73 6f 6e 67 20 69 73 20 6c 6f 61 |f no song is loa| 0000f7c0 64 65 64 0a 44 41 54 41 04 03 00 00 51 54 4d 5f |ded.DATA....QTM_| 0000f7d0 50 6c 61 79 52 61 77 53 61 6d 70 6c 65 20 20 28 |PlayRawSample (| 0000f7e0 26 34 37 45 35 37 29 0a 23 50 61 72 65 6e 74 20 |&47E57).#Parent | 0000f7f0 51 54 4d 5f 0a 3d 3e 09 52 30 20 3d 20 63 68 61 |QTM_.=>.R0 = cha| 0000f800 6e 6e 65 6c 20 6e 75 6d 62 65 72 20 28 31 2d 38 |nnel number (1-8| 0000f810 29 0a 09 52 31 20 3d 20 73 61 6d 70 6c 65 20 61 |)..R1 = sample a| 0000f820 64 64 72 65 73 73 20 28 6c 6f 67 61 72 69 74 68 |ddress (logarith| 0000f830 6d 69 63 20 73 61 6d 70 6c 65 20 64 61 74 61 29 |mic sample data)| 0000f840 2c 20 6f 72 20 30 20 74 6f 20 73 69 6c 65 6e 63 |, or 0 to silenc| 0000f850 65 20 63 68 61 6e 6e 65 6c 0a 09 52 32 20 3d 20 |e channel..R2 = | 0000f860 73 61 6d 70 6c 65 20 6c 65 6e 67 74 68 20 28 69 |sample length (i| 0000f870 6e 20 62 79 74 65 73 29 0a 09 52 33 20 3d 20 72 |n bytes)..R3 = r| 0000f880 65 70 65 61 74 20 6f 66 66 73 65 74 20 28 62 79 |epeat offset (by| 0000f890 74 65 73 20 66 72 6f 6d 20 73 74 61 72 74 20 6f |tes from start o| 0000f8a0 66 20 73 61 6d 70 6c 65 29 0a 09 52 34 20 3d 20 |f sample)..R4 = | 0000f8b0 72 65 70 65 61 74 20 6c 65 6e 67 74 68 20 28 69 |repeat length (i| 0000f8c0 6e 20 62 79 74 65 73 29 0a 09 52 35 20 3d 20 6e |n bytes)..R5 = n| 0000f8d0 6f 74 65 20 6e 75 6d 62 65 72 20 28 31 2d 33 36 |ote number (1-36| 0000f8e0 20 66 6f 72 20 73 74 61 6e 64 61 72 64 20 6e 6f | for standard no| 0000f8f0 74 65 2c 20 31 31 33 2d 38 35 36 20 66 6f 72 20 |te, 113-856 for | 0000f900 61 6d 69 67 61 20 70 69 74 63 68 29 0a 09 52 36 |amiga pitch)..R6| 0000f910 20 3d 20 6c 69 6e 65 61 72 20 76 6f 6c 75 6d 65 | = linear volume| 0000f920 20 28 30 2d 36 34 29 0a 0a 3c 3d 09 52 30 2d 52 | (0-64)..<=.R0-R| 0000f930 36 20 70 72 65 73 65 72 76 65 64 0a 0a 54 68 69 |6 preserved..Thi| 0000f940 73 20 53 57 49 20 61 6c 6c 6f 77 73 20 79 6f 75 |s SWI allows you| 0000f950 20 74 6f 20 70 6c 61 79 20 61 20 73 61 6d 70 6c | to play a sampl| 0000f960 65 20 73 74 6f 72 65 64 20 69 6e 20 61 6e 79 20 |e stored in any | 0000f970 61 72 65 61 20 6f 66 20 6d 65 6d 6f 72 79 2e 20 |area of memory. | 0000f980 54 68 65 20 73 61 6d 70 6c 65 20 73 68 6f 75 6c |The sample shoul| 0000f990 64 20 62 65 20 69 6e 20 38 2d 62 69 74 20 6c 6f |d be in 8-bit lo| 0000f9a0 67 61 72 69 74 68 6d 69 63 20 66 6f 72 6d 61 74 |garithmic format| 0000f9b0 2e 0a 0a 54 68 69 73 20 53 57 49 20 77 69 6c 6c |...This SWI will| 0000f9c0 20 61 6c 73 6f 20 73 74 61 72 74 20 75 70 20 74 | also start up t| 0000f9d0 68 65 20 51 54 4d 20 73 6f 75 6e 64 20 73 79 73 |he QTM sound sys| 0000f9e0 74 65 6d 20 69 66 20 69 74 20 69 73 20 63 61 6c |tem if it is cal| 0000f9f0 6c 65 64 20 77 68 69 6c 65 20 74 68 65 20 73 6f |led while the so| 0000fa00 6e 67 20 69 73 20 73 74 6f 70 70 65 64 20 6f 72 |ng is stopped or| 0000fa10 20 70 61 75 73 65 64 2c 20 74 68 6f 75 67 68 20 | paused, though | 0000fa20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 73 77 69 74 |it will not swit| 0000fa30 63 68 20 74 68 65 20 73 79 73 74 65 6d 20 6f 66 |ch the system of| 0000fa40 66 20 61 66 74 65 72 20 74 68 65 20 73 61 6d 70 |f after the samp| 0000fa50 6c 65 20 66 69 6e 69 73 68 65 73 2c 20 75 73 65 |le finishes, use| 0000fa60 20 3c 51 54 4d 5f 53 6f 75 6e 64 43 6f 6e 74 72 | <QTM_SoundContr| 0000fa70 6f 6c 3e 20 74 6f 20 64 6f 20 74 68 69 73 2e 0a |ol> to do this..| 0000fa80 0a 56 20 66 6c 61 67 73 20 73 65 74 20 69 66 20 |.V flags set if | 0000fa90 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 |the contents of | 0000faa0 74 68 65 20 72 65 67 69 73 74 65 72 73 20 63 6f |the registers co| 0000fab0 6e 74 61 69 6e 20 64 61 6e 67 65 72 6f 75 73 20 |ntain dangerous | 0000fac0 76 61 6c 75 65 73 21 0a 44 41 54 41 89 06 00 00 |values!.DATA....| 0000fad0 51 54 4d 5f 53 6f 75 6e 64 43 6f 6e 74 72 6f 6c |QTM_SoundControl| 0000fae0 20 20 28 26 34 37 45 35 38 29 0a 23 50 61 72 65 | (&47E58).#Pare| 0000faf0 6e 74 20 51 54 4d 5f 0a 3d 3e 09 52 30 20 3d 09 |nt QTM_.=>.R0 =.| 0000fb00 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 6e 6e 65 |number of channe| 0000fb10 6c 73 20 74 6f 20 75 73 65 20 28 34 2c 20 38 20 |ls to use (4, 8 | 0000fb20 6f 72 20 30 20 74 6f 20 73 68 75 74 64 6f 77 6e |or 0 to shutdown| 0000fb30 29 20 2d 31 20 74 6f 20 72 65 61 64 0a 09 52 31 |) -1 to read..R1| 0000fb40 20 3d 09 74 72 61 6e 73 70 61 72 65 6e 74 20 73 | =.transparent s| 0000fb50 6f 75 6e 64 20 73 79 73 74 65 6d 20 66 6c 61 67 |ound system flag| 0000fb60 73 20 31 2d 6f 6e 2c 20 30 2d 6f 66 66 2c 20 2d |s 1-on, 0-off, -| 0000fb70 31 20 74 6f 20 72 65 61 64 0a 09 52 32 20 3d 09 |1 to read..R2 =.| 0000fb80 74 72 61 6e 73 70 61 72 65 6e 74 20 73 6f 75 6e |transparent soun| 0000fb90 64 20 73 79 73 74 65 6d 20 63 68 61 6e 6e 65 6c |d system channel| 0000fba0 20 68 61 6e 64 6c 65 72 20 61 64 64 72 65 73 73 | handler address| 0000fbb0 20 6f 72 20 2d 31 0a 0a 3c 3d 09 52 30 20 3d 09 | or -1..<=.R0 =.| 0000fbc0 70 72 65 76 69 6f 75 73 20 6e 75 6d 62 65 72 20 |previous number | 0000fbd0 6f 66 20 63 68 61 6e 6e 65 6c 73 20 28 30 20 69 |of channels (0 i| 0000fbe0 66 20 73 6f 75 6e 64 20 73 79 73 74 65 6d 20 77 |f sound system w| 0000fbf0 61 73 20 6f 66 66 29 0a 09 52 31 20 3d 09 70 72 |as off)..R1 =.pr| 0000fc00 65 76 69 6f 75 73 20 74 72 61 6e 73 70 61 72 65 |evious transpare| 0000fc10 6e 74 20 73 6f 75 6e 64 20 73 79 73 74 65 6d 20 |nt sound system | 0000fc20 66 6c 61 67 73 0a 09 52 32 20 3d 09 70 72 65 76 |flags..R2 =.prev| 0000fc30 69 6f 75 73 20 74 72 61 6e 73 70 61 72 65 6e 74 |ious transparent| 0000fc40 20 73 6f 75 6e 64 20 73 79 73 74 65 6d 20 68 61 | sound system ha| 0000fc50 6e 64 6c 65 72 0a 0a 54 68 69 73 20 53 57 49 20 |ndler..This SWI | 0000fc60 61 6c 6c 6f 77 73 20 63 6f 6e 74 72 6f 6c 20 6f |allows control o| 0000fc70 76 65 72 20 74 68 65 20 51 54 4d 20 73 6f 75 6e |ver the QTM soun| 0000fc80 64 20 44 4d 41 20 68 61 6e 64 6c 65 72 2e 0a 0a |d DMA handler...| 0000fc90 54 68 65 20 51 54 4d 20 73 6f 75 6e 64 20 73 79 |The QTM sound sy| 0000fca0 73 74 65 6d 20 73 77 69 74 63 68 65 73 20 6f 6e |stem switches on| 0000fcb0 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 | automatically w| 0000fcc0 68 65 6e 20 61 20 73 6f 6e 67 20 6f 72 20 61 20 |hen a song or a | 0000fcd0 73 61 6d 70 6c 65 20 69 73 20 70 6c 61 79 65 64 |sample is played| 0000fce0 2c 20 62 75 74 20 63 61 6e 20 61 6c 73 6f 20 62 |, but can also b| 0000fcf0 65 20 73 77 69 74 63 68 65 64 20 6f 6e 20 6d 61 |e switched on ma| 0000fd00 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20 74 68 69 |nually using thi| 0000fd10 73 20 53 57 49 2c 20 73 70 65 63 69 66 79 69 6e |s SWI, specifyin| 0000fd20 67 20 34 20 6f 72 20 38 20 63 68 61 6e 6e 65 6c |g 4 or 8 channel| 0000fd30 73 2e 20 4e 6f 74 65 3a 20 54 68 69 73 20 73 65 |s. Note: This se| 0000fd40 74 73 20 74 68 65 20 27 64 65 66 61 75 6c 74 27 |ts the 'default'| 0000fd50 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 6e 6e | number of chann| 0000fd60 65 6c 73 2c 20 73 6f 20 65 76 65 6e 20 61 66 74 |els, so even aft| 0000fd70 65 72 20 74 68 65 20 73 6f 75 6e 64 20 73 79 73 |er the sound sys| 0000fd80 74 65 6d 20 69 73 20 6e 65 78 74 20 73 68 75 74 |tem is next shut| 0000fd90 20 64 6f 77 6e 2c 20 51 54 4d 20 77 69 6c 6c 20 | down, QTM will | 0000fda0 63 6f 6e 74 69 6e 75 65 20 74 6f 20 75 73 65 20 |continue to use | 0000fdb0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 |the number of ch| 0000fdc0 61 6e 6e 65 6c 73 20 73 70 65 63 69 66 69 65 64 |annels specified| 0000fdd0 20 77 68 65 6e 65 76 65 72 20 61 20 73 6f 6e 67 | whenever a song| 0000fde0 20 6f 72 20 73 61 6d 70 6c 65 20 63 61 75 73 65 | or sample cause| 0000fdf0 73 20 74 68 65 20 73 6f 75 6e 64 20 73 79 73 74 |s the sound syst| 0000fe00 65 6d 20 74 6f 20 73 74 61 72 74 20 75 70 20 61 |em to start up a| 0000fe10 67 61 69 6e 2e 0a 0a 49 66 20 30 20 63 68 61 6e |gain...If 0 chan| 0000fe20 6e 65 6c 73 20 61 72 65 20 73 70 65 63 69 66 69 |nels are specifi| 0000fe30 65 64 2c 20 74 68 65 20 51 54 4d 20 73 6f 75 6e |ed, the QTM soun| 0000fe40 64 20 73 79 73 74 65 6d 20 69 73 20 73 68 75 74 |d system is shut| 0000fe50 20 64 6f 77 6e 2e 20 49 66 20 61 20 73 6f 6e 67 | down. If a song| 0000fe60 20 77 61 73 20 70 6c 61 79 69 6e 67 20 61 74 20 | was playing at | 0000fe70 74 68 61 74 20 74 69 6d 65 2c 20 74 68 65 20 6d |that time, the m| 0000fe80 75 73 69 63 20 68 61 6e 64 6c 65 72 73 20 61 6e |usic handlers an| 0000fe90 64 20 70 6f 73 69 74 69 6f 6e 20 63 6f 75 6e 74 |d position count| 0000fea0 65 72 73 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 |ers will continu| 0000feb0 65 20 74 6f 20 6d 6f 76 65 20 74 68 72 6f 75 67 |e to move throug| 0000fec0 68 20 74 68 65 20 73 6f 6e 67 2c 20 61 6c 74 68 |h the song, alth| 0000fed0 6f 75 67 68 20 6e 6f 20 73 6f 75 6e 64 20 77 69 |ough no sound wi| 0000fee0 6c 6c 20 62 65 20 68 65 61 72 64 20 66 72 6f 6d |ll be heard from| 0000fef0 20 51 54 4d 2e 0a 0a 44 65 74 61 69 6c 73 20 6f | QTM...Details o| 0000ff00 66 20 74 68 65 20 54 72 61 6e 73 70 61 72 65 6e |f the Transparen| 0000ff10 74 20 53 6f 75 6e 64 20 53 79 73 74 65 6d 20 63 |t Sound System c| 0000ff20 61 6e 20 62 65 20 66 6f 75 6e 64 20 69 6e 20 74 |an be found in t| 0000ff30 68 65 20 27 54 65 63 68 6e 69 63 61 6c 27 20 68 |he 'Technical' h| 0000ff40 65 6c 70 20 66 69 6c 65 2c 20 62 75 74 20 62 61 |elp file, but ba| 0000ff50 73 69 63 61 6c 6c 79 20 69 74 20 61 6c 6c 6f 77 |sically it allow| 0000ff60 73 20 6a 6f 69 6e 74 20 63 6f 6e 74 72 6f 6c 20 |s joint control | 0000ff70 6f 76 65 72 20 74 68 65 20 73 6f 75 6e 64 20 63 |over the sound c| 0000ff80 68 61 6e 6e 65 6c 73 2c 20 62 79 20 51 54 4d 20 |hannels, by QTM | 0000ff90 61 6e 64 20 65 69 74 68 65 72 20 74 68 65 20 52 |and either the R| 0000ffa0 69 73 63 4f 53 20 73 6f 75 6e 64 20 68 61 6e 64 |iscOS sound hand| 0000ffb0 6c 65 72 20 28 64 65 66 61 75 6c 74 29 20 6f 72 |ler (default) or| 0000ffc0 20 61 6e 79 20 6f 74 68 65 72 20 52 69 73 63 4f | any other RiscO| 0000ffd0 53 20 63 6f 6d 70 61 74 69 62 6c 65 20 73 6f 75 |S compatible sou| 0000ffe0 6e 64 20 63 68 61 6e 6e 65 6c 20 68 61 6e 64 6c |nd channel handl| 0000fff0 65 72 2e 20 53 77 69 74 63 68 69 6e 67 20 74 68 |er. Switching th| 00010000 65 20 54 72 61 6e 73 70 61 72 65 6e 74 20 53 6f |e Transparent So| 00010010 75 6e 64 20 53 79 73 74 65 6d 20 6f 6e 20 28 70 |und System on (p| 00010020 61 73 73 69 6e 67 20 31 20 69 6e 20 52 31 29 20 |assing 1 in R1) | 00010030 77 69 6c 6c 20 61 6c 6c 6f 77 20 79 6f 75 20 74 |will allow you t| 00010040 6f 20 68 65 61 72 20 61 6e 79 20 52 69 73 63 4f |o hear any RiscO| 00010050 53 20 76 6f 69 63 65 20 6d 6f 64 75 6c 65 20 73 |S voice module s| 00010060 6f 75 6e 64 73 20 41 53 20 57 45 4c 4c 20 61 73 |ounds AS WELL as| 00010070 20 61 6e 79 20 51 54 4d 20 73 61 6d 70 6c 65 73 | any QTM samples| 00010080 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 |. For example, i| 00010090 6e 20 69 74 73 20 64 65 66 61 75 6c 74 20 73 74 |n its default st| 000100a0 61 74 65 2c 20 74 68 65 20 54 72 61 6e 73 70 61 |ate, the Transpa| 000100b0 72 65 6e 74 20 53 6f 75 6e 64 20 53 79 73 74 65 |rent Sound Syste| 000100c0 6d 20 77 69 6c 6c 20 61 6c 6c 6f 77 20 79 6f 75 |m will allow you| 000100d0 20 74 6f 20 68 65 61 72 20 74 68 65 20 73 79 73 | to hear the sys| 000100e0 74 65 6d 20 27 62 65 65 70 27 2c 20 77 68 69 6c |tem 'beep', whil| 000100f0 65 20 61 20 73 6f 6e 67 20 6f 72 20 73 61 6d 70 |e a song or samp| 00010100 6c 65 20 69 73 20 62 65 69 6e 67 20 70 6c 61 79 |le is being play| 00010110 65 64 20 74 68 72 6f 75 67 68 20 51 54 4d 2e 0a |ed through QTM..| 00010120 0a 56 20 66 6c 61 67 20 73 65 74 20 69 66 20 69 |.V flag set if i| 00010130 6c 6c 65 67 61 6c 20 76 61 6c 75 65 73 20 61 72 |llegal values ar| 00010140 65 20 70 61 73 73 65 64 20 74 6f 20 51 54 4d 2e |e passed to QTM.| 00010150 0a 00 00 00 44 41 54 41 a0 02 00 00 51 54 4d 5f |....DATA....QTM_| 00010160 53 57 49 54 61 62 6c 65 41 64 64 72 65 73 73 20 |SWITableAddress | 00010170 20 28 26 34 37 45 35 39 29 0a 23 50 61 72 65 6e | (&47E59).#Paren| 00010180 74 20 51 54 4d 5f 0a 3c 3d 09 52 30 20 3d 20 61 |t QTM_.<=.R0 = a| 00010190 64 64 72 65 73 73 20 6f 66 20 51 54 4d 27 73 20 |ddress of QTM's | 000101a0 69 6e 74 65 72 6e 61 6c 20 53 57 49 20 6a 75 6d |internal SWI jum| 000101b0 70 20 74 61 62 6c 65 0a 0a 54 68 69 73 20 53 57 |p table..This SW| 000101c0 49 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 64 |I returns the ad| 000101d0 64 72 65 73 73 20 6f 66 20 51 54 4d 27 73 20 53 |dress of QTM's S| 000101e0 57 49 20 6a 75 6d 70 20 74 61 62 6c 65 2c 20 73 |WI jump table, s| 000101f0 6f 20 74 68 61 74 20 75 73 65 72 20 70 72 6f 67 |o that user prog| 00010200 72 61 6d 73 20 63 61 6e 20 63 61 6c 6c 20 64 69 |rams can call di| 00010210 72 65 63 74 6c 79 20 61 6e 79 20 51 54 4d 20 53 |rectly any QTM S| 00010220 57 49 2c 20 77 69 74 68 6f 75 74 20 67 6f 69 6e |WI, without goin| 00010230 67 20 74 68 72 6f 75 67 68 20 74 68 65 20 52 69 |g through the Ri| 00010240 73 63 4f 53 20 53 57 49 20 68 61 6e 64 6c 65 72 |scOS SWI handler| 00010250 2e 0a 0a 54 6f 20 63 61 6c 6c 20 61 20 51 54 4d |...To call a QTM| 00010260 20 53 57 49 20 76 69 61 20 74 68 69 73 20 61 64 | SWI via this ad| 00010270 64 72 65 73 73 2c 20 74 68 65 20 72 65 67 69 73 |dress, the regis| 00010280 74 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 73 |ters should be s| 00010290 65 74 20 75 70 20 61 73 20 72 65 71 75 69 72 65 |et up as require| 000102a0 64 20 62 79 20 74 68 65 20 53 57 49 2c 20 61 6e |d by the SWI, an| 000102b0 64 20 74 68 65 20 53 57 49 20 6e 75 6d 62 65 72 |d the SWI number| 000102c0 20 6d 69 6e 75 73 20 26 34 37 45 34 30 20 73 68 | minus &47E40 sh| 000102d0 6f 75 6c 64 20 62 65 20 70 6c 61 63 65 64 20 69 |ould be placed i| 000102e0 6e 20 52 31 31 2e 20 54 68 65 20 53 57 49 20 63 |n R11. The SWI c| 000102f0 61 6e 20 74 68 65 6e 20 62 65 20 65 78 65 63 75 |an then be execu| 00010300 74 65 64 20 62 79 20 62 72 61 6e 63 68 69 6e 67 |ted by branching| 00010310 20 74 6f 20 74 68 69 73 20 53 57 49 20 74 61 62 | to this SWI tab| 00010320 6c 65 20 61 64 64 72 65 73 73 2e 0a 0a 4e 6f 74 |le address...Not| 00010330 65 3a 20 61 6c 6c 20 51 54 4d 20 53 57 49 73 20 |e: all QTM SWIs | 00010340 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 74 68 |can be called th| 00010350 69 73 20 77 61 79 2c 20 66 72 6f 6d 20 61 6e 79 |is way, from any| 00010360 20 50 53 52 20 6d 6f 64 65 2c 20 61 6c 74 68 6f | PSR mode, altho| 00010370 75 67 68 20 69 66 20 74 68 65 20 51 54 4d 20 73 |ugh if the QTM s| 00010380 6f 75 6e 64 20 73 79 73 74 65 6d 20 69 73 20 61 |ound system is a| 00010390 63 74 69 76 65 2c 20 3c 51 54 4d 5f 52 65 6d 6f |ctive, <QTM_Remo| 000103a0 76 65 43 68 61 6e 6e 65 6c 3e 20 73 68 6f 75 6c |veChannel> shoul| 000103b0 64 20 62 65 20 63 61 6c 6c 65 64 20 66 72 6f 6d |d be called from| 000103c0 20 61 20 6e 6f 6e 2d 55 73 65 72 20 6d 6f 64 65 | a non-User mode| 000103d0 2c 20 74 6f 20 61 6c 6c 6f 77 20 64 69 73 61 62 |, to allow disab| 000103e0 6c 69 6e 67 20 6f 66 20 69 6e 74 65 72 72 75 70 |ling of interrup| 000103f0 74 73 2e 0a 44 41 54 41 7e 04 00 00 51 54 4d 5f |ts..DATA~...QTM_| 00010400 52 65 67 69 73 74 65 72 53 61 6d 70 6c 65 20 20 |RegisterSample | 00010410 28 26 34 37 45 35 41 29 0a 23 50 61 72 65 6e 74 |(&47E5A).#Parent| 00010420 20 51 54 4d 5f 0a 3d 3e 09 52 30 20 3d 09 73 61 | QTM_.=>.R0 =.sa| 00010430 6d 70 6c 65 20 6e 75 6d 62 65 72 20 74 6f 20 72 |mple number to r| 00010440 65 67 69 73 74 65 72 20 61 73 20 28 31 2d 36 34 |egister as (1-64| 00010450 29 20 28 73 65 65 20 6e 6f 74 65 73 20 62 65 6c |) (see notes bel| 00010460 6f 77 29 0a 09 52 31 20 3d 09 73 61 6d 70 6c 65 |ow)..R1 =.sample| 00010470 20 61 64 64 72 65 73 73 20 28 6f 66 20 6c 6f 67 | address (of log| 00010480 61 72 69 74 68 6d 69 63 20 73 61 6d 70 6c 65 20 |arithmic sample | 00010490 64 61 74 61 29 20 6f 72 20 30 20 74 6f 20 62 6c |data) or 0 to bl| 000104a0 61 6e 6b 20 74 68 65 20 73 61 6d 70 6c 65 20 69 |ank the sample i| 000104b0 6e 66 6f 72 6d 61 74 69 6f 6e 0a 09 49 66 20 52 |nformation..If R| 000104c0 31 20 5c 3c 3e 20 30 20 74 68 65 6e 0a 09 20 09 |1 \<> 0 then.. .| 000104d0 52 32 20 3d 20 73 61 6d 70 6c 65 20 6c 65 6e 67 |R2 = sample leng| 000104e0 74 68 20 28 69 6e 20 62 79 74 65 73 29 0a 09 20 |th (in bytes).. | 000104f0 09 52 33 20 3d 20 72 65 70 65 61 74 20 6f 66 66 |.R3 = repeat off| 00010500 73 65 74 20 28 62 79 74 65 73 20 66 72 6f 6d 20 |set (bytes from | 00010510 73 74 61 72 74 20 6f 66 20 73 61 6d 70 6c 65 2c |start of sample,| 00010520 20 6f 72 20 30 29 0a 09 20 09 52 34 20 3d 20 72 | or 0).. .R4 = r| 00010530 65 70 65 61 74 20 6c 65 6e 67 74 68 20 28 6f 72 |epeat length (or| 00010540 20 30 29 0a 09 20 09 52 35 20 3d 20 64 65 66 61 | 0).. .R5 = defa| 00010550 75 6c 74 20 76 6f 6c 75 6d 65 20 28 30 2d 36 34 |ult volume (0-64| 00010560 29 0a 09 20 09 52 36 20 3d 20 66 69 6e 65 20 74 |).. .R6 = fine t| 00010570 75 6e 65 20 76 61 6c 75 65 20 28 2d 38 20 74 6f |une value (-8 to| 00010580 20 2b 37 29 0a 0a 3c 3d 09 52 30 2d 52 36 20 70 | +7)..<=.R0-R6 p| 00010590 72 65 73 65 72 76 65 64 0a 0a 54 68 69 73 20 53 |reserved..This S| 000105a0 57 49 20 61 6c 6c 6f 77 73 20 61 20 70 72 6f 67 |WI allows a prog| 000105b0 72 61 6d 20 74 6f 20 72 65 67 69 73 74 65 72 20 |ram to register | 000105c0 61 20 73 61 6d 70 6c 65 20 6c 6f 61 64 65 64 20 |a sample loaded | 000105d0 69 6e 74 6f 20 69 74 27 73 20 6f 77 6e 20 6d 65 |into it's own me| 000105e0 6d 6f 72 79 2c 20 61 73 20 61 20 51 54 4d 20 73 |mory, as a QTM s| 000105f0 61 6d 70 6c 65 2e 20 54 68 65 20 61 62 6f 76 65 |ample. The above| 00010600 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 77 69 6c | information wil| 00010610 6c 20 62 65 20 65 6e 74 65 72 65 64 20 69 6e 74 |l be entered int| 00010620 6f 20 51 54 4d 27 73 20 36 34 20 73 6c 6f 74 20 |o QTM's 64 slot | 00010630 73 61 6d 70 6c 65 20 74 61 62 6c 65 20 61 6e 64 |sample table and| 00010640 20 77 69 6c 6c 20 61 6c 6c 6f 77 20 74 68 65 20 | will allow the | 00010650 75 73 65 72 20 70 72 6f 67 72 61 6d 20 74 6f 20 |user program to | 00010660 70 6c 61 79 20 74 68 65 20 73 61 6d 70 6c 65 20 |play the sample | 00010670 75 73 69 6e 67 20 3c 51 54 4d 5f 50 6c 61 79 53 |using <QTM_PlayS| 00010680 61 6d 70 6c 65 3e 2e 20 49 66 20 74 68 65 20 73 |ample>. If the s| 00010690 61 6d 70 6c 65 20 6e 75 6d 62 65 72 20 69 73 20 |ample number is | 000106a0 3c 3d 33 31 2c 20 74 68 65 20 63 75 72 72 65 6e |<=31, the curren| 000106b0 74 20 73 6f 6e 67 20 77 69 6c 6c 20 75 73 65 20 |t song will use | 000106c0 74 68 69 73 20 73 61 6d 70 6c 65 20 72 61 74 68 |this sample rath| 000106d0 65 72 20 74 68 61 6e 20 69 74 73 20 64 65 66 61 |er than its defa| 000106e0 75 6c 74 20 73 61 6d 70 6c 65 2e 0a 0a 49 74 20 |ult sample...It | 000106f0 69 73 20 67 6f 6f 64 20 70 72 61 63 74 69 63 65 |is good practice| 00010700 20 66 6f 72 20 6e 6f 6e 2d 64 65 73 6b 74 6f 70 | for non-desktop| 00010710 20 75 73 65 72 73 20 6f 66 20 74 68 69 73 20 63 | users of this c| 00010720 61 6c 6c 20 74 6f 20 62 6c 61 6e 6b 20 74 68 65 |all to blank the| 00010730 69 72 20 72 65 67 69 73 74 65 72 65 64 20 73 61 |ir registered sa| 00010740 6d 70 6c 65 73 20 77 68 65 6e 20 72 65 74 75 72 |mples when retur| 00010750 6e 69 6e 67 20 74 6f 20 74 68 65 20 64 65 73 6b |ning to the desk| 00010760 74 6f 70 2c 20 62 79 20 63 61 6c 6c 69 6e 67 20 |top, by calling | 00010770 74 68 69 73 20 53 57 49 20 77 69 74 68 20 52 31 |this SWI with R1| 00010780 3d 30 2e 0a 0a 4e 6f 74 65 3a 20 41 6c 6c 20 73 |=0...Note: All s| 00010790 61 6d 70 6c 65 73 20 69 6e 20 74 68 65 20 72 61 |amples in the ra| 000107a0 6e 67 65 20 31 2d 33 31 20 61 72 65 20 72 65 2d |nge 1-31 are re-| 000107b0 73 65 74 20 77 68 65 6e 20 61 20 6e 65 77 20 73 |set when a new s| 000107c0 6f 6e 67 20 69 73 20 6c 6f 61 64 65 64 2c 20 74 |ong is loaded, t| 000107d0 6f 20 61 6c 6c 6f 77 20 73 70 61 63 65 20 66 6f |o allow space fo| 000107e0 72 20 74 68 65 20 6e 65 77 20 73 6f 6e 67 27 73 |r the new song's| 000107f0 20 6f 77 6e 20 73 61 6d 70 6c 65 73 2e 20 49 66 | own samples. If| 00010800 20 79 6f 75 20 61 72 65 20 75 73 69 6e 67 20 74 | you are using t| 00010810 68 69 73 20 72 61 6e 67 65 20 66 6f 72 20 73 6f |his range for so| 00010820 75 6e 64 20 65 66 66 65 63 74 73 20 65 74 63 2e |und effects etc.| 00010830 20 79 6f 75 20 6d 75 73 74 20 72 65 2d 72 65 67 | you must re-reg| 00010840 69 73 74 65 72 20 61 6c 6c 20 72 65 71 75 69 72 |ister all requir| 00010850 65 64 20 73 61 6d 70 6c 65 73 20 61 66 74 65 72 |ed samples after| 00010860 20 65 76 65 72 79 20 73 6f 6e 67 20 6c 6f 61 64 | every song load| 00010870 2e 0a 00 00 44 41 54 41 bb 03 00 00 51 54 4d 5f |....DATA....QTM_| 00010880 53 65 74 53 70 65 65 64 20 20 28 26 34 37 45 35 |SetSpeed (&47E5| 00010890 42 29 0a 23 50 61 72 65 6e 74 20 51 54 4d 5f 0a |B).#Parent QTM_.| 000108a0 3d 3e 09 52 30 20 3d 09 6e 65 77 20 73 6f 6e 67 |=>.R0 =.new song| 000108b0 20 73 70 65 65 64 20 28 30 31 2d 33 31 29 20 6f | speed (01-31) o| 000108c0 72 20 74 65 6d 70 6f 20 28 33 32 2d 32 35 35 29 |r tempo (32-255)| 000108d0 0a 09 20 09 28 73 70 65 65 64 20 28 62 65 61 74 |.. .(speed (beat| 000108e0 73 20 70 65 72 20 6e 6f 74 65 29 2c 20 66 61 73 |s per note), fas| 000108f0 74 20 30 31 2d 33 31 20 20 76 2e 20 73 6c 6f 77 |t 01-31 v. slow| 00010900 2c 20 64 65 66 61 75 6c 74 20 30 36 29 0a 09 20 |, default 06).. | 00010910 09 28 74 65 6d 70 6f 20 28 62 65 61 74 20 66 72 |.(tempo (beat fr| 00010920 65 71 75 65 6e 63 79 29 2c 20 73 6c 6f 77 20 33 |equency), slow 3| 00010930 32 2d 32 35 35 20 76 2e 20 66 61 73 74 2c 20 64 |2-255 v. fast, d| 00010940 65 66 61 75 6c 74 20 31 32 35 29 0a 0a 3c 3d 09 |efault 125)..<=.| 00010950 52 30 20 70 72 65 73 65 72 76 65 64 0a 0a 54 68 |R0 preserved..Th| 00010960 69 73 20 53 57 49 20 70 72 6f 76 69 64 65 73 20 |is SWI provides | 00010970 75 73 65 72 20 63 6f 6e 74 72 6f 6c 20 6f 76 65 |user control ove| 00010980 72 20 74 68 65 20 73 70 65 65 64 20 6f 66 20 74 |r the speed of t| 00010990 68 65 20 63 75 72 72 65 6e 74 6c 79 20 70 6c 61 |he currently pla| 000109a0 79 69 6e 67 20 73 6f 6e 67 2e 20 54 68 69 73 20 |ying song. This | 000109b0 63 6f 6d 6d 61 6e 64 20 68 61 73 20 74 68 65 20 |command has the | 000109c0 73 61 6d 65 20 65 66 66 65 63 74 20 28 61 6e 64 |same effect (and| 000109d0 20 74 61 6b 65 73 20 74 68 65 20 73 61 6d 65 20 | takes the same | 000109e0 70 61 72 61 6d 65 74 65 72 73 29 20 61 73 20 74 |parameters) as t| 000109f0 68 65 20 73 70 65 65 64 2d 63 68 61 6e 67 65 20 |he speed-change | 00010a00 27 46 27 20 65 66 66 65 63 74 20 61 73 20 75 73 |'F' effect as us| 00010a10 65 64 20 69 6e 20 50 72 6f 54 72 61 63 6b 65 72 |ed in ProTracker| 00010a20 20 63 6f 6d 70 61 74 69 62 6c 65 20 73 6f 6e 67 | compatible song| 00010a30 73 2e 20 54 68 65 20 6f 6e 6c 79 20 64 69 66 66 |s. The only diff| 00010a40 65 72 65 6e 63 65 20 62 65 69 6e 67 20 74 68 61 |erence being tha| 00010a50 74 20 61 20 76 61 6c 75 65 20 6f 66 20 30 20 77 |t a value of 0 w| 00010a60 69 6c 6c 20 4e 4f 54 20 73 74 6f 70 20 74 68 65 |ill NOT stop the| 00010a70 20 73 6f 6e 67 2c 20 75 73 65 20 53 57 49 20 51 | song, use SWI Q| 00010a80 54 4d 5f 53 74 6f 70 20 74 6f 20 64 6f 20 74 68 |TM_Stop to do th| 00010a90 69 73 2e 0a 0a 41 66 74 65 72 20 75 73 69 6e 67 |is...After using| 00010aa0 20 74 68 69 73 20 53 57 49 2c 20 74 68 65 20 73 | this SWI, the s| 00010ab0 6f 6e 67 20 73 70 65 65 64 20 77 69 6c 6c 20 72 |ong speed will r| 00010ac0 65 6d 61 69 6e 20 61 74 20 74 68 65 20 6e 65 77 |emain at the new| 00010ad0 20 76 61 6c 75 65 20 75 6e 74 69 6c 20 61 6e 20 | value until an | 00010ae0 27 46 27 20 65 66 66 65 63 74 20 69 73 20 70 6c |'F' effect is pl| 00010af0 61 79 65 64 2c 20 6f 72 20 74 68 65 20 73 6f 6e |ayed, or the son| 00010b00 67 20 69 73 20 73 74 6f 70 70 65 64 2e 20 4e 6f |g is stopped. No| 00010b10 74 65 3a 20 69 66 20 74 68 65 20 27 46 27 20 65 |te: if the 'F' e| 00010b20 66 66 65 63 74 20 69 73 20 64 69 73 61 62 6c 65 |ffect is disable| 00010b30 64 2c 20 75 73 69 6e 67 20 3c 51 54 4d 5f 45 66 |d, using <QTM_Ef| 00010b40 66 65 63 74 43 6f 6e 74 72 6f 6c 3e 2c 20 74 68 |fectControl>, th| 00010b50 65 20 73 6f 6e 67 20 77 69 6c 6c 20 70 6c 61 79 |e song will play| 00010b60 20 61 74 20 74 68 65 20 6e 65 77 20 73 70 65 65 | at the new spee| 00010b70 64 20 75 6e 74 69 6c 20 69 74 20 69 73 20 73 74 |d until it is st| 00010b80 6f 70 70 65 64 2c 20 6f 72 20 27 46 27 20 65 66 |opped, or 'F' ef| 00010b90 66 65 63 74 73 20 61 72 65 20 65 6e 61 62 6c 65 |fects are enable| 00010ba0 64 20 61 67 61 69 6e 2e 0a 0a 54 68 65 20 63 75 |d again...The cu| 00010bb0 72 72 65 6e 74 20 73 70 65 65 64 20 61 6e 64 20 |rrent speed and | 00010bc0 74 65 6d 70 6f 20 63 61 6e 20 62 65 20 72 65 61 |tempo can be rea| 00010bd0 64 20 75 73 69 6e 67 20 3c 51 54 4d 5f 52 65 61 |d using <QTM_Rea| 00010be0 64 53 70 65 65 64 3e 2e 0a 0a 56 20 66 6c 61 67 |dSpeed>...V flag| 00010bf0 20 73 65 74 20 69 66 20 6e 6f 20 73 6f 6e 67 20 | set if no song | 00010c00 6c 6f 61 64 65 64 20 6f 72 20 74 68 65 20 6e 65 |loaded or the ne| 00010c10 77 20 73 70 65 65 64 2f 74 65 6d 70 6f 20 69 73 |w speed/tempo is| 00010c20 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2e 0a 00 | out of range...| 00010c30 44 41 54 41 71 01 00 00 53 74 61 6e 64 61 72 64 |DATAq...Standard| 00010c40 20 50 72 6f 54 72 61 63 6b 65 72 20 63 6f 6d 6d | ProTracker comm| 00010c50 61 6e 64 73 2f 65 66 66 65 63 74 73 0a 23 54 61 |ands/effects.#Ta| 00010c60 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 30 30 |ble Columns 2.00| 00010c70 20 41 72 70 65 67 69 6f 0a 30 31 20 50 69 74 63 | Arpegio.01 Pitc| 00010c80 68 20 73 6c 69 64 65 20 75 70 0a 30 32 20 50 69 |h slide up.02 Pi| 00010c90 74 63 68 20 73 6c 69 64 65 20 64 6f 77 6e 0a 30 |tch slide down.0| 00010ca0 33 20 54 6f 6e 65 20 70 6f 72 74 61 6d 65 6e 74 |3 Tone portament| 00010cb0 6f 0a 30 34 20 56 69 62 72 61 74 6f 0a 30 35 20 |o.04 Vibrato.05 | 00010cc0 54 6f 6e 65 20 70 6f 72 74 61 6d 65 6e 74 6f 20 |Tone portamento | 00010cd0 2b 20 76 6f 6c 75 6d 65 20 73 6c 69 64 65 0a 30 |+ volume slide.0| 00010ce0 36 20 56 69 62 72 61 74 6f 20 2b 20 76 6f 6c 75 |6 Vibrato + volu| 00010cf0 6d 65 20 73 6c 69 64 65 0a 30 37 20 54 72 65 6d |me slide.07 Trem| 00010d00 65 6c 6f 0a 30 38 20 5c 3c 6e 6f 74 20 75 73 65 |elo.08 \<not use| 00010d10 64 3e 0a 30 39 20 53 65 74 20 73 61 6d 70 6c 65 |d>.09 Set sample| 00010d20 20 6f 66 66 73 65 74 0a 30 41 20 56 6f 6c 75 6d | offset.0A Volum| 00010d30 65 20 73 6c 69 64 65 0a 30 42 20 4a 75 6d 70 20 |e slide.0B Jump | 00010d40 74 6f 20 73 65 71 75 65 6e 63 65 0a 30 43 20 53 |to sequence.0C S| 00010d50 65 74 20 76 6f 6c 75 6d 65 0a 30 44 20 50 61 74 |et volume.0D Pat| 00010d60 74 65 72 6e 20 62 72 65 61 6b 0a 30 45 20 56 61 |tern break.0E Va| 00010d70 72 69 6f 75 73 2c 20 73 65 65 20 74 61 62 6c 65 |rious, see table| 00010d80 20 32 0a 30 46 20 53 65 74 20 73 70 65 65 64 20 | 2.0F Set speed | 00010d90 2f 20 74 65 6d 70 6f 0a 23 45 6e 64 54 61 62 6c |/ tempo.#EndTabl| 00010da0 65 00 00 00 44 41 54 41 ad 01 00 00 27 45 27 20 |e...DATA....'E' | 00010db0 63 6f 6d 6d 61 6e 64 73 2f 65 66 66 65 63 74 73 |commands/effects| 00010dc0 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 00010dd0 32 0a 45 30 20 53 65 74 20 66 69 6c 74 65 72 20 |2.E0 Set filter | 00010de0 2a 0a 45 31 20 46 69 6e 65 20 70 69 74 63 68 20 |*.E1 Fine pitch | 00010df0 73 6c 69 64 65 20 75 70 0a 45 32 20 46 69 6e 65 |slide up.E2 Fine| 00010e00 20 70 69 74 63 68 20 73 6c 69 64 65 20 64 6f 77 | pitch slide dow| 00010e10 6e 0a 45 33 20 47 6c 69 73 73 61 6e 64 6f 20 63 |n.E3 Glissando c| 00010e20 6f 6e 74 72 6f 6c 0a 45 34 20 53 65 74 20 76 69 |ontrol.E4 Set vi| 00010e30 62 72 61 74 6f 20 77 61 76 65 66 6f 72 6d 0a 45 |brato waveform.E| 00010e40 35 20 53 65 74 20 66 69 6e 65 20 74 75 6e 69 6e |5 Set fine tunin| 00010e50 67 0a 45 36 20 50 61 74 74 65 72 6e 20 6c 6f 6f |g.E6 Pattern loo| 00010e60 70 0a 45 37 20 53 65 74 20 74 72 65 6d 65 6c 6f |p.E7 Set tremelo| 00010e70 20 77 61 76 65 66 6f 72 6d 0a 45 38 20 5c 3c 6e | waveform.E8 \<n| 00010e80 6f 74 20 75 73 65 64 3e 0a 45 39 20 52 65 74 72 |ot used>.E9 Retr| 00010e90 69 67 20 6e 6f 74 65 0a 45 41 20 46 69 6e 65 20 |ig note.EA Fine | 00010ea0 76 6f 6c 75 6d 65 20 73 6c 69 64 65 20 75 70 0a |volume slide up.| 00010eb0 45 42 20 46 69 6e 65 20 76 6f 6c 75 6d 65 20 73 |EB Fine volume s| 00010ec0 6c 69 64 65 20 64 6f 77 6e 0a 45 43 20 4e 6f 74 |lide down.EC Not| 00010ed0 65 20 63 75 74 0a 45 44 20 4e 6f 74 65 20 64 65 |e cut.ED Note de| 00010ee0 6c 61 79 0a 45 45 20 50 61 74 74 65 72 6e 20 64 |lay.EE Pattern d| 00010ef0 65 6c 61 79 0a 45 46 20 49 6e 76 65 72 74 20 6c |elay.EF Invert l| 00010f00 6f 6f 70 0a 23 45 6e 64 54 61 62 6c 65 0a 0a 2a |oop.#EndTable..*| 00010f10 20 54 68 65 20 27 53 65 74 20 66 69 6c 74 65 72 | The 'Set filter| 00010f20 27 20 63 6f 6d 6d 61 6e 64 20 63 61 6e 27 74 20 |' command can't | 00010f30 62 65 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 6f |be implemented o| 00010f40 6e 20 74 68 65 20 41 72 63 68 69 6d 65 64 65 73 |n the Archimedes| 00010f50 2e 00 00 00 44 49 52 24 d8 00 00 00 d8 00 00 00 |....DIR$........| 00010f60 2c 10 01 00 46 fd ff ff e1 05 2a 43 77 00 00 00 |,...F.....*Cw...| 00010f70 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00010f80 a4 10 01 00 46 ff ff ff 6f cc 87 4d 49 01 00 00 |....F...o..MI...| 00010f90 13 00 00 00 00 00 00 00 46 69 6c 65 49 6e 66 6f |........FileInfo| 00010fa0 00 00 00 00 f0 11 01 00 46 ff ff ff bb d9 87 4d |........F......M| 00010fb0 04 02 00 00 13 00 00 00 00 00 00 00 4d 65 73 73 |............Mess| 00010fc0 61 67 65 00 f4 13 01 00 46 ff ff ff 76 c9 87 4d |age.....F...v..M| 00010fd0 f9 00 00 00 13 00 00 00 00 00 00 00 4e 65 77 4d |............NewM| 00010fe0 65 73 73 61 67 65 73 00 f0 14 01 00 46 fd ff ff |essages.....F...| 00010ff0 66 a2 b0 3f 72 00 00 00 13 00 00 00 00 00 00 00 |f..?r...........| 00011000 6f 70 65 72 61 74 69 6f 6e 00 00 00 64 15 01 00 |operation...d...| 00011010 46 ff ff ff 73 d4 87 4d b4 00 00 00 13 00 00 00 |F...s..M........| 00011020 00 00 00 00 49 73 4e 65 77 00 00 00 44 41 54 41 |....IsNew...DATA| 00011030 77 00 00 00 52 65 61 64 4d 61 69 6c 0a 23 50 61 |w...ReadMail.#Pa| 00011040 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 |rent !Root.#Pref| 00011050 69 78 20 52 65 61 64 4d 61 69 6c 5f 0a 23 54 61 |ix ReadMail_.#Ta| 00011060 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 31 0a 3c 46 |ble Columns 1.<F| 00011070 69 6c 65 49 6e 66 6f 3e 0a 3c 4d 65 73 73 61 67 |ileInfo>.<Messag| 00011080 65 3e 0a 3c 4e 65 77 4d 65 73 73 61 67 65 73 3e |e>.<NewMessages>| 00011090 0a 3c 49 73 4e 65 77 3e 0a 23 45 6e 64 54 61 62 |.<IsNew>.#EndTab| 000110a0 6c 65 0a 00 44 41 54 41 49 01 00 00 52 65 61 64 |le..DATAI...Read| 000110b0 4d 61 69 6c 5f 46 69 6c 65 49 6e 66 6f 20 28 26 |Mail_FileInfo (&| 000110c0 34 36 38 30 30 29 0a 23 50 61 72 65 6e 74 20 52 |46800).#Parent R| 000110d0 65 61 64 4d 61 69 6c 5f 0a 5c 3c 3d 09 52 30 20 |eadMail_.\<=.R0 | 000110e0 3d 09 6e 75 6d 62 65 72 20 6f 66 20 6d 65 73 73 |=.number of mess| 000110f0 61 67 65 73 20 72 65 61 64 2c 20 6f 72 20 2d 31 |ages read, or -1| 00011100 20 69 66 20 66 69 6c 65 20 6e 6f 74 20 73 65 65 | if file not see| 00011110 6e 0a 09 52 31 20 3d 09 6e 75 6d 62 65 72 20 6f |n..R1 =.number o| 00011120 66 20 6e 65 77 20 6d 65 73 73 61 67 65 73 20 72 |f new messages r| 00011130 65 61 64 0a 0a 54 68 69 73 20 72 65 61 64 73 20 |ead..This reads | 00011140 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 |information abou| 00011150 74 20 74 68 65 20 52 65 61 64 4d 61 69 6c 20 6d |t the ReadMail m| 00011160 65 73 73 61 67 65 20 62 61 73 65 20 66 69 6c 65 |essage base file| 00011170 73 20 77 68 69 63 68 20 68 61 76 65 20 62 65 65 |s which have bee| 00011180 6e 20 73 65 65 6e 20 62 79 20 74 68 65 20 6d 6f |n seen by the mo| 00011190 64 75 6c 65 2e 20 54 6f 20 6e 6f 74 69 66 79 20 |dule. To notify | 000111a0 74 68 65 20 6d 6f 64 75 6c 65 20 74 68 61 74 20 |the module that | 000111b0 74 68 65 20 4c 69 73 74 20 6f 72 20 4e 65 77 20 |the List or New | 000111c0 66 69 6c 65 20 68 61 73 20 63 68 61 6e 67 65 64 |file has changed| 000111d0 2c 20 75 73 65 20 3c 52 65 61 64 4d 61 69 6c 5f |, use <ReadMail_| 000111e0 4e 65 77 4d 65 73 73 61 67 65 73 3e 2e 00 00 00 |NewMessages>....| 000111f0 44 41 54 41 04 02 00 00 52 65 61 64 4d 61 69 6c |DATA....ReadMail| 00011200 5f 4d 65 73 73 61 67 65 20 28 26 34 36 38 30 31 |_Message (&46801| 00011210 29 0a 23 50 61 72 65 6e 74 20 52 65 61 64 4d 61 |).#Parent ReadMa| 00011220 69 6c 5f 0a 3d 3e 09 52 30 20 3d 09 66 69 6c 65 |il_.=>.R0 =.file| 00011230 20 6e 75 6d 62 65 72 20 74 6f 20 66 69 6e 64 0a | number to find.| 00011240 09 52 31 20 3d 09 3c 6f 70 65 72 61 74 69 6f 6e |.R1 =.<operation| 00011250 20 63 6f 64 65 3d 3e 52 65 61 64 4d 61 69 6c 5f | code=>ReadMail_| 00011260 6f 70 65 72 61 74 69 6f 6e 3e 0a 09 52 32 20 3d |operation>..R2 =| 00011270 09 55 6e 75 73 65 64 0a 09 52 33 20 3d 09 70 72 |.Unused..R3 =.pr| 00011280 65 76 69 6f 75 73 20 66 69 6c 65 20 69 6e 20 63 |evious file in c| 00011290 68 61 69 6e 20 28 6f 72 20 2d 31 20 74 6f 20 6c |hain (or -1 to l| 000112a0 65 61 76 65 20 75 6e 63 68 61 6e 67 65 64 29 0a |eave unchanged).| 000112b0 09 52 34 20 3d 09 6e 65 78 74 20 66 69 6c 65 20 |.R4 =.next file | 000112c0 69 6e 20 63 68 61 69 6e 20 28 6f 72 20 2d 31 20 |in chain (or -1 | 000112d0 74 6f 20 6c 65 61 76 65 20 75 6e 63 68 61 6e 67 |to leave unchang| 000112e0 65 64 29 0a 0a 5c 3c 3d 09 52 30 20 70 72 65 73 |ed)..\<=.R0 pres| 000112f0 65 72 76 65 64 0a 09 52 31 20 3d 09 70 6f 69 6e |erved..R1 =.poin| 00011300 74 65 72 20 74 6f 20 6c 69 6e 65 20 69 6e 20 4c |ter to line in L| 00011310 69 73 74 20 66 69 6c 65 2c 20 6f 72 20 2d 31 20 |ist file, or -1 | 00011320 69 66 20 6e 6f 74 20 66 6f 75 6e 64 0a 09 52 32 |if not found..R2| 00011330 20 3d 09 72 65 61 6c 20 6d 65 73 73 61 67 65 20 | =.real message | 00011340 6e 75 6d 62 65 72 0a 09 52 33 20 3d 09 70 72 65 |number..R3 =.pre| 00011350 76 69 6f 75 73 20 66 69 6c 65 20 69 6e 20 63 68 |vious file in ch| 00011360 61 69 6e 0a 09 52 34 20 3d 09 6e 65 78 74 20 66 |ain..R4 =.next f| 00011370 69 6c 65 20 69 6e 20 63 68 61 69 6e 0a 0a 54 68 |ile in chain..Th| 00011380 69 73 20 63 61 6c 6c 20 74 72 69 65 73 20 74 6f |is call tries to| 00011390 20 66 69 6e 64 20 61 20 70 61 72 74 69 63 75 6c | find a particul| 000113a0 61 72 20 66 69 6c 65 27 73 20 69 6e 66 6f 72 6d |ar file's inform| 000113b0 61 74 69 6f 6e 20 61 6e 64 20 72 65 74 75 72 6e |ation and return| 000113c0 73 20 69 74 2c 20 6f 72 20 73 65 74 73 20 74 68 |s it, or sets th| 000113d0 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e |e information in| 000113e0 20 74 68 65 20 6d 6f 64 75 6c 65 27 73 20 62 6c | the module's bl| 000113f0 6f 63 6b 2e 44 41 54 41 f9 00 00 00 52 65 61 64 |ock.DATA....Read| 00011400 4d 61 69 6c 5f 4e 65 77 4d 65 73 73 61 67 65 73 |Mail_NewMessages| 00011410 20 28 26 34 36 38 30 31 29 0a 23 50 61 72 65 6e | (&46801).#Paren| 00011420 74 20 52 65 61 64 4d 61 69 6c 5f 0a 5c 3c 3d 09 |t ReadMail_.\<=.| 00011430 52 30 20 3d 09 4e 75 6d 62 65 72 20 6f 66 20 6d |R0 =.Number of m| 00011440 65 73 73 61 67 65 73 20 69 6e 20 62 61 73 65 0a |essages in base.| 00011450 09 52 31 20 3d 09 4e 75 6d 62 65 72 20 6f 66 20 |.R1 =.Number of | 00011460 6e 65 77 20 66 69 6c 65 73 20 69 6e 20 62 61 73 |new files in bas| 00011470 65 0a 0a 54 68 69 73 20 63 61 6c 6c 20 6e 6f 74 |e..This call not| 00011480 69 66 69 65 73 20 74 68 65 20 52 65 61 64 4d 61 |ifies the ReadMa| 00011490 69 6c 20 6d 6f 64 75 6c 65 20 74 68 61 74 20 74 |il module that t| 000114a0 68 65 20 6d 65 73 73 61 67 65 20 62 61 73 65 20 |he message base | 000114b0 4c 69 73 74 20 28 6f 72 20 4e 65 77 29 20 66 69 |List (or New) fi| 000114c0 6c 65 20 68 61 73 20 62 65 65 6e 20 61 6c 74 65 |le has been alte| 000114d0 72 65 64 20 61 6e 64 20 69 74 20 6e 65 65 64 73 |red and it needs| 000114e0 20 74 6f 20 72 65 61 64 20 69 74 2e 0a 00 00 00 | to read it.....| 000114f0 44 41 54 41 72 00 00 00 4f 70 65 72 61 74 69 6f |DATAr...Operatio| 00011500 6e 20 63 6f 64 65 73 0a 23 57 72 61 70 20 4f 66 |n codes.#Wrap Of| 00011510 66 0a 43 6f 64 65 09 4d 65 61 6e 69 6e 67 0a 23 |f.Code.Meaning.#| 00011520 4c 69 6e 65 0a 2d 31 09 44 65 6c 65 74 65 20 6d |Line.-1.Delete m| 00011530 65 73 73 61 67 65 0a 30 09 44 6f 6e 27 74 20 61 |essage.0.Don't a| 00011540 6c 74 65 72 20 6d 65 73 73 61 67 65 0a 31 09 53 |lter message.1.S| 00011550 65 74 20 64 61 74 61 20 61 73 20 70 61 73 73 65 |et data as passe| 00011560 64 0a 00 00 44 41 54 41 b4 00 00 00 52 65 61 64 |d...DATA....Read| 00011570 4d 61 69 6c 5f 49 73 4e 65 77 20 28 26 34 36 38 |Mail_IsNew (&468| 00011580 30 33 29 0a 23 50 61 72 65 6e 74 20 52 65 61 64 |03).#Parent Read| 00011590 4d 61 69 6c 5f 0a 3d 3e 09 52 30 20 3d 09 6e 75 |Mail_.=>.R0 =.nu| 000115a0 6d 62 65 72 20 6f 66 20 66 69 6c 65 20 74 6f 20 |mber of file to | 000115b0 63 68 65 63 6b 0a 5c 3c 3d 09 52 30 20 3d 09 30 |check.\<=.R0 =.0| 000115c0 20 69 66 20 6e 6f 74 20 6e 65 77 2c 20 2d 31 20 | if not new, -1 | 000115d0 69 66 20 6e 65 77 0a 0a 54 68 69 73 20 53 57 49 |if new..This SWI| 000115e0 20 63 68 65 63 6b 73 20 74 68 65 20 6e 65 77 20 | checks the new | 000115f0 66 69 6c 65 73 20 6c 6f 67 20 74 6f 20 63 68 65 |files log to che| 00011600 63 6b 20 69 66 20 74 68 65 20 66 69 6c 65 20 69 |ck if the file i| 00011610 73 20 74 68 65 72 65 2e 44 49 52 24 2c 00 00 00 |s there.DIR$,...| 00011620 2c 00 00 00 44 16 01 00 46 fd ff ff 71 4c c7 13 |,...D...F...qL..| 00011630 80 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 00011640 74 00 00 00 44 41 54 41 80 00 00 00 52 4f 4d 43 |t...DATA....ROMC| 00011650 61 63 68 65 0a 23 50 61 72 65 6e 74 20 21 52 6f |ache.#Parent !Ro| 00011660 6f 74 0a 23 50 72 65 66 69 78 20 52 4f 4d 43 61 |ot.#Prefix ROMCa| 00011670 63 68 65 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 |che_.#Table Colu| 00011680 6d 6e 73 20 32 0a 43 61 63 68 65 0a 4c 69 6e 6b |mns 2.Cache.Link| 00011690 0a 4c 6f 61 64 0a 53 77 61 70 0a 55 6e 63 61 63 |.Load.Swap.Uncac| 000116a0 68 65 0a 53 61 76 65 0a 53 65 74 53 74 61 74 65 |he.Save.SetState| 000116b0 0a 41 6c 6c 6f 63 61 74 65 0a 23 45 6e 64 54 61 |.Allocate.#EndTa| 000116c0 62 6c 65 0a 44 49 52 24 ec 00 00 00 ec 00 00 00 |ble.DIR$........| 000116d0 b0 17 01 00 47 fd ff ff 1b 8d 97 e9 76 00 00 00 |....G.......v...| 000116e0 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 000116f0 28 18 01 00 47 ff ff ff 39 40 13 fd 08 06 00 00 |(...G...9@......| 00011700 13 00 00 00 00 00 00 00 63 6f 64 65 00 00 00 00 |........code....| 00011710 30 1e 01 00 47 ff ff ff ea 99 98 e9 c9 02 00 00 |0...G...........| 00011720 13 00 00 00 00 00 00 00 49 6e 66 6f 00 00 00 00 |........Info....| 00011730 fc 20 01 00 47 ff ff ff a7 d7 98 e9 94 01 00 00 |. ..G...........| 00011740 13 00 00 00 00 00 00 00 4c 69 6e 6b 00 00 00 00 |........Link....| 00011750 90 22 01 00 47 ff ff ff ec 24 99 e9 63 02 00 00 |."..G....$..c...| 00011760 13 00 00 00 00 00 00 00 4d 65 6d 6f 72 79 00 00 |........Memory..| 00011770 f4 24 01 00 47 ff ff ff bb 47 13 fd 6c 05 00 00 |.$..G....G..l...| 00011780 13 00 00 00 00 00 00 00 75 73 65 72 00 00 00 00 |........user....| 00011790 60 2a 01 00 47 ff ff ff 5c f5 99 e9 be 04 00 00 |`*..G...\.......| 000117a0 13 00 00 00 00 00 00 00 55 74 69 6c 00 00 00 00 |........Util....| 000117b0 44 41 54 41 76 00 00 00 53 70 61 72 6b 46 53 0a |DATAv...SparkFS.| 000117c0 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 |#Parent !Root.#P| 000117d0 72 65 66 69 78 20 53 70 61 72 6b 46 53 5f 0a 23 |refix SparkFS_.#| 000117e0 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a |Table Columns 2.| 000117f0 3c 43 6f 64 65 3e 0a 3c 49 6e 66 6f 3e 0a 3c 4c |<Code>.<Info>.<L| 00011800 69 6e 6b 3e 0a 3c 4d 65 6d 6f 72 79 3e 0a 3c 55 |ink>.<Memory>.<U| 00011810 73 65 72 3e 0a 3c 55 74 69 6c 3e 0a 23 45 6e 64 |ser>.<Util>.#End| 00011820 54 61 62 6c 65 0a 00 00 44 41 54 41 08 06 00 00 |Table...DATA....| 00011830 53 70 61 72 6b 46 53 5f 43 6f 64 65 20 28 26 34 |SparkFS_Code (&4| 00011840 34 35 43 33 29 0a 23 50 61 72 65 6e 74 20 53 70 |45C3).#Parent Sp| 00011850 61 72 6b 46 53 5f 0a 3d 3e 09 52 30 20 3d 09 72 |arkFS_.=>.R0 =.r| 00011860 65 61 73 6f 6e 20 63 6f 64 65 20 6e 75 6d 62 65 |eason code numbe| 00011870 72 0a 09 20 09 20 20 30 09 3c 43 52 43 20 31 36 |r.. . 0.<CRC 16| 00011880 20 62 6c 6f 63 6b 3d 3e 2e 63 6f 64 65 30 3e 0a | block=>.code0>.| 00011890 09 20 09 20 20 31 09 3c 43 52 43 20 33 32 20 62 |. . 1.<CRC 32 b| 000118a0 6c 6f 63 6b 3d 3e 2e 63 6f 64 65 31 3e 0a 09 20 |lock=>.code1>.. | 000118b0 09 20 20 32 09 3c 4f 70 65 6e 20 65 6e 63 72 79 |. 2.<Open encry| 000118c0 70 74 3d 3e 2e 63 6f 64 65 32 3e 0a 09 20 09 20 |pt=>.code2>.. . | 000118d0 20 33 09 3c 45 6e 63 72 79 70 74 20 62 6c 6f 63 | 3.<Encrypt bloc| 000118e0 6b 3d 3e 2e 63 6f 64 65 33 3e 0a 09 20 09 20 20 |k=>.code3>.. . | 000118f0 34 09 3c 44 65 63 72 79 70 74 20 62 6c 6f 63 6b |4.<Decrypt block| 00011900 3d 3e 2e 63 6f 64 65 34 3e 0a 09 20 09 20 20 35 |=>.code4>.. . 5| 00011910 09 3c 43 6c 6f 73 65 20 65 6e 63 72 79 70 74 3d |.<Close encrypt=| 00011920 3e 2e 63 6f 64 65 35 3e 0a 0a 54 68 69 73 20 53 |>.code5>..This S| 00011930 57 49 20 69 73 20 75 73 65 64 20 74 6f 20 64 6f |WI is used to do| 00011940 20 64 69 66 66 65 72 65 6e 74 20 66 6f 72 6d 73 | different forms| 00011950 20 6f 66 20 65 6e 63 6f 64 69 6e 67 20 6f 6e 20 | of encoding on | 00011960 64 61 74 61 2e 0a 23 53 75 62 70 61 67 65 20 63 |data..#Subpage c| 00011970 6f 64 65 30 0a 43 52 43 20 31 36 20 62 6c 6f 63 |ode0.CRC 16 bloc| 00011980 6b 20 28 30 29 0a 3d 3e 09 52 30 20 3d 09 30 20 |k (0).=>.R0 =.0 | 00011990 28 72 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 |(reason code)..R| 000119a0 31 20 3d 09 43 52 43 20 69 6e 0a 09 52 32 20 3d |1 =.CRC in..R2 =| 000119b0 09 70 6f 69 6e 74 65 72 20 74 6f 20 64 61 74 61 |.pointer to data| 000119c0 20 62 6c 6f 63 6b 0a 09 52 33 20 3d 09 6c 65 6e | block..R3 =.len| 000119d0 67 74 68 20 6f 66 20 64 61 74 61 0a 0a 3c 3d 09 |gth of data..<=.| 000119e0 52 31 20 3d 09 43 52 43 20 6f 75 74 0a 0a 54 68 |R1 =.CRC out..Th| 000119f0 69 73 20 63 61 6c 6c 20 77 69 6c 6c 20 63 61 6c |is call will cal| 00011a00 63 75 6c 61 74 65 20 61 20 31 36 2d 62 69 74 20 |culate a 16-bit | 00011a10 43 52 43 20 76 61 6c 75 65 20 66 6f 72 20 61 20 |CRC value for a | 00011a20 62 6c 6f 63 6b 20 6f 66 20 64 61 74 61 2e 0a 23 |block of data..#| 00011a30 73 75 62 70 61 67 65 20 63 6f 64 65 31 0a 43 52 |subpage code1.CR| 00011a40 43 20 33 32 20 62 6c 6f 63 6b 20 28 31 29 0a 3d |C 32 block (1).=| 00011a50 3e 09 52 30 20 3d 09 31 20 28 72 65 61 73 6f 6e |>.R0 =.1 (reason| 00011a60 20 63 6f 64 65 29 0a 09 52 31 20 3d 09 43 52 43 | code)..R1 =.CRC| 00011a70 20 69 6e 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 | in..R2 =.pointe| 00011a80 72 20 74 6f 20 64 61 74 61 20 62 6c 6f 63 6b 0a |r to data block.| 00011a90 09 52 33 20 3d 09 6c 65 6e 67 74 68 0a 0a 3c 3d |.R3 =.length..<=| 00011aa0 09 52 31 20 3d 20 43 52 43 20 6f 75 74 0a 54 68 |.R1 = CRC out.Th| 00011ab0 69 73 20 63 61 6c 6c 20 77 69 6c 6c 20 63 61 6c |is call will cal| 00011ac0 63 75 6c 61 74 65 20 61 20 33 32 2d 62 69 74 20 |culate a 32-bit | 00011ad0 43 52 43 20 76 61 6c 75 65 20 66 6f 72 20 61 20 |CRC value for a | 00011ae0 62 6c 6f 63 6b 20 6f 66 20 64 61 74 61 2e 0a 23 |block of data..#| 00011af0 73 75 62 70 61 67 65 20 63 6f 64 65 32 0a 4f 70 |subpage code2.Op| 00011b00 65 6e 20 45 6e 63 72 79 70 74 20 28 32 29 0a 3d |en Encrypt (2).=| 00011b10 3e 09 52 30 20 3d 09 32 20 28 72 65 61 73 6f 6e |>.R0 =.2 (reason| 00011b20 20 63 6f 64 65 29 0a 09 52 31 20 3d 09 74 79 70 | code)..R1 =.typ| 00011b30 65 20 28 31 20 66 6f 72 20 47 61 72 62 6c 65 2c |e (1 for Garble,| 00011b40 20 32 20 66 6f 72 20 44 45 53 29 0a 09 52 32 20 | 2 for DES)..R2 | 00011b50 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 70 61 73 |=.pointer to pas| 00011b60 73 77 6f 72 64 0a 0a 54 68 69 73 20 63 61 6c 6c |sword..This call| 00011b70 20 69 73 20 75 73 65 64 20 74 6f 20 73 74 61 72 | is used to star| 00011b80 74 20 61 6e 20 65 6e 63 72 79 70 74 20 6f 72 20 |t an encrypt or | 00011b90 64 65 63 72 79 70 74 69 6f 6e 67 20 73 65 73 73 |decryptiong sess| 00011ba0 69 6f 6e 2e 0a 23 73 75 62 70 61 67 65 20 63 6f |ion..#subpage co| 00011bb0 64 65 33 0a 45 6e 63 72 79 70 74 20 62 6c 6f 63 |de3.Encrypt bloc| 00011bc0 6b 20 28 33 29 0a 3d 3e 09 52 30 20 3d 09 33 20 |k (3).=>.R0 =.3 | 00011bd0 28 72 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 |(reason code)..R| 00011be0 31 20 3d 09 74 79 70 65 20 28 31 20 66 6f 72 20 |1 =.type (1 for | 00011bf0 47 61 72 62 6c 65 2c 20 32 20 66 6f 72 20 44 45 |Garble, 2 for DE| 00011c00 53 29 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 72 |S)..R2 =.pointer| 00011c10 20 74 6f 20 64 61 74 61 20 62 6c 6f 63 6b 0a 09 | to data block..| 00011c20 52 33 20 3d 09 6c 65 6e 67 74 68 0a 0a 54 68 69 |R3 =.length..Thi| 00011c30 73 20 63 61 6c 6c 20 77 69 6c 6c 20 65 6e 63 72 |s call will encr| 00011c40 79 70 74 20 61 20 62 6c 6f 63 6b 20 6f 66 20 64 |ypt a block of d| 00011c50 61 74 61 20 75 73 69 6e 67 20 74 68 65 20 70 61 |ata using the pa| 00011c60 73 73 77 6f 72 64 20 67 69 76 65 6e 20 69 6e 20 |ssword given in | 00011c70 74 68 65 20 70 72 65 76 69 6f 75 73 20 63 61 6c |the previous cal| 00011c80 6c 20 74 6f 20 3c 53 70 61 72 6b 46 53 5f 43 6f |l to <SparkFS_Co| 00011c90 64 65 20 32 3d 3e 2e 63 6f 64 65 32 3e 2e 0a 23 |de 2=>.code2>..#| 00011ca0 73 75 62 70 61 67 65 20 63 6f 64 65 34 0a 44 65 |subpage code4.De| 00011cb0 63 72 79 70 74 20 62 6c 6f 63 6b 20 28 34 29 0a |crypt block (4).| 00011cc0 3d 3e 09 52 30 20 3d 09 34 20 28 72 65 61 73 6f |=>.R0 =.4 (reaso| 00011cd0 6e 20 63 6f 64 65 29 0a 09 52 31 20 3d 09 74 79 |n code)..R1 =.ty| 00011ce0 70 65 20 28 31 20 66 6f 72 20 47 61 72 62 6c 65 |pe (1 for Garble| 00011cf0 2c 20 32 20 66 6f 72 20 44 45 53 29 0a 09 52 32 |, 2 for DES)..R2| 00011d00 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 64 61 | =.pointer to da| 00011d10 74 61 20 62 6c 6f 63 6b 0a 09 52 33 20 3d 09 6c |ta block..R3 =.l| 00011d20 65 6e 67 74 68 0a 0a 54 68 69 73 20 63 61 6c 6c |ength..This call| 00011d30 20 77 69 6c 6c 20 64 65 63 72 79 70 74 20 61 20 | will decrypt a | 00011d40 70 72 65 76 69 6f 75 73 6c 79 20 65 6e 63 72 79 |previously encry| 00011d50 70 74 65 64 20 62 6c 6f 63 6b 20 6f 66 20 64 61 |pted block of da| 00011d60 74 61 2c 20 69 66 20 74 68 65 20 70 61 73 73 77 |ta, if the passw| 00011d70 6f 72 64 20 6d 61 74 63 68 65 73 20 74 68 61 74 |ord matches that| 00011d80 20 67 69 76 65 6e 20 62 79 20 3c 53 70 61 72 6b | given by <Spark| 00011d90 46 53 5f 43 6f 64 65 20 32 3d 3e 2e 63 6f 64 65 |FS_Code 2=>.code| 00011da0 32 3e 2e 0a 23 73 75 62 70 61 67 65 20 63 6f 64 |2>..#subpage cod| 00011db0 65 35 0a 43 6c 6f 73 65 20 45 6e 63 72 79 70 74 |e5.Close Encrypt| 00011dc0 20 28 35 29 0a 3d 3e 09 52 30 20 3d 09 35 20 28 | (5).=>.R0 =.5 (| 00011dd0 72 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 31 |reason code)..R1| 00011de0 20 3d 09 74 79 70 65 20 28 31 20 66 6f 72 20 47 | =.type (1 for G| 00011df0 61 72 62 6c 65 2c 20 32 20 66 6f 72 20 44 45 53 |arble, 2 for DES| 00011e00 29 0a 0a 54 68 69 73 20 63 61 6c 6c 20 77 69 6c |)..This call wil| 00011e10 6c 20 74 65 72 6d 69 6e 61 74 65 20 61 6e 20 65 |l terminate an e| 00011e20 6e 63 72 79 70 74 20 73 65 73 73 69 6f 6e 2e 0a |ncrypt session..| 00011e30 44 41 54 41 c9 02 00 00 53 70 61 72 6b 46 53 5f |DATA....SparkFS_| 00011e40 49 6e 66 6f 20 28 26 34 34 35 43 32 29 0a 23 50 |Info (&445C2).#P| 00011e50 61 72 65 6e 74 20 53 70 61 72 6b 46 53 5f 0a 3d |arent SparkFS_.=| 00011e60 3e 09 52 30 20 3d 09 72 65 61 73 6f 6e 20 63 6f |>.R0 =.reason co| 00011e70 64 65 20 6e 75 6d 62 65 72 0a 09 20 09 20 20 30 |de number.. . 0| 00011e80 09 3c 41 72 63 68 69 76 65 20 69 6e 66 6f 3d 3e |.<Archive info=>| 00011e90 2e 63 6f 64 65 30 3e 0a 09 20 09 20 20 31 09 3c |.code0>.. . 1.<| 00011ea0 4d 6f 64 75 6c 65 20 69 6e 66 6f 3d 3e 2e 63 6f |Module info=>.co| 00011eb0 64 65 31 3e 0a 0a 54 68 69 73 20 63 61 6c 6c 20 |de1>..This call | 00011ec0 69 73 20 75 73 65 64 20 74 6f 20 65 78 74 72 61 |is used to extra| 00011ed0 63 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 |ct information f| 00011ee0 72 6f 6d 20 53 70 61 72 6b 46 53 2e 0a 23 73 75 |rom SparkFS..#su| 00011ef0 62 70 61 67 65 20 63 6f 64 65 30 0a 41 72 63 68 |bpage code0.Arch| 00011f00 69 76 65 20 69 6e 66 6f 20 28 30 29 0a 3d 3e 09 |ive info (0).=>.| 00011f10 52 30 20 3d 09 30 20 28 72 65 61 73 6f 6e 20 63 |R0 =.0 (reason c| 00011f20 6f 64 65 29 0a 09 52 31 20 3d 09 70 6f 69 6e 74 |ode)..R1 =.point| 00011f30 65 72 20 74 6f 20 61 72 63 68 69 76 65 20 70 61 |er to archive pa| 00011f40 74 68 6e 61 6d 65 0a 3c 3d 09 52 31 20 3d 09 70 |thname.<=.R1 =.p| 00011f50 6f 69 6e 74 65 72 20 74 6f 20 61 72 63 68 69 76 |ointer to archiv| 00011f60 65 20 73 74 72 75 63 74 75 72 65 0a 0a 54 68 69 |e structure..Thi| 00011f70 73 20 63 61 6c 6c 20 69 73 20 75 73 65 64 20 74 |s call is used t| 00011f80 6f 20 72 65 61 64 20 69 6e 66 6f 72 6d 61 74 69 |o read informati| 00011f90 6f 6e 20 61 62 6f 75 74 20 61 6e 20 61 72 63 68 |on about an arch| 00011fa0 69 76 65 2e 0a 23 73 75 62 70 61 67 65 20 63 6f |ive..#subpage co| 00011fb0 64 65 31 0a 4d 6f 64 75 6c 65 20 69 6e 66 6f 20 |de1.Module info | 00011fc0 28 31 29 0a 3d 3e 09 52 30 20 3d 09 31 20 28 72 |(1).=>.R0 =.1 (r| 00011fd0 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 31 20 |eason code)..R1 | 00011fe0 3d 09 6d 6f 64 75 6c 65 20 6e 75 6d 62 65 72 0a |=.module number.| 00011ff0 3c 3d 09 52 30 20 3d 09 30 20 6e 6f 20 6d 6f 64 |<=.R0 =.0 no mod| 00012000 75 6c 65 2c 20 2d 31 20 6e 6f 20 6d 6f 72 65 20 |ule, -1 no more | 00012010 6d 6f 64 75 6c 65 73 0a 09 52 31 20 3d 09 70 6f |modules..R1 =.po| 00012020 69 6e 74 65 72 20 74 6f 20 61 72 63 68 69 76 65 |inter to archive| 00012030 20 69 6e 66 6f 0a 09 52 32 20 3d 09 70 6f 69 6e | info..R2 =.poin| 00012040 74 65 72 20 74 6f 20 63 6f 6d 70 72 65 73 73 69 |ter to compressi| 00012050 6f 6e 20 69 6e 66 6f 0a 09 52 33 20 3d 09 70 6f |on info..R3 =.po| 00012060 69 6e 74 65 72 20 74 6f 20 63 6f 64 65 20 69 6e |inter to code in| 00012070 66 6f 0a 09 52 34 20 3d 09 70 6f 69 6e 74 65 72 |fo..R4 =.pointer| 00012080 20 63 6f 6e 76 65 72 74 20 69 6e 66 6f 0a 09 52 | convert info..R| 00012090 35 20 3d 09 70 6f 69 6e 74 65 72 20 6d 6f 64 75 |5 =.pointer modu| 000120a0 6c 65 20 62 61 73 65 0a 0a 54 68 69 73 20 63 61 |le base..This ca| 000120b0 6c 6c 20 69 73 20 75 73 65 64 20 74 6f 20 65 78 |ll is used to ex| 000120c0 74 72 61 63 74 20 69 6e 66 6f 72 6d 61 74 69 6f |tract informatio| 000120d0 6e 20 61 62 6f 75 74 20 6d 6f 64 75 6c 65 73 20 |n about modules | 000120e0 72 65 67 69 73 74 65 72 65 64 20 77 69 74 68 20 |registered with | 000120f0 53 70 61 72 6b 46 53 2e 0a 00 00 00 44 41 54 41 |SparkFS.....DATA| 00012100 94 01 00 00 53 70 61 72 6b 46 53 5f 4c 69 6e 6b |....SparkFS_Link| 00012110 20 28 26 34 34 35 43 30 29 0a 23 50 61 72 65 6e | (&445C0).#Paren| 00012120 74 20 53 70 61 72 6b 46 53 5f 0a 3d 3e 09 52 30 |t SparkFS_.=>.R0| 00012130 20 3d 09 72 65 61 73 6f 6e 20 63 6f 64 65 20 6e | =.reason code n| 00012140 75 6d 62 65 72 0a 09 20 09 20 20 30 09 3c 41 64 |umber.. . 0.<Ad| 00012150 64 20 6e 65 77 20 6c 69 6e 6b 3d 3e 2e 63 6f 64 |d new link=>.cod| 00012160 65 30 3e 0a 09 20 09 20 20 31 09 3c 52 65 6d 6f |e0>.. . 1.<Remo| 00012170 76 65 20 6c 69 6e 6b 3d 3e 2e 63 6f 64 65 31 3e |ve link=>.code1>| 00012180 0a 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 20 75 |..This call is u| 00012190 73 65 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 6f |sed to perform o| 000121a0 70 65 72 61 74 69 6f 6e 73 20 6f 6e 20 27 6c 69 |perations on 'li| 000121b0 6e 6b 73 27 2e 0a 23 73 75 62 70 61 67 65 20 63 |nks'..#subpage c| 000121c0 6f 64 65 30 0a 41 64 64 20 6e 65 77 20 6c 69 6e |ode0.Add new lin| 000121d0 6b 20 28 30 29 0a 3d 3e 09 52 30 20 3d 09 30 20 |k (0).=>.R0 =.0 | 000121e0 28 72 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 |(reason code)..R| 000121f0 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 66 |1 =.pointer to f| 00012200 6c 69 6e 6b 0a 09 52 32 20 3d 09 70 6f 69 6e 74 |link..R2 =.point| 00012210 65 72 20 74 6f 20 70 72 69 76 61 74 65 20 77 6f |er to private wo| 00012220 72 6b 73 70 61 63 65 0a 09 52 33 20 3d 09 63 6f |rkspace..R3 =.co| 00012230 6d 70 61 74 69 62 69 6c 69 74 79 20 6c 65 76 65 |mpatibility leve| 00012240 6c 0a 23 73 75 62 70 61 67 65 20 63 6f 64 65 31 |l.#subpage code1| 00012250 0a 52 65 6d 6f 76 65 20 6c 69 6e 6b 20 28 31 29 |.Remove link (1)| 00012260 0a 3d 3e 09 52 30 20 3d 09 31 20 28 72 65 61 73 |.=>.R0 =.1 (reas| 00012270 6f 6e 20 63 6f 64 65 29 0a 09 52 31 20 3d 09 70 |on code)..R1 =.p| 00012280 6f 69 6e 74 65 72 20 74 6f 20 66 6c 69 6e 6b 0a |ointer to flink.| 00012290 44 41 54 41 63 02 00 00 53 70 61 72 6b 46 53 5f |DATAc...SparkFS_| 000122a0 4d 65 6d 6f 72 79 20 28 26 34 34 35 43 31 29 0a |Memory (&445C1).| 000122b0 23 50 61 72 65 6e 74 20 53 70 61 72 6b 46 53 5f |#Parent SparkFS_| 000122c0 0a 3d 3e 09 52 30 20 3d 09 72 65 61 73 6f 6e 20 |.=>.R0 =.reason | 000122d0 63 6f 64 65 20 6e 75 6d 62 65 72 0a 09 20 09 20 |code number.. . | 000122e0 20 30 09 3c 41 6c 6c 6f 63 61 74 65 3d 3e 2e 63 | 0.<Allocate=>.c| 000122f0 6f 64 65 30 3e 0a 09 20 09 20 20 31 09 3c 45 78 |ode0>.. . 1.<Ex| 00012300 74 65 6e 64 3d 3e 2e 63 6f 64 65 31 3e 0a 09 20 |tend=>.code1>.. | 00012310 09 20 20 32 09 3c 46 72 65 65 3d 3e 2e 63 6f 64 |. 2.<Free=>.cod| 00012320 65 32 3e 0a 09 20 09 20 20 33 09 3c 53 65 74 3d |e2>.. . 3.<Set=| 00012330 3e 2e 63 6f 64 65 33 3e 0a 0a 54 68 69 73 20 63 |>.code3>..This c| 00012340 61 6c 6c 20 69 73 20 75 73 65 64 20 74 6f 20 6d |all is used to m| 00012350 61 6e 69 70 75 6c 61 74 65 20 53 70 61 72 6b 46 |anipulate SparkF| 00012360 53 27 20 6d 65 6d 6f 72 79 20 6d 61 6e 61 67 65 |S' memory manage| 00012370 72 2e 0a 23 73 75 62 70 61 67 65 20 63 6f 64 65 |r..#subpage code| 00012380 30 0a 41 6c 6c 6f 63 61 74 65 20 28 30 29 0a 3d |0.Allocate (0).=| 00012390 3e 09 52 30 20 3d 09 30 20 28 72 65 61 73 6f 6e |>.R0 =.0 (reason| 000123a0 20 63 6f 64 65 29 0a 09 52 31 20 3d 09 70 6f 69 | code)..R1 =.poi| 000123b0 6e 74 65 72 20 74 6f 20 61 6e 63 68 6f 72 0a 09 |nter to anchor..| 000123c0 52 32 20 3d 09 73 69 7a 65 0a 3c 3d 09 52 30 20 |R2 =.size.<=.R0 | 000123d0 3d 09 30 20 69 66 20 66 61 69 6c 65 64 0a 23 73 |=.0 if failed.#s| 000123e0 75 62 70 61 67 65 20 63 6f 64 65 31 0a 45 78 74 |ubpage code1.Ext| 000123f0 65 6e 64 20 28 31 29 0a 3d 3e 09 52 30 20 3d 09 |end (1).=>.R0 =.| 00012400 31 20 28 72 65 61 73 6f 6e 20 63 6f 64 65 29 0a |1 (reason code).| 00012410 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f |.R1 =.pointer to| 00012420 20 61 6e 63 68 6f 72 0a 09 52 32 20 3d 09 73 69 | anchor..R2 =.si| 00012430 7a 65 0a 3c 3d 09 52 30 20 3d 09 30 20 69 66 20 |ze.<=.R0 =.0 if | 00012440 66 61 69 6c 65 64 0a 23 73 75 62 70 61 67 65 20 |failed.#subpage | 00012450 63 6f 64 65 32 0a 46 72 65 65 20 28 32 29 0a 3d |code2.Free (2).=| 00012460 3e 09 52 30 20 3d 09 32 20 28 72 65 61 73 6f 6e |>.R0 =.2 (reason| 00012470 20 63 6f 64 65 29 0a 09 52 31 20 3d 09 70 6f 69 | code)..R1 =.poi| 00012480 6e 74 65 72 20 74 6f 20 61 6e 63 68 6f 72 0a 23 |nter to anchor.#| 00012490 73 75 62 70 61 67 65 20 63 6f 64 65 33 0a 53 65 |subpage code3.Se| 000124a0 74 20 28 33 29 0a 3d 3e 09 52 30 20 3d 09 33 20 |t (3).=>.R0 =.3 | 000124b0 28 72 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 |(reason code)..R| 000124c0 31 20 3d 09 6d 69 6e 0a 09 52 32 20 3d 09 6d 61 |1 =.min..R2 =.ma| 000124d0 78 0a 0a 3c 3d 09 52 31 20 3d 09 6d 69 6e 0a 09 |x..<=.R1 =.min..| 000124e0 52 32 20 3d 09 6d 61 78 0a 09 52 33 20 3d 09 63 |R2 =.max..R3 =.c| 000124f0 75 72 72 00 44 41 54 41 6c 05 00 00 53 70 61 72 |urr.DATAl...Spar| 00012500 6b 46 53 5f 55 73 65 72 20 28 26 34 34 35 43 35 |kFS_User (&445C5| 00012510 29 0a 23 50 61 72 65 6e 74 20 53 70 61 72 6b 46 |).#Parent SparkF| 00012520 53 5f 0a 3d 3e 09 52 30 20 3d 09 72 65 61 73 6f |S_.=>.R0 =.reaso| 00012530 6e 20 63 6f 64 65 20 6e 75 6d 62 65 72 0a 09 20 |n code number.. | 00012540 09 20 20 30 09 3c 49 64 65 6e 74 69 66 79 20 61 |. 0.<Identify a| 00012550 72 63 68 69 76 65 3d 3e 2e 63 6f 64 65 30 3e 0a |rchive=>.code0>.| 00012560 09 20 09 20 20 31 09 3c 52 65 61 64 20 61 72 63 |. . 1.<Read arc| 00012570 68 69 76 65 20 65 6e 74 72 69 65 73 3d 3e 2e 63 |hive entries=>.c| 00012580 6f 64 65 31 3e 0a 0a 54 68 69 73 20 63 61 6c 6c |ode1>..This call| 00012590 20 69 73 20 75 73 65 64 20 74 6f 20 70 65 72 66 | is used to perf| 000125a0 6f 72 6d 20 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 |orm miscellaneou| 000125b0 73 20 75 73 65 72 20 6f 70 65 72 61 74 69 6f 6e |s user operation| 000125c0 73 20 6f 6e 20 61 72 63 68 69 76 65 73 2e 0a 23 |s on archives..#| 000125d0 73 75 62 70 61 67 65 20 63 6f 64 65 30 0a 49 64 |subpage code0.Id| 000125e0 65 6e 74 69 66 79 20 61 72 63 68 69 76 65 20 28 |entify archive (| 000125f0 30 29 0a 3d 3e 09 52 30 20 3d 09 30 20 28 72 65 |0).=>.R0 =.0 (re| 00012600 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 31 20 3d |ason code)..R1 =| 00012610 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 72 63 68 |.pointer to arch| 00012620 69 76 65 20 70 61 74 68 0a 3c 3d 09 52 30 20 3d |ive path.<=.R0 =| 00012630 09 74 79 70 65 0a 23 73 75 62 70 61 67 65 20 63 |.type.#subpage c| 00012640 6f 64 65 31 0a 52 65 61 64 20 61 72 63 68 69 76 |ode1.Read archiv| 00012650 65 20 65 6e 74 72 69 65 73 20 28 31 29 0a 3d 3e |e entries (1).=>| 00012660 09 52 30 20 3d 09 31 20 28 72 65 61 73 6f 6e 20 |.R0 =.1 (reason | 00012670 63 6f 64 65 29 0a 09 52 31 20 3d 09 70 6f 69 6e |code)..R1 =.poin| 00012680 74 65 72 20 74 6f 20 61 72 63 68 69 76 65 20 70 |ter to archive p| 00012690 61 74 68 20 69 2e 65 2e 20 70 61 74 68 20 74 6f |ath i.e. path to| 000126a0 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 6f 6e | archive file on| 000126b0 20 65 78 74 65 72 6e 61 6c 20 46 53 0a 09 52 32 | external FS..R2| 000126c0 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 3c 62 | =.pointer to <b| 000126d0 75 66 66 65 72 3d 3e 2e 63 6f 64 65 31 62 75 66 |uffer=>.code1buf| 000126e0 66 65 72 3e 20 74 6f 20 77 72 69 74 65 20 69 6e |fer> to write in| 000126f0 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 0a 09 52 33 |formation to..R3| 00012700 20 3d 09 6e 75 6d 62 65 72 20 6f 66 20 6f 62 6a | =.number of obj| 00012710 65 63 74 73 20 74 6f 20 77 72 69 74 65 0a 09 52 |ects to write..R| 00012720 34 20 3d 09 70 6f 73 69 74 69 6f 6e 20 69 6e 20 |4 =.position in | 00012730 63 61 74 61 6c 6f 67 75 65 20 74 6f 20 73 74 61 |catalogue to sta| 00012740 72 74 20 72 65 61 64 69 6e 67 20 66 72 6f 6d 0a |rt reading from.| 00012750 09 52 35 20 3d 09 73 69 7a 65 20 6f 66 20 62 75 |.R5 =.size of bu| 00012760 66 66 65 72 0a 09 52 36 20 3d 09 70 6f 69 6e 74 |ffer..R6 =.point| 00012770 65 72 20 74 6f 20 77 69 6c 64 20 63 61 72 64 65 |er to wild carde| 00012780 64 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 6d |d file name to m| 00012790 61 74 63 68 2e 20 43 61 6e 20 62 65 20 4e 55 4c |atch. Can be NUL| 000127a0 4c 20 74 6f 20 6d 61 74 63 68 20 61 6c 6c 2e 0a |L to match all..| 000127b0 09 52 37 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f |.R7 =.pointer to| 000127c0 20 70 61 74 68 20 74 6f 20 64 69 72 65 63 74 6f | path to directo| 000127d0 72 79 20 69 6e 73 69 64 65 20 61 72 63 68 69 76 |ry inside archiv| 000127e0 65 0a 0a 3c 3d 09 52 34 20 3d 09 70 6f 73 69 74 |e..<=.R4 =.posit| 000127f0 69 6f 6e 20 69 6e 20 63 61 74 61 6c 6f 67 75 65 |ion in catalogue| 00012800 20 74 6f 20 72 65 61 64 20 66 72 6f 6d 20 6e 65 | to read from ne| 00012810 78 74 0a 09 52 33 20 3d 09 6e 75 6d 62 65 72 20 |xt..R3 =.number | 00012820 6f 66 20 65 6e 74 72 69 65 73 20 77 72 69 74 74 |of entries writt| 00012830 65 6e 20 74 6f 20 62 75 66 66 65 72 0a 0a 54 68 |en to buffer..Th| 00012840 69 73 20 69 73 20 70 61 73 73 65 64 20 74 68 65 |is is passed the| 00012850 20 70 61 74 68 20 74 6f 20 61 6e 20 61 72 63 68 | path to an arch| 00012860 69 76 65 2c 20 61 6e 64 20 74 68 65 20 70 61 74 |ive, and the pat| 00012870 68 20 74 6f 20 61 20 64 69 72 65 63 74 6f 72 79 |h to a directory| 00012880 20 69 6e 73 69 64 65 20 74 68 65 20 61 72 63 68 | inside the arch| 00012890 69 76 65 2e 20 49 6e 20 61 64 64 69 74 69 6f 6e |ive. In addition| 000128a0 20 61 20 77 69 6c 64 63 61 72 64 65 64 20 66 69 | a wildcarded fi| 000128b0 6c 65 6e 61 6d 65 20 63 61 6e 20 62 65 20 75 73 |lename can be us| 000128c0 65 64 2e 20 0a 0a 4f 70 65 72 61 74 69 6f 6e 20 |ed. ..Operation | 000128d0 69 73 20 73 69 6d 69 6c 61 72 20 69 6e 20 63 6f |is similar in co| 000128e0 6e 63 65 70 74 20 74 6f 20 3c 4f 53 5f 47 42 50 |ncept to <OS_GBP| 000128f0 42 3d 3e 4f 53 3a 4f 53 5f 47 42 50 42 3e 20 31 |B=>OS:OS_GBPB> 1| 00012900 30 2e 0a 23 73 75 62 70 61 67 65 20 63 6f 64 65 |0..#subpage code| 00012910 31 62 75 66 66 65 72 0a 46 6f 72 6d 61 74 20 6f |1buffer.Format o| 00012920 66 20 65 6e 74 72 69 65 73 20 69 6e 20 53 70 61 |f entries in Spa| 00012930 72 6b 46 53 20 63 61 74 61 6c 6f 67 75 65 0a 4f |rkFS catalogue.O| 00012940 66 66 73 65 74 09 50 75 72 70 6f 73 65 0a 23 4c |ffset.Purpose.#L| 00012950 69 6e 65 0a 30 09 6c 6f 61 64 20 61 64 64 72 65 |ine.0.load addre| 00012960 73 73 0a 34 09 65 78 65 63 20 61 64 64 72 65 73 |ss.4.exec addres| 00012970 73 0a 38 09 6c 65 6e 67 74 68 09 09 69 65 2e 20 |s.8.length..ie. | 00012980 72 65 61 6c 20 75 6e 63 6f 6d 70 72 65 73 73 65 |real uncompresse| 00012990 64 20 73 69 7a 65 0a 31 32 09 73 69 7a 65 09 09 |d size.12.size..| 000129a0 69 65 2e 20 63 6f 6d 70 72 65 73 73 65 64 20 73 |ie. compressed s| 000129b0 69 7a 65 0a 31 36 09 68 65 61 64 65 72 20 76 65 |ize.16.header ve| 000129c0 72 73 69 6f 6e 09 6c 6f 6f 73 65 6c 79 20 72 65 |rsion.loosely re| 000129d0 6c 61 74 65 64 20 74 6f 20 74 68 65 20 63 6f 6d |lated to the com| 000129e0 70 72 65 73 73 69 6f 6e 20 6d 65 74 68 6f 64 0a |pression method.| 000129f0 32 30 09 61 74 74 72 69 62 75 74 65 73 0a 32 34 |20.attributes.24| 00012a00 09 6f 62 6a 65 63 74 20 74 79 70 65 09 31 3d 66 |.object type.1=f| 00012a10 69 6c 65 2c 20 32 3d 64 69 72 65 63 74 6f 72 79 |ile, 2=directory| 00012a20 0a 32 38 09 6f 62 6a 65 63 74 20 6e 61 6d 65 09 |.28.object name.| 00012a30 30 20 74 65 72 6d 69 6e 61 74 65 64 2c 20 70 61 |0 terminated, pa| 00012a40 64 64 65 64 20 77 69 74 68 20 30 27 73 20 74 6f |dded with 0's to| 00012a50 20 77 6f 72 64 20 62 6f 75 6e 64 61 72 79 2e 0a | word boundary..| 00012a60 44 41 54 41 be 04 00 00 53 70 61 72 6b 46 53 5f |DATA....SparkFS_| 00012a70 55 74 69 6c 20 28 26 34 34 35 43 34 29 0a 23 50 |Util (&445C4).#P| 00012a80 61 72 65 6e 74 20 53 70 61 72 6b 46 53 5f 0a 3d |arent SparkFS_.=| 00012a90 3e 09 52 30 20 3d 09 72 65 61 73 6f 6e 20 63 6f |>.R0 =.reason co| 00012aa0 64 65 20 6e 75 6d 62 65 72 0a 09 20 09 20 20 30 |de number.. . 0| 00012ab0 09 3c 50 61 72 65 6e 74 20 6f 66 20 64 69 72 65 |.<Parent of dire| 00012ac0 63 74 6f 72 79 3d 3e 2e 63 6f 64 65 30 3e 0a 09 |ctory=>.code0>..| 00012ad0 20 09 20 20 31 09 3c 53 65 74 20 6e 75 6d 62 65 | . 1.<Set numbe| 00012ae0 72 20 6f 66 20 66 69 6c 65 73 20 69 6e 20 64 69 |r of files in di| 00012af0 72 65 63 74 6f 72 79 3d 3e 2e 63 6f 64 65 31 3e |rectory=>.code1>| 00012b00 0a 09 20 09 20 20 32 09 3c 49 6e 73 65 72 74 20 |.. . 2.<Insert | 00012b10 65 6e 74 72 79 3d 3e 2e 63 6f 64 65 32 3e 0a 09 |entry=>.code2>..| 00012b20 20 09 20 20 33 09 3c 52 65 6d 6f 76 65 20 65 6e | . 3.<Remove en| 00012b30 74 72 79 3d 3e 2e 63 6f 64 65 33 3e 0a 09 20 09 |try=>.code3>.. .| 00012b40 20 20 34 09 3c 4d 61 70 20 65 78 74 65 6e 73 69 | 4.<Map extensi| 00012b50 6f 6e 20 74 6f 20 74 79 70 65 3d 3e 2e 63 6f 64 |on to type=>.cod| 00012b60 65 34 3e 0a 09 20 09 20 20 35 09 3c 43 61 6c 63 |e4>.. . 5.<Calc| 00012b70 75 6c 61 74 65 20 64 69 72 65 63 74 6f 72 79 20 |ulate directory | 00012b80 6c 65 6e 67 74 68 3d 3e 2e 63 6f 64 65 35 3e 0a |length=>.code5>.| 00012b90 09 20 09 20 20 36 09 3c 4f 70 65 6e 20 73 63 72 |. . 6.<Open scr| 00012ba0 61 70 20 66 69 6c 65 3d 3e 2e 63 6f 64 65 36 3e |ap file=>.code6>| 00012bb0 0a 09 20 09 20 20 37 09 3c 43 6c 6f 73 65 20 73 |.. . 7.<Close s| 00012bc0 63 72 61 70 20 66 69 6c 65 3d 3e 2e 63 6f 64 65 |crap file=>.code| 00012bd0 37 3e 0a 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 |7>..This call is| 00012be0 20 75 73 65 64 20 74 6f 20 64 6f 20 74 68 69 6e | used to do thin| 00012bf0 67 73 20 74 6f 20 61 72 63 68 69 76 65 73 20 28 |gs to archives (| 00012c00 21 29 2e 0a 23 73 75 62 70 61 67 65 20 63 6f 64 |!)..#subpage cod| 00012c10 65 30 0a 50 61 72 65 6e 74 20 6f 66 20 64 69 72 |e0.Parent of dir| 00012c20 65 63 74 6f 72 79 20 28 30 29 0a 3d 3e 09 52 30 |ectory (0).=>.R0| 00012c30 20 3d 09 30 20 28 72 65 61 73 6f 6e 20 63 6f 64 | =.0 (reason cod| 00012c40 65 29 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 |e)..R1 =.pointer| 00012c50 20 74 6f 20 61 72 63 68 69 76 65 0a 09 52 32 20 | to archive..R2 | 00012c60 3d 09 63 68 69 6c 64 0a 3c 3d 09 52 30 20 3d 09 |=.child.<=.R0 =.| 00012c70 70 61 72 65 6e 74 0a 23 73 75 62 70 61 67 65 20 |parent.#subpage | 00012c80 63 6f 64 65 31 0a 53 65 74 20 6e 75 6d 62 65 72 |code1.Set number| 00012c90 20 6f 66 20 66 69 6c 65 73 20 69 6e 20 64 69 72 | of files in dir| 00012ca0 65 63 74 6f 72 79 20 28 31 29 0a 3d 3e 09 52 30 |ectory (1).=>.R0| 00012cb0 20 3d 09 31 20 28 72 65 61 73 6f 6e 20 63 6f 64 | =.1 (reason cod| 00012cc0 65 29 0a 09 52 31 20 3d 09 6e 6f 20 6f 66 20 66 |e)..R1 =.no of f| 00012cd0 69 6c 65 73 0a 23 73 75 62 70 61 67 65 20 63 6f |iles.#subpage co| 00012ce0 64 65 32 0a 49 6e 73 65 72 74 20 65 6e 74 72 79 |de2.Insert entry| 00012cf0 20 28 32 29 0a 3d 3e 09 52 30 20 3d 09 32 20 28 | (2).=>.R0 =.2 (| 00012d00 72 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 31 |reason code)..R1| 00012d10 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 72 | =.pointer to ar| 00012d20 63 68 69 76 65 0a 09 52 32 20 3d 09 66 69 6c 65 |chive..R2 =.file| 00012d30 20 6e 75 6d 62 65 72 0a 09 52 33 20 3d 09 64 69 | number..R3 =.di| 00012d40 72 65 63 74 6f 72 79 0a 09 52 34 20 3d 09 73 69 |rectory..R4 =.si| 00012d50 7a 65 0a 23 73 75 62 70 61 67 65 20 63 6f 64 65 |ze.#subpage code| 00012d60 33 0a 52 65 6d 6f 76 65 20 65 6e 74 72 79 20 28 |3.Remove entry (| 00012d70 33 29 0a 3d 3e 09 52 30 20 3d 09 33 20 28 72 65 |3).=>.R0 =.3 (re| 00012d80 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 31 20 3d |ason code)..R1 =| 00012d90 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 72 63 68 |.pointer to arch| 00012da0 69 76 65 0a 09 52 32 20 3d 09 66 69 6c 65 20 6e |ive..R2 =.file n| 00012db0 75 6d 62 65 72 0a 09 52 34 20 3d 09 73 69 7a 65 |umber..R4 =.size| 00012dc0 0a 23 73 75 62 70 61 67 65 20 63 6f 64 65 34 0a |.#subpage code4.| 00012dd0 4d 61 70 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f |Map extension to| 00012de0 20 74 79 70 65 20 28 34 29 0a 3d 3e 09 52 30 20 | type (4).=>.R0 | 00012df0 3d 09 34 20 28 72 65 61 73 6f 6e 20 63 6f 64 65 |=.4 (reason code| 00012e00 29 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 |)..R1 =.pointer | 00012e10 74 6f 20 65 78 74 65 6e 73 69 6f 6e 0a 3c 3d 09 |to extension.<=.| 00012e20 52 30 20 3d 09 66 69 6c 65 20 74 79 70 65 0a 23 |R0 =.file type.#| 00012e30 73 75 62 70 61 67 65 20 63 6f 64 65 35 0a 43 61 |subpage code5.Ca| 00012e40 6c 63 20 64 69 72 20 6c 65 6e 73 20 28 35 29 0a |lc dir lens (5).| 00012e50 3d 3e 09 52 30 20 3d 09 35 20 28 72 65 61 73 6f |=>.R0 =.5 (reaso| 00012e60 6e 20 63 6f 64 65 29 0a 09 52 31 20 3d 09 70 6f |n code)..R1 =.po| 00012e70 69 6e 74 65 72 20 74 6f 20 61 72 63 68 69 76 65 |inter to archive| 00012e80 0a 23 73 75 62 70 61 67 65 20 63 6f 64 65 36 0a |.#subpage code6.| 00012e90 4f 70 65 6e 20 73 63 72 61 70 20 66 69 6c 65 20 |Open scrap file | 00012ea0 28 36 29 0a 3d 3e 09 52 30 20 3d 09 36 20 28 72 |(6).=>.R0 =.6 (r| 00012eb0 65 61 73 6f 6e 20 63 6f 64 65 29 0a 09 52 31 20 |eason code)..R1 | 00012ec0 3d 09 6d 6f 64 65 0a 3c 3d 09 52 30 20 3d 09 68 |=.mode.<=.R0 =.h| 00012ed0 61 6e 64 6c 65 0a 23 73 75 62 70 61 67 65 20 63 |andle.#subpage c| 00012ee0 6f 64 65 37 0a 43 6c 6f 73 65 20 73 63 72 61 70 |ode7.Close scrap| 00012ef0 20 66 69 6c 65 20 28 37 29 0a 3d 3e 09 52 30 20 | file (7).=>.R0 | 00012f00 3d 09 37 20 28 72 65 61 73 6f 6e 20 63 6f 64 65 |=.7 (reason code| 00012f10 29 0a 09 52 31 20 3d 09 68 61 6e 64 6c 65 00 00 |)..R1 =.handle..| 00012f20 44 49 52 24 2c 00 00 00 2c 00 00 00 4c 2f 01 00 |DIR$,...,...L/..| 00012f30 46 fd ff ff b5 43 c7 13 a5 00 00 00 13 00 00 00 |F....C..........| 00012f40 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 00012f50 a5 00 00 00 53 70 63 68 0a 23 50 61 72 65 6e 74 |....Spch.#Parent| 00012f60 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 53 | !Root.#Prefix S| 00012f70 70 63 68 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 |pch_.#Table Colu| 00012f80 6d 6e 73 20 32 0a 52 65 61 64 79 3f 0a 4f 6c 64 |mns 2.Ready?.Old| 00012f90 63 68 61 6e 6e 65 6c 0a 45 72 72 6f 72 0a 53 61 |channel.Error.Sa| 00012fa0 79 0a 53 61 79 57 0a 53 70 65 61 6b 0a 53 70 65 |y.SayW.Speak.Spe| 00012fb0 61 6b 57 0a 50 69 74 63 68 0a 53 70 65 65 64 0a |akW.Pitch.Speed.| 00012fc0 4d 6f 75 74 68 0a 54 6f 6e 67 75 65 0a 47 65 74 |Mouth.Tongue.Get| 00012fd0 44 69 63 74 69 6f 6e 61 72 79 0a 52 65 73 65 74 |Dictionary.Reset| 00012fe0 0a 4c 65 76 65 6c 0a 23 45 6e 64 54 61 62 6c 65 |.Level.#EndTable| 00012ff0 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 00013000 20 30 01 00 46 fd ff ff b3 4b c7 13 65 01 00 00 | 0..F....K..e...| 00013010 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 00013020 44 41 54 41 65 01 00 00 53 70 65 6c 6c 0a 23 50 |DATAe...Spell.#P| 00013030 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 |arent !Root.#Pre| 00013040 66 69 78 20 53 70 65 6c 6c 5f 0a 23 54 61 62 6c |fix Spell_.#Tabl| 00013050 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 54 79 70 6f |e Columns 2.Typo| 00013060 0a 41 6e 61 67 72 61 6d 0a 46 75 7a 7a 79 0a 43 |.Anagram.Fuzzy.C| 00013070 68 65 63 6b 57 6f 72 64 0a 41 64 64 57 6f 72 64 |heckWord.AddWord| 00013080 0a 47 65 74 57 6f 72 64 0a 47 65 74 4e 65 78 74 |.GetWord.GetNext| 00013090 57 6f 72 64 0a 45 6e 75 6d 57 6f 72 64 0a 43 72 |Word.EnumWord.Cr| 000130a0 65 61 74 65 55 73 65 72 0a 4c 6f 61 64 55 73 65 |eateUser.LoadUse| 000130b0 72 0a 53 61 76 65 55 73 65 72 0a 55 73 65 72 54 |r.SaveUser.UserT| 000130c0 6f 46 69 6c 65 0a 46 69 6c 65 54 6f 55 73 65 72 |oFile.FileToUser| 000130d0 0a 47 65 74 44 69 63 74 69 6f 6e 61 72 79 4e 61 |.GetDictionaryNa| 000130e0 6d 65 0a 52 65 6d 6f 76 65 44 69 63 74 69 6f 6e |me.RemoveDiction| 000130f0 61 72 79 0a 44 65 6c 65 74 65 57 6f 72 64 0a 52 |ary.DeleteWord.R| 00013100 65 73 65 74 49 67 6e 6f 72 65 0a 41 64 64 54 6f |esetIgnore.AddTo| 00013110 49 67 6e 6f 72 65 0a 42 72 6f 77 73 65 57 69 6e |Ignore.BrowseWin| 00013120 64 6f 77 0a 53 70 65 6c 6c 4f 70 0a 46 69 6e 64 |dow.SpellOp.Find| 00013130 57 6f 72 64 0a 49 6d 70 72 65 73 73 69 6f 6e 49 |Word.ImpressionI| 00013140 6e 66 6f 0a 49 6d 70 72 65 73 73 69 6f 6e 51 75 |nfo.ImpressionQu| 00013150 69 63 6b 43 68 65 63 6b 0a 46 69 6c 65 54 6f 46 |ickCheck.FileToF| 00013160 69 6c 65 0a 53 61 76 65 44 69 63 74 69 6f 6e 61 |ile.SaveDictiona| 00013170 72 79 57 69 74 68 50 61 74 68 0a 23 45 6e 64 54 |ryWithPath.#EndT| 00013180 61 62 6c 65 0a 00 00 00 44 49 52 24 2c 00 00 00 |able....DIR$,...| 00013190 2c 00 00 00 b4 31 01 00 46 fd ff ff d1 46 c7 13 |,....1..F....F..| 000131a0 d8 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 000131b0 74 00 00 00 44 41 54 41 d8 00 00 00 53 74 72 65 |t...DATA....Stre| 000131c0 61 6d 53 71 75 61 73 68 0a 23 50 61 72 65 6e 74 |amSquash.#Parent| 000131d0 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 53 | !Root.#Prefix S| 000131e0 74 72 65 61 6d 53 71 75 61 73 68 5f 0a 23 54 61 |treamSquash_.#Ta| 000131f0 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 49 6e |ble Columns 2.In| 00013200 69 74 69 61 6c 69 73 65 0a 49 6e 66 6f 43 6f 6d |itialise.InfoCom| 00013210 70 72 65 73 73 0a 4f 70 65 6e 43 6f 6d 70 72 65 |press.OpenCompre| 00013220 73 73 0a 43 6f 6d 70 72 65 73 73 42 6c 6f 63 6b |ss.CompressBlock| 00013230 0a 43 6c 6f 73 65 43 6f 6d 70 72 65 73 73 0a 49 |.CloseCompress.I| 00013240 6e 66 6f 44 65 63 6f 6d 70 72 65 73 73 0a 4f 70 |nfoDecompress.Op| 00013250 65 6e 44 65 63 6f 6d 70 72 65 73 73 0a 44 65 63 |enDecompress.Dec| 00013260 6f 6d 70 72 65 73 73 42 6c 6f 63 6b 0a 43 6c 6f |ompressBlock.Clo| 00013270 73 65 44 65 63 6f 6d 70 72 65 73 73 0a 45 78 69 |seDecompress.Exi| 00013280 74 0a 23 45 6e 64 54 61 62 6c 65 0a 44 49 52 24 |t.#EndTable.DIR$| 00013290 9c 01 00 00 9c 01 00 00 28 34 01 00 46 fd ff ff |........(4..F...| 000132a0 31 56 ba 20 ce 02 00 00 13 00 00 00 00 00 00 00 |1V. ............| 000132b0 21 52 6f 6f 74 00 00 00 f8 36 01 00 47 ff ff ff |!Root....6..G...| 000132c0 57 80 13 fd 33 02 00 00 13 00 00 00 00 00 00 00 |W...3...........| 000132d0 65 6e 61 62 6c 65 00 00 2c 39 01 00 46 ff ff ff |enable..,9..F...| 000132e0 a0 d1 b8 20 c6 00 00 00 13 00 00 00 00 00 00 00 |... ............| 000132f0 44 69 73 61 62 6c 65 00 f4 39 01 00 46 ff ff ff |Disable..9..F...| 00013300 36 e0 b8 20 53 01 00 00 13 00 00 00 00 00 00 00 |6.. S...........| 00013310 4b 69 6c 6c 00 00 00 00 48 3b 01 00 46 ff ff ff |Kill....H;..F...| 00013320 ef 31 ba 20 65 00 00 00 13 00 00 00 00 00 00 00 |.1. e...........| 00013330 55 6e 4b 69 6c 6c 00 00 b0 3b 01 00 46 ff ff ff |UnKill...;..F...| 00013340 54 f9 b8 20 c9 00 00 00 13 00 00 00 00 00 00 00 |T.. ............| 00013350 49 6e 74 65 72 63 65 70 74 00 00 00 7c 3c 01 00 |Intercept...|<..| 00013360 46 ff ff ff fc 0a b9 20 b9 00 00 00 13 00 00 00 |F...... ........| 00013370 00 00 00 00 4e 6f 49 6e 74 65 72 63 65 70 74 00 |....NoIntercept.| 00013380 38 3d 01 00 46 ff ff ff e0 26 b9 20 74 00 00 00 |8=..F....&. t...| 00013390 13 00 00 00 00 00 00 00 53 68 6f 77 43 6f 64 65 |........ShowCode| 000133a0 73 00 00 00 ac 3d 01 00 46 ff ff ff c2 36 b9 20 |s....=..F....6. | 000133b0 8c 00 00 00 13 00 00 00 00 00 00 00 4e 6f 43 6f |............NoCo| 000133c0 64 65 73 00 38 3e 01 00 46 ff ff ff 98 45 ba 20 |des.8>..F....E. | 000133d0 6d 01 00 00 13 00 00 00 00 00 00 00 52 65 73 65 |m...........Rese| 000133e0 74 00 00 00 a8 3f 01 00 46 ff ff ff 3e 4b ba 20 |t....?..F...>K. | 000133f0 80 00 00 00 13 00 00 00 00 00 00 00 46 6c 75 73 |............Flus| 00013400 68 54 65 78 74 00 00 00 28 40 01 00 47 fd ff ff |hText...(@..G...| 00013410 a7 0d 01 d7 4a 03 00 00 13 00 00 00 00 00 00 00 |....J...........| 00013420 64 69 72 65 63 74 00 00 44 41 54 41 ce 02 00 00 |direct..DATA....| 00013430 53 74 72 65 61 6d 0a 23 50 61 72 65 6e 74 20 21 |Stream.#Parent !| 00013440 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 53 74 72 |Root.#Prefix Str| 00013450 65 61 6d 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 |eam_.#Table Colu| 00013460 6d 6e 73 20 32 0a 3c 45 6e 61 62 6c 65 3e 0a 3c |mns 2.<Enable>.<| 00013470 44 69 73 61 62 6c 65 3e 0a 3c 4b 69 6c 6c 3e 0a |Disable>.<Kill>.| 00013480 3c 55 6e 4b 69 6c 6c 3e 0a 3c 49 6e 74 65 72 63 |<UnKill>.<Interc| 00013490 65 70 74 3e 0a 3c 4e 6f 49 6e 74 65 72 63 65 70 |ept>.<NoIntercep| 000134a0 74 3e 0a 3c 53 68 6f 77 43 6f 64 65 73 3e 0a 3c |t>.<ShowCodes>.<| 000134b0 4e 6f 43 6f 64 65 73 3e 0a 3c 52 65 73 65 74 3e |NoCodes>.<Reset>| 000134c0 0a 3c 46 6c 75 73 68 54 65 78 74 3e 0a 3c 57 72 |.<FlushText>.<Wr| 000134d0 69 74 65 43 3d 3e 53 74 72 65 61 6d 5f 64 69 72 |iteC=>Stream_dir| 000134e0 65 63 74 3e 0a 3c 57 72 69 74 65 53 3d 3e 53 74 |ect>.<WriteS=>St| 000134f0 72 65 61 6d 5f 64 69 72 65 63 74 3e 0a 3c 57 72 |ream_direct>.<Wr| 00013500 69 74 65 30 3d 3e 53 74 72 65 61 6d 5f 64 69 72 |ite0=>Stream_dir| 00013510 65 63 74 3e 0a 3c 57 72 69 74 65 4e 3d 3e 53 74 |ect>.<WriteN=>St| 00013520 72 65 61 6d 5f 64 69 72 65 63 74 3e 0a 3c 4e 65 |ream_direct>.<Ne| 00013530 77 4c 69 6e 65 3d 3e 53 74 72 65 61 6d 5f 64 69 |wLine=>Stream_di| 00013540 72 65 63 74 3e 0a 3c 57 72 69 74 65 54 33 32 3d |rect>.<WriteT32=| 00013550 3e 53 74 72 65 61 6d 5f 64 69 72 65 63 74 3e 0a |>Stream_direct>.| 00013560 3c 57 72 69 74 65 54 32 34 3d 3e 53 74 72 65 61 |<WriteT24=>Strea| 00013570 6d 5f 64 69 72 65 63 74 3e 0a 3c 57 72 69 74 65 |m_direct>.<Write| 00013580 54 31 36 3d 3e 53 74 72 65 61 6d 5f 64 69 72 65 |T16=>Stream_dire| 00013590 63 74 3e 0a 3c 57 72 69 74 65 54 38 3d 3e 53 74 |ct>.<WriteT8=>St| 000135a0 72 65 61 6d 5f 64 69 72 65 63 74 3e 0a 3c 57 72 |ream_direct>.<Wr| 000135b0 69 74 65 48 33 32 3d 3e 53 74 72 65 61 6d 5f 64 |iteH32=>Stream_d| 000135c0 69 72 65 63 74 3e 0a 3c 57 72 69 74 65 48 32 34 |irect>.<WriteH24| 000135d0 3d 3e 53 74 72 65 61 6d 5f 64 69 72 65 63 74 3e |=>Stream_direct>| 000135e0 0a 3c 57 72 69 74 65 48 31 36 3d 3e 53 74 72 65 |.<WriteH16=>Stre| 000135f0 61 6d 5f 64 69 72 65 63 74 3e 0a 3c 57 72 69 74 |am_direct>.<Writ| 00013600 65 48 38 3d 3e 53 74 72 65 61 6d 5f 64 69 72 65 |eH8=>Stream_dire| 00013610 63 74 3e 0a 3c 57 72 69 74 65 44 33 32 3d 3e 53 |ct>.<WriteD32=>S| 00013620 74 72 65 61 6d 5f 64 69 72 65 63 74 3e 0a 3c 57 |tream_direct>.<W| 00013630 72 69 74 65 44 32 34 3d 3e 53 74 72 65 61 6d 5f |riteD24=>Stream_| 00013640 64 69 72 65 63 74 3e 0a 3c 57 72 69 74 65 44 31 |direct>.<WriteD1| 00013650 36 3d 3e 53 74 72 65 61 6d 5f 64 69 72 65 63 74 |6=>Stream_direct| 00013660 3e 0a 3c 57 72 69 74 65 44 38 3d 3e 53 74 72 65 |>.<WriteD8=>Stre| 00013670 61 6d 5f 64 69 72 65 63 74 3e 0a 3c 57 72 69 74 |am_direct>.<Writ| 00013680 65 42 33 32 3d 3e 53 74 72 65 61 6d 5f 64 69 72 |eB32=>Stream_dir| 00013690 65 63 74 3e 0a 3c 57 72 69 74 65 42 32 34 3d 3e |ect>.<WriteB24=>| 000136a0 53 74 72 65 61 6d 5f 64 69 72 65 63 74 3e 0a 3c |Stream_direct>.<| 000136b0 57 72 69 74 65 42 31 36 3d 3e 53 74 72 65 61 6d |WriteB16=>Stream| 000136c0 5f 64 69 72 65 63 74 3e 0a 3c 57 72 69 74 65 42 |_direct>.<WriteB| 000136d0 38 3d 3e 53 74 72 65 61 6d 5f 64 69 72 65 63 74 |8=>Stream_direct| 000136e0 3e 0a 57 72 69 74 65 52 65 67 73 0a 23 45 6e 64 |>.WriteRegs.#End| 000136f0 54 61 62 6c 65 0a 00 00 44 41 54 41 33 02 00 00 |Table...DATA3...| 00013700 53 74 72 65 61 6d 5f 45 6e 61 62 6c 65 20 28 26 |Stream_Enable (&| 00013710 38 31 39 34 30 29 0a 23 50 61 72 65 6e 74 20 53 |81940).#Parent S| 00013720 74 72 65 61 6d 5f 0a 4e 6f 20 70 61 72 61 6d 65 |tream_.No parame| 00013730 74 65 72 73 0a 0a 56 44 55 53 74 72 65 61 6d 20 |ters..VDUStream | 00013740 77 69 6c 6c 20 63 6c 61 69 6d 20 74 68 65 20 57 |will claim the W| 00013750 72 69 74 65 20 63 68 61 72 61 63 74 65 72 20 76 |rite character v| 00013760 65 63 74 6f 72 20 61 6e 64 20 73 69 74 20 61 72 |ector and sit ar| 00013770 6f 75 6e 64 20 77 61 69 74 69 6e 67 20 66 6f 72 |ound waiting for| 00013780 20 63 68 61 72 61 63 74 65 72 73 20 74 6f 20 62 | characters to b| 00013790 65 20 70 72 69 6e 74 65 64 2e 20 54 68 65 73 65 |e printed. These| 000137a0 20 61 72 65 20 73 74 61 63 6b 65 64 20 69 6e 20 | are stacked in | 000137b0 74 68 65 20 6d 6f 64 75 6c 65 73 20 74 65 6d 70 |the modules temp| 000137c0 6f 72 61 72 79 20 52 4d 41 20 73 70 61 63 65 20 |orary RMA space | 000137d0 75 6e 74 69 6c 20 74 68 65 20 6d 61 69 6e 20 61 |until the main a| 000137e0 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 63 61 |pplication is ca| 000137f0 6c 6c 65 64 20 76 69 61 20 3c 57 69 6d 70 5f 50 |lled via <Wimp_P| 00013800 6f 6c 6c 3d 3e 57 69 6d 70 3a 57 69 6d 70 5f 50 |oll=>Wimp:Wimp_P| 00013810 6f 6c 6c 3e 2e 20 43 68 61 72 61 63 74 65 72 73 |oll>. Characters| 00013820 20 66 6f 75 6e 64 20 74 6f 20 68 61 76 65 20 62 | found to have b| 00013830 65 65 6e 20 77 72 69 74 74 65 6e 20 74 6f 20 74 |een written to t| 00013840 68 65 20 52 4d 41 20 62 75 66 66 65 72 20 61 72 |he RMA buffer ar| 00013850 65 20 73 71 75 69 72 74 65 64 20 69 6e 74 6f 20 |e squirted into | 00013860 56 44 55 53 74 72 65 61 6d 73 20 72 65 73 69 7a |VDUStreams resiz| 00013870 61 62 6c 65 20 61 70 70 6c 69 63 61 74 69 6f 6e |able application| 00013880 20 6d 65 6d 6f 72 79 20 64 75 72 69 6e 67 20 6e | memory during n| 00013890 75 6c 6c 20 65 76 65 6e 74 73 2e 0a 0a 54 68 69 |ull events...Thi| 000138a0 73 20 63 61 6c 6c 20 63 61 6e 20 62 65 20 73 74 |s call can be st| 000138b0 61 63 6b 65 64 20 74 6f 20 61 6e 79 20 6c 65 76 |acked to any lev| 000138c0 65 6c 2c 20 62 75 74 20 74 68 65 20 73 74 72 65 |el, but the stre| 000138d0 61 6d 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 72 |am will not be r| 000138e0 65 6c 65 61 73 65 64 20 75 6e 74 69 6c 20 6e 20 |eleased until n | 000138f0 3c 53 74 72 65 61 6d 5f 44 69 73 61 62 6c 65 3e |<Stream_Disable>| 00013900 73 20 68 61 76 65 20 62 65 65 6e 20 63 61 6c 6c |s have been call| 00013910 65 64 2c 20 6f 72 20 6f 6e 65 20 3c 53 74 72 65 |ed, or one <Stre| 00013920 61 6d 5f 52 65 73 65 74 3e 2e 0a 00 44 41 54 41 |am_Reset>...DATA| 00013930 c6 00 00 00 53 74 72 65 61 6d 5f 44 69 73 61 62 |....Stream_Disab| 00013940 6c 65 20 28 26 38 31 39 34 31 29 0a 23 50 61 72 |le (&81941).#Par| 00013950 65 6e 74 20 53 74 72 65 61 6d 5f 0a 4e 6f 20 70 |ent Stream_.No p| 00013960 61 72 61 6d 65 74 65 72 73 0a 0a 54 68 69 73 20 |arameters..This | 00013970 73 77 69 20 64 65 63 72 65 6d 65 6e 74 73 20 74 |swi decrements t| 00013980 68 65 20 63 6c 61 69 6d 20 63 6f 75 6e 74 20 61 |he claim count a| 00013990 6e 64 20 72 65 6c 65 61 73 65 73 20 57 72 63 68 |nd releases Wrch| 000139a0 56 20 69 66 20 69 74 20 69 73 20 7a 65 72 6f 2e |V if it is zero.| 000139b0 20 53 75 62 73 65 71 75 65 6e 74 20 74 65 78 74 | Subsequent text| 000139c0 20 77 69 6c 6c 20 61 70 70 65 61 72 20 61 73 20 | will appear as | 000139d0 6e 6f 72 6d 61 6c 20 69 66 20 74 68 65 20 73 74 |normal if the st| 000139e0 72 65 61 6d 20 69 73 20 72 65 6c 65 61 73 65 64 |ream is released| 000139f0 2e 0a 00 00 44 41 54 41 53 01 00 00 53 74 72 65 |....DATAS...Stre| 00013a00 61 6d 5f 4b 69 6c 6c 20 28 26 38 31 39 34 32 29 |am_Kill (&81942)| 00013a10 0a 23 50 61 72 65 6e 74 20 53 74 72 65 61 6d 5f |.#Parent Stream_| 00013a20 0a 4e 6f 20 70 61 72 61 6d 65 74 65 72 73 0a 0a |.No parameters..| 00013a30 53 74 72 65 61 6d 5f 4b 69 6c 6c 20 77 69 6c 6c |Stream_Kill will| 00013a40 20 73 65 74 20 61 20 66 6c 61 67 20 69 6e 74 65 | set a flag inte| 00013a50 72 6e 61 6c 6c 79 20 74 6f 20 70 72 65 76 65 6e |rnally to preven| 00013a60 74 20 3c 53 74 72 65 61 6d 5f 45 6e 61 62 6c 65 |t <Stream_Enable| 00013a70 3e 20 66 72 6f 6d 20 62 65 69 6e 67 20 68 61 6e |> from being han| 00013a80 64 6c 65 64 20 69 6e 20 74 68 65 20 75 73 75 61 |dled in the usua| 00013a90 6c 20 77 61 79 2e 20 41 6c 6c 20 63 61 6c 6c 73 |l way. All calls| 00013aa0 20 74 6f 20 53 74 72 65 61 6d 5f 45 6e 61 62 6c | to Stream_Enabl| 00013ab0 65 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 |e will be ignore| 00013ac0 64 2e 20 54 68 69 73 20 61 6c 6c 6f 77 73 20 6f |d. This allows o| 00013ad0 6e 65 20 70 69 65 63 65 20 6f 66 20 63 6f 64 65 |ne piece of code| 00013ae0 20 77 68 69 63 68 20 63 61 6c 6c 73 20 61 6e 6f | which calls ano| 00013af0 74 68 65 72 20 72 6f 75 74 69 6e 65 20 6f 72 20 |ther routine or | 00013b00 72 6f 75 74 69 6e 65 73 20 74 6f 20 70 72 65 76 |routines to prev| 00013b10 65 6e 74 20 64 65 62 75 67 67 69 6e 67 20 62 65 |ent debugging be| 00013b20 69 6e 67 20 67 65 6e 65 72 61 74 65 64 20 66 72 |ing generated fr| 00013b30 6f 6d 20 74 68 65 20 63 61 6c 6c 65 64 20 72 6f |om the called ro| 00013b40 75 74 69 6e 65 73 2e 00 44 41 54 41 65 00 00 00 |utines..DATAe...| 00013b50 53 74 72 65 61 6d 5f 55 6e 4b 69 6c 6c 20 28 26 |Stream_UnKill (&| 00013b60 38 31 39 34 33 29 0a 23 50 61 72 65 6e 74 20 53 |81943).#Parent S| 00013b70 74 72 65 61 6d 5f 0a 4e 6f 20 70 61 72 61 6d 65 |tream_.No parame| 00013b80 74 65 72 73 0a 0a 41 6c 6c 6f 77 73 20 61 63 63 |ters..Allows acc| 00013b90 65 73 73 20 74 6f 20 3c 53 74 72 65 61 6d 5f 45 |ess to <Stream_E| 00013ba0 6e 61 62 6c 65 3e 20 61 67 61 69 6e 2e 00 00 00 |nable> again....| 00013bb0 44 41 54 41 c9 00 00 00 53 74 72 65 61 6d 5f 49 |DATA....Stream_I| 00013bc0 6e 74 65 72 63 65 70 74 20 28 26 38 31 39 34 34 |ntercept (&81944| 00013bd0 29 0a 23 50 61 72 65 6e 74 20 53 74 72 65 61 6d |).#Parent Stream| 00013be0 5f 0a 4e 6f 20 70 61 72 61 6d 65 74 65 72 73 0a |_.No parameters.| 00013bf0 0a 41 6c 6c 20 70 72 69 6e 74 61 62 6c 65 20 63 |.All printable c| 00013c00 68 61 72 61 63 74 65 72 73 20 77 69 6c 6c 20 62 |haracters will b| 00013c10 65 20 69 6e 74 65 72 63 65 70 74 65 64 20 62 79 |e intercepted by| 00013c20 20 56 44 55 73 74 72 65 61 6d 20 77 68 65 6e 20 | VDUstream when | 00013c30 74 68 65 20 73 74 72 65 61 6d 20 69 73 20 65 6e |the stream is en| 00013c40 61 62 6c 65 64 20 72 61 74 68 65 72 20 74 68 61 |abled rather tha| 00013c50 6e 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 6f |n being passed o| 00013c60 6e 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 |n to the default| 00013c70 20 68 61 6e 64 6c 65 72 2e 00 00 00 44 41 54 41 | handler....DATA| 00013c80 b9 00 00 00 53 74 72 65 61 6d 5f 4e 6f 49 6e 74 |....Stream_NoInt| 00013c90 65 72 63 65 70 74 20 28 26 38 31 39 34 35 29 0a |ercept (&81945).| 00013ca0 23 50 61 72 65 6e 74 20 53 74 72 65 61 6d 5f 0a |#Parent Stream_.| 00013cb0 4e 6f 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 50 |No parameters..P| 00013cc0 61 73 73 65 73 20 63 68 61 72 61 63 74 65 72 20 |asses character | 00013cd0 63 6f 64 65 73 20 6f 6e 20 74 6f 20 74 68 65 20 |codes on to the | 00013ce0 6e 65 78 74 20 69 6e 74 65 72 72 75 70 74 20 68 |next interrupt h| 00013cf0 61 6e 64 6c 65 72 20 6f 6e 20 74 68 65 20 57 72 |andler on the Wr| 00013d00 63 68 56 20 61 73 0a 6e 6f 72 6d 61 6c 2e 20 52 |chV as.normal. R| 00013d10 65 76 65 72 73 65 73 20 65 66 66 65 63 74 20 6f |everses effect o| 00013d20 66 20 3c 53 74 72 65 61 6d 5f 49 6e 74 65 72 63 |f <Stream_Interc| 00013d30 65 70 74 3e 2e 00 00 00 44 41 54 41 74 00 00 00 |ept>....DATAt...| 00013d40 53 74 72 65 61 6d 5f 53 68 6f 77 43 6f 64 65 73 |Stream_ShowCodes| 00013d50 20 28 26 38 31 39 34 36 29 0a 23 50 61 72 65 6e | (&81946).#Paren| 00013d60 74 20 53 74 72 65 61 6d 5f 0a 4e 6f 20 70 61 72 |t Stream_.No par| 00013d70 61 6d 65 74 65 72 73 0a 0a 53 68 6f 77 20 63 6f |ameters..Show co| 00013d80 6e 74 72 6f 6c 20 63 6f 64 65 73 20 61 73 20 5b |ntrol codes as [| 00013d90 23 23 5d 20 76 61 6c 75 65 73 20 77 68 65 6e 20 |##] values when | 00013da0 69 6e 74 65 72 63 65 70 74 65 64 2e 44 41 54 41 |intercepted.DATA| 00013db0 8c 00 00 00 53 74 72 65 61 6d 5f 4e 6f 43 6f 64 |....Stream_NoCod| 00013dc0 65 73 20 28 26 38 31 39 34 37 29 0a 23 50 61 72 |es (&81947).#Par| 00013dd0 65 6e 74 20 53 74 72 65 61 6d 5f 0a 4e 6f 20 70 |ent Stream_.No p| 00013de0 61 72 61 6d 65 74 65 72 73 0a 0a 49 67 6e 6f 72 |arameters..Ignor| 00013df0 65 20 61 6c 6c 20 63 6f 6e 74 72 6f 6c 20 63 6f |e all control co| 00013e00 64 65 73 20 72 65 63 65 69 76 65 64 2e 20 52 65 |des received. Re| 00013e10 76 65 72 73 65 73 20 74 68 65 20 65 66 66 65 63 |verses the effec| 00013e20 74 20 6f 66 20 3c 53 74 72 65 61 6d 5f 53 68 6f |t of <Stream_Sho| 00013e30 77 43 6f 64 65 73 3e 2e 44 41 54 41 6d 01 00 00 |wCodes>.DATAm...| 00013e40 53 74 72 65 61 6d 5f 52 65 73 65 74 20 28 26 38 |Stream_Reset (&8| 00013e50 31 39 34 38 29 0a 23 50 61 72 65 6e 74 20 53 74 |1948).#Parent St| 00013e60 72 65 61 6d 5f 0a 4e 6f 20 70 61 72 61 6d 65 74 |ream_.No paramet| 00013e70 65 72 73 0a 0a 54 68 72 6f 77 73 20 61 77 61 79 |ers..Throws away| 00013e80 20 61 6c 6c 20 73 74 61 63 6b 65 64 20 63 61 6c | all stacked cal| 00013e90 6c 73 20 74 6f 20 3c 53 74 72 65 61 6d 5f 45 6e |ls to <Stream_En| 00013ea0 61 62 6c 65 3e 20 61 6e 64 20 72 65 6c 65 61 73 |able> and releas| 00013eb0 65 73 20 74 68 65 20 57 72 63 68 56 2e 20 54 68 |es the WrchV. Th| 00013ec0 69 73 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 |is should be use| 00013ed0 64 20 69 6e 63 61 73 65 20 6f 66 20 65 6d 6d 65 |d incase of emme| 00013ee0 72 67 65 6e 63 79 2e 20 28 69 65 20 77 68 65 6e |rgency. (ie when| 00013ef0 20 61 20 63 6c 69 65 6e 74 20 61 70 70 6c 69 63 | a client applic| 00013f00 61 74 69 6f 6e 20 68 61 73 20 63 72 61 73 68 65 |ation has crashe| 00013f10 64 20 61 6e 64 20 6e 6f 74 20 63 61 6c 6c 65 64 |d and not called| 00013f20 20 3c 53 74 72 65 61 6d 5f 44 69 73 61 62 6c 65 | <Stream_Disable| 00013f30 3e 2e 20 59 6f 75 20 77 69 6c 6c 20 6e 6f 74 69 |>. You will noti| 00013f40 63 65 20 74 68 69 73 20 62 79 20 65 72 72 6f 72 |ce this by error| 00013f50 20 62 6f 78 65 73 20 77 69 74 68 20 6e 6f 20 74 | boxes with no t| 00013f60 65 78 74 20 69 6e 20 74 68 65 6d 20 61 70 70 65 |ext in them appe| 00013f70 61 72 69 6e 67 20 61 6c 6f 6e 67 20 77 69 74 68 |aring along with| 00013f80 20 74 68 65 20 64 65 73 6b 74 6f 70 20 72 65 6e | the desktop ren| 00013f90 64 65 72 69 6e 67 20 73 70 72 69 74 65 73 20 6f |dering sprites o| 00013fa0 6e 6c 79 29 0a 00 00 00 44 41 54 41 80 00 00 00 |nly)....DATA....| 00013fb0 53 74 72 65 61 6d 5f 46 6c 75 73 68 54 65 78 74 |Stream_FlushText| 00013fc0 20 28 26 38 31 39 34 39 29 0a 23 50 61 72 65 6e | (&81949).#Paren| 00013fd0 74 20 53 74 72 65 61 6d 5f 0a 4e 6f 20 70 61 72 |t Stream_.No par| 00013fe0 61 6d 65 74 65 72 73 0a 0a 54 68 72 6f 77 73 20 |ameters..Throws | 00013ff0 61 77 61 79 20 74 68 65 20 63 75 72 72 65 6e 74 |away the current| 00014000 20 74 65 78 74 20 69 6e 20 74 68 65 20 61 70 70 | text in the app| 00014010 6c 69 63 61 74 69 6f 6e 20 73 70 61 63 65 20 61 |lication space a| 00014020 6e 64 20 52 4d 41 2e 0a 44 41 54 41 4a 03 00 00 |nd RMA..DATAJ...| 00014030 44 69 72 65 63 74 20 73 74 72 65 61 6d 20 64 72 |Direct stream dr| 00014040 69 76 65 72 73 0a 23 50 61 72 65 6e 74 20 53 74 |ivers.#Parent St| 00014050 72 65 61 6d 5f 0a 56 64 75 53 74 72 65 61 6d 20 |ream_.VduStream | 00014060 31 2e 30 39 20 6f 6e 77 61 72 64 73 20 70 72 6f |1.09 onwards pro| 00014070 76 69 64 65 73 20 64 69 72 65 63 74 20 73 74 72 |vides direct str| 00014080 65 61 6d 20 61 63 63 65 73 73 20 73 6f 20 74 68 |eam access so th| 00014090 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 |at applications | 000140a0 63 61 6e 20 73 65 6e 64 20 74 65 78 74 20 74 6f |can send text to| 000140b0 20 74 68 65 20 73 74 72 65 61 6d 20 77 68 65 6e | the stream when| 000140c0 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 | the operating s| 000140d0 79 73 74 65 6d 20 3c 4f 53 3a 4f 53 5f 57 72 69 |ystem <OS:OS_Wri| 000140e0 74 65 43 3e 20 69 73 20 62 65 69 6e 67 20 69 6e |teC> is being in| 000140f0 74 65 72 63 65 70 74 65 64 20 62 79 20 73 6f 6d |tercepted by som| 00014100 65 6f 6e 65 20 65 6c 73 65 20 65 61 72 6c 69 65 |eone else earlie| 00014110 72 20 69 6e 20 74 68 65 20 63 68 61 69 6e 2e 20 |r in the chain. | 00014120 65 67 20 64 75 72 69 6e 67 20 70 72 69 6e 74 69 |eg during printi| 00014130 6e 67 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 |ng...The followi| 00014140 6e 67 20 64 69 72 65 63 74 20 73 77 69 73 20 61 |ng direct swis a| 00014150 72 65 20 70 72 6f 76 69 64 65 64 3a 0a 23 49 6e |re provided:.#In| 00014160 64 65 6e 74 20 31 0a 53 74 72 65 61 6d 5f 57 72 |dent 1.Stream_Wr| 00014170 69 74 65 43 09 3a 20 57 72 69 74 65 20 52 30 20 |iteC.: Write R0 | 00014180 63 68 61 72 61 74 65 72 20 74 6f 20 74 68 65 20 |charater to the | 00014190 73 74 72 65 61 6d 0a 53 74 72 65 61 6d 5f 57 72 |stream.Stream_Wr| 000141a0 69 74 65 30 09 3a 20 57 72 69 74 65 20 6e 75 6c |ite0.: Write nul| 000141b0 6c 20 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 |l terminated str| 000141c0 69 6e 67 2e 20 52 30 3d 70 74 72 0a 53 74 72 65 |ing. R0=ptr.Stre| 000141d0 61 6d 5f 57 72 69 74 65 53 09 3a 20 57 72 69 74 |am_WriteS.: Writ| 000141e0 65 20 69 6e 20 6c 69 6e 65 20 73 74 72 69 6e 67 |e in line string| 000141f0 2e 0a 53 74 72 65 61 6d 5f 57 72 69 74 65 4e 09 |..Stream_WriteN.| 00014200 3a 20 57 72 69 74 65 20 63 6f 75 6e 74 65 64 20 |: Write counted | 00014210 73 74 72 69 6e 67 2e 20 52 30 3d 70 74 72 2c 20 |string. R0=ptr, | 00014220 52 31 3d 6e 75 6d 62 65 72 0a 53 74 72 65 61 6d |R1=number.Stream| 00014230 5f 4e 65 77 4c 69 6e 65 09 3a 20 57 72 69 74 65 |_NewLine.: Write| 00014240 20 6e 65 77 6c 69 6e 65 0a 0a 53 74 72 65 61 6d | newline..Stream| 00014250 5f 57 72 69 74 65 54 78 78 09 3a 20 57 72 69 74 |_WriteTxx.: Writ| 00014260 65 20 72 30 20 61 73 20 63 68 61 72 61 63 74 65 |e r0 as characte| 00014270 72 73 2e 20 22 2e 22 20 72 65 70 6c 61 63 65 73 |rs. "." replaces| 00014280 20 6e 6f 6e 2d 61 6c 70 68 61 6e 75 6d 65 72 69 | non-alphanumeri| 00014290 63 0a 53 74 72 65 61 6d 5f 57 72 69 74 65 48 78 |c.Stream_WriteHx| 000142a0 78 09 3a 20 57 72 69 74 65 20 68 65 78 20 63 6f |x.: Write hex co| 000142b0 6e 76 65 72 73 69 6f 6e 20 6f 66 20 52 30 0a 53 |nversion of R0.S| 000142c0 74 72 65 61 6d 5f 57 72 69 74 65 44 78 78 09 3a |tream_WriteDxx.:| 000142d0 20 57 72 69 74 65 20 64 65 63 69 6d 61 6c 20 63 | Write decimal c| 000142e0 6f 6e 76 65 72 73 69 6f 6e 20 6f 66 20 52 30 0a |onversion of R0.| 000142f0 53 74 72 65 61 6d 5f 57 72 69 74 65 42 78 78 09 |Stream_WriteBxx.| 00014300 3a 20 57 72 69 74 65 20 62 69 6e 61 72 79 20 63 |: Write binary c| 00014310 6f 6e 76 65 72 73 69 6f 6e 20 6f 66 20 52 30 0a |onversion of R0.| 00014320 0a 23 49 6e 64 65 6e 74 0a 57 68 65 72 65 20 78 |.#Indent.Where x| 00014330 78 20 69 73 20 33 32 2c 20 32 34 2c 20 31 36 2c |x is 32, 24, 16,| 00014340 20 6f 72 20 38 20 64 65 70 65 6e 64 69 6e 67 20 | or 8 depending | 00014350 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 |on the number of| 00014360 20 62 69 74 73 20 74 6f 20 64 69 73 70 6c 61 79 | bits to display| 00014370 2e 0a 00 00 44 49 52 24 b4 03 00 00 b4 03 00 00 |....DIR$........| 00014380 28 47 01 00 46 fd ff ff 04 fc ec 13 b8 01 00 00 |(G..F...........| 00014390 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 000143a0 e0 48 01 00 46 ff ff ff d1 d8 8c a5 0d 01 00 00 |.H..F...........| 000143b0 13 00 00 00 00 00 00 00 56 65 72 73 69 6f 6e 00 |........Version.| 000143c0 f0 49 01 00 46 ff ff ff 43 88 8c a5 ec 01 00 00 |.I..F...C.......| 000143d0 13 00 00 00 00 00 00 00 4c 6f 61 64 00 00 00 00 |........Load....| 000143e0 dc 4b 01 00 46 ff ff ff 3d 91 0e fb 83 04 00 00 |.K..F...=.......| 000143f0 13 00 00 00 00 00 00 00 6d 65 6d 6f 72 79 6c 6f |........memorylo| 00014400 61 64 00 00 60 50 01 00 46 ff ff ff 84 e2 8c a5 |ad..`P..F.......| 00014410 a6 00 00 00 13 00 00 00 00 00 00 00 50 6c 61 79 |............Play| 00014420 00 00 00 00 08 51 01 00 46 ff ff ff 5e eb 8c a5 |.....Q..F...^...| 00014430 d5 01 00 00 13 00 00 00 00 00 00 00 53 74 6f 70 |............Stop| 00014440 00 00 00 00 e0 52 01 00 46 ff ff ff 3c ef 8c a5 |.....R..F...<...| 00014450 5f 00 00 00 13 00 00 00 00 00 00 00 50 61 75 73 |_...........Paus| 00014460 65 00 00 00 40 53 01 00 46 ff ff ff 36 c5 8c a5 |e...@S..F...6...| 00014470 b0 04 00 00 13 00 00 00 00 00 00 00 53 74 65 72 |............Ster| 00014480 65 6f 00 00 f0 57 01 00 46 ff ff ff fb cb 8c a5 |eo...W..F.......| 00014490 b4 01 00 00 13 00 00 00 00 00 00 00 53 65 74 50 |............SetP| 000144a0 6f 73 00 00 a4 59 01 00 46 ff ff ff 6b d4 8c a5 |os...Y..F...k...| 000144b0 8f 01 00 00 13 00 00 00 00 00 00 00 52 65 61 64 |............Read| 000144c0 50 6f 73 00 34 5b 01 00 46 ff ff ff d4 01 8d a5 |Pos.4[..F.......| 000144d0 bd 03 00 00 13 00 00 00 00 00 00 00 50 6c 61 79 |............Play| 000144e0 4e 6f 74 65 00 00 00 00 f4 5e 01 00 46 ff ff ff |Note.....^..F...| 000144f0 08 08 8d a5 45 04 00 00 13 00 00 00 00 00 00 00 |....E...........| 00014500 54 75 6e 65 49 6e 66 6f 00 00 00 00 3c 63 01 00 |TuneInfo....<c..| 00014510 46 ff ff ff ef 0e 8d a5 3c 04 00 00 13 00 00 00 |F.......<.......| 00014520 00 00 00 00 53 6f 75 6e 64 49 6e 66 6f 00 00 00 |....SoundInfo...| 00014530 78 67 01 00 46 ff ff ff f0 19 8d a5 aa 02 00 00 |xg..F...........| 00014540 13 00 00 00 00 00 00 00 52 65 61 64 53 61 6d 70 |........ReadSamp| 00014550 6c 65 54 61 62 6c 65 00 24 6a 01 00 46 ff ff ff |leTable.$j..F...| 00014560 b0 c5 8d a5 63 05 00 00 13 00 00 00 00 00 00 00 |....c...........| 00014570 57 72 69 74 65 53 61 6d 70 6c 65 54 61 62 6c 65 |WriteSampleTable| 00014580 00 00 00 00 88 6f 01 00 46 ff ff ff 4c 5d 8d a5 |.....o..F...L]..| 00014590 1a 06 00 00 13 00 00 00 00 00 00 00 4c 6f 63 6b |............Lock| 000145a0 00 00 00 00 a4 75 01 00 46 ff ff ff 38 52 8d a5 |.....u..F...8R..| 000145b0 4c 01 00 00 13 00 00 00 00 00 00 00 55 6e 6c 6f |L...........Unlo| 000145c0 63 6b 00 00 f0 76 01 00 46 ff ff ff 22 71 8d a5 |ck...v..F..."q..| 000145d0 83 01 00 00 13 00 00 00 00 00 00 00 4d 75 74 65 |............Mute| 000145e0 43 68 61 6e 6e 65 6c 00 74 78 01 00 46 ff ff ff |Channel.tx..F...| 000145f0 ce 81 8d a5 2f 01 00 00 13 00 00 00 00 00 00 00 |..../...........| 00014600 52 65 73 74 6f 72 65 43 68 61 6e 6e 65 6c 00 00 |RestoreChannel..| 00014610 a4 79 01 00 46 ff ff ff 1d 92 8d a5 17 02 00 00 |.y..F...........| 00014620 13 00 00 00 00 00 00 00 53 70 65 65 64 00 00 00 |........Speed...| 00014630 bc 7b 01 00 46 ff ff ff 19 a4 8d a5 03 02 00 00 |.{..F...........| 00014640 13 00 00 00 00 00 00 00 56 6f 6c 75 6d 65 00 00 |........Volume..| 00014650 c0 7d 01 00 46 ff ff ff 4d d9 8d a5 44 01 00 00 |.}..F...M...D...| 00014660 13 00 00 00 00 00 00 00 54 72 61 6e 73 6c 61 74 |........Translat| 00014670 65 56 6f 6c 75 6d 65 00 04 7f 01 00 46 ff ff ff |eVolume.....F...| 00014680 d3 ee 8d a5 42 01 00 00 13 00 00 00 00 00 00 00 |....B...........| 00014690 55 70 64 61 74 65 44 61 74 61 00 00 48 80 01 00 |UpdateData..H...| 000146a0 46 fd ff ff f4 d7 c7 13 f7 01 00 00 13 00 00 00 |F...............| 000146b0 00 00 00 00 4e 6f 74 65 54 61 62 6c 65 00 00 00 |....NoteTable...| 000146c0 40 82 01 00 46 fd ff ff 9e a1 0e fb d9 0b 00 00 |@...F...........| 000146d0 13 00 00 00 00 00 00 00 63 6f 6d 6d 61 6e 64 73 |........commands| 000146e0 00 00 00 00 1c 8e 01 00 46 fd ff ff 8d 47 c9 13 |........F....G..| 000146f0 b6 06 00 00 13 00 00 00 00 00 00 00 45 72 72 6f |............Erro| 00014700 72 73 00 00 d4 94 01 00 46 fd ff ff 3f 16 cb 13 |rs......F...?...| 00014710 0b 06 00 00 13 00 00 00 00 00 00 00 53 6f 75 6e |............Soun| 00014720 64 42 6c 6f 63 6b 00 00 44 41 54 41 b8 01 00 00 |dBlock..DATA....| 00014730 54 72 61 63 6b 65 72 0a 23 50 61 72 65 6e 74 20 |Tracker.#Parent | 00014740 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 54 72 |!Root.#Prefix Tr| 00014750 61 63 6b 65 72 5f 0a 23 54 61 62 6c 65 20 43 6f |acker_.#Table Co| 00014760 6c 75 6d 6e 73 20 32 0a 3c 56 65 72 73 69 6f 6e |lumns 2.<Version| 00014770 3e 0a 3c 4c 6f 61 64 3e 0a 3c 4d 65 6d 6f 72 79 |>.<Load>.<Memory| 00014780 4c 6f 61 64 3e 0a 3c 50 6c 61 79 3e 0a 3c 53 74 |Load>.<Play>.<St| 00014790 6f 70 3e 0a 3c 50 61 75 73 65 3e 0a 3c 53 74 65 |op>.<Pause>.<Ste| 000147a0 72 65 6f 3e 0a 3c 53 65 74 50 6f 73 3e 0a 3c 52 |reo>.<SetPos>.<R| 000147b0 65 61 64 50 6f 73 3e 0a 3c 50 6c 61 79 4e 6f 74 |eadPos>.<PlayNot| 000147c0 65 3e 0a 3c 54 75 6e 65 49 6e 66 6f 3e 0a 3c 53 |e>.<TuneInfo>.<S| 000147d0 6f 75 6e 64 49 6e 66 6f 3e 0a 3c 52 65 61 64 53 |oundInfo>.<ReadS| 000147e0 61 6d 70 6c 65 54 61 62 6c 65 3e 0a 3c 4c 6f 63 |ampleTable>.<Loc| 000147f0 6b 3e 0a 3c 55 6e 6c 6f 63 6b 3e 0a 3c 4d 75 74 |k>.<Unlock>.<Mut| 00014800 65 43 68 61 6e 6e 65 6c 3e 0a 3c 52 65 73 74 6f |eChannel>.<Resto| 00014810 72 65 43 68 61 6e 6e 65 6c 3e 0a 3c 53 70 65 65 |reChannel>.<Spee| 00014820 64 3e 0a 3c 56 6f 6c 75 6d 65 3e 0a 3c 57 72 69 |d>.<Volume>.<Wri| 00014830 74 65 53 61 6d 70 6c 65 54 61 62 6c 65 3e 0a 3c |teSampleTable>.<| 00014840 54 72 61 6e 73 6c 61 74 65 56 6f 6c 75 6d 65 3e |TranslateVolume>| 00014850 0a 3c 55 70 64 61 74 65 44 61 74 61 3e 0a 23 45 |.<UpdateData>.#E| 00014860 6e 64 54 61 62 6c 65 0a 0a 4f 74 68 65 72 20 69 |ndTable..Other i| 00014870 6e 66 6f 72 6d 61 74 69 6f 6e 20 3a 0a 23 49 6e |nformation :.#In| 00014880 64 65 6e 74 20 33 0a 3c 4e 6f 74 65 20 74 72 61 |dent 3.<Note tra| 00014890 6e 73 6c 61 74 69 6f 6e 20 74 61 62 6c 65 3d 3e |nslation table=>| 000148a0 54 72 61 63 6b 65 72 5f 4e 6f 74 65 54 61 62 6c |Tracker_NoteTabl| 000148b0 65 3e 0a 3c 54 72 61 63 6b 65 72 20 63 6f 6d 6d |e>.<Tracker comm| 000148c0 61 6e 64 73 3d 3e 54 72 61 63 6b 65 72 5f 43 6f |ands=>Tracker_Co| 000148d0 6d 6d 61 6e 64 73 3e 0a 3c 45 72 72 6f 72 73 3e |mmands>.<Errors>| 000148e0 44 41 54 41 0d 01 00 00 54 72 61 63 6b 65 72 5f |DATA....Tracker_| 000148f0 56 65 72 73 69 6f 6e 20 20 28 26 34 33 32 30 30 |Version (&43200| 00014900 29 0a 23 50 61 72 65 6e 74 20 54 72 61 63 6b 65 |).#Parent Tracke| 00014910 72 5f 0a 3d 3e 09 52 30 20 3d 09 76 65 72 73 69 |r_.=>.R0 =.versi| 00014920 6f 6e 20 6e 75 6d 62 65 72 2a 31 30 30 20 20 28 |on number*100 (| 00014930 69 65 2e 20 66 6f 72 20 76 31 2e 32 33 20 3d 20 |ie. for v1.23 = | 00014940 31 32 33 29 0a 0a 55 73 65 20 74 68 69 73 20 63 |123)..Use this c| 00014950 61 6c 6c 20 74 6f 20 65 6e 73 75 72 65 20 74 68 |all to ensure th| 00014960 61 74 20 74 68 65 20 54 72 61 63 6b 65 72 4d 6f |at the TrackerMo| 00014970 64 75 6c 65 20 69 6e 73 74 61 6c 6c 65 64 20 69 |dule installed i| 00014980 73 20 61 20 72 65 63 65 6e 74 20 65 6e 6f 75 67 |s a recent enoug| 00014990 68 20 76 65 72 73 69 6f 6e 20 74 6f 20 73 75 70 |h version to sup| 000149a0 70 6f 72 74 20 74 68 65 20 53 57 49 27 73 20 79 |port the SWI's y| 000149b0 6f 75 20 77 69 73 68 20 74 6f 20 75 73 65 2e 20 |ou wish to use. | 000149c0 56 65 72 73 69 6f 6e 73 20 34 2e 30 30 20 6f 6e |Versions 4.00 on| 000149d0 77 61 72 64 73 20 69 6e 63 6f 72 70 6f 72 61 74 |wards incorporat| 000149e0 65 20 74 68 65 20 53 57 49 27 73 2e 0a 00 00 00 |e the SWI's.....| 000149f0 44 41 54 41 ec 01 00 00 54 72 61 63 6b 65 72 5f |DATA....Tracker_| 00014a00 4c 6f 61 64 20 20 28 26 34 33 32 30 31 29 0a 23 |Load (&43201).#| 00014a10 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 5f 0a |Parent Tracker_.| 00014a20 3d 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 |=>.R0 =.pointer | 00014a30 74 6f 20 66 69 6c 65 6e 61 6d 65 20 6f 66 20 73 |to filename of s| 00014a40 6f 75 6e 64 74 72 61 63 6b 65 72 2f 74 72 61 63 |oundtracker/trac| 00014a50 6b 65 72 20 6d 6f 64 75 6c 65 0a 5c 3c 3d 09 52 |ker module.\<=.R| 00014a60 30 20 70 72 65 73 65 72 76 65 64 0a 0a 54 68 69 |0 preserved..Thi| 00014a70 73 20 63 61 6c 6c 20 77 69 6c 6c 20 63 6c 61 69 |s call will clai| 00014a80 6d 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 74 68 |m memory from th| 00014a90 65 20 52 4d 41 20 61 6e 64 20 6c 6f 61 64 20 74 |e RMA and load t| 00014aa0 68 65 20 73 70 65 63 69 66 69 65 64 20 74 75 6e |he specified tun| 00014ab0 65 20 6d 6f 64 75 6c 65 2c 20 69 6e 69 74 69 61 |e module, initia| 00014ac0 6c 69 73 65 20 74 68 65 20 73 6f 75 6e 64 20 73 |lise the sound s| 00014ad0 79 73 74 65 6d 2c 20 61 6e 64 20 73 65 74 20 74 |ystem, and set t| 00014ae0 68 65 20 70 6c 61 79 72 6f 75 74 69 6e 65 20 69 |he playroutine i| 00014af0 6e 20 70 61 75 73 65 20 6d 6f 64 65 2e 20 59 6f |n pause mode. Yo| 00014b00 75 20 6d 75 73 74 20 74 68 65 6e 20 75 73 65 20 |u must then use | 00014b10 3c 54 72 61 63 6b 65 72 5f 50 6c 61 79 3e 20 74 |<Tracker_Play> t| 00014b20 6f 20 73 74 61 72 74 20 74 68 65 20 74 75 6e 65 |o start the tune| 00014b30 20 70 6c 61 79 69 6e 67 2e 20 54 68 65 20 63 6f | playing. The co| 00014b40 6d 6d 61 6e 64 20 2a 50 6c 61 79 4d 6f 64 20 63 |mmand *PlayMod c| 00014b50 61 6c 6c 73 20 74 68 69 73 20 72 6f 75 74 69 6e |alls this routin| 00014b60 65 2c 20 61 6e 64 20 74 68 65 6e 20 3c 54 72 61 |e, and then <Tra| 00014b70 63 6b 65 72 5f 50 6c 61 79 3e 2e 0a 0a 41 6e 20 |cker_Play>...An | 00014b80 65 72 72 6f 72 20 77 69 6c 6c 20 62 65 20 67 65 |error will be ge| 00014b90 6e 65 72 61 74 65 64 20 69 66 20 74 68 65 20 6d |nerated if the m| 00014ba0 6f 64 75 6c 65 20 63 61 6e 6e 6f 74 20 62 65 20 |odule cannot be | 00014bb0 6c 6f 61 64 65 64 20 6f 72 20 6e 6f 74 20 65 6e |loaded or not en| 00014bc0 6f 75 67 68 20 6d 65 6d 6f 72 79 20 63 61 6e 20 |ough memory can | 00014bd0 62 65 20 63 6c 61 69 6d 65 64 2e 0a 44 41 54 41 |be claimed..DATA| 00014be0 83 04 00 00 54 72 61 63 6b 65 72 5f 4d 65 6d 6f |....Tracker_Memo| 00014bf0 72 79 4c 6f 61 64 20 20 28 26 34 33 32 30 32 29 |ryLoad (&43202)| 00014c00 0a 23 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 |.#Parent Tracker| 00014c10 5f 0a 3d 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 |_.=>.R0 =.pointe| 00014c20 72 20 74 6f 20 66 69 72 73 74 20 77 6f 72 64 20 |r to first word | 00014c30 6f 66 20 73 6f 75 6e 64 74 72 61 63 6b 65 72 2f |of soundtracker/| 00014c40 74 72 61 63 6b 65 72 20 6d 6f 64 75 6c 65 20 69 |tracker module i| 00014c50 6e 20 6d 65 6d 6f 72 79 20 28 4e 42 20 6d 75 73 |n memory (NB mus| 00014c60 74 20 62 65 20 77 6f 72 64 2d 61 6c 69 67 6e 65 |t be word-aligne| 00014c70 64 29 0a 09 52 31 20 3d 09 6c 65 6e 67 74 68 20 |d)..R1 =.length | 00014c80 6f 66 20 6d 6f 64 75 6c 65 20 69 6e 20 62 79 74 |of module in byt| 00014c90 65 73 0a 5c 3c 3d 09 52 30 20 61 6e 64 20 52 31 |es.\<=.R0 and R1| 00014ca0 20 70 72 65 73 65 72 76 65 64 0a 0a 54 68 69 73 | preserved..This| 00014cb0 20 63 61 6c 6c 20 63 61 6e 20 62 65 20 75 73 65 | call can be use| 00014cc0 64 20 62 79 20 61 20 6e 6f 6e 2d 6d 75 6c 74 69 |d by a non-multi| 00014cd0 74 61 73 6b 69 6e 67 20 61 70 70 6c 69 63 61 74 |tasking applicat| 00014ce0 69 6f 6e 20 74 6f 20 73 70 65 63 69 66 79 20 61 |ion to specify a| 00014cf0 6e 20 61 72 65 61 20 6f 66 20 6d 65 6d 6f 72 79 |n area of memory| 00014d00 20 61 73 20 61 20 74 75 6e 65 20 6d 6f 64 75 6c | as a tune modul| 00014d10 65 2c 20 61 6e 64 20 74 68 65 72 65 62 79 20 72 |e, and thereby r| 00014d20 65 6d 6f 76 65 20 74 68 65 20 6e 65 65 64 20 66 |emove the need f| 00014d30 6f 72 20 61 20 73 65 70 65 72 61 74 65 20 66 69 |or a seperate fi| 00014d40 6c 65 20 74 6f 20 68 6f 6c 64 20 61 20 74 75 6e |le to hold a tun| 00014d50 65 2c 20 61 6e 64 20 74 68 65 72 65 20 69 73 20 |e, and there is | 00014d60 6e 6f 20 6e 65 65 64 20 74 6f 20 63 6c 61 69 6d |no need to claim| 00014d70 20 61 20 6c 61 72 67 65 20 61 6d 6f 75 6e 74 20 | a large amount | 00014d80 6f 66 20 52 4d 41 20 73 70 61 63 65 2e 20 4f 6e |of RMA space. On| 00014d90 63 65 20 74 68 69 73 20 53 57 49 20 69 73 20 63 |ce this SWI is c| 00014da0 61 6c 6c 65 64 2c 20 74 68 65 20 6d 6f 64 75 6c |alled, the modul| 00014db0 65 20 77 69 6c 6c 20 62 65 20 74 72 65 61 74 65 |e will be treate| 00014dc0 64 20 61 73 20 69 66 20 69 74 20 77 61 73 20 6c |d as if it was l| 00014dd0 6f 61 64 65 64 20 69 6e 20 74 68 65 20 6d 6f 64 |oaded in the mod| 00014de0 75 6c 65 27 73 20 6f 77 6e 20 77 6f 72 6b 73 70 |ule's own worksp| 00014df0 61 63 65 2e 0a 57 68 65 6e 20 61 20 73 6f 75 6e |ace..When a soun| 00014e00 64 74 72 61 63 6b 65 72 20 6d 6f 64 75 6c 65 20 |dtracker module | 00014e10 69 73 20 6c 6f 61 64 65 64 2c 20 74 68 65 20 70 |is loaded, the p| 00014e20 61 74 74 65 72 6e 20 64 61 74 61 20 69 73 20 63 |attern data is c| 00014e30 6f 6e 76 65 72 74 65 64 20 74 6f 20 54 72 61 63 |onverted to Trac| 00014e40 6b 65 72 20 66 6f 72 6d 61 74 20 64 61 74 61 20 |ker format data | 00014e50 28 65 78 63 65 70 74 20 66 6f 72 20 76 6f 6c 75 |(except for volu| 00014e60 6d 65 73 20 77 68 69 63 68 20 72 65 6d 61 69 6e |mes which remain| 00014e70 20 30 2d 36 34 29 2c 20 73 6f 20 20 66 6f 72 20 | 0-64), so for | 00014e80 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f 66 20 |the purposes of | 00014e90 65 64 69 74 69 6e 67 2c 20 61 73 20 6c 6f 6e 67 |editing, as long| 00014ea0 20 61 73 20 3c 54 72 61 63 6b 65 72 5f 52 65 61 | as <Tracker_Rea| 00014eb0 64 50 6f 73 3e 2f 3c 54 72 61 63 6b 65 72 5f 57 |dPos>/<Tracker_W| 00014ec0 72 69 74 65 53 61 6d 70 6c 65 54 61 62 6c 65 3e |riteSampleTable>| 00014ed0 20 61 72 65 20 75 73 65 64 2c 20 74 68 65 20 6d | are used, the m| 00014ee0 6f 64 75 6c 65 20 63 61 6e 20 62 65 20 63 6f 6e |odule can be con| 00014ef0 73 69 64 65 72 65 64 20 61 73 20 61 20 54 72 61 |sidered as a Tra| 00014f00 63 6b 65 72 20 6d 6f 64 75 6c 65 2e 20 57 68 65 |cker module. Whe| 00014f10 6e 20 3c 54 72 61 63 6b 65 72 5f 53 74 6f 70 3e |n <Tracker_Stop>| 00014f20 2f 2a 50 6c 61 79 53 74 6f 70 20 69 73 20 63 61 |/*PlayStop is ca| 00014f30 6c 6c 65 64 2c 20 74 68 65 20 64 61 74 61 20 69 |lled, the data i| 00014f40 73 20 63 6f 6e 76 65 72 74 65 64 20 62 61 63 6b |s converted back| 00014f50 2e 0a 0a 49 6d 70 6f 72 74 61 6e 74 3a 20 59 6f |...Important: Yo| 00014f60 75 20 6d 75 73 74 20 74 65 6c 6c 20 74 68 65 20 |u must tell the | 00014f70 54 72 61 63 6b 65 72 4d 6f 64 75 6c 65 20 74 6f |TrackerModule to| 00014f80 20 66 6f 72 67 65 74 20 74 68 65 20 6d 6f 64 75 | forget the modu| 00014f90 6c 65 20 69 66 20 74 68 65 20 6d 65 6d 6f 72 79 |le if the memory| 00014fa0 20 77 69 6c 6c 20 62 65 20 6f 76 65 72 77 72 69 | will be overwri| 00014fb0 74 74 65 6e 2c 20 6f 74 68 65 72 77 69 73 65 20 |tten, otherwise | 00014fc0 74 68 65 20 6d 6f 64 75 6c 65 20 6d 61 79 20 63 |the module may c| 00014fd0 72 61 73 68 2e 20 28 2a 50 6c 61 79 53 74 6f 70 |rash. (*PlayStop| 00014fe0 20 6f 72 20 3c 54 72 61 63 6b 65 72 5f 53 74 6f | or <Tracker_Sto| 00014ff0 70 3e 29 0a 0a 4e 42 3a 20 54 68 69 73 20 63 61 |p>)..NB: This ca| 00015000 6c 6c 20 77 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b |ll will not work| 00015010 20 66 6f 72 20 70 72 6f 67 72 61 6d 73 20 72 75 | for programs ru| 00015020 6e 6e 69 6e 67 20 75 6e 64 65 72 20 74 68 65 20 |nning under the | 00015030 64 65 73 6b 74 6f 70 20 69 66 20 74 68 65 20 6d |desktop if the m| 00015040 6f 64 75 6c 65 20 69 73 20 6c 6f 61 64 65 64 20 |odule is loaded | 00015050 69 6e 20 75 73 65 72 20 6d 65 6d 6f 72 79 2e 00 |in user memory..| 00015060 44 41 54 41 a6 00 00 00 54 72 61 63 6b 65 72 5f |DATA....Tracker_| 00015070 50 6c 61 79 20 20 28 26 34 33 32 30 33 29 0a 23 |Play (&43203).#| 00015080 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 5f 0a |Parent Tracker_.| 00015090 54 68 69 73 20 63 61 6c 6c 20 77 69 6c 6c 20 72 |This call will r| 000150a0 65 73 74 61 72 74 20 61 20 74 75 6e 65 20 61 66 |estart a tune af| 000150b0 74 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20 |ter it has been | 000150c0 70 61 75 73 65 64 20 6f 72 20 6c 6f 61 64 65 64 |paused or loaded| 000150d0 20 77 69 74 68 20 74 68 65 20 3c 54 72 61 63 6b | with the <Track| 000150e0 65 72 5f 4c 6f 61 64 3e 20 6f 72 20 3c 54 72 61 |er_Load> or <Tra| 000150f0 63 6b 65 72 5f 4d 65 6d 6f 72 79 4c 6f 61 64 3e |cker_MemoryLoad>| 00015100 20 53 57 49 2e 0a 00 00 44 41 54 41 d5 01 00 00 | SWI....DATA....| 00015110 54 72 61 63 6b 65 72 5f 53 74 6f 70 20 20 28 26 |Tracker_Stop (&| 00015120 34 33 32 30 34 29 0a 23 50 61 72 65 6e 74 20 54 |43204).#Parent T| 00015130 72 61 63 6b 65 72 5f 0a 54 68 69 73 20 70 65 72 |racker_.This per| 00015140 66 6f 72 6d 73 20 74 68 65 20 73 61 6d 65 20 61 |forms the same a| 00015150 63 74 69 6f 6e 73 20 61 73 20 2a 50 6c 61 79 53 |ctions as *PlayS| 00015160 74 6f 70 2e 20 55 73 69 6e 67 20 2a 50 6c 61 79 |top. Using *Play| 00015170 53 74 6f 70 20 6f 72 20 74 68 69 73 20 53 57 49 |Stop or this SWI| 00015180 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 77 61 79 | is the only way| 00015190 20 74 6f 20 67 65 74 20 74 68 65 20 74 72 61 63 | to get the trac| 000151a0 6b 65 72 6d 6f 64 75 6c 65 20 74 6f 20 72 65 6c |kermodule to rel| 000151b0 65 61 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 |ease the memory | 000151c0 74 61 6b 65 6e 20 75 70 20 62 79 20 74 68 65 20 |taken up by the | 000151d0 74 75 6e 65 20 6d 6f 64 75 6c 65 2c 20 6f 72 20 |tune module, or | 000151e0 74 6f 20 66 6f 72 63 65 20 69 74 20 74 6f 20 66 |to force it to f| 000151f0 6f 72 67 65 74 20 74 68 65 20 61 64 64 72 65 73 |orget the addres| 00015200 73 20 6f 66 20 61 20 6d 6f 64 75 6c 65 20 69 66 |s of a module if| 00015210 20 69 74 20 68 61 73 20 62 65 65 6e 20 6c 6f 61 | it has been loa| 00015220 64 65 64 20 77 69 74 68 20 3c 54 72 61 63 6b 65 |ded with <Tracke| 00015230 72 5f 4d 65 6d 6f 72 79 4c 6f 61 64 3e 2e 20 49 |r_MemoryLoad>. I| 00015240 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 73 20 |f the module is | 00015250 73 6f 75 6e 64 74 72 61 63 6b 65 72 20 61 6e 64 |soundtracker and| 00015260 20 68 61 73 20 62 65 65 6e 20 6c 6f 61 64 65 64 | has been loaded| 00015270 20 77 69 74 68 20 3c 54 72 61 63 6b 65 72 5f 4d | with <Tracker_M| 00015280 65 6d 6f 72 79 4c 6f 61 64 3e 2c 20 63 61 6c 6c |emoryLoad>, call| 00015290 69 6e 67 20 74 68 69 73 20 53 57 49 20 6f 72 20 |ing this SWI or | 000152a0 2a 50 6c 61 79 53 74 6f 70 20 77 69 6c 6c 20 63 |*PlayStop will c| 000152b0 6f 6e 76 65 72 74 20 74 68 65 20 64 61 74 61 20 |onvert the data | 000152c0 62 61 63 6b 20 74 6f 20 74 68 65 20 6f 72 69 67 |back to the orig| 000152d0 69 6e 61 6c 20 66 6f 72 6d 61 74 2e 0a 00 00 00 |inal format.....| 000152e0 44 41 54 41 5f 00 00 00 54 72 61 63 6b 65 72 5f |DATA_...Tracker_| 000152f0 50 61 75 73 65 20 20 28 26 34 33 32 30 35 29 0a |Pause (&43205).| 00015300 23 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 5f |#Parent Tracker_| 00015310 0a 54 68 69 73 20 70 65 72 66 6f 72 6d 73 20 74 |.This performs t| 00015320 68 65 20 73 61 6d 65 20 61 63 74 69 6f 6e 73 20 |he same actions | 00015330 61 73 20 2a 50 6c 61 79 50 61 75 73 65 2e 0a 00 |as *PlayPause...| 00015340 44 41 54 41 b0 04 00 00 54 72 61 63 6b 65 72 5f |DATA....Tracker_| 00015350 53 74 65 72 65 6f 20 20 28 26 34 33 32 30 36 29 |Stereo (&43206)| 00015360 0a 23 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 |.#Parent Tracker| 00015370 5f 0a 3d 3e 09 52 30 20 3d 20 53 74 65 72 65 6f |_.=>.R0 = Stereo| 00015380 20 73 65 74 74 69 6e 67 20 28 30 2d 34 29 20 6f | setting (0-4) o| 00015390 72 20 2d 31 20 74 6f 20 72 65 61 64 20 63 75 72 |r -1 to read cur| 000153a0 72 65 6e 74 20 73 65 74 74 69 6e 67 0a 0a 5c 3c |rent setting..\<| 000153b0 3d 09 49 66 20 52 30 3e 3d 30 20 6f 6e 20 65 6e |=.If R0>=0 on en| 000153c0 74 72 79 3a 0a 09 20 20 52 30 20 70 72 65 73 65 |try:.. R0 prese| 000153d0 72 76 65 64 0a 09 49 66 20 52 30 3d 2d 31 20 6f |rved..If R0=-1 o| 000153e0 6e 20 65 6e 74 72 79 3a 0a 09 20 20 52 30 20 3d |n entry:.. R0 =| 000153f0 20 63 75 72 72 65 6e 74 20 50 6c 61 79 53 74 65 | current PlaySte| 00015400 72 65 6f 20 73 65 74 74 69 6e 67 0a 09 20 20 52 |reo setting.. R| 00015410 31 20 3d 20 70 6f 69 6e 74 65 72 20 74 6f 20 38 |1 = pointer to 8| 00015420 2d 62 79 74 65 20 73 74 65 72 65 6f 20 70 6f 73 |-byte stereo pos| 00015430 69 74 69 6f 6e 20 74 61 62 6c 65 0a 0a 54 68 69 |ition table..Thi| 00015440 73 20 70 65 72 66 6f 72 6d 73 20 74 68 65 20 73 |s performs the s| 00015450 61 6d 65 20 61 63 74 69 6f 6e 73 20 61 73 20 2a |ame actions as *| 00015460 50 6c 61 79 53 74 65 72 65 6f 2c 20 77 69 74 68 |PlayStereo, with| 00015470 20 52 30 20 70 61 73 73 65 64 20 61 73 20 61 20 | R0 passed as a | 00015480 70 61 72 61 6d 65 74 65 72 2e 20 49 66 20 52 30 |parameter. If R0| 00015490 20 69 73 20 73 65 74 20 74 6f 20 34 20 6f 6e 20 | is set to 4 on | 000154a0 65 6e 74 72 79 2c 20 74 68 65 6e 20 74 68 65 20 |entry, then the | 000154b0 73 74 65 72 65 6f 20 73 65 74 74 69 6e 67 73 20 |stereo settings | 000154c0 77 69 6c 6c 20 62 65 20 75 6e 61 6c 74 65 72 65 |will be unaltere| 000154d0 64 20 77 68 65 6e 65 76 65 72 20 61 20 6d 6f 64 |d whenever a mod| 000154e0 75 6c 65 20 69 73 20 6c 6f 61 64 65 64 20 6f 72 |ule is loaded or| 000154f0 20 6b 69 6c 6c 65 64 2c 20 61 6e 64 20 64 69 73 | killed, and dis| 00015500 61 62 6c 65 73 20 61 6e 79 20 73 74 65 72 65 6f |ables any stereo| 00015510 20 63 6f 6d 6d 61 6e 64 73 20 69 6e 20 74 72 61 | commands in tra| 00015520 63 6b 65 72 20 6d 6f 64 75 6c 65 73 2e 20 54 68 |cker modules. Th| 00015530 69 73 20 69 73 20 74 6f 20 61 6c 6c 6f 77 20 69 |is is to allow i| 00015540 6e 74 65 72 66 61 63 69 6e 67 20 70 72 6f 67 72 |nterfacing progr| 00015550 61 6d 73 20 74 6f 20 70 72 6f 76 69 64 65 20 74 |ams to provide t| 00015560 68 65 69 72 20 6f 77 6e 20 73 74 65 72 65 6f 20 |heir own stereo | 00015570 6f 70 74 69 6f 6e 73 2c 20 6f 72 20 74 6f 20 61 |options, or to a| 00015580 6c 6c 6f 77 20 61 64 6a 75 73 74 6d 65 6e 74 20 |llow adjustment | 00015590 74 6f 20 74 68 65 20 73 74 65 72 65 6f 20 70 6f |to the stereo po| 000155a0 73 69 74 69 6f 6e 73 20 77 68 69 6c 65 20 74 72 |sitions while tr| 000155b0 61 63 6b 65 72 20 74 75 6e 65 73 20 61 72 65 20 |acker tunes are | 000155c0 70 6c 61 79 69 6e 67 20 28 77 68 69 63 68 20 68 |playing (which h| 000155d0 61 76 65 20 64 65 66 61 75 6c 74 20 73 74 65 72 |ave default ster| 000155e0 65 6f 20 73 65 74 74 69 6e 67 73 20 73 74 6f 72 |eo settings stor| 000155f0 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 |ed as part of th| 00015600 65 20 74 75 6e 65 29 2e 0a 0a 41 6c 74 65 72 6e |e tune)...Altern| 00015610 61 74 69 76 65 6c 79 2c 20 69 66 20 52 30 3d 2d |atively, if R0=-| 00015620 31 20 6f 6e 20 65 6e 74 72 79 2c 20 52 30 20 77 |1 on entry, R0 w| 00015630 69 6c 6c 20 62 65 20 74 68 65 20 6c 61 73 74 20 |ill be the last | 00015640 70 61 72 61 6d 65 74 65 72 20 70 61 73 73 65 64 |parameter passed| 00015650 20 74 6f 20 74 68 69 73 20 53 57 49 20 6f 72 20 | to this SWI or | 00015660 74 68 65 20 2a 50 6c 61 79 53 74 65 72 65 6f 20 |the *PlayStereo | 00015670 63 6f 6d 6d 61 6e 64 2c 20 61 6e 64 20 52 31 20 |command, and R1 | 00015680 70 6f 69 6e 74 73 20 74 6f 20 61 6e 20 38 2d 62 |points to an 8-b| 00015690 79 74 65 20 74 61 62 6c 65 20 28 6f 6e 65 20 62 |yte table (one b| 000156a0 79 74 65 20 70 65 72 20 63 68 61 6e 6e 65 6c 29 |yte per channel)| 000156b0 20 77 68 69 63 68 20 69 73 20 75 70 64 61 74 65 | which is update| 000156c0 64 20 65 76 65 72 79 20 74 69 6d 65 20 65 69 74 |d every time eit| 000156d0 68 65 72 20 61 20 74 75 6e 65 20 73 74 61 72 74 |her a tune start| 000156e0 73 3b 20 74 68 69 73 20 53 57 49 20 6f 72 20 2a |s; this SWI or *| 000156f0 50 6c 61 79 53 74 65 72 65 6f 20 69 73 20 63 61 |PlayStereo is ca| 00015700 6c 6c 65 64 20 77 69 74 68 20 61 20 70 61 72 61 |lled with a para| 00015710 6d 65 74 65 72 20 6f 66 20 30 2d 33 3b 20 6f 72 |meter of 0-3; or| 00015720 20 69 66 20 61 20 73 74 65 72 65 6f 20 63 6f 6d | if a stereo com| 00015730 6d 61 6e 64 20 69 73 20 65 78 65 63 75 74 65 64 |mand is executed| 00015740 20 69 6e 20 61 20 54 72 61 63 6b 65 72 20 74 75 | in a Tracker tu| 00015750 6e 65 2e 20 54 68 65 20 62 79 74 65 20 77 69 6c |ne. The byte wil| 00015760 6c 20 62 65 20 69 6e 20 74 68 65 20 72 61 6e 67 |l be in the rang| 00015770 65 20 6f 66 20 31 2d 37 20 28 77 68 65 72 65 20 |e of 1-7 (where | 00015780 31 20 69 73 20 66 75 6c 6c 20 6c 65 66 74 2c 20 |1 is full left, | 00015790 37 20 69 73 20 66 75 6c 6c 20 72 69 67 68 74 2c |7 is full right,| 000157a0 20 61 6e 64 20 34 20 69 73 20 63 65 6e 74 72 65 | and 4 is centre| 000157b0 29 2e 20 53 6f 6d 65 20 54 72 61 63 6b 65 72 20 |). Some Tracker | 000157c0 74 75 6e 65 73 20 6d 61 79 20 63 6f 6e 74 61 69 |tunes may contai| 000157d0 6e 20 73 74 65 72 65 6f 20 73 65 74 74 69 6e 67 |n stereo setting| 000157e0 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2e 0a |s out of range..| 000157f0 44 41 54 41 b4 01 00 00 54 72 61 63 6b 65 72 5f |DATA....Tracker_| 00015800 53 65 74 50 6f 73 20 20 28 26 34 33 32 30 37 29 |SetPos (&43207)| 00015810 0a 23 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 |.#Parent Tracker| 00015820 5f 0a 3d 3e 09 52 30 20 3d 20 4e 65 77 20 73 65 |_.=>.R0 = New se| 00015830 71 75 65 6e 63 65 20 70 6f 73 69 74 69 6f 6e 20 |quence position | 00015840 28 30 2d 31 32 37 20 6d 61 78 29 0a 09 52 31 20 |(0-127 max)..R1 | 00015850 3d 20 45 76 65 6e 74 20 28 30 2d 36 33 20 6d 61 |= Event (0-63 ma| 00015860 78 29 0a 5c 3c 3d 09 52 30 20 70 72 65 73 65 72 |x).\<=.R0 preser| 00015870 76 65 64 0a 0a 54 68 69 73 20 70 65 72 66 6f 72 |ved..This perfor| 00015880 6d 73 20 74 68 65 20 73 61 6d 65 20 61 63 74 69 |ms the same acti| 00015890 6f 6e 73 20 61 73 20 2a 50 6c 61 79 50 6f 73 2c |ons as *PlayPos,| 000158a0 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65 | except that the| 000158b0 20 65 76 65 6e 74 20 77 69 74 68 20 74 68 65 20 | event with the | 000158c0 70 61 74 74 65 72 6e 20 63 61 6e 20 62 65 20 73 |pattern can be s| 000158d0 70 65 63 69 66 69 65 64 20 28 30 2d 36 33 20 6e |pecified (0-63 n| 000158e0 6f 72 6d 61 6c 6c 79 29 2e 20 49 66 20 61 6e 20 |ormally). If an | 000158f0 65 76 65 6e 74 20 6e 75 6d 62 65 72 20 68 69 67 |event number hig| 00015900 68 65 72 20 74 68 61 6e 20 74 68 65 20 6e 75 6d |her than the num| 00015910 62 65 72 20 6f 66 20 65 76 65 6e 74 73 20 69 6e |ber of events in| 00015920 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 61 74 | the current pat| 00015930 74 65 72 6e 20 69 73 20 73 70 65 63 69 66 69 65 |tern is specifie| 00015940 64 2c 20 74 68 65 20 70 61 74 74 65 72 6e 20 77 |d, the pattern w| 00015950 69 6c 6c 20 62 65 67 69 6e 20 61 74 20 65 76 65 |ill begin at eve| 00015960 6e 74 20 30 2e 0a 0a 49 66 20 74 68 65 72 65 20 |nt 0...If there | 00015970 69 73 20 6e 6f 20 74 75 6e 65 20 63 75 72 72 65 |is no tune curre| 00015980 6e 74 6c 79 20 6c 6f 61 64 65 64 2c 20 61 6e 20 |ntly loaded, an | 00015990 65 72 72 6f 72 20 69 73 20 67 65 6e 65 72 61 74 |error is generat| 000159a0 65 64 2e 0a 44 41 54 41 8f 01 00 00 54 72 61 63 |ed..DATA....Trac| 000159b0 6b 65 72 5f 52 65 61 64 50 6f 73 20 20 28 26 34 |ker_ReadPos (&4| 000159c0 33 32 30 38 29 0a 23 50 61 72 65 6e 74 20 54 72 |3208).#Parent Tr| 000159d0 61 63 6b 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 43 |acker_.=>.R0 =.C| 000159e0 75 72 72 65 6e 74 20 70 6f 73 69 74 69 6f 6e 20 |urrent position | 000159f0 69 6e 20 73 65 71 75 65 6e 63 65 20 74 61 62 6c |in sequence tabl| 00015a00 65 20 28 30 2d 31 32 37 20 6d 61 78 29 0a 09 52 |e (0-127 max)..R| 00015a10 31 20 3d 09 43 75 72 72 65 6e 74 20 70 6f 73 69 |1 =.Current posi| 00015a20 74 69 6f 6e 20 69 6e 20 70 61 74 74 65 72 6e 20 |tion in pattern | 00015a30 28 30 2d 36 33 20 6d 61 78 29 0a 09 52 32 20 3d |(0-63 max)..R2 =| 00015a40 09 4d 61 78 69 6d 75 6d 20 70 6f 73 69 74 69 6f |.Maximum positio| 00015a50 6e 20 69 6e 20 73 65 71 75 65 6e 63 65 20 74 61 |n in sequence ta| 00015a60 62 6c 65 0a 0a 54 68 69 73 20 70 65 72 66 6f 72 |ble..This perfor| 00015a70 6d 73 20 74 68 65 20 73 61 6d 65 20 61 63 74 69 |ms the same acti| 00015a80 6f 6e 73 20 61 73 20 2a 50 6c 61 79 50 6f 73 20 |ons as *PlayPos | 00015a90 77 69 74 68 20 6e 6f 20 70 61 72 61 6d 65 74 65 |with no paramete| 00015aa0 72 73 2c 20 62 75 74 20 61 6c 73 6f 20 72 65 74 |rs, but also ret| 00015ab0 75 72 6e 73 20 74 68 65 20 63 75 72 72 65 6e 74 |urns the current| 00015ac0 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 | position in the| 00015ad0 20 63 75 72 72 65 6e 74 20 70 61 74 74 65 72 6e | current pattern| 00015ae0 20 28 69 6e 20 63 61 73 65 20 73 6f 6d 65 20 61 | (in case some a| 00015af0 70 70 6c 69 63 61 74 69 6f 6e 73 20 6e 65 65 64 |pplications need| 00015b00 20 74 6f 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20 | to synchronize | 00015b10 65 76 65 6e 74 73 20 77 69 74 68 20 74 68 65 20 |events with the | 00015b20 74 75 6e 65 20 62 65 69 6e 67 20 70 6c 61 79 65 |tune being playe| 00015b30 64 29 2e 00 44 41 54 41 bd 03 00 00 54 72 61 63 |d)..DATA....Trac| 00015b40 6b 65 72 5f 50 6c 61 79 4e 6f 74 65 20 20 28 26 |ker_PlayNote (&| 00015b50 34 33 32 30 39 29 0a 23 50 61 72 65 6e 74 20 54 |43209).#Parent T| 00015b60 72 61 63 6b 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 |racker_.=>.R0 =.| 00015b70 53 6f 75 6e 64 20 63 68 61 6e 6e 65 6c 20 74 6f |Sound channel to| 00015b80 20 73 6f 75 6e 64 20 6e 6f 74 65 20 6f 6e 20 28 | sound note on (| 00015b90 31 2d 38 20 6d 61 78 29 0a 09 52 31 20 3d 09 54 |1-8 max)..R1 =.T| 00015ba0 72 61 63 6b 65 72 20 66 6f 72 6d 61 74 20 6e 6f |racker format no| 00015bb0 74 65 20 6e 75 6d 62 65 72 20 28 31 2d 33 36 29 |te number (1-36)| 00015bc0 0a 09 52 32 20 3d 09 53 61 6d 70 6c 65 20 74 6f |..R2 =.Sample to| 00015bd0 20 70 6c 61 79 20 28 31 2d 33 36 29 0a 09 52 33 | play (1-36)..R3| 00015be0 20 3d 09 56 6f 6c 75 6d 65 20 28 30 2d 32 35 35 | =.Volume (0-255| 00015bf0 29 20 5b 54 72 61 63 6b 65 72 20 76 6f 6c 75 6d |) [Tracker volum| 00015c00 65 20 65 76 65 6e 20 69 66 20 73 6f 75 6e 64 74 |e even if soundt| 00015c10 72 61 63 6b 65 72 20 74 75 6e 65 20 6c 6f 61 64 |racker tune load| 00015c20 65 64 5d 2e 0a 5c 3c 3d 09 52 30 2d 52 33 20 70 |ed]..\<=.R0-R3 p| 00015c30 72 65 73 65 72 76 65 64 0a 09 49 66 20 74 75 6e |reserved..If tun| 00015c40 65 20 6e 6f 74 20 70 61 75 73 65 64 20 74 68 65 |e not paused the| 00015c50 6e 20 43 20 66 6c 61 67 20 73 65 74 20 6f 74 68 |n C flag set oth| 00015c60 65 72 77 69 73 65 20 43 20 66 6c 61 67 20 63 6c |erwise C flag cl| 00015c70 65 61 72 65 64 2e 0a 0a 49 66 20 74 68 65 72 65 |eared...If there| 00015c80 20 69 73 20 6e 6f 20 74 75 6e 65 20 6c 6f 61 64 | is no tune load| 00015c90 65 64 2c 20 61 6e 20 65 72 72 6f 72 20 77 69 6c |ed, an error wil| 00015ca0 6c 20 62 65 20 67 65 6e 65 72 61 74 65 64 2e 0a |l be generated..| 00015cb0 0a 49 74 20 70 6c 61 79 73 20 6f 6e 65 20 6f 66 |.It plays one of| 00015cc0 20 74 68 65 20 73 61 6d 70 6c 65 73 20 77 68 69 | the samples whi| 00015cd0 63 68 20 61 72 65 20 70 61 72 74 20 6f 66 20 74 |ch are part of t| 00015ce0 68 65 20 70 61 75 73 65 64 20 74 75 6e 65 20 61 |he paused tune a| 00015cf0 74 20 61 20 67 69 76 65 6e 20 70 69 74 63 68 20 |t a given pitch | 00015d00 28 31 3d 6c 6f 77 2c 20 33 36 3d 68 69 67 68 29 |(1=low, 36=high)| 00015d10 20 61 6e 64 20 76 6f 6c 75 6d 65 20 28 30 3d 73 | and volume (0=s| 00015d20 69 6c 65 6e 74 2c 20 32 35 35 3d 6c 6f 75 64 29 |ilent, 255=loud)| 00015d30 2e 20 49 66 20 61 6e 79 20 6f 66 20 74 68 65 20 |. If any of the | 00015d40 76 61 6c 75 65 73 20 61 72 65 20 6f 75 74 20 6f |values are out o| 00015d50 66 20 72 61 6e 67 65 2c 20 61 6e 20 65 72 72 6f |f range, an erro| 00015d60 72 20 77 69 6c 6c 20 62 65 20 72 65 70 6f 72 74 |r will be report| 00015d70 65 64 2e 0a 54 68 65 20 6e 75 6d 62 65 72 20 6f |ed..The number o| 00015d80 66 20 73 6f 75 6e 64 20 63 68 61 6e 6e 65 6c 73 |f sound channels| 00015d90 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 | that can be use| 00015da0 64 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 |d depends on the| 00015db0 20 6d 6f 64 75 6c 65 20 6c 6f 61 64 65 64 20 28 | module loaded (| 00015dc0 73 6f 75 6e 64 74 72 61 63 6b 65 72 20 6d 6f 64 |soundtracker mod| 00015dd0 75 6c 65 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 |ules will always| 00015de0 20 75 73 65 20 34 20 76 6f 69 63 65 73 2c 20 77 | use 4 voices, w| 00015df0 68 65 72 65 61 73 20 54 72 61 63 6b 65 72 20 6d |hereas Tracker m| 00015e00 6f 64 75 6c 65 73 20 63 61 6e 20 75 73 65 20 75 |odules can use u| 00015e10 70 20 74 6f 20 38 29 2e 20 55 73 65 20 3c 54 72 |p to 8). Use <Tr| 00015e20 61 63 6b 65 72 5f 54 75 6e 65 49 6e 66 6f 3e 20 |acker_TuneInfo> | 00015e30 74 6f 20 66 69 6e 64 20 6f 75 74 20 74 68 65 20 |to find out the | 00015e40 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f |maximum number o| 00015e50 66 20 76 6f 69 63 65 73 20 69 66 20 79 6f 75 20 |f voices if you | 00015e60 69 6e 74 65 6e 64 20 74 6f 20 70 6c 61 79 20 6d |intend to play m| 00015e70 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6e 6f 74 |ore than one not| 00015e80 65 20 61 74 20 61 20 74 69 6d 65 2e 0a 0a 4e 42 |e at a time...NB| 00015e90 3a 20 54 68 69 73 20 63 61 6c 6c 20 73 68 6f 75 |: This call shou| 00015ea0 6c 64 20 62 65 20 61 76 6f 69 64 65 64 20 69 66 |ld be avoided if| 00015eb0 20 70 6f 73 73 69 62 6c 65 2c 20 75 6e 6c 65 73 | possible, unles| 00015ec0 73 20 74 68 65 20 70 75 72 70 6f 73 65 20 69 73 |s the purpose is| 00015ed0 20 74 6f 20 68 65 61 72 20 65 61 63 68 20 73 61 | to hear each sa| 00015ee0 6d 70 6c 65 20 73 65 70 65 72 61 74 65 6c 79 2e |mple seperately.| 00015ef0 0a 00 00 00 44 41 54 41 45 04 00 00 54 72 61 63 |....DATAE...Trac| 00015f00 6b 65 72 5f 54 75 6e 65 49 6e 66 6f 20 20 28 26 |ker_TuneInfo (&| 00015f10 34 33 32 30 41 29 0a 23 50 61 72 65 6e 74 20 54 |4320A).#Parent T| 00015f20 72 61 63 6b 65 72 5f 0a 5c 3c 3d 09 52 30 20 3d |racker_.\<=.R0 =| 00015f30 09 53 65 71 75 65 6e 63 65 20 74 61 62 6c 65 20 |.Sequence table | 00015f40 6c 65 6e 67 74 68 20 28 31 2d 31 32 38 29 0a 09 |length (1-128)..| 00015f50 52 31 20 3d 09 4e 75 6d 62 65 72 20 6f 66 20 76 |R1 =.Number of v| 00015f60 6f 69 63 65 73 20 28 31 2d 38 29 0a 09 52 32 20 |oices (1-8)..R2 | 00015f70 3d 09 43 75 72 72 65 6e 74 20 73 70 65 65 64 20 |=.Current speed | 00015f80 28 31 2d 31 35 29 0a 09 52 33 20 3d 09 50 6f 69 |(1-15)..R3 =.Poi| 00015f90 6e 74 65 72 20 74 6f 20 74 75 6e 65 20 6e 61 6d |nter to tune nam| 00015fa0 65 20 28 74 65 72 6d 69 6e 61 74 65 64 20 62 79 |e (terminated by| 00015fb0 20 30 2c 20 6d 61 78 20 6c 65 6e 67 74 68 20 33 | 0, max length 3| 00015fc0 32 20 63 68 61 72 73 29 0a 09 52 34 20 3d 09 50 |2 chars)..R4 =.P| 00015fd0 6f 69 6e 74 65 72 20 74 6f 20 61 75 74 68 6f 72 |ointer to author| 00015fe0 27 73 20 6e 61 6d 65 20 28 30 20 74 65 72 6d 69 |'s name (0 termi| 00015ff0 6e 61 74 65 64 2c 20 6d 61 78 20 6c 65 6e 67 74 |nated, max lengt| 00016000 68 20 33 32 20 63 68 61 72 73 29 20 6f 72 20 7a |h 32 chars) or z| 00016010 65 72 6f 20 69 66 20 73 6f 75 6e 64 74 72 61 63 |ero if soundtrac| 00016020 6b 65 72 20 66 6f 72 6d 61 74 20 6d 6f 64 75 6c |ker format modul| 00016030 65 20 28 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c |e (not applicabl| 00016040 65 29 0a 09 52 35 20 3d 09 41 64 64 72 65 73 73 |e)..R5 =.Address| 00016050 20 6f 66 20 63 75 72 72 65 6e 74 6c 79 20 6c 6f | of currently lo| 00016060 61 64 65 64 20 74 75 6e 65 20 6d 6f 64 75 6c 65 |aded tune module| 00016070 0a 20 20 20 20 20 20 20 20 20 20 20 0a 49 66 20 |. .If | 00016080 74 68 65 20 74 75 6e 65 20 69 73 20 70 61 75 73 |the tune is paus| 00016090 65 64 2c 20 74 68 65 20 43 20 66 6c 61 67 20 69 |ed, the C flag i| 000160a0 73 20 73 65 74 2c 20 6f 74 68 65 72 77 69 73 65 |s set, otherwise| 000160b0 20 74 68 65 20 43 20 66 6c 61 67 20 69 73 20 63 | the C flag is c| 000160c0 6c 65 61 72 65 64 2e 20 49 66 20 74 68 65 72 65 |leared. If there| 000160d0 20 69 73 20 6e 6f 20 74 75 6e 65 20 6c 6f 61 64 | is no tune load| 000160e0 65 64 2c 20 52 30 20 69 73 20 73 65 74 20 74 6f |ed, R0 is set to| 000160f0 20 7a 65 72 6f 2c 20 61 6e 64 20 52 31 2d 52 35 | zero, and R1-R5| 00016100 20 61 72 65 20 70 72 65 73 65 72 76 65 64 2e 0a | are preserved..| 00016110 0a 54 68 69 73 20 63 61 6c 6c 20 70 72 6f 76 69 |.This call provi| 00016120 64 65 73 20 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 |des miscellaneou| 00016130 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 |s information ab| 00016140 6f 75 74 20 74 68 65 20 74 75 6e 65 20 63 75 72 |out the tune cur| 00016150 72 65 6e 74 6c 79 20 6c 6f 61 64 65 64 2e 0a 0a |rently loaded...| 00016160 59 6f 75 20 73 68 6f 75 6c 64 20 6e 6f 74 20 6e |You should not n| 00016170 65 65 64 20 74 6f 20 64 69 72 65 63 74 6c 79 20 |eed to directly | 00016180 61 63 63 65 73 73 20 74 68 65 20 74 75 6e 65 20 |access the tune | 00016190 6d 6f 64 75 6c 65 20 28 75 73 69 6e 67 20 74 68 |module (using th| 000161a0 65 20 61 64 64 72 65 73 73 20 70 61 73 73 65 64 |e address passed| 000161b0 20 69 6e 20 52 35 29 2c 20 62 65 63 61 75 73 65 | in R5), because| 000161c0 20 61 6c 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e | all information| 000161d0 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 76 69 | is available vi| 000161e0 61 20 74 68 65 20 76 61 72 69 6f 75 73 20 53 57 |a the various SW| 000161f0 49 27 73 2c 20 61 6e 64 20 73 6f 75 6e 64 74 72 |I's, and soundtr| 00016200 61 63 6b 65 72 20 66 6f 72 6d 61 74 20 6d 6f 64 |acker format mod| 00016210 75 6c 65 73 20 77 69 6c 6c 20 68 61 76 65 20 62 |ules will have b| 00016220 65 65 6e 20 63 6f 6e 76 65 72 74 65 64 20 70 61 |een converted pa| 00016230 72 74 69 61 6c 6c 79 20 74 6f 20 54 72 61 63 6b |rtially to Track| 00016240 65 72 20 66 6f 72 6d 61 74 20 77 68 65 6e 20 6c |er format when l| 00016250 6f 61 64 65 64 20 28 61 6e 64 20 74 68 65 72 65 |oaded (and there| 00016260 66 6f 72 65 20 69 6e 20 61 6e 20 75 6e 6b 6e 6f |fore in an unkno| 00016270 77 6e 20 66 6f 72 6d 61 74 29 2e 20 54 68 69 73 |wn format). This| 00016280 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 | information is | 00016290 70 72 6f 76 69 64 65 64 20 69 66 2c 20 66 6f 72 |provided if, for| 000162a0 20 65 78 61 6d 70 6c 65 2c 20 6d 75 6c 74 69 2d | example, multi-| 000162b0 74 61 73 6b 69 6e 67 20 70 6c 61 79 65 72 73 2f |tasking players/| 000162c0 65 64 69 74 6f 72 73 20 6e 65 65 64 20 74 6f 20 |editors need to | 000162d0 6b 6e 6f 77 20 69 66 20 74 68 65 20 74 75 6e 65 |know if the tune| 000162e0 20 63 75 72 72 65 6e 74 6c 79 20 70 6c 61 79 69 | currently playi| 000162f0 6e 67 20 69 73 20 72 75 6e 6e 69 6e 67 20 66 72 |ng is running fr| 00016300 6f 6d 20 6f 72 64 69 6e 61 72 79 20 52 4d 41 2c |om ordinary RMA,| 00016310 20 6f 72 20 74 68 65 20 70 6c 61 79 65 72 27 73 | or the player's| 00016320 2f 65 64 69 74 6f 72 27 73 20 6f 77 6e 20 77 6f |/editor's own wo| 00016330 72 6b 73 70 61 63 65 2e 0a 00 00 00 44 41 54 41 |rkspace.....DATA| 00016340 3c 04 00 00 54 72 61 63 6b 65 72 5f 53 6f 75 6e |<...Tracker_Soun| 00016350 64 49 6e 66 6f 20 20 28 26 34 33 32 30 42 29 0a |dInfo (&4320B).| 00016360 23 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 5f |#Parent Tracker_| 00016370 0a 3d 3e 09 52 30 20 3d 09 50 6f 69 6e 74 65 72 |.=>.R0 =.Pointer| 00016380 20 74 6f 20 77 6f 72 64 2d 61 6c 69 67 6e 65 64 | to word-aligned| 00016390 20 32 35 36 20 62 79 74 65 20 62 6c 6f 63 6b 20 | 256 byte block | 000163a0 74 6f 20 68 6f 6c 64 20 3c 73 6f 75 6e 64 20 64 |to hold <sound d| 000163b0 61 74 61 3d 3e 54 72 61 63 6b 65 72 5f 53 6f 75 |ata=>Tracker_Sou| 000163c0 6e 64 62 6c 6f 63 6b 3e 0a 5c 3c 3d 09 52 30 20 |ndblock>.\<=.R0 | 000163d0 70 72 65 73 65 72 76 65 64 0a 0a 09 49 66 20 74 |preserved...If t| 000163e0 68 65 20 74 75 6e 65 20 69 73 20 70 61 75 73 65 |he tune is pause| 000163f0 64 2c 20 74 68 65 20 43 20 66 6c 61 67 20 77 69 |d, the C flag wi| 00016400 6c 6c 20 62 65 20 73 65 74 2c 20 6f 74 68 65 72 |ll be set, other| 00016410 77 69 73 65 20 74 68 65 20 43 20 66 6c 61 67 20 |wise the C flag | 00016420 77 69 6c 6c 20 62 65 20 63 6c 65 61 72 65 64 2e |will be cleared.| 00016430 0a 0a 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f |..If there is no| 00016440 20 74 75 6e 65 20 6c 6f 61 64 65 64 20 61 6e 20 | tune loaded an | 00016450 65 72 72 6f 72 20 77 69 6c 6c 20 62 65 20 67 65 |error will be ge| 00016460 6e 65 72 61 74 65 64 2e 0a 0a 54 68 69 73 20 63 |nerated...This c| 00016470 61 6c 6c 20 69 73 20 6f 6e 6c 79 20 70 72 6f 76 |all is only prov| 00016480 69 64 65 64 20 66 6f 72 20 61 64 76 61 6e 63 65 |ided for advance| 00016490 64 20 75 73 65 73 20 6f 66 20 74 68 65 20 74 72 |d uses of the tr| 000164a0 61 63 6b 65 72 6d 6f 64 75 6c 65 2c 20 61 6e 64 |ackermodule, and| 000164b0 20 69 6e 76 6f 6c 76 65 73 20 69 6e 66 6f 72 6d | involves inform| 000164c0 61 74 69 6f 6e 20 6f 66 20 61 20 68 69 67 68 6c |ation of a highl| 000164d0 79 20 74 65 63 68 6e 69 63 61 6c 20 6e 61 74 75 |y technical natu| 000164e0 72 65 2e 20 49 74 20 69 73 20 61 64 76 69 73 65 |re. It is advise| 000164f0 64 20 74 68 61 74 20 79 6f 75 20 64 6f 20 6e 6f |d that you do no| 00016500 74 20 75 73 65 20 74 68 69 73 20 63 61 6c 6c 20 |t use this call | 00016510 69 66 20 79 6f 75 20 63 61 6e 20 61 76 6f 69 64 |if you can avoid| 00016520 20 69 74 2e 0a 0a 54 68 65 20 63 61 6c 6c 20 77 | it...The call w| 00016530 69 6c 6c 20 74 72 61 6e 73 66 65 72 20 74 68 65 |ill transfer the| 00016540 20 63 75 72 72 65 6e 74 20 63 6f 6e 74 65 6e 74 | current content| 00016550 73 20 6f 66 20 74 68 65 20 73 6f 75 6e 64 20 76 |s of the sound v| 00016560 6f 69 63 65 20 69 6e 66 6f 20 74 61 62 6c 65 20 |oice info table | 00016570 74 6f 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 |to the location | 00016580 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 52 30 |pointed to by R0| 00016590 2e 20 32 35 36 20 62 79 74 65 73 20 28 36 34 20 |. 256 bytes (64 | 000165a0 77 6f 72 64 73 29 20 77 69 6c 6c 20 62 65 20 74 |words) will be t| 000165b0 72 61 6e 73 66 65 72 72 65 64 20 69 6e 20 74 6f |ransferred in to| 000165c0 74 61 6c 20 28 38 20 77 6f 72 64 73 20 70 65 72 |tal (8 words per| 000165d0 20 73 6f 75 6e 64 20 63 68 61 6e 6e 65 6c 29 2c | sound channel),| 000165e0 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74 | regardless of t| 000165f0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 6f 69 |he number of voi| 00016600 63 65 73 20 61 63 74 75 61 6c 6c 79 20 61 63 74 |ces actually act| 00016610 69 76 65 2e 0a 0a 57 68 65 6e 20 61 20 6e 6f 74 |ive...When a not| 00016620 65 20 69 73 20 70 6c 61 79 65 64 20 61 6e 64 20 |e is played and | 00016630 74 68 65 6e 20 65 6e 64 73 2c 20 77 6f 72 64 20 |then ends, word | 00016640 36 20 6f 66 20 74 68 65 20 61 70 70 72 6f 70 72 |6 of the appropr| 00016650 69 61 74 65 20 63 68 61 6e 6e 65 6c 20 69 73 20 |iate channel is | 00016660 7a 65 72 6f 65 64 2e 20 54 68 65 20 73 6f 75 6e |zeroed. The soun| 00016670 64 20 72 6f 75 74 69 6e 65 73 20 77 69 6c 6c 20 |d routines will | 00016680 6f 6e 6c 79 20 74 72 79 20 61 6e 64 20 70 6c 61 |only try and pla| 00016690 79 20 74 68 65 20 73 61 6d 70 6c 65 20 69 66 20 |y the sample if | 000166a0 74 68 69 73 20 77 6f 72 64 20 69 73 20 6e 6f 6e |this word is non| 000166b0 2d 7a 65 72 6f 2e 0a 0a 57 68 65 6e 20 61 20 74 |-zero...When a t| 000166c0 75 6e 65 20 69 73 20 70 61 75 73 65 64 2c 20 74 |une is paused, t| 000166d0 68 65 20 62 6c 6f 63 6b 20 69 73 20 73 61 76 65 |he block is save| 000166e0 64 20 61 6e 64 20 6f 76 65 72 77 72 69 74 74 65 |d and overwritte| 000166f0 6e 20 77 69 74 68 20 7a 65 72 6f 73 2e 20 57 68 |n with zeros. Wh| 00016700 65 6e 20 74 68 65 20 74 75 6e 65 20 69 73 20 72 |en the tune is r| 00016710 65 73 74 61 72 74 65 64 2c 20 74 68 65 20 6f 6c |estarted, the ol| 00016720 64 20 63 6f 6e 74 65 6e 74 73 20 61 72 65 20 72 |d contents are r| 00016730 65 73 74 6f 72 65 64 2c 20 73 6f 20 74 68 61 74 |estored, so that| 00016740 20 74 68 65 20 73 61 6d 70 6c 65 73 20 77 69 6c | the samples wil| 00016750 6c 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 70 6c |l continue to pl| 00016760 61 79 20 66 72 6f 6d 20 74 68 65 20 73 61 6d 65 |ay from the same| 00016770 20 70 6f 69 6e 74 2e 0a 44 41 54 41 aa 02 00 00 | point..DATA....| 00016780 54 72 61 63 6b 65 72 5f 52 65 61 64 53 61 6d 70 |Tracker_ReadSamp| 00016790 6c 65 54 61 62 6c 65 20 20 28 26 34 33 32 30 43 |leTable (&4320C| 000167a0 29 0a 23 50 61 72 65 6e 74 20 54 72 61 63 6b 65 |).#Parent Tracke| 000167b0 72 5f 0a 3d 3e 09 52 30 20 3d 09 53 61 6d 70 6c |r_.=>.R0 =.Sampl| 000167c0 65 20 6e 75 6d 62 65 72 20 28 31 2d 33 36 29 0a |e number (1-36).| 000167d0 5c 3c 3d 09 52 30 20 70 72 65 73 65 72 76 65 64 |\<=.R0 preserved| 000167e0 0a 09 52 31 20 3d 09 50 6f 69 6e 74 65 72 20 74 |..R1 =.Pointer t| 000167f0 6f 20 73 61 6d 70 6c 65 20 6e 61 6d 65 20 28 30 |o sample name (0| 00016800 2d 74 65 72 6d 69 6e 61 74 65 64 2c 20 6d 61 78 |-terminated, max| 00016810 20 6c 65 6e 67 74 68 20 32 32 20 63 68 61 72 73 | length 22 chars| 00016820 29 20 0a 09 52 32 20 3d 09 53 61 6d 70 6c 65 20 |) ..R2 =.Sample | 00016830 76 6f 6c 75 6d 65 20 28 30 2d 32 35 35 2c 20 32 |volume (0-255, 2| 00016840 35 35 3d 6d 61 78 69 6d 75 6d 20 76 6f 6c 75 6d |55=maximum volum| 00016850 65 2c 20 30 3d 73 69 6c 65 6e 74 29 20 28 6f 72 |e, 0=silent) (or| 00016860 20 66 6f 72 20 73 6f 75 6e 64 20 74 72 61 63 6b | for sound track| 00016870 65 72 20 30 2d 36 34 2c 20 36 34 3d 6d 61 78 20 |er 0-64, 64=max | 00016880 76 6f 6c 2e 29 20 0a 09 52 33 20 3d 09 53 61 6d |vol.) ..R3 =.Sam| 00016890 70 6c 65 20 6c 65 6e 67 74 68 20 28 62 79 74 65 |ple length (byte| 000168a0 73 29 0a 09 52 34 20 3d 09 52 65 70 65 61 74 20 |s)..R4 =.Repeat | 000168b0 6f 66 66 73 65 74 20 28 62 79 74 65 73 29 0a 09 |offset (bytes)..| 000168c0 52 35 20 3d 09 52 65 70 65 61 74 20 6c 65 6e 67 |R5 =.Repeat leng| 000168d0 74 68 20 28 62 79 74 65 73 29 0a 09 52 36 20 3d |th (bytes)..R6 =| 000168e0 09 41 64 64 72 65 73 73 20 6f 66 20 72 61 77 20 |.Address of raw | 000168f0 73 61 6d 70 6c 65 20 64 61 74 61 0a 0a 54 68 69 |sample data..Thi| 00016900 73 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 20 61 |s call returns a| 00016910 6c 6c 20 72 65 6c 65 76 61 6e 74 20 69 6e 66 6f |ll relevant info| 00016920 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 |rmation about th| 00016930 65 20 73 70 65 63 69 66 69 65 64 20 73 61 6d 70 |e specified samp| 00016940 6c 65 2e 20 0a 0a 49 66 20 74 68 65 72 65 20 69 |le. ..If there i| 00016950 73 20 6e 6f 20 74 75 6e 65 20 6c 6f 61 64 65 64 |s no tune loaded| 00016960 2c 20 61 6e 20 65 72 72 6f 72 20 77 69 6c 6c 20 |, an error will | 00016970 62 65 20 67 65 6e 65 72 61 74 65 64 2e 0a 0a 49 |be generated...I| 00016980 66 20 74 68 65 20 73 61 6d 70 6c 65 20 6e 75 6d |f the sample num| 00016990 62 65 72 20 69 73 20 6f 75 74 20 6f 66 20 72 61 |ber is out of ra| 000169a0 6e 67 65 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 |nge (for example| 000169b0 2c 20 69 66 20 72 65 61 64 69 6e 67 20 73 61 6d |, if reading sam| 000169c0 70 6c 65 20 31 36 20 6f 6e 20 61 20 31 35 2d 69 |ple 16 on a 15-i| 000169d0 6e 73 74 72 75 6d 65 6e 74 20 6d 6f 64 75 6c 65 |nstrument module| 000169e0 29 2c 20 52 31 20 61 6e 64 20 52 36 20 77 69 6c |), R1 and R6 wil| 000169f0 6c 20 70 6f 69 6e 74 20 74 6f 20 61 20 7a 65 72 |l point to a zer| 00016a00 6f 2c 20 61 6e 64 20 52 32 2d 52 35 20 77 69 6c |o, and R2-R5 wil| 00016a10 6c 20 63 6f 6e 74 61 69 6e 20 61 20 7a 65 72 6f |l contain a zero| 00016a20 2e 0a 00 00 44 41 54 41 63 05 00 00 54 72 61 63 |....DATAc...Trac| 00016a30 6b 65 72 5f 57 72 69 74 65 53 61 6d 70 6c 65 54 |ker_WriteSampleT| 00016a40 61 62 6c 65 20 20 28 26 34 33 32 31 33 29 0a 23 |able (&43213).#| 00016a50 50 61 72 65 6e 74 20 54 72 61 63 6b 65 72 5f 0a |Parent Tracker_.| 00016a60 3d 3e 09 52 30 20 3d 09 53 61 6d 70 6c 65 20 6e |=>.R0 =.Sample n| 00016a70 75 6d 62 65 72 20 28 31 2d 33 36 29 0a 09 52 31 |umber (1-36)..R1| 00016a80 20 3d 09 4e 65 77 20 73 61 6d 70 6c 65 20 76 6f | =.New sample vo| 00016a90 6c 75 6d 65 20 28 30 2d 32 35 35 2f 30 2d 36 34 |lume (0-255/0-64| 00016aa0 29 20 6f 72 20 2d 31 20 74 6f 20 6c 65 61 76 65 |) or -1 to leave| 00016ab0 20 75 6e 63 68 61 6e 67 65 64 2e 0a 09 52 32 20 | unchanged...R2 | 00016ac0 3d 09 52 65 70 65 61 74 20 6f 66 66 73 65 74 20 |=.Repeat offset | 00016ad0 28 62 79 74 65 73 29 20 6f 72 20 2d 31 20 74 6f |(bytes) or -1 to| 00016ae0 20 6c 65 61 76 65 20 75 6e 63 68 61 6e 67 65 64 | leave unchanged| 00016af0 2e 0a 09 52 33 20 3d 09 52 65 70 65 61 74 20 6c |...R3 =.Repeat l| 00016b00 65 6e 67 74 68 20 28 62 79 74 65 73 29 20 6f 72 |ength (bytes) or| 00016b10 20 2d 31 20 74 6f 20 6c 65 61 76 65 20 75 6e 63 | -1 to leave unc| 00016b20 68 61 6e 67 65 64 2e 0a 0a 59 6f 75 20 73 68 6f |hanged...You sho| 00016b30 75 6c 64 20 75 73 65 20 74 68 69 73 20 53 57 49 |uld use this SWI| 00016b40 20 69 66 20 79 6f 75 20 77 69 73 68 20 74 6f 20 | if you wish to | 00016b50 61 6c 74 65 72 20 74 68 65 20 73 61 6d 70 6c 65 |alter the sample| 00016b60 20 64 61 74 61 20 77 69 74 68 6f 75 74 20 6e 65 | data without ne| 00016b70 65 64 69 6e 67 20 74 6f 20 6b 6e 6f 77 20 74 68 |eding to know th| 00016b80 65 20 72 65 6c 65 76 61 6e 74 20 6d 6f 64 75 6c |e relevant modul| 00016b90 65 20 66 6f 72 6d 61 74 2e 20 53 61 6d 70 6c 65 |e format. Sample| 00016ba0 20 6c 65 6e 67 74 68 20 69 73 20 6e 6f 74 20 61 | length is not a| 00016bb0 6c 74 65 72 61 62 6c 65 2c 20 62 65 63 61 75 73 |lterable, becaus| 00016bc0 65 20 74 68 65 20 6f 63 63 61 73 69 6f 6e 73 20 |e the occasions | 00016bd0 77 68 65 6e 20 74 68 69 73 20 69 73 20 6e 65 63 |when this is nec| 00016be0 65 73 73 61 72 79 20 28 65 67 2e 20 6c 6f 61 64 |essary (eg. load| 00016bf0 69 6e 67 20 6e 65 77 20 73 61 6d 70 6c 65 20 69 |ing new sample i| 00016c00 6e 29 20 6e 65 65 64 20 64 69 72 65 63 74 20 6d |n) need direct m| 00016c10 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6f 66 20 74 |anipulation of t| 00016c20 68 65 20 6d 6f 64 75 6c 65 20 69 6e 20 6d 65 6d |he module in mem| 00016c30 6f 72 79 20 61 6e 79 77 61 79 2c 20 61 6e 64 20 |ory anyway, and | 00016c40 70 72 6f 62 6c 65 6d 73 20 6f 63 63 75 72 20 77 |problems occur w| 00016c50 68 65 6e 20 74 68 65 20 73 61 6d 70 6c 65 20 6c |hen the sample l| 00016c60 65 6e 67 74 68 20 69 73 20 73 65 74 20 61 62 6f |ength is set abo| 00016c70 76 65 20 74 68 65 20 61 63 74 75 61 6c 20 6c 65 |ve the actual le| 00016c80 6e 67 74 68 2e 0a 0a 56 65 72 73 69 6f 6e 73 20 |ngth...Versions | 00016c90 62 65 74 77 65 65 6e 20 33 2e 30 30 20 61 6e 64 |between 3.00 and| 00016ca0 20 34 2e 30 35 20 63 6f 70 69 65 64 20 74 68 65 | 4.05 copied the| 00016cb0 20 73 61 6d 70 6c 65 20 69 6e 66 6f 72 6d 61 74 | sample informat| 00016cc0 69 6f 6e 20 69 6e 74 6f 20 61 20 6d 6f 72 65 20 |ion into a more | 00016cd0 63 6f 6e 76 65 6e 69 65 6e 74 20 66 6f 72 6d 61 |convenient forma| 00016ce0 74 20 77 68 65 6e 20 74 68 65 20 6d 6f 64 75 6c |t when the modul| 00016cf0 65 20 77 61 73 20 69 6e 69 74 69 61 6c 69 73 65 |e was initialise| 00016d00 64 2c 20 61 6e 64 20 73 6f 20 61 6c 74 65 72 69 |d, and so alteri| 00016d10 6e 67 20 74 68 65 20 64 61 74 61 20 64 69 72 65 |ng the data dire| 00016d20 63 74 6c 79 20 77 6f 75 6c 64 20 68 61 76 65 20 |ctly would have | 00016d30 68 61 64 20 6e 6f 20 65 66 66 65 63 74 20 28 63 |had no effect (c| 00016d40 61 75 73 69 6e 67 20 70 72 6f 62 6c 65 6d 73 20 |ausing problems | 00016d50 66 6f 72 20 65 64 69 74 6f 72 73 20 77 68 69 63 |for editors whic| 00016d60 68 20 6e 65 65 64 65 64 20 74 6f 20 64 6f 20 74 |h needed to do t| 00016d70 68 69 73 2e 2e 29 2e 0a 0a 53 68 6f 75 6c 64 20 |his..)...Should | 00016d80 79 6f 75 20 77 69 73 68 20 74 6f 20 61 6c 74 65 |you wish to alte| 00016d90 72 20 61 6e 79 20 6f 74 68 65 72 20 61 73 70 65 |r any other aspe| 00016da0 63 74 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 |ct of the module| 00016db0 20 64 69 72 65 63 74 6c 79 20 77 68 69 63 68 20 | directly which | 00016dc0 6d 69 67 68 74 20 61 66 66 65 63 74 20 74 68 65 |might affect the| 00016dd0 20 70 6c 61 79 72 6f 75 74 69 6e 65 20 28 69 65 | playroutine (ie| 00016de0 2e 20 6e 75 6d 62 65 72 20 6f 66 20 76 6f 69 63 |. number of voic| 00016df0 65 73 29 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 |es), you should | 00016e00 63 61 6c 6c 20 3c 54 72 61 63 6b 65 72 5f 55 70 |call <Tracker_Up| 00016e10 64 61 74 65 44 61 74 61 3e 2e 0a 0a 41 6e 20 65 |dateData>...An e| 00016e20 72 72 6f 72 20 69 73 20 67 65 6e 65 72 61 74 65 |rror is generate| 00016e30 64 20 69 66 3a 0a 23 49 6e 64 65 6e 74 20 32 0a |d if:.#Indent 2.| 00016e40 23 54 61 62 0a 8f 09 4e 6f 20 6d 6f 64 75 6c 65 |#Tab...No module| 00016e50 20 69 73 20 6c 6f 61 64 65 64 0a 8f 09 54 68 65 | is loaded...The| 00016e60 20 73 61 6d 70 6c 65 20 6e 75 6d 62 65 72 20 74 | sample number t| 00016e70 6f 20 63 68 61 6e 67 65 20 65 78 63 65 65 64 73 |o change exceeds| 00016e80 20 74 68 65 20 6d 61 78 2e 20 6f 66 20 74 68 65 | the max. of the| 00016e90 20 66 6f 72 6d 61 74 20 28 69 65 2e 20 31 35 2f | format (ie. 15/| 00016ea0 33 31 2f 33 36 29 0a 8f 09 54 68 65 20 72 65 6c |31/36)...The rel| 00016eb0 65 76 61 6e 74 20 69 6e 66 6f 72 6d 61 74 69 6f |evant informatio| 00016ec0 6e 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 |n is out of rang| 00016ed0 65 20 28 69 65 2e 20 76 6f 6c 20 3e 20 5b 36 34 |e (ie. vol > [64| 00016ee0 20 6f 72 20 32 35 35 5d 29 0a 8f 09 41 20 63 6f | or 255])...A co| 00016ef0 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 72 65 70 |mbination of rep| 00016f00 65 61 74 20 6f 66 66 73 65 74 20 61 6e 64 20 72 |eat offset and r| 00016f10 65 70 65 61 74 20 6c 65 6e 67 74 68 20 77 6f 75 |epeat length wou| 00016f20 6c 64 20 63 61 75 73 65 20 74 68 65 20 70 6c 61 |ld cause the pla| 00016f30 79 65 72 20 74 6f 20 6c 6f 6f 70 20 6f 75 74 73 |yer to loop outs| 00016f40 69 64 65 20 74 68 65 20 73 61 6d 70 6c 65 20 6c |ide the sample l| 00016f50 69 6d 69 74 2e 0a 23 49 6e 64 65 6e 74 0a 0a 54 |imit..#Indent..T| 00016f60 68 69 73 20 53 57 49 20 69 73 20 70 61 72 74 20 |his SWI is part | 00016f70 6f 66 20 74 68 65 20 6c 6f 63 6b 69 6e 67 20 73 |of the locking s| 00016f80 79 73 74 65 6d 2e 0a 00 44 41 54 41 1a 06 00 00 |ystem...DATA....| 00016f90 54 72 61 63 6b 65 72 5f 4c 6f 63 6b 20 20 28 26 |Tracker_Lock (&| 00016fa0 34 33 32 30 44 29 0a 23 50 61 72 65 6e 74 20 54 |4320D).#Parent T| 00016fb0 72 61 63 6b 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 |racker_.=>.R0 =.| 00016fc0 6c 6f 63 6b 69 6e 67 20 63 6f 64 65 20 28 70 61 |locking code (pa| 00016fd0 73 73 65 64 20 69 6e 20 52 34 20 74 6f 20 53 57 |ssed in R4 to SW| 00016fe0 49 27 73 29 0a 0a 54 68 69 73 20 53 57 49 20 61 |I's)..This SWI a| 00016ff0 6e 64 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e |nd the correspon| 00017000 64 69 6e 67 20 3c 54 72 61 63 6b 65 72 5f 55 6e |ding <Tracker_Un| 00017010 6c 6f 63 6b 3e 20 53 57 49 20 61 72 65 20 70 72 |lock> SWI are pr| 00017020 6f 76 69 64 65 64 20 74 6f 20 70 72 65 76 65 6e |ovided to preven| 00017030 74 20 75 73 65 72 20 69 6e 74 65 72 76 65 6e 74 |t user intervent| 00017040 69 6f 6e 20 77 69 74 68 20 61 6e 79 20 6f 66 20 |ion with any of | 00017050 74 68 65 20 66 65 61 74 75 72 65 73 20 6f 66 20 |the features of | 00017060 74 68 65 20 6d 6f 64 75 6c 65 20 77 68 65 6e 20 |the module when | 00017070 74 68 69 73 20 77 6f 75 6c 64 20 62 65 20 75 6e |this would be un| 00017080 64 65 73 69 72 61 62 6c 65 20 66 6f 72 20 61 6e |desirable for an| 00017090 79 20 6d 75 6c 74 69 2d 74 61 73 6b 69 6e 67 20 |y multi-tasking | 000170a0 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 75 73 69 |applications usi| 000170b0 6e 67 20 74 68 65 20 6d 6f 64 75 6c 65 20 28 66 |ng the module (f| 000170c0 6f 72 20 65 78 61 6d 70 6c 65 20 69 73 73 75 69 |or example issui| 000170d0 6e 67 20 61 20 2a 50 6c 61 79 53 74 6f 70 20 63 |ng a *PlayStop c| 000170e0 6f 6d 6d 61 6e 64 29 2e 20 42 79 20 63 61 6c 6c |ommand). By call| 000170f0 69 6e 67 20 74 68 69 73 20 53 57 49 2c 20 61 6e |ing this SWI, an| 00017100 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e | application can| 00017110 20 67 61 69 6e 20 63 6f 6d 70 6c 65 74 65 20 63 | gain complete c| 00017120 6f 6e 74 72 6f 6c 20 6f 66 20 74 68 65 20 6d 6f |ontrol of the mo| 00017130 64 75 6c 65 2c 20 62 75 74 20 61 73 20 61 20 72 |dule, but as a r| 00017140 65 73 75 6c 74 2c 20 74 68 69 73 20 66 65 61 74 |esult, this feat| 00017150 75 72 65 20 6d 75 73 74 20 62 65 20 75 73 65 64 |ure must be used| 00017160 20 63 61 72 65 66 75 6c 6c 79 2c 20 62 65 63 61 | carefully, beca| 00017170 75 73 65 20 74 68 65 20 6d 6f 64 75 6c 65 20 63 |use the module c| 00017180 61 6e 6e 6f 74 20 74 68 65 6e 20 62 65 20 75 6e |annot then be un| 00017190 6c 6f 63 6b 65 64 20 75 6e 6c 65 73 73 20 74 68 |locked unless th| 000171a0 65 20 63 6f 64 65 20 73 70 65 63 69 66 69 65 64 |e code specified| 000171b0 20 69 6e 20 74 68 65 20 6c 6f 63 6b 20 53 57 49 | in the lock SWI| 000171c0 20 69 73 20 6b 6e 6f 77 6e 20 28 61 6e 64 20 69 | is known (and i| 000171d0 66 20 6e 6f 74 2c 20 74 68 65 20 6d 6f 64 75 6c |f not, the modul| 000171e0 65 20 6d 75 73 74 20 62 65 20 72 65 2d 69 6e 69 |e must be re-ini| 000171f0 74 69 61 6c 69 73 65 64 29 2e 0a 0a 57 68 65 6e |tialised)...When| 00017200 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 73 20 6c | the module is l| 00017210 6f 63 6b 65 64 2c 20 63 61 6c 6c 69 6e 67 20 61 |ocked, calling a| 00017220 6e 79 20 63 6f 6d 6d 61 6e 64 73 20 6f 72 20 53 |ny commands or S| 00017230 57 49 27 73 20 77 68 69 63 68 20 61 6c 74 65 72 |WI's which alter| 00017240 20 61 6e 79 74 68 69 6e 67 20 28 73 75 63 68 20 | anything (such | 00017250 61 73 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20 |as changing the | 00017260 63 75 72 72 65 6e 74 20 70 6c 61 79 20 70 6f 73 |current play pos| 00017270 69 74 69 6f 6e 2c 20 6c 6f 61 64 69 6e 67 20 6f |ition, loading o| 00017280 72 20 6b 69 6c 6c 69 6e 67 20 74 75 6e 65 73 2c |r killing tunes,| 00017290 20 70 6c 61 79 69 6e 67 20 6e 6f 74 65 73 29 20 | playing notes) | 000172a0 77 69 6c 6c 20 63 61 75 73 65 20 61 6e 20 65 72 |will cause an er| 000172b0 72 6f 72 2c 20 62 75 74 20 53 57 49 27 73 20 72 |ror, but SWI's r| 000172c0 65 74 75 72 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 |eturning informa| 000172d0 74 69 6f 6e 20 77 69 6c 6c 20 66 75 6e 63 74 69 |tion will functi| 000172e0 6f 6e 20 61 73 20 6e 6f 72 6d 61 6c 2e 20 46 6f |on as normal. Fo| 000172f0 72 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f |r the applicatio| 00017300 6e 20 77 68 69 63 68 20 69 73 20 72 65 73 70 6f |n which is respo| 00017310 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20 6c |nsible for the l| 00017320 6f 63 6b 69 6e 67 20 74 6f 20 62 65 20 61 62 6c |ocking to be abl| 00017330 65 20 74 6f 20 75 73 65 20 74 68 65 20 61 66 66 |e to use the aff| 00017340 65 63 74 65 64 20 53 57 49 27 73 2c 20 52 34 20 |ected SWI's, R4 | 00017350 6d 75 73 74 20 62 65 20 73 65 74 20 74 6f 20 74 |must be set to t| 00017360 68 65 20 6c 6f 63 6b 69 6e 67 20 63 6f 64 65 20 |he locking code | 00017370 28 70 61 73 73 65 64 20 69 6e 20 52 30 29 20 62 |(passed in R0) b| 00017380 65 66 6f 72 65 20 61 6e 79 20 6f 66 20 74 68 65 |efore any of the| 00017390 20 61 66 66 65 63 74 65 64 20 53 57 49 27 73 20 | affected SWI's | 000173a0 69 73 20 63 61 6c 6c 65 64 20 28 6e 6f 20 63 6f |is called (no co| 000173b0 6d 6d 61 6e 64 73 20 77 69 6c 6c 20 77 6f 72 6b |mmands will work| 000173c0 20 65 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 63 | even if the loc| 000173d0 6b 69 6e 67 20 63 6f 64 65 20 69 73 20 6b 6e 6f |king code is kno| 000173e0 77 6e 29 2e 0a 0a 49 66 20 74 68 65 20 54 72 61 |wn)...If the Tra| 000173f0 63 6b 65 72 4d 6f 64 75 6c 65 20 69 73 20 61 6c |ckerModule is al| 00017400 72 65 61 64 79 20 27 6c 6f 63 6b 65 64 27 20 77 |ready 'locked' w| 00017410 68 65 6e 20 74 68 69 73 20 53 57 49 20 69 73 20 |hen this SWI is | 00017420 63 61 6c 6c 65 64 2c 20 61 6e 20 65 72 72 6f 72 |called, an error| 00017430 20 77 69 6c 6c 20 62 65 20 67 65 6e 65 72 61 74 | will be generat| 00017440 65 64 2e 20 49 74 20 69 73 20 61 64 76 69 73 61 |ed. It is advisa| 00017450 62 6c 65 20 74 6f 20 61 76 6f 69 64 20 75 73 69 |ble to avoid usi| 00017460 6e 67 20 74 68 69 73 20 63 61 6c 6c 20 75 6e 6c |ng this call unl| 00017470 65 73 73 20 61 62 73 6f 6c 75 74 65 6c 79 20 6e |ess absolutely n| 00017480 65 63 63 65 73 73 61 72 79 2e 0a 0a 54 68 65 20 |eccessary...The | 00017490 72 65 73 74 72 69 63 74 65 64 20 63 6f 6d 6d 61 |restricted comma| 000174a0 6e 64 73 20 61 72 65 3a 0a 2a 50 6c 61 79 4d 6f |nds are:.*PlayMo| 000174b0 64 2c 20 2a 50 6c 61 79 50 61 75 73 65 2c 20 2a |d, *PlayPause, *| 000174c0 50 6c 61 79 53 74 61 72 74 2c 20 2a 50 6c 61 79 |PlayStart, *Play| 000174d0 50 6f 73 2c 20 2a 50 6c 61 79 53 74 65 72 65 6f |Pos, *PlayStereo| 000174e0 2c 20 2a 50 6c 61 79 53 74 6f 70 2c 20 2a 50 6c |, *PlayStop, *Pl| 000174f0 61 79 56 6f 6c 75 6d 65 2e 0a 0a 54 68 65 20 72 |ayVolume...The r| 00017500 65 73 74 72 69 63 74 65 64 20 53 57 49 27 73 20 |estricted SWI's | 00017510 3a 0a 3c 54 72 61 63 6b 65 72 5f 4c 6f 61 64 3e |:.<Tracker_Load>| 00017520 2c 20 3c 54 72 61 63 6b 65 72 5f 4d 65 6d 6f 72 |, <Tracker_Memor| 00017530 79 4c 6f 61 64 3e 2c 20 3c 54 72 61 63 6b 65 72 |yLoad>, <Tracker| 00017540 5f 50 6c 61 79 3e 2c 20 3c 54 72 61 63 6b 65 72 |_Play>, <Tracker| 00017550 5f 53 74 6f 70 3e 2c 20 3c 54 72 61 63 6b 65 72 |_Stop>, <Tracker| 00017560 5f 53 74 65 72 65 6f 3e 2c 20 3c 54 72 61 63 6b |_Stereo>, <Track| 00017570 65 72 5f 53 65 74 50 6f 73 3e 2c 20 3c 54 72 61 |er_SetPos>, <Tra| 00017580 63 6b 65 72 5f 50 6c 61 79 4e 6f 74 65 3e 2c 20 |cker_PlayNote>, | 00017590 3c 54 72 61 63 6b 65 72 5f 56 6f 6c 75 6d 65 3e |<Tracker_Volume>| 000175a0 2e 0a 00 00 44 41 54 41 4c 01 00 00 54 72 61 63 |....DATAL...Trac| 000175b0 6b 65 72 5f 55 6e 6c 6f 63 6b 20 20 28 26 34 33 |ker_Unlock (&43| 000175c0 32 30 45 29 0a 23 50 61 72 65 6e 74 20 54 72 61 |20E).#Parent Tra| 000175d0 63 6b 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 6c 6f |cker_.=>.R0 =.lo| 000175e0 63 6b 69 6e 67 20 63 6f 64 65 20 28 73 70 65 63 |cking code (spec| 000175f0 69 66 69 65 64 20 69 6e 20 54 72 61 63 6b 65 72 |ified in Tracker| 00017600 5f 4c 6f 63 6b 29 0a 0a 54 68 69 73 20 53 57 49 |_Lock)..This SWI| 00017610 20 73 68 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 | should be calle| 00017620 64 20 74 6f 20 75 6e 6c 6f 63 6b 20 74 68 65 20 |d to unlock the | 00017630 6d 6f 64 75 6c 65 20 61 66 74 65 72 20 69 74 20 |module after it | 00017640 68 61 73 20 62 65 65 6e 20 6c 6f 63 6b 65 64 20 |has been locked | 00017650 77 69 74 68 20 3c 54 72 61 63 6b 65 72 5f 4c 6f |with <Tracker_Lo| 00017660 63 6b 3e 2e 20 49 66 20 74 68 65 20 76 61 6c 75 |ck>. If the valu| 00017670 65 20 70 61 73 73 65 64 20 69 6e 20 52 30 20 69 |e passed in R0 i| 00017680 73 20 64 69 66 66 65 72 65 6e 74 20 74 6f 20 74 |s different to t| 00017690 68 65 20 6c 6f 63 6b 69 6e 67 20 63 6f 64 65 20 |he locking code | 000176a0 67 69 76 65 6e 20 69 6e 20 74 68 65 20 6c 6f 63 |given in the loc| 000176b0 6b 20 53 57 49 2c 20 6f 72 20 74 68 65 20 6d 6f |k SWI, or the mo| 000176c0 64 75 6c 65 20 68 61 73 20 6e 6f 74 20 62 65 65 |dule has not bee| 000176d0 6e 20 6c 6f 63 6b 65 64 2c 20 61 6e 20 65 72 72 |n locked, an err| 000176e0 6f 72 20 69 73 20 67 65 6e 65 72 61 74 65 64 2e |or is generated.| 000176f0 44 41 54 41 83 01 00 00 54 72 61 63 6b 65 72 5f |DATA....Tracker_| 00017700 4d 75 74 65 43 68 61 6e 6e 65 6c 20 20 28 26 34 |MuteChannel (&4| 00017710 33 32 30 46 29 0a 23 50 61 72 65 6e 74 20 54 72 |320F).#Parent Tr| 00017720 61 63 6b 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 63 |acker_.=>.R0 =.c| 00017730 68 61 6e 6e 65 6c 20 74 6f 20 6d 75 74 65 20 28 |hannel to mute (| 00017740 31 2d 38 29 0a 0a 54 68 69 73 20 53 57 49 20 61 |1-8)..This SWI a| 00017750 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 74 75 72 |llows you to tur| 00017760 6e 20 6f 66 66 20 73 65 6c 65 63 74 65 64 20 63 |n off selected c| 00017770 68 61 6e 6e 65 6c 73 20 77 68 69 6c 65 20 6c 65 |hannels while le| 00017780 61 76 69 6e 67 20 61 6c 6c 20 74 68 65 20 6f 74 |aving all the ot| 00017790 68 65 72 20 63 68 61 6e 6e 65 6c 73 20 75 6e 61 |her channels una| 000177a0 66 66 65 63 74 65 64 2e 20 54 68 65 20 63 68 61 |ffected. The cha| 000177b0 6e 6e 65 6c 73 20 63 61 6e 20 62 65 20 74 75 72 |nnels can be tur| 000177c0 6e 65 64 20 62 61 63 6b 20 6f 6e 20 62 79 20 75 |ned back on by u| 000177d0 73 69 6e 67 20 74 68 65 20 3c 54 72 61 63 6b 65 |sing the <Tracke| 000177e0 72 5f 52 65 73 74 6f 72 65 43 68 61 6e 6e 65 6c |r_RestoreChannel| 000177f0 3e 20 53 57 49 2e 0a 0a 4e 6f 20 65 72 72 6f 72 |> SWI...No error| 00017800 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 69 66 | is generated if| 00017810 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 6e 75 6d | the channel num| 00017820 62 65 72 20 69 73 20 68 69 67 68 65 72 20 74 68 |ber is higher th| 00017830 61 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 |an the number of| 00017840 20 63 68 61 6e 6e 65 6c 73 20 61 63 74 75 61 6c | channels actual| 00017850 6c 79 20 62 65 69 6e 67 20 75 73 65 64 20 62 79 |ly being used by| 00017860 20 74 68 65 20 54 72 61 63 6b 65 72 4d 6f 64 75 | the TrackerModu| 00017870 6c 65 2e 00 44 41 54 41 2f 01 00 00 54 72 61 63 |le..DATA/...Trac| 00017880 6b 65 72 5f 52 65 73 74 6f 72 65 43 68 61 6e 6e |ker_RestoreChann| 00017890 65 6c 20 20 28 26 34 33 32 31 30 29 0a 3d 3e 09 |el (&43210).=>.| 000178a0 52 30 20 3d 20 63 68 61 6e 6e 65 6c 20 74 6f 20 |R0 = channel to | 000178b0 74 75 72 6e 20 6f 6e 20 28 31 2d 38 29 0a 0a 54 |turn on (1-8)..T| 000178c0 68 69 73 20 53 57 49 20 77 69 6c 6c 20 72 65 76 |his SWI will rev| 000178d0 65 72 73 65 20 74 68 65 20 65 66 66 65 63 74 20 |erse the effect | 000178e0 6f 66 20 61 20 3c 54 72 61 63 6b 65 72 5f 4d 75 |of a <Tracker_Mu| 000178f0 74 65 43 68 61 6e 6e 65 6c 3e 20 53 57 49 2c 20 |teChannel> SWI, | 00017900 61 6e 64 20 74 75 72 6e 20 74 68 65 20 73 65 6c |and turn the sel| 00017910 65 63 74 65 64 20 63 68 61 6e 6e 65 6c 20 62 61 |ected channel ba| 00017920 63 6b 20 6f 6e 2e 0a 0a 4e 6f 20 65 72 72 6f 72 |ck on...No error| 00017930 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 69 66 | is generated if| 00017940 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 6e 75 6d | the channel num| 00017950 62 65 72 20 69 73 20 68 69 67 68 65 72 20 74 68 |ber is higher th| 00017960 61 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 |an the number of| 00017970 20 63 68 61 6e 6e 65 6c 73 20 61 63 74 75 61 6c | channels actual| 00017980 6c 79 20 62 65 69 6e 67 20 75 73 65 64 20 62 79 |ly being used by| 00017990 20 74 68 65 20 54 72 61 63 6b 65 72 4d 6f 64 75 | the TrackerModu| 000179a0 6c 65 2e 00 44 41 54 41 17 02 00 00 54 72 61 63 |le..DATA....Trac| 000179b0 6b 65 72 5f 53 70 65 65 64 20 20 28 26 34 33 32 |ker_Speed (&432| 000179c0 31 31 29 0a 23 50 61 72 65 6e 74 20 54 72 61 63 |11).#Parent Trac| 000179d0 6b 65 72 5f 0a 3d 3e 09 52 30 20 3d 09 6e 65 77 |ker_.=>.R0 =.new| 000179e0 20 73 70 65 65 64 20 73 65 74 74 69 6e 67 20 28 | speed setting (| 000179f0 30 2d 33 29 0a 0a 54 68 69 73 20 53 57 49 20 77 |0-3)..This SWI w| 00017a00 69 6c 6c 20 73 65 6c 65 63 74 20 74 68 65 20 66 |ill select the f| 00017a10 75 74 75 72 65 20 73 61 6d 70 6c 65 20 72 61 74 |uture sample rat| 00017a20 65 20 61 6e 64 20 6f 76 65 72 61 6c 6c 20 70 69 |e and overall pi| 00017a30 74 63 68 20 74 6f 20 63 61 74 65 72 20 66 6f 72 |tch to cater for| 00017a40 20 56 49 44 43 20 65 6e 68 61 6e 63 65 72 73 20 | VIDC enhancers | 00017a50 61 6e 64 20 38 2d 63 68 61 6e 6e 65 6c 20 74 75 |and 8-channel tu| 00017a60 6e 65 73 2c 20 74 61 6b 69 6e 67 20 65 66 66 65 |nes, taking effe| 00017a70 63 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 69 |ct immediately i| 00017a80 66 20 61 20 74 75 6e 65 20 69 73 20 63 75 72 72 |f a tune is curr| 00017a90 65 6e 74 6c 79 20 70 6c 61 79 69 6e 67 2e 0a 0a |ently playing...| 00017aa0 46 6f 72 20 64 65 74 61 69 6c 73 20 6f 66 20 74 |For details of t| 00017ab0 68 65 20 64 69 66 66 65 72 65 6e 74 20 6f 70 74 |he different opt| 00017ac0 69 6f 6e 73 20 73 65 65 20 74 68 65 20 63 6f 6d |ions see the com| 00017ad0 6d 61 6e 64 20 2a 50 6c 61 79 53 70 65 65 64 2e |mand *PlaySpeed.| 00017ae0 20 54 68 69 73 20 53 57 49 20 69 73 20 6e 6f 74 | This SWI is not| 00017af0 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 | included in the| 00017b00 20 6c 6f 63 6b 69 6e 67 20 73 79 73 74 65 6d 20 | locking system | 00017b10 62 65 63 61 75 73 65 20 69 74 20 77 61 73 20 6f |because it was o| 00017b20 6e 6c 79 20 69 6e 74 72 6f 64 75 63 65 64 20 69 |nly introduced i| 00017b30 6e 20 76 65 72 73 69 6f 6e 20 34 2e 30 34 2c 20 |n version 4.04, | 00017b40 61 6e 64 20 73 6f 6d 65 20 70 72 6f 67 72 61 6d |and some program| 00017b50 73 20 6d 61 79 20 68 61 76 65 20 61 6c 72 65 61 |s may have alrea| 00017b60 64 79 20 62 65 65 6e 20 77 72 69 74 74 65 6e 20 |dy been written | 00017b70 77 68 69 63 68 20 75 73 65 20 74 68 65 20 6c 6f |which use the lo| 00017b80 63 6b 69 6e 67 20 73 79 73 74 65 6d 20 62 75 74 |cking system but| 00017b90 20 64 6f 6e 27 74 20 63 6f 6e 74 72 6f 6c 20 74 | don't control t| 00017ba0 68 65 20 73 61 6d 70 6c 65 20 73 70 65 65 64 2f |he sample speed/| 00017bb0 70 69 74 63 68 20 65 74 63 2e 20 00 44 41 54 41 |pitch etc. .DATA| 00017bc0 03 02 00 00 54 72 61 63 6b 65 72 5f 56 6f 6c 75 |....Tracker_Volu| 00017bd0 6d 65 20 20 28 26 34 33 32 31 32 29 0a 23 50 61 |me (&43212).#Pa| 00017be0 72 65 6e 74 20 54 72 61 63 6b 65 72 5f 0a 3d 3e |rent Tracker_.=>| 00017bf0 09 52 30 20 3d 09 6e 65 77 20 6f 76 65 72 61 6c |.R0 =.new overal| 00017c00 6c 20 76 6f 6c 75 6d 65 20 28 30 2d 31 32 37 29 |l volume (0-127)| 00017c10 20 6f 72 20 2d 31 20 74 6f 20 72 65 61 64 20 76 | or -1 to read v| 00017c20 6f 6c 75 6d 65 0a 3c 3d 09 52 30 20 3d 09 6f 6c |olume.<=.R0 =.ol| 00017c30 64 20 76 6f 6c 75 6d 65 0a 0a 54 68 69 73 20 53 |d volume..This S| 00017c40 57 49 20 77 69 6c 6c 20 73 65 74 20 74 68 65 20 |WI will set the | 00017c50 6f 76 65 72 61 6c 6c 20 76 6f 6c 75 6d 65 20 6f |overall volume o| 00017c60 66 20 61 6e 79 20 74 75 6e 65 73 20 70 6c 61 79 |f any tunes play| 00017c70 69 6e 67 20 62 79 20 73 75 62 74 72 61 63 74 69 |ing by subtracti| 00017c80 6e 67 20 28 32 35 34 2d 76 6f 6c 75 6d 65 2a 32 |ng (254-volume*2| 00017c90 29 20 66 72 6f 6d 20 74 68 65 20 76 6f 6c 75 6d |) from the volum| 00017ca0 65 20 6f 66 20 61 6e 79 20 73 61 6d 70 6c 65 20 |e of any sample | 00017cb0 70 6c 61 79 69 6e 67 2e 20 54 68 69 73 20 74 61 |playing. This ta| 00017cc0 6b 65 73 20 65 66 66 65 63 74 20 69 6d 6d 65 64 |kes effect immed| 00017cd0 69 61 74 65 6c 79 2c 20 61 6e 64 20 61 6c 73 6f |iately, and also| 00017ce0 20 61 66 66 65 63 74 73 20 73 61 6d 70 6c 65 73 | affects samples| 00017cf0 20 77 68 69 63 68 20 61 72 65 20 69 6e 20 6d 69 | which are in mi| 00017d00 64 2d 70 6c 61 79 2e 20 20 43 61 6c 6c 69 6e 67 |d-play. Calling| 00017d10 20 74 68 65 20 53 57 49 20 77 69 74 68 20 52 30 | the SWI with R0| 00017d20 3d 2d 31 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 |=-1 will return | 00017d30 74 68 65 20 63 75 72 72 65 6e 74 20 76 6f 6c 75 |the current volu| 00017d40 6d 65 20 69 6e 20 52 30 2e 20 59 6f 75 20 63 61 |me in R0. You ca| 00017d50 6e 20 75 73 65 20 74 68 69 73 20 53 57 49 20 74 |n use this SWI t| 00017d60 6f 20 70 72 6f 76 69 64 65 20 73 6d 6f 6f 74 68 |o provide smooth| 00017d70 20 66 61 64 65 2d 6f 75 74 73 20 61 6e 64 20 66 | fade-outs and f| 00017d80 61 64 65 2d 69 6e 73 2c 20 66 6f 72 20 65 78 61 |ade-ins, for exa| 00017d90 6d 70 6c 65 2e 0a 0a 54 68 69 73 20 53 57 49 20 |mple...This SWI | 00017da0 69 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 6c |is part of the l| 00017db0 6f 63 6b 69 6e 67 20 73 79 73 74 65 6d 2e 0a 00 |ocking system...| 00017dc0 44 41 54 41 44 01 00 00 54 72 61 63 6b 65 72 5f |DATAD...Tracker_| 00017dd0 54 72 61 6e 73 6c 61 74 65 56 6f 6c 75 6d 65 20 |TranslateVolume | 00017de0 20 28 26 34 33 32 31 34 29 0a 23 50 61 72 65 6e | (&43214).#Paren| 00017df0 74 20 54 72 61 63 6b 65 72 5f 0a 3d 3e 09 52 30 |t Tracker_.=>.R0| 00017e00 20 3d 09 53 6f 75 6e 64 74 72 61 63 6b 65 72 20 | =.Soundtracker | 00017e10 76 6f 6c 75 6d 65 20 74 6f 20 63 6f 6e 76 65 72 |volume to conver| 00017e20 74 20 28 30 2d 36 34 29 0a 3c 3d 09 52 30 20 3d |t (0-64).<=.R0 =| 00017e30 09 4c 6f 67 61 72 69 74 68 6d 69 63 20 76 6f 6c |.Logarithmic vol| 00017e40 75 6d 65 20 28 30 2d 32 35 35 29 2c 20 32 35 35 |ume (0-255), 255| 00017e50 3d 6d 61 78 2e 0a 0a 54 68 69 73 20 53 57 49 20 |=max...This SWI | 00017e60 77 69 6c 6c 20 63 6f 6e 76 65 72 74 20 61 20 73 |will convert a s| 00017e70 6f 75 6e 64 74 72 61 63 6b 65 72 20 76 6f 6c 75 |oundtracker volu| 00017e80 6d 65 20 28 61 73 20 72 65 74 75 72 6e 65 64 20 |me (as returned | 00017e90 62 79 20 3c 54 72 61 63 6b 65 72 5f 52 65 61 64 |by <Tracker_Read| 00017ea0 53 61 6d 70 6c 65 54 61 62 6c 65 3e 20 77 68 65 |SampleTable> whe| 00017eb0 6e 20 61 20 73 6f 75 6e 64 74 72 61 63 6b 65 72 |n a soundtracker| 00017ec0 20 74 75 6e 65 20 69 73 20 70 6c 61 79 69 6e 67 | tune is playing| 00017ed0 29 20 69 6e 74 6f 20 61 20 54 72 61 63 6b 65 72 |) into a Tracker| 00017ee0 20 66 6f 72 6d 61 74 20 6c 6f 67 61 72 69 74 68 | format logarith| 00017ef0 6d 69 63 20 76 6f 6c 75 6d 65 20 28 30 2d 32 35 |mic volume (0-25| 00017f00 35 29 2e 0a 44 41 54 41 42 01 00 00 54 72 61 63 |5)..DATAB...Trac| 00017f10 6b 65 72 5f 55 70 64 61 74 65 44 61 74 61 20 20 |ker_UpdateData | 00017f20 28 26 34 33 32 31 35 29 0a 23 50 61 72 65 6e 74 |(&43215).#Parent| 00017f30 20 54 72 61 63 6b 65 72 5f 0a 54 68 69 73 20 69 | Tracker_.This i| 00017f40 73 20 72 65 61 6c 6c 79 20 61 6e 20 65 64 69 74 |s really an edit| 00017f50 6f 72 20 53 57 49 20 77 68 69 63 68 20 79 6f 75 |or SWI which you| 00017f60 20 73 68 6f 75 6c 64 20 63 61 6c 6c 20 77 68 65 | should call whe| 00017f70 6e 65 76 65 72 20 79 6f 75 20 61 6c 74 65 72 20 |never you alter | 00017f80 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f |one of the follo| 00017f90 77 69 6e 67 2c 20 73 6f 20 74 68 61 74 20 74 68 |wing, so that th| 00017fa0 65 20 6d 6f 64 75 6c 65 20 63 61 6e 20 75 70 64 |e module can upd| 00017fb0 61 74 65 20 69 74 73 20 64 61 74 61 3a 2d 0a 23 |ate its data:-.#| 00017fc0 49 6e 64 65 6e 74 20 32 0a 8f 09 4e 75 6d 62 65 |Indent 2...Numbe| 00017fd0 72 20 6f 66 20 76 6f 69 63 65 73 20 28 61 6e 64 |r of voices (and| 00017fe0 20 74 68 65 72 65 66 6f 72 65 20 70 61 74 74 65 | therefore patte| 00017ff0 72 6e 20 6c 65 6e 67 74 68 29 0a 8f 09 53 61 6d |rn length)...Sam| 00018000 70 6c 65 20 6c 65 6e 67 74 68 2f 6c 6f 61 64 20 |ple length/load | 00018010 6e 65 77 20 73 61 6d 70 6c 65 0a 8f 09 4d 75 73 |new sample...Mus| 00018020 69 63 20 6c 65 6e 67 74 68 0a 8f 09 53 74 65 72 |ic length...Ster| 00018030 65 6f 20 73 65 74 74 69 6e 67 73 20 28 54 72 61 |eo settings (Tra| 00018040 63 6b 65 72 29 0a 00 00 44 41 54 41 f7 01 00 00 |cker)...DATA....| 00018050 4e 6f 74 65 20 74 72 61 6e 73 6c 61 74 69 6f 6e |Note translation| 00018060 20 74 61 62 6c 65 0a 5c 23 09 4e 6f 74 65 09 53 | table.\#.Note.S| 00018070 61 6d 70 6c 65 20 70 65 72 69 6f 64 0a 23 4c 49 |ample period.#LI| 00018080 4e 45 0a 31 09 43 20 2d 31 09 26 33 35 38 0a 32 |NE.1.C -1.&358.2| 00018090 09 43 23 2d 31 09 26 33 32 38 0a 33 09 44 20 2d |.C#-1.&328.3.D -| 000180a0 31 09 26 32 46 41 0a 34 09 44 23 2d 31 09 26 32 |1.&2FA.4.D#-1.&2| 000180b0 44 30 0a 35 09 45 20 2d 31 09 26 32 41 36 0a 36 |D0.5.E -1.&2A6.6| 000180c0 09 46 20 2d 31 09 26 32 38 30 0a 37 09 46 23 2d |.F -1.&280.7.F#-| 000180d0 31 09 26 32 35 43 0a 38 09 47 20 2d 31 09 26 32 |1.&25C.8.G -1.&2| 000180e0 33 41 0a 39 09 47 23 2d 31 09 26 32 31 41 0a 31 |3A.9.G#-1.&21A.1| 000180f0 30 09 41 20 2d 31 09 26 31 46 43 0a 31 31 09 41 |0.A -1.&1FC.11.A| 00018100 23 2d 31 09 26 31 45 30 0a 31 32 09 42 20 2d 31 |#-1.&1E0.12.B -1| 00018110 09 26 31 43 35 0a 31 33 09 43 20 2d 32 09 26 31 |.&1C5.13.C -2.&1| 00018120 41 43 0a 31 34 09 43 23 2d 32 09 26 31 39 34 0a |AC.14.C#-2.&194.| 00018130 31 35 09 44 20 2d 32 09 26 31 37 44 0a 31 36 09 |15.D -2.&17D.16.| 00018140 44 23 2d 32 09 26 31 36 38 0a 31 37 09 45 20 2d |D#-2.&168.17.E -| 00018150 32 09 26 31 35 33 0a 31 38 09 46 20 2d 32 09 26 |2.&153.18.F -2.&| 00018160 31 34 30 0a 31 39 09 46 23 2d 32 09 26 31 32 45 |140.19.F#-2.&12E| 00018170 0a 32 30 09 47 20 2d 32 09 26 31 31 44 0a 32 31 |.20.G -2.&11D.21| 00018180 09 47 23 2d 32 09 26 31 30 44 0a 32 32 09 41 20 |.G#-2.&10D.22.A | 00018190 2d 32 09 26 46 45 0a 32 33 09 41 23 2d 32 09 26 |-2.&FE.23.A#-2.&| 000181a0 46 30 0a 32 34 09 42 20 2d 32 09 26 45 32 0a 32 |F0.24.B -2.&E2.2| 000181b0 35 09 43 20 2d 33 09 26 44 36 0a 32 36 09 43 23 |5.C -3.&D6.26.C#| 000181c0 2d 33 09 26 43 41 0a 32 37 09 44 20 2d 33 09 26 |-3.&CA.27.D -3.&| 000181d0 42 45 0a 32 38 09 44 23 2d 33 09 26 42 34 0a 32 |BE.28.D#-3.&B4.2| 000181e0 39 09 45 20 2d 33 09 26 41 41 0a 33 30 09 46 20 |9.E -3.&AA.30.F | 000181f0 2d 33 09 26 41 30 0a 33 31 09 46 23 2d 33 09 26 |-3.&A0.31.F#-3.&| 00018200 39 37 0a 33 32 09 47 20 2d 33 09 26 38 46 0a 33 |97.32.G -3.&8F.3| 00018210 33 09 47 23 2d 33 09 26 38 37 0a 33 34 09 41 20 |3.G#-3.&87.34.A | 00018220 2d 33 09 26 37 46 0a 33 35 09 41 23 2d 33 09 26 |-3.&7F.35.A#-3.&| 00018230 37 38 0a 33 36 09 42 20 2d 33 09 26 37 31 0a 00 |78.36.B -3.&71..| 00018240 44 41 54 41 d9 0b 00 00 54 72 61 63 6b 65 72 20 |DATA....Tracker | 00018250 61 6e 64 20 53 6f 75 6e 64 74 72 61 63 6b 65 72 |and Soundtracker| 00018260 20 63 6f 6d 6d 61 6e 64 73 0a 49 6e 20 61 6c 6c | commands.In all| 00018270 20 74 75 6e 65 73 2c 20 74 68 65 72 65 20 61 72 | tunes, there ar| 00018280 65 20 73 70 65 63 69 61 6c 20 63 6f 6d 6d 61 6e |e special comman| 00018290 64 73 20 77 68 69 63 68 20 68 61 76 65 20 61 20 |ds which have a | 000182a0 74 79 70 65 20 28 30 2d 26 46 20 66 6f 72 20 61 |type (0-&F for a| 000182b0 6d 69 67 61 2c 20 30 2d 39 20 26 20 41 2d 5a 20 |miga, 0-9 & A-Z | 000182c0 66 6f 72 20 54 72 61 63 6b 65 72 29 20 61 6e 64 |for Tracker) and| 000182d0 20 64 61 74 61 20 28 75 73 75 61 6c 6c 79 20 70 | data (usually p| 000182e0 72 65 73 65 6e 74 65 64 20 61 73 20 61 20 68 65 |resented as a he| 000182f0 78 20 62 79 74 65 2c 20 69 65 2e 20 26 58 58 29 |x byte, ie. &XX)| 00018300 2c 20 77 68 69 63 68 20 69 73 20 73 6f 6d 65 74 |, which is somet| 00018310 69 6d 65 73 20 74 72 65 61 74 65 64 20 61 73 20 |imes treated as | 00018320 74 77 6f 20 73 65 70 65 72 61 74 65 20 6e 69 62 |two seperate nib| 00018330 62 6c 65 73 20 28 69 65 2e 20 61 72 70 65 67 67 |bles (ie. arpegg| 00018340 69 6f 29 2e 0a 41 20 6c 69 73 74 20 6f 66 20 74 |io)..A list of t| 00018350 68 65 20 63 6f 6d 6d 61 6e 64 73 20 66 6f 75 6e |he commands foun| 00018360 64 20 69 6e 20 54 72 61 63 6b 65 72 2f 53 54 72 |d in Tracker/STr| 00018370 61 63 6b 65 72 20 74 75 6e 65 73 20 69 73 20 61 |acker tunes is a| 00018380 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a 43 6f 6d 6d |s follows:..Comm| 00018390 61 6e 64 09 20 45 66 66 65 63 74 0a 23 4c 49 4e |and. Effect.#LIN| 000183a0 45 0a 30 20 28 62 6f 74 68 29 09 41 72 70 65 67 |E.0 (both).Arpeg| 000183b0 67 69 6f 20 2d 0a 09 09 6e 6f 74 65 32 3d 3c 62 |gio -...note2=<b| 000183c0 61 73 65 20 6e 6f 74 65 3d 3e 54 72 61 63 6b 65 |ase note=>Tracke| 000183d0 72 5f 4e 6f 74 65 54 61 62 6c 65 3e 2b 28 66 69 |r_NoteTable>+(fi| 000183e0 72 73 74 20 64 69 67 69 74 20 6f 66 20 64 61 74 |rst digit of dat| 000183f0 61 29 20 73 65 6d 69 74 6f 6e 65 73 0a 09 09 6e |a) semitones...n| 00018400 6f 74 65 33 3d 20 22 20 22 20 2b 28 73 65 63 6f |ote3= " " +(seco| 00018410 6e 64 20 22 22 09 20 22 29 20 22 0a 09 50 6c 61 |nd "". ") "..Pla| 00018420 79 20 6e 6f 74 65 33 20 66 6f 72 20 6f 6e 65 20 |y note3 for one | 00018430 76 73 79 6e 63 2c 20 74 68 65 6e 20 6e 6f 74 65 |vsync, then note| 00018440 32 2c 20 62 61 73 65 20 6e 6f 74 65 2c 20 6e 6f |2, base note, no| 00018450 74 65 33 2c 20 6e 6f 74 65 32 20 61 6e 64 20 74 |te3, note2 and t| 00018460 68 65 6e 20 74 68 65 20 62 61 73 65 20 6e 6f 74 |hen the base not| 00018470 65 20 74 6f 20 61 63 68 69 65 76 65 20 61 20 63 |e to achieve a c| 00018480 68 6f 72 64 20 65 66 66 65 63 74 20 28 69 65 2e |hord effect (ie.| 00018490 20 43 2d 32 20 77 69 74 68 20 63 6f 6d 6d 61 6e | C-2 with comman| 000184a0 64 20 30 20 64 61 74 61 20 27 26 34 37 27 20 28 |d 0 data '&47' (| 000184b0 68 65 78 29 20 77 6f 75 6c 64 20 70 6c 61 79 20 |hex) would play | 000184c0 61 20 6d 61 6a 6f 72 20 61 72 70 65 67 67 69 6f |a major arpeggio| 000184d0 20 6f 66 20 43 2d 32 2c 20 45 2d 32 2c 20 47 2d | of C-2, E-2, G-| 000184e0 32 2e 49 66 20 74 68 65 20 73 70 65 65 64 20 69 |2.If the speed i| 000184f0 73 20 6c 65 73 73 20 74 68 61 6e 20 36 2c 20 74 |s less than 6, t| 00018500 68 65 20 61 72 70 65 67 67 69 6f 20 77 69 6c 6c |he arpeggio will| 00018510 20 62 65 20 63 75 74 20 73 68 6f 72 74 2e 0a 0a | be cut short...| 00018520 31 20 28 62 6f 74 68 29 09 50 69 74 63 68 20 73 |1 (both).Pitch s| 00018530 6c 69 64 65 20 28 70 6f 72 74 61 6d 65 6e 74 6f |lide (portamento| 00018540 20 75 70 29 20 2d 0a 09 57 68 69 6c 65 20 74 68 | up) -..While th| 00018550 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 70 6c 61 |e command is pla| 00018560 79 69 6e 67 2c 20 44 45 43 52 45 4d 45 4e 54 20 |ying, DECREMENT | 00018570 74 68 65 20 73 61 6d 70 6c 65 20 70 65 72 69 6f |the sample perio| 00018580 64 20 62 79 20 5c 3c 70 61 72 61 6d 65 74 65 72 |d by \<parameter| 00018590 3e 20 28 30 2d 31 35 20 75 73 75 61 6c 6c 79 29 |> (0-15 usually)| 000185a0 2e 20 54 68 69 73 20 68 61 73 20 74 68 65 20 65 |. This has the e| 000185b0 66 66 65 63 74 20 6f 66 20 49 4e 43 52 45 41 53 |ffect of INCREAS| 000185c0 49 4e 47 20 74 68 65 20 70 69 74 63 68 20 73 6d |ING the pitch sm| 000185d0 6f 6f 74 68 6c 79 20 77 69 74 68 6f 75 74 20 72 |oothly without r| 000185e0 65 73 74 61 72 74 69 6e 67 20 74 68 65 20 73 61 |estarting the sa| 000185f0 6d 70 6c 65 2e 20 4e 6f 74 65 20 74 68 61 74 20 |mple. Note that | 00018600 74 68 65 20 70 69 74 63 68 20 67 61 69 6e 65 64 |the pitch gained| 00018610 20 62 79 20 61 20 66 69 78 65 64 20 63 68 61 6e | by a fixed chan| 00018620 67 65 20 74 6f 20 74 68 65 20 73 61 6d 70 6c 65 |ge to the sample| 00018630 20 70 65 72 69 6f 64 20 69 73 20 6e 6f 74 20 63 | period is not c| 00018640 6f 6e 73 74 61 6e 74 20 6f 76 65 72 20 74 68 65 |onstant over the| 00018650 20 33 20 6f 63 74 61 76 65 73 2e 0a 0a 32 20 28 | 3 octaves...2 (| 00018660 62 6f 74 68 29 09 50 69 74 63 68 20 73 6c 69 64 |both).Pitch slid| 00018670 65 20 28 70 6f 72 74 61 6d 65 6e 74 6f 20 64 6f |e (portamento do| 00018680 77 6e 29 20 2d 0a 09 4c 69 6b 65 20 63 6f 6d 6d |wn) -..Like comm| 00018690 61 6e 64 20 31 20 62 75 74 20 73 6c 69 64 65 73 |and 1 but slides| 000186a0 20 74 68 65 20 70 69 74 63 68 20 64 6f 77 6e 2e | the pitch down.| 000186b0 0a 0a 33 20 28 61 6d 69 67 61 20 6f 6e 6c 79 29 |..3 (amiga only)| 000186c0 09 50 6f 72 74 61 6d 65 6e 74 6f 20 2d 0a 09 53 |.Portamento -..S| 000186d0 6f 75 6e 64 73 20 73 69 6d 69 6c 61 72 20 74 6f |ounds similar to| 000186e0 20 63 6f 6d 6d 61 6e 64 73 20 31 20 26 20 32 2c | commands 1 & 2,| 000186f0 20 62 75 74 20 62 65 68 61 76 65 73 20 64 69 66 | but behaves dif| 00018700 66 65 72 65 6e 74 6c 79 2e 20 57 68 65 6e 20 79 |ferently. When y| 00018710 6f 75 20 75 73 65 20 63 6f 6d 6d 61 6e 64 20 33 |ou use command 3| 00018720 20 77 69 74 68 20 61 20 6e 6f 74 65 20 73 70 65 | with a note spe| 00018730 63 69 66 69 65 64 2c 20 74 68 65 20 6e 6f 74 65 |cified, the note| 00018740 20 69 73 20 6e 6f 74 20 70 6c 61 79 65 64 2c 20 | is not played, | 00018750 62 75 74 20 74 68 65 20 70 69 74 63 68 20 6f 66 |but the pitch of| 00018760 20 74 68 65 20 6e 6f 74 65 20 69 73 20 73 65 74 | the note is set| 00018770 20 61 73 20 74 68 65 20 27 67 6f 61 6c 27 20 6f | as the 'goal' o| 00018780 66 20 74 68 65 20 70 6f 72 74 61 6d 65 6e 74 6f |f the portamento| 00018790 2e 20 54 68 65 6e 2c 20 77 68 65 6e 65 76 65 72 |. Then, whenever| 000187a0 20 61 20 63 6f 6d 6d 61 6e 64 20 33 20 63 6f 6d | a command 3 com| 000187b0 65 73 20 75 70 2c 20 74 68 65 20 70 69 74 63 68 |es up, the pitch| 000187c0 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c | is automaticall| 000187d0 79 20 73 6c 69 64 65 64 20 69 6e 20 74 68 65 20 |y slided in the | 000187e0 61 70 70 72 6f 70 72 69 61 74 65 20 64 69 72 65 |appropriate dire| 000187f0 63 74 69 6f 6e 20 62 79 20 74 68 65 20 76 61 6c |ction by the val| 00018800 75 65 20 6c 61 73 74 20 67 69 76 65 6e 20 61 73 |ue last given as| 00018810 20 61 20 70 61 72 61 6d 65 74 65 72 20 66 6f 72 | a parameter for| 00018820 20 63 6f 6d 6d 61 6e 64 20 33 2c 20 75 6e 74 69 | command 3, unti| 00018830 6c 20 74 68 65 20 27 67 6f 61 6c 27 20 69 73 20 |l the 'goal' is | 00018840 6d 65 74 2c 20 61 6e 64 20 66 75 72 74 68 65 72 |met, and further| 00018850 20 63 6f 6d 6d 61 6e 64 20 33 27 73 20 77 69 6c | command 3's wil| 00018860 6c 20 68 61 76 65 20 6e 6f 20 65 66 66 65 63 74 |l have no effect| 00018870 2e 0a 0a 34 20 28 61 6d 69 67 61 20 6f 6e 6c 79 |...4 (amiga only| 00018880 29 09 56 69 62 72 61 74 6f 20 2d 0a 09 54 68 69 |).Vibrato -..Thi| 00018890 73 20 63 61 75 73 65 73 20 74 68 65 20 76 6f 6c |s causes the vol| 000188a0 75 6d 65 20 74 6f 20 72 69 73 65 20 61 6e 64 20 |ume to rise and | 000188b0 66 61 6c 6c 20 69 6e 20 61 20 77 61 72 62 6c 69 |fall in a warbli| 000188c0 6e 67 20 65 66 66 65 63 74 2e 20 54 68 65 20 66 |ng effect. The f| 000188d0 69 72 73 74 20 64 69 67 69 74 20 67 69 76 65 73 |irst digit gives| 000188e0 20 74 68 65 20 73 70 65 65 64 20 6f 66 20 74 68 | the speed of th| 000188f0 65 20 76 6f 6c 75 6d 65 20 63 68 61 6e 67 65 20 |e volume change | 00018900 28 31 3d 73 6c 6f 77 2c 20 26 46 3d 66 61 73 74 |(1=slow, &F=fast| 00018910 29 2c 20 61 6e 64 20 74 68 65 20 73 65 63 6f 6e |), and the secon| 00018920 64 20 64 69 67 69 74 20 67 69 76 65 73 20 74 68 |d digit gives th| 00018930 65 20 6d 61 67 6e 69 74 75 64 65 20 6f 66 20 74 |e magnitude of t| 00018940 68 65 20 76 69 62 72 61 74 6f 2e 20 54 68 65 20 |he vibrato. The | 00018950 76 69 62 72 61 74 6f 20 69 73 20 63 72 65 61 74 |vibrato is creat| 00018960 65 64 20 62 79 20 73 75 62 74 72 61 63 74 69 6e |ed by subtractin| 00018970 67 20 61 20 73 69 6e 75 73 6f 69 64 61 6c 6c 79 |g a sinusoidally| 00018980 20 76 61 72 79 69 6e 67 20 61 6d 6f 75 6e 74 20 | varying amount | 00018990 66 72 6f 6d 20 74 68 65 20 76 6f 6c 75 6d 65 20 |from the volume | 000189a0 6f 66 20 74 68 65 20 63 68 61 6e 6e 65 6c 2e 0a |of the channel..| 000189b0 0a 35 2c 36 2c 37 20 28 61 6d 69 67 61 29 09 43 |.5,6,7 (amiga).C| 000189c0 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 74 |ombinations of t| 000189d0 68 65 20 76 6f 6c 75 6d 65 20 61 6e 64 20 70 69 |he volume and pi| 000189e0 74 63 68 20 73 6c 69 64 65 73 20 28 4e 6f 74 20 |tch slides (Not | 000189f0 69 6d 70 6c 65 6d 65 6e 74 65 64 29 0a 0a 39 20 |implemented)..9 | 00018a00 28 61 6d 69 67 61 20 6f 6e 6c 79 29 09 53 65 74 |(amiga only).Set| 00018a10 20 73 61 6d 70 6c 65 20 6f 66 66 73 65 74 20 28 | sample offset (| 00018a20 4e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 29 |Not implemented)| 00018a30 2e 0a 0a 41 20 28 61 6d 69 67 61 29 09 56 6f 6c |...A (amiga).Vol| 00018a40 75 6d 65 20 73 6c 69 64 65 20 2d 0a 09 49 66 20 |ume slide -..If | 00018a50 74 68 65 20 66 69 72 73 74 20 6e 69 62 62 6c 65 |the first nibble| 00018a60 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 64 | is non-zero, ad| 00018a70 64 20 74 68 69 73 20 76 61 6c 75 65 20 74 6f 20 |d this value to | 00018a80 74 68 65 20 63 75 72 72 65 6e 74 20 76 6f 6c 75 |the current volu| 00018a90 6d 65 20 65 76 65 72 79 20 76 73 79 6e 63 2c 20 |me every vsync, | 00018aa0 65 6c 73 65 20 73 75 62 74 72 61 63 74 20 74 68 |else subtract th| 00018ab0 65 20 73 65 63 6f 6e 64 20 6e 69 62 62 6c 65 20 |e second nibble | 00018ac0 69 6e 20 61 20 73 69 6d 69 6c 61 72 20 66 61 73 |in a similar fas| 00018ad0 68 69 6f 6e 2e 0a 0a 47 2c 20 48 20 28 54 72 61 |hion...G, H (Tra| 00018ae0 63 6b 65 72 29 09 56 6f 6c 75 6d 65 20 73 6c 69 |cker).Volume sli| 00018af0 64 65 20 75 70 2c 20 64 6f 77 6e 20 2d 0a 09 54 |de up, down -..T| 00018b00 68 65 73 65 20 63 6f 6d 6d 61 6e 64 73 20 61 72 |hese commands ar| 00018b10 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 |e the same as th| 00018b20 65 20 41 20 63 6f 6d 6d 61 6e 64 20 6f 6e 20 74 |e A command on t| 00018b30 68 65 20 61 6d 69 67 61 2c 20 62 75 74 20 74 61 |he amiga, but ta| 00018b40 6b 65 20 61 20 62 79 74 65 20 70 61 72 61 6d 65 |ke a byte parame| 00018b50 74 65 72 2e 0a 0a 42 20 28 61 6d 69 67 61 29 09 |ter...B (amiga).| 00018b60 50 6f 73 69 74 69 6f 6e 20 6a 75 6d 70 20 2d 0a |Position jump -.| 00018b70 4a 20 28 54 72 61 63 6b 65 72 29 09 57 68 65 6e |J (Tracker).When| 00018b80 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 69 73 | this command is| 00018b90 20 6d 65 74 2c 20 6a 75 6d 70 20 74 6f 20 70 6f | met, jump to po| 00018ba0 73 69 74 69 6f 6e 20 5c 3c 70 61 72 61 6d 65 74 |sition \<paramet| 00018bb0 65 72 3e 20 69 6e 20 73 6f 6e 67 2e 0a 0a 42 20 |er> in song...B | 00018bc0 28 54 72 61 63 6b 65 72 29 09 42 72 65 61 6b 20 |(Tracker).Break | 00018bd0 70 61 74 74 65 72 6e 20 2d 0a 09 45 71 75 69 76 |pattern -..Equiv| 00018be0 61 6c 65 6e 74 20 74 6f 20 61 6d 69 67 61 20 63 |alent to amiga c| 00018bf0 6f 6d 6d 61 6e 64 20 44 0a 0a 43 20 28 61 6d 69 |ommand D..C (ami| 00018c00 67 61 29 09 53 65 74 20 76 6f 6c 75 6d 65 20 2d |ga).Set volume -| 00018c10 0a 56 20 28 54 72 61 63 6b 65 72 29 09 41 6c 74 |.V (Tracker).Alt| 00018c20 65 72 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 |ers the current | 00018c30 76 6f 6c 75 6d 65 20 6f 66 20 74 68 65 20 63 68 |volume of the ch| 00018c40 61 6e 6e 65 6c 20 74 6f 20 74 68 65 20 76 61 6c |annel to the val| 00018c50 75 65 20 73 70 65 63 69 66 69 65 64 20 28 30 2d |ue specified (0-| 00018c60 36 34 20 61 6d 69 67 61 2c 20 30 2d 32 35 35 20 |64 amiga, 0-255 | 00018c70 61 72 63 29 2e 20 56 6f 6c 75 6d 65 20 30 20 6d |arc). Volume 0 m| 00018c80 65 61 6e 73 20 6d 75 74 65 20 73 6f 75 6e 64 2e |eans mute sound.| 00018c90 0a 0a 44 20 28 61 6d 69 67 61 29 09 42 72 65 61 |..D (amiga).Brea| 00018ca0 6b 20 70 61 74 74 65 72 6e 20 2d 0a 42 20 28 54 |k pattern -.B (T| 00018cb0 72 61 63 6b 65 72 29 09 57 68 65 6e 20 74 68 69 |racker).When thi| 00018cc0 73 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 6e 63 |s command is enc| 00018cd0 6f 75 6e 74 65 72 65 64 2c 20 74 68 65 20 70 61 |ountered, the pa| 00018ce0 74 74 65 72 6e 20 69 73 20 65 6e 64 65 64 2c 20 |ttern is ended, | 00018cf0 61 6e 64 20 74 68 65 20 6e 65 78 74 20 70 61 74 |and the next pat| 00018d00 74 65 72 6e 20 6a 75 6d 70 65 64 20 74 6f 2e 0a |tern jumped to..| 00018d10 0a 45 20 28 61 6d 69 67 61 29 09 56 61 72 69 6f |.E (amiga).Vario| 00018d20 75 73 20 63 6f 6d 6d 61 6e 64 73 20 28 69 65 2e |us commands (ie.| 00018d30 20 68 2f 77 20 66 69 6c 74 65 72 20 63 6f 6d 6d | h/w filter comm| 00018d40 61 6e 64 73 29 20 5b 4e 6f 74 20 69 6d 70 6c 65 |ands) [Not imple| 00018d50 6d 65 6e 74 65 64 5d 2e 0a 0a 45 20 28 54 72 61 |mented]...E (Tra| 00018d60 63 6b 65 72 29 09 53 65 74 20 73 74 65 72 65 6f |cker).Set stereo| 00018d70 20 2d 0a 09 53 65 74 20 74 68 65 20 73 74 65 72 | -..Set the ster| 00018d80 65 6f 20 70 6f 73 69 74 69 6f 6e 20 28 31 2d 37 |eo position (1-7| 00018d90 29 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 |) of the current| 00018da0 20 73 6f 75 6e 64 20 63 68 61 6e 6e 65 6c 0a 09 | sound channel..| 00018db0 28 31 2d 38 29 2e 0a 0a 46 20 28 61 6d 69 67 61 |(1-8)...F (amiga| 00018dc0 29 09 53 65 74 20 73 70 65 65 64 20 2d 0a 53 20 |).Set speed -.S | 00018dd0 28 54 72 61 63 6b 65 72 29 09 53 65 74 73 20 74 |(Tracker).Sets t| 00018de0 68 65 20 73 70 65 65 64 20 28 6e 75 6d 62 65 72 |he speed (number| 00018df0 20 6f 66 20 76 73 79 6e 63 73 20 62 65 74 77 65 | of vsyncs betwe| 00018e00 65 6e 20 65 76 65 6e 74 73 29 20 74 6f 20 70 61 |en events) to pa| 00018e10 72 61 6d 65 74 65 72 2e 0a 00 00 00 44 41 54 41 |rameter.....DATA| 00018e20 b6 06 00 00 45 72 72 6f 72 73 20 67 65 6e 65 72 |....Errors gener| 00018e30 61 74 65 64 20 62 79 20 54 72 61 63 6b 65 72 4d |ated by TrackerM| 00018e40 6f 64 75 6c 65 0a 45 72 72 6f 72 09 4e 61 6d 65 |odule.Error.Name| 00018e50 09 4d 65 61 6e 69 6e 67 0a 23 4c 49 4e 45 0a 26 |.Meaning.#LINE.&| 00018e60 34 33 32 30 30 09 4e 6f 20 74 75 6e 65 20 6c 6f |43200.No tune lo| 00018e70 61 64 65 64 20 20 20 20 20 20 20 20 09 41 6e 20 |aded .An | 00018e80 6f 70 65 72 61 74 69 6f 6e 20 77 61 73 20 61 74 |operation was at| 00018e90 74 65 6d 70 74 65 64 20 77 68 69 63 68 20 72 65 |tempted which re| 00018ea0 71 75 69 72 65 73 20 61 20 74 75 6e 65 20 74 6f |quires a tune to| 00018eb0 20 62 65 20 6c 6f 61 64 65 64 20 69 6e 74 6f 20 | be loaded into | 00018ec0 6d 65 6d 6f 72 79 20 62 65 66 6f 72 65 20 68 61 |memory before ha| 00018ed0 6e 64 20 75 73 69 6e 67 20 2a 50 6c 61 79 4d 6f |nd using *PlayMo| 00018ee0 64 20 6f 72 20 3c 54 72 61 63 6b 65 72 5f 4c 6f |d or <Tracker_Lo| 00018ef0 61 64 3e 2e 0a 26 34 33 32 30 31 09 53 65 71 75 |ad>..&43201.Sequ| 00018f00 65 6e 63 65 20 70 6f 73 69 74 69 6f 6e 20 6f 75 |ence position ou| 00018f10 74 20 6f 66 20 72 61 6e 67 65 09 54 68 65 20 73 |t of range.The s| 00018f20 65 71 75 65 6e 63 65 20 70 6f 73 69 74 69 6f 6e |equence position| 00018f30 20 67 69 76 65 6e 20 77 69 74 68 20 2a 50 6c 61 | given with *Pla| 00018f40 79 50 6f 73 20 6f 72 20 53 57 49 20 3c 54 72 61 |yPos or SWI <Tra| 00018f50 63 6b 65 72 5f 53 65 74 50 6f 73 3e 20 77 61 73 |cker_SetPos> was| 00018f60 20 68 69 67 68 65 72 20 74 68 61 6e 20 74 68 65 | higher than the| 00018f70 20 61 63 74 75 61 6c 20 6e 75 6d 62 65 72 20 6f | actual number o| 00018f80 66 20 70 61 74 74 65 72 6e 73 20 69 6e 20 74 68 |f patterns in th| 00018f90 65 20 73 6f 6e 67 2e 0a 26 34 33 32 30 32 09 4e |e song..&43202.N| 00018fa0 6f 20 72 6f 6f 6d 20 66 6f 72 20 6d 6f 64 75 6c |o room for modul| 00018fb0 65 20 20 20 20 09 54 68 65 20 74 72 61 63 6b 65 |e .The tracke| 00018fc0 72 6d 6f 64 75 6c 65 20 63 6f 75 6c 64 20 6e 6f |rmodule could no| 00018fd0 74 20 63 6c 61 69 6d 20 65 6e 6f 75 67 68 20 52 |t claim enough R| 00018fe0 4d 41 20 77 6f 72 6b 73 70 61 63 65 20 74 6f 20 |MA workspace to | 00018ff0 6c 6f 61 64 20 74 68 65 20 6d 6f 64 75 6c 65 2e |load the module.| 00019000 20 54 6f 20 67 65 74 20 6d 6f 72 65 20 6d 65 6d | To get more mem| 00019010 6f 72 79 2c 20 71 75 69 74 20 62 61 73 69 63 20 |ory, quit basic | 00019020 74 6f 20 74 68 65 20 73 75 70 65 72 76 69 73 6f |to the superviso| 00019030 72 20 70 72 6f 6d 70 74 2c 20 61 6e 64 20 72 65 |r prompt, and re| 00019040 74 72 79 2e 20 49 66 20 79 6f 75 20 61 72 65 20 |try. If you are | 00019050 75 73 69 6e 67 20 74 68 65 20 64 65 73 6b 74 6f |using the deskto| 00019060 70 20 69 6e 73 74 65 61 64 2c 20 72 65 6d 6f 76 |p instead, remov| 00019070 65 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e |e an application| 00019080 20 61 6e 64 20 72 65 74 72 79 2e 0a 26 34 33 32 | and retry..&432| 00019090 30 33 09 43 68 61 6e 6e 65 6c 20 6e 75 6d 62 65 |03.Channel numbe| 000190a0 72 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 09 54 |r out of range.T| 000190b0 68 65 20 73 6f 75 6e 64 20 63 68 61 6e 6e 65 6c |he sound channel| 000190c0 20 6e 75 6d 62 65 72 20 77 61 73 20 6e 6f 74 20 | number was not | 000190d0 61 20 76 61 6c 75 65 20 62 65 74 77 65 65 6e 20 |a value between | 000190e0 31 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 |1 and the number| 000190f0 20 6f 66 20 73 6f 75 6e 64 20 63 68 61 6e 6e 65 | of sound channe| 00019100 6c 73 20 75 73 65 64 20 66 6f 72 20 74 68 61 74 |ls used for that| 00019110 20 70 61 72 74 69 63 75 6c 61 72 20 74 75 6e 65 | particular tune| 00019120 2e 0a 26 34 33 32 30 34 09 53 61 6d 70 6c 65 20 |..&43204.Sample | 00019130 6e 75 6d 62 65 72 20 6f 75 74 20 6f 66 20 72 61 |number out of ra| 00019140 6e 67 65 09 54 68 65 20 73 61 6d 70 6c 65 20 6e |nge.The sample n| 00019150 75 6d 62 65 72 20 77 61 73 20 6e 6f 74 20 77 69 |umber was not wi| 00019160 74 68 69 6e 20 74 68 65 20 72 61 6e 67 65 20 6f |thin the range o| 00019170 66 20 31 2d 33 36 2e 0a 26 34 33 32 30 35 09 4e |f 1-36..&43205.N| 00019180 6f 74 65 20 6e 75 6d 62 65 72 20 6f 75 74 20 6f |ote number out o| 00019190 66 20 72 61 6e 67 65 09 54 68 65 20 6e 6f 74 65 |f range.The note| 000191a0 20 6e 75 6d 62 65 72 20 77 61 73 20 6e 6f 74 20 | number was not | 000191b0 77 69 74 68 69 6e 20 74 68 65 20 72 61 6e 67 65 |within the range| 000191c0 20 6f 66 20 31 2d 33 36 2e 0a 26 34 33 32 30 36 | of 1-36..&43206| 000191d0 09 56 6f 6c 75 6d 65 20 6f 75 74 20 6f 66 20 72 |.Volume out of r| 000191e0 61 6e 67 65 09 54 68 65 20 76 6f 6c 75 6d 65 20 |ange.The volume | 000191f0 77 61 73 20 6e 6f 74 20 77 69 74 68 69 6e 20 74 |was not within t| 00019200 68 65 20 72 61 6e 67 65 20 6f 66 20 30 2d 32 35 |he range of 0-25| 00019210 35 0a 26 34 33 32 30 37 09 4d 6f 64 75 6c 65 20 |5.&43207.Module | 00019220 61 6c 72 65 61 64 79 20 6c 6f 63 6b 65 64 09 3c |already locked.<| 00019230 54 72 61 63 6b 65 72 5f 4c 6f 63 6b 3e 20 77 61 |Tracker_Lock> wa| 00019240 73 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 68 |s called when th| 00019250 65 20 6d 6f 64 75 6c 65 20 77 61 73 20 61 6c 72 |e module was alr| 00019260 65 61 64 79 20 6c 6f 63 6b 65 64 2e 20 54 68 65 |eady locked. The| 00019270 20 6d 6f 64 75 6c 65 20 63 61 6e 20 6f 6e 6c 79 | module can only| 00019280 20 62 65 20 75 6e 6c 6f 63 6b 65 64 20 77 68 65 | be unlocked whe| 00019290 6e 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f |n the applicatio| 000192a0 6e 20 69 6e 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 |n in control of | 000192b0 74 68 65 20 6d 6f 64 75 6c 65 20 69 73 73 75 65 |the module issue| 000192c0 73 20 3c 54 72 61 63 6b 65 72 5f 55 6e 6c 6f 63 |s <Tracker_Unloc| 000192d0 6b 3e 2e 0a 26 34 33 32 30 38 09 55 6e 6c 6f 63 |k>..&43208.Unloc| 000192e0 6b 20 66 61 69 6c 65 64 09 3c 54 72 61 63 6b 65 |k failed.<Tracke| 000192f0 72 5f 55 6e 6c 6f 63 6b 3e 20 77 61 73 20 63 61 |r_Unlock> was ca| 00019300 6c 6c 65 64 20 62 75 74 20 65 69 74 68 65 72 20 |lled but either | 00019310 74 68 65 20 77 72 6f 6e 67 20 6c 6f 63 6b 69 6e |the wrong lockin| 00019320 67 20 63 6f 64 65 20 77 61 73 20 73 70 65 63 69 |g code was speci| 00019330 66 69 65 64 2c 20 6f 72 20 74 68 65 20 6d 6f 64 |fied, or the mod| 00019340 75 6c 65 20 77 61 73 20 6e 6f 74 20 6c 6f 63 6b |ule was not lock| 00019350 65 64 20 61 74 20 74 68 65 20 74 69 6d 65 2e 0a |ed at the time..| 00019360 26 34 33 32 30 39 09 54 72 61 63 6b 65 72 4d 6f |&43209.TrackerMo| 00019370 64 75 6c 65 20 69 6e 20 75 73 65 09 41 6e 20 61 |dule in use.An a| 00019380 74 74 65 6d 70 74 20 77 61 73 20 6d 61 64 65 20 |ttempt was made | 00019390 74 6f 20 65 78 65 63 75 74 65 20 6f 6e 65 20 6f |to execute one o| 000193a0 66 20 74 68 65 20 72 65 73 74 72 69 63 74 65 64 |f the restricted| 000193b0 20 63 6f 6d 6d 61 6e 64 73 20 6f 72 20 53 57 49 | commands or SWI| 000193c0 27 73 20 77 68 69 6c 65 20 74 68 65 20 6d 6f 64 |'s while the mod| 000193d0 75 6c 65 20 77 61 73 20 6c 6f 63 6b 65 64 20 28 |ule was locked (| 000193e0 73 65 65 20 3c 54 72 61 63 6b 65 72 5f 4c 6f 63 |see <Tracker_Loc| 000193f0 6b 3e 29 0a 26 34 33 32 30 41 09 53 70 65 65 64 |k>).&4320A.Speed| 00019400 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 | not implemented| 00019410 09 3c 54 72 61 63 6b 65 72 5f 53 70 65 65 64 3e |.<Tracker_Speed>| 00019420 20 77 61 73 20 63 61 6c 6c 65 64 20 77 69 74 68 | was called with| 00019430 20 52 30 20 6f 75 74 73 69 64 65 20 74 68 65 20 | R0 outside the | 00019440 72 61 6e 67 65 20 6f 66 20 76 61 6c 75 65 73 20 |range of values | 00019450 63 75 72 72 65 6e 74 6c 79 20 61 63 63 65 70 74 |currently accept| 00019460 65 64 2e 0a 26 34 33 32 30 42 09 42 61 64 20 73 |ed..&4320B.Bad s| 00019470 61 6d 70 6c 65 20 6c 6f 6f 70 69 6e 67 09 56 61 |ample looping.Va| 00019480 6c 75 65 73 20 6f 66 20 72 65 70 65 61 74 20 6f |lues of repeat o| 00019490 66 66 73 65 74 2f 72 65 70 65 61 74 20 6c 65 6e |ffset/repeat len| 000194a0 67 74 68 20 77 6f 75 6c 64 20 63 61 75 73 65 20 |gth would cause | 000194b0 73 61 6d 70 6c 65 20 74 6f 20 6c 6f 6f 70 20 6f |sample to loop o| 000194c0 75 74 73 69 64 65 20 69 74 73 20 6c 69 6d 69 74 |utside its limit| 000194d0 2e 0a 00 00 44 41 54 41 0b 06 00 00 54 72 61 63 |....DATA....Trac| 000194e0 6b 65 72 4d 6f 64 75 6c 65 20 73 6f 75 6e 64 20 |kerModule sound | 000194f0 64 61 74 61 20 62 6c 6f 63 6b 0a 4f 66 66 73 65 |data block.Offse| 00019500 74 09 44 61 74 61 0a 23 4c 49 4e 45 0a 30 09 54 |t.Data.#LINE.0.T| 00019510 68 65 20 63 75 72 72 65 6e 74 20 70 69 74 63 68 |he current pitch| 00019520 20 61 63 63 75 6d 75 6c 61 74 6f 72 2e 20 28 73 | accumulator. (s| 00019530 68 69 66 74 20 72 69 67 68 74 20 31 36 20 62 69 |hift right 16 bi| 00019540 74 73 20 74 6f 20 67 65 74 20 74 68 65 20 61 63 |ts to get the ac| 00019550 74 75 61 6c 20 62 79 74 65 20 6f 66 66 73 65 74 |tual byte offset| 00019560 20 69 6e 74 6f 20 74 68 65 20 73 61 6d 70 6c 65 | into the sample| 00019570 20 62 65 69 6e 67 20 70 6c 61 79 65 64 29 2e 0a | being played)..| 00019580 34 09 54 68 65 20 63 75 72 72 65 6e 74 20 70 69 |4.The current pi| 00019590 74 63 68 20 69 6e 63 72 65 6d 65 6e 74 20 28 61 |tch increment (a| 000195a0 64 64 65 64 20 74 6f 20 61 63 63 75 6d 75 6c 61 |dded to accumula| 000195b0 74 6f 72 20 61 66 74 65 72 20 65 76 65 72 79 20 |tor after every | 000195c0 62 79 74 65 20 66 69 6c 6c 65 64 29 2e 20 54 68 |byte filled). Th| 000195d0 69 73 20 69 73 20 6f 62 74 61 69 6e 65 64 20 75 |is is obtained u| 000195e0 73 69 6e 67 20 69 6e 74 65 72 6e 61 6c 20 74 61 |sing internal ta| 000195f0 62 6c 65 73 20 67 69 76 65 6e 20 74 68 65 20 73 |bles given the s| 00019600 61 6d 70 6c 65 20 70 65 72 69 6f 64 20 28 77 6f |ample period (wo| 00019610 72 64 20 37 29 0a 38 09 54 68 65 20 73 61 6d 70 |rd 7).8.The samp| 00019620 6c 65 20 6c 6f 6f 70 20 6f 66 66 73 65 74 20 28 |le loop offset (| 00019630 67 69 76 65 6e 20 69 6e 20 62 79 74 65 73 29 2e |given in bytes).| 00019640 20 57 68 65 6e 20 74 68 65 20 72 6f 75 74 69 6e | When the routin| 00019650 65 20 72 65 61 63 68 65 73 20 74 68 65 20 65 6e |e reaches the en| 00019660 64 20 6f 66 20 61 20 73 61 6d 70 6c 65 20 6f 72 |d of a sample or| 00019670 20 74 68 65 20 73 61 6d 70 6c 65 20 6c 65 6e 67 | the sample leng| 00019680 74 68 2c 20 74 68 65 20 61 63 63 75 6d 75 6c 2d |th, the accumul-| 00019690 20 61 74 6f 72 20 69 73 20 6c 6f 61 64 65 64 20 | ator is loaded | 000196a0 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65 20 |with this value | 000196b0 73 68 69 66 74 65 64 20 6c 65 66 74 20 31 36 20 |shifted left 16 | 000196c0 62 69 74 73 20 28 69 65 2e 20 74 6f 20 67 69 76 |bits (ie. to giv| 000196d0 65 20 61 20 62 79 74 65 20 6f 66 66 73 65 74 29 |e a byte offset)| 000196e0 2e 20 49 66 20 74 68 69 73 20 69 73 20 61 20 7a |. If this is a z| 000196f0 65 72 6f 20 76 61 6c 75 65 2c 20 74 68 65 20 73 |ero value, the s| 00019700 61 6d 70 6c 65 20 77 69 6c 6c 20 73 74 6f 70 20 |ample will stop | 00019710 69 6e 73 74 65 61 64 20 6f 66 20 6c 6f 6f 70 69 |instead of loopi| 00019720 6e 67 2e 0a 31 32 09 54 68 65 20 73 61 6d 70 6c |ng..12.The sampl| 00019730 65 20 6c 65 6e 67 74 68 20 2f 20 72 65 70 65 61 |e length / repea| 00019740 74 20 6c 65 6e 67 74 68 20 28 69 6e 20 62 79 74 |t length (in byt| 00019750 65 73 29 2e 20 54 68 65 20 72 6f 75 74 69 6e 65 |es). The routine| 00019760 20 63 68 65 63 6b 73 20 65 76 65 72 79 20 34 20 | checks every 4 | 00019770 62 79 74 65 73 20 66 69 6c 6c 65 64 20 74 6f 20 |bytes filled to | 00019780 73 65 65 20 69 66 20 74 68 65 20 63 75 72 72 65 |see if the curre| 00019790 6e 74 20 61 63 63 75 6d 75 6c 61 74 6f 72 20 65 |nt accumulator e| 000197a0 78 63 65 65 64 73 20 74 68 69 73 20 76 61 6c 75 |xceeds this valu| 000197b0 65 20 77 68 65 6e 20 73 68 69 66 74 65 64 20 72 |e when shifted r| 000197c0 69 67 68 74 20 31 36 20 62 69 74 73 2e 20 28 53 |ight 16 bits. (S| 000197d0 65 65 20 61 62 6f 76 65 29 0a 31 36 09 54 68 65 |ee above).16.The| 000197e0 20 73 61 6d 70 6c 65 20 6e 75 6d 62 65 72 20 28 | sample number (| 000197f0 31 2d 33 36 29 2e 0a 32 30 09 54 68 65 20 63 75 |1-36)..20.The cu| 00019800 72 72 65 6e 74 20 76 6f 6c 75 6d 65 20 28 30 2d |rrent volume (0-| 00019810 32 35 35 29 2e 20 54 68 69 73 20 76 61 6c 75 65 |255). This value| 00019820 20 69 73 20 73 75 62 74 72 61 63 74 65 64 20 66 | is subtracted f| 00019830 72 6f 6d 20 65 76 65 72 79 20 62 79 74 65 20 66 |rom every byte f| 00019840 69 6c 6c 65 64 2c 20 74 68 65 72 65 66 6f 72 65 |illed, therefore| 00019850 20 30 20 3d 20 6d 61 78 69 6d 75 6d 20 76 6f 6c | 0 = maximum vol| 00019860 75 6d 65 20 61 6e 64 20 32 35 35 20 3d 20 73 69 |ume and 255 = si| 00019870 6c 65 6e 74 2e 20 4e 42 20 54 68 69 73 20 69 73 |lent. NB This is| 00019880 20 74 68 65 20 72 65 76 65 72 73 65 20 6f 66 20 | the reverse of | 00019890 74 68 65 20 6e 6f 72 6d 61 6c 20 76 6f 6c 75 6d |the normal volum| 000198a0 65 20 63 6f 6d 6d 61 6e 64 2e 0a 32 34 09 54 68 |e command..24.Th| 000198b0 69 73 20 69 73 20 74 68 65 20 74 72 61 63 6b 65 |is is the tracke| 000198c0 72 20 66 6f 72 6d 61 74 20 6e 6f 74 65 20 6e 75 |r format note nu| 000198d0 6d 62 65 72 20 6f 66 20 74 68 65 20 73 61 6d 70 |mber of the samp| 000198e0 6c 65 20 62 65 69 6e 67 20 70 6c 61 79 65 64 20 |le being played | 000198f0 28 31 2d 33 36 2c 20 31 3d 43 20 6f 63 74 61 76 |(1-36, 1=C octav| 00019900 65 20 31 20 33 36 3d 42 20 6f 63 74 61 76 65 20 |e 1 36=B octave | 00019910 33 29 2e 20 54 68 65 20 61 72 70 65 67 67 69 6f |3). The arpeggio| 00019920 20 63 6f 6d 6d 61 6e 64 20 6d 61 6b 65 73 20 75 | command makes u| 00019930 73 65 20 6f 66 20 74 68 69 73 20 77 6f 72 64 2e |se of this word.| 00019940 20 49 66 20 74 68 69 73 20 77 6f 72 64 20 69 73 | If this word is| 00019950 20 7a 65 72 6f 2c 20 6e 6f 20 73 6f 75 6e 64 20 | zero, no sound | 00019960 77 69 6c 6c 20 62 65 20 70 6c 61 79 65 64 2e 0a |will be played..| 00019970 32 38 09 54 68 69 73 20 69 73 20 61 20 63 6f 70 |28.This is a cop| 00019980 79 20 6f 66 20 74 68 65 20 73 61 6d 70 6c 65 20 |y of the sample | 00019990 70 65 72 69 6f 64 20 28 66 72 6f 6d 20 77 68 69 |period (from whi| 000199a0 63 68 20 74 68 65 20 70 69 74 63 68 20 69 6e 63 |ch the pitch inc| 000199b0 72 65 6d 65 6e 74 20 76 61 6c 75 65 20 69 73 20 |rement value is | 000199c0 63 61 6c 63 75 6c 61 74 65 64 29 2c 20 61 6e 64 |calculated), and| 000199d0 20 69 73 20 75 73 65 64 20 62 79 20 74 68 65 20 | is used by the | 000199e0 70 6f 72 74 61 6d 65 6e 74 6f 20 63 6f 6d 6d 61 |portamento comma| 000199f0 6e 64 73 2e 20 54 68 65 20 72 61 6e 67 65 20 6f |nds. The range o| 00019a00 66 20 74 68 65 20 73 61 6d 70 6c 65 20 70 65 72 |f the sample per| 00019a10 69 6f 64 20 69 73 20 66 72 6f 6d 20 31 20 74 6f |iod is from 1 to| 00019a20 20 68 65 78 20 26 34 30 30 20 28 61 6c 74 68 6f | hex &400 (altho| 00019a30 75 67 68 20 74 68 65 20 70 6f 72 74 61 6d 65 6e |ugh the portamen| 00019a40 74 6f 20 63 6f 6d 6d 61 6e 64 73 20 68 61 76 65 |to commands have| 00019a50 20 73 6d 61 6c 6c 65 72 20 6c 69 6d 69 74 73 20 | smaller limits | 00019a60 69 6e 20 70 72 61 63 74 69 63 65 29 2e 0a 33 32 |in practice)..32| 00019a70 09 57 6f 72 64 20 30 20 6f 66 20 73 6f 75 6e 64 |.Word 0 of sound| 00019a80 20 63 68 61 6e 6e 65 6c 20 32 2e 2e 2e 0a 33 36 | channel 2....36| 00019a90 09 57 6f 72 64 20 31 20 6f 66 20 73 6f 75 6e 64 |.Word 1 of sound| 00019aa0 20 63 68 61 6e 6e 65 6c 20 32 2e 2e 2e 20 20 65 | channel 2... e| 00019ab0 74 63 2e 20 0a 20 20 20 20 20 0a 65 74 63 20 75 |tc. . .etc u| 00019ac0 6e 74 69 6c 20 77 6f 72 64 20 38 20 6f 66 20 73 |ntil word 8 of s| 00019ad0 6f 75 6e 64 20 63 68 61 6e 6e 65 6c 20 38 0a 00 |ound channel 8..| 00019ae0 44 49 52 24 14 01 00 00 14 01 00 00 f4 9b 01 00 |DIR$............| 00019af0 47 fd ff ff 50 16 6e 25 f6 00 00 00 13 00 00 00 |G...P.n%........| 00019b00 00 00 00 00 21 52 6f 6f 74 00 00 00 ec 9c 01 00 |....!Root.......| 00019b10 47 ff ff ff 1f ff 6d 25 05 01 00 00 13 00 00 00 |G.....m%........| 00019b20 00 00 00 00 56 61 6c 69 64 61 74 65 00 00 00 00 |....Validate....| 00019b30 f4 9d 01 00 47 ff ff ff 87 f9 6d 25 e8 00 00 00 |....G.....m%....| 00019b40 13 00 00 00 00 00 00 00 45 6e 63 72 79 70 74 00 |........Encrypt.| 00019b50 dc 9e 01 00 47 ff ff ff 84 00 6e 25 22 01 00 00 |....G.....n%"...| 00019b60 13 00 00 00 00 00 00 00 57 68 6f 49 73 00 00 00 |........WhoIs...| 00019b70 00 a0 01 00 47 fd ff ff 7e 88 6d 25 0c 01 00 00 |....G...~.m%....| 00019b80 13 00 00 00 00 00 00 00 75 73 65 72 64 61 74 61 |........userdata| 00019b90 00 00 00 00 0c a1 01 00 47 ff ff ff ec 39 6e 25 |........G....9n%| 00019ba0 56 01 00 00 13 00 00 00 00 00 00 00 53 65 74 55 |V...........SetU| 00019bb0 49 44 00 00 64 a2 01 00 47 ff ff ff 30 ec 6d 25 |ID..d...G...0.m%| 00019bc0 8d 00 00 00 13 00 00 00 00 00 00 00 52 65 61 64 |............Read| 00019bd0 55 49 44 00 f4 a2 01 00 47 ff ff ff 6e f7 6d 25 |UID.....G...n.m%| 00019be0 63 00 00 00 13 00 00 00 00 00 00 00 52 65 61 64 |c...........Read| 00019bf0 50 49 44 00 44 41 54 41 f6 00 00 00 55 73 65 72 |PID.DATA....User| 00019c00 73 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a |s.#Parent !Root.| 00019c10 23 50 72 65 66 69 78 20 55 73 65 72 73 5f 0a 23 |#Prefix Users_.#| 00019c20 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 33 0a |Table Columns 3.| 00019c30 3c 56 61 6c 69 64 61 74 65 3e 0a 3c 57 68 6f 49 |<Validate>.<WhoI| 00019c40 73 3e 0a 3c 45 6e 63 72 79 70 74 3e 0a 3c 53 65 |s>.<Encrypt>.<Se| 00019c50 74 55 49 44 3e 0a 3c 52 65 61 64 55 49 44 3e 0a |tUID>.<ReadUID>.| 00019c60 3c 52 65 61 64 50 49 44 3e 0a 23 45 6e 64 54 61 |<ReadPID>.#EndTa| 00019c70 62 6c 65 0a 0a 54 68 69 73 20 6d 6f 64 75 6c 65 |ble..This module| 00019c80 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 75 6e | is currently un| 00019c90 64 65 72 20 64 65 76 65 6c 6f 70 6d 65 6e 74 2e |der development.| 00019ca0 0a 49 74 20 70 72 6f 76 69 64 65 73 20 76 61 72 |.It provides var| 00019cb0 69 6f 75 73 20 63 61 6c 6c 73 20 74 6f 20 61 6c |ious calls to al| 00019cc0 6c 6f 77 20 61 20 6d 75 6c 74 69 2d 75 73 65 72 |low a multi-user| 00019cd0 20 73 79 73 74 65 6d 20 6f 6e 20 74 6f 70 20 6f | system on top o| 00019ce0 66 20 52 69 73 63 4f 53 2e 0a 00 00 44 41 54 41 |f RiscOS....DATA| 00019cf0 05 01 00 00 55 73 65 72 73 5f 56 61 6c 69 64 61 |....Users_Valida| 00019d00 74 65 0a 23 50 61 72 65 6e 74 20 55 73 65 72 73 |te.#Parent Users| 00019d10 5f 0a 3d 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 |_.=>.R0 =.pointe| 00019d20 72 20 74 6f 20 6c 6f 67 69 6e 20 6e 61 6d 65 0a |r to login name.| 00019d30 09 52 31 20 3d 09 62 6c 6f 63 6b 20 74 6f 20 68 |.R1 =.block to h| 00019d40 6f 6c 64 20 3c 75 73 65 72 20 64 61 74 61 3d 3e |old <user data=>| 00019d50 75 73 65 72 73 5f 75 73 65 72 64 61 74 61 3e 20 |users_userdata> | 00019d60 28 31 30 32 34 20 62 79 74 65 73 20 72 65 63 6f |(1024 bytes reco| 00019d70 6d 6d 65 6e 64 65 64 29 0a 3c 3d 09 62 6c 6f 63 |mmended).<=.bloc| 00019d80 6b 20 61 74 20 52 31 20 75 70 64 61 74 65 64 2c |k at R1 updated,| 00019d90 20 6f 72 20 65 72 72 6f 72 20 69 66 20 6e 6f 74 | or error if not| 00019da0 20 6b 6e 6f 77 6e 0a 0a 54 68 69 73 20 53 57 49 | known..This SWI| 00019db0 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 61 64 | is used to read| 00019dc0 20 74 68 65 20 70 61 73 73 77 6f 72 64 20 64 61 | the password da| 00019dd0 74 61 62 61 73 65 20 69 6e 20 7b 2f 7d 55 6e 69 |tabase in {/}Uni| 00019de0 78 3a 65 74 63 2e 70 61 73 73 77 64 7b 2f 7d 2e |x:etc.passwd{/}.| 00019df0 0a 00 00 00 44 41 54 41 e8 00 00 00 55 73 65 72 |....DATA....User| 00019e00 73 5f 45 6e 63 72 79 70 74 0a 23 50 61 72 65 6e |s_Encrypt.#Paren| 00019e10 74 20 55 73 65 72 73 5f 0a 3d 3e 09 52 30 20 3d |t Users_.=>.R0 =| 00019e20 09 70 6f 69 6e 74 65 72 20 74 6f 20 63 74 72 6c |.pointer to ctrl| 00019e30 20 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 | terminated stri| 00019e40 6e 67 0a 3c 3d 09 73 74 72 69 6e 67 20 61 74 20 |ng.<=.string at | 00019e50 52 30 20 75 70 64 61 74 65 64 0a 0a 54 68 69 73 |R0 updated..This| 00019e60 20 53 57 49 20 69 73 20 75 73 65 64 20 74 6f 20 | SWI is used to | 00019e70 65 6e 63 72 79 70 74 20 61 20 70 61 73 73 77 6f |encrypt a passwo| 00019e80 72 64 2e 20 54 68 65 20 65 6e 63 72 79 70 74 69 |rd. The encrypti| 00019e90 6f 6e 20 74 65 63 68 6e 69 71 75 65 20 69 73 20 |on technique is | 00019ea0 6e 6f 74 20 67 75 61 72 65 6e 74 65 65 64 20 73 |not guarenteed s| 00019eb0 65 63 75 72 65 20 61 6e 64 20 77 61 73 20 74 68 |ecure and was th| 00019ec0 72 6f 77 6e 20 74 6f 67 65 74 68 65 72 20 76 65 |rown together ve| 00019ed0 72 79 20 71 75 69 63 6b 6c 79 2e 0a 44 41 54 41 |ry quickly..DATA| 00019ee0 22 01 00 00 55 73 65 72 73 5f 57 68 6f 49 73 0a |"...Users_WhoIs.| 00019ef0 23 50 61 72 65 6e 74 20 55 73 65 72 73 5f 0a 3d |#Parent Users_.=| 00019f00 3e 09 52 30 20 3d 09 75 69 64 20 6e 75 6d 62 65 |>.R0 =.uid numbe| 00019f10 72 0a 09 52 31 20 3d 09 62 6c 6f 63 6b 20 74 6f |r..R1 =.block to| 00019f20 20 68 6f 6c 64 20 3c 75 73 65 72 20 64 61 74 61 | hold <user data| 00019f30 3d 3e 75 73 65 72 73 5f 75 73 65 72 64 61 74 61 |=>users_userdata| 00019f40 3e 20 28 31 30 32 34 20 62 79 74 65 73 20 72 65 |> (1024 bytes re| 00019f50 63 6f 6d 6d 65 6e 64 65 64 29 0a 3c 3d 09 62 6c |commended).<=.bl| 00019f60 6f 63 6b 20 61 74 20 52 31 20 75 70 64 61 74 65 |ock at R1 update| 00019f70 64 2c 20 6f 72 20 65 72 72 6f 72 20 69 66 20 6e |d, or error if n| 00019f80 6f 74 20 6b 6e 6f 77 6e 0a 0a 54 68 69 73 20 53 |ot known..This S| 00019f90 57 49 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 |WI is used to re| 00019fa0 61 64 20 74 68 65 20 70 61 73 73 77 6f 72 64 20 |ad the password | 00019fb0 64 61 74 61 62 61 73 65 20 69 6e 20 7b 2f 7d 55 |database in {/}U| 00019fc0 6e 69 78 3a 65 74 63 2e 70 61 73 73 77 64 7b 2f |nix:etc.passwd{/| 00019fd0 7d 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 75 |} to convert a u| 00019fe0 69 64 20 6e 75 6d 62 65 72 20 74 6f 20 61 20 62 |id number to a b| 00019ff0 6c 6f 63 6b 20 6f 66 20 64 61 74 61 2e 0a 00 00 |lock of data....| 0001a000 44 41 54 41 0c 01 00 00 55 73 65 72 20 64 61 74 |DATA....User dat| 0001a010 61 20 62 6c 6f 63 6b 0a 4f 66 66 73 65 74 09 43 |a block.Offset.C| 0001a020 6f 6e 74 65 6e 74 73 0a 23 4c 69 6e 65 0a 26 30 |ontents.#Line.&0| 0001a030 09 75 73 65 72 20 69 64 20 28 75 69 64 29 0a 26 |.user id (uid).&| 0001a040 34 09 67 72 6f 75 70 20 69 64 20 28 67 69 64 29 |4.group id (gid)| 0001a050 0a 26 38 09 70 6f 69 6e 74 65 72 20 74 6f 20 73 |.&8.pointer to s| 0001a060 68 65 6c 6c 20 6e 61 6d 65 0a 26 43 09 70 6f 69 |hell name.&C.poi| 0001a070 6e 74 65 72 20 74 6f 20 3c 65 6e 63 72 79 70 74 |nter to <encrypt| 0001a080 65 64 3d 3e 55 73 65 72 73 5f 45 6e 63 72 79 70 |ed=>Users_Encryp| 0001a090 74 3e 20 70 61 73 73 77 6f 72 64 0a 26 31 30 09 |t> password.&10.| 0001a0a0 70 6f 69 6e 74 65 72 20 74 6f 20 6c 6f 67 69 6e |pointer to login| 0001a0b0 20 6e 61 6d 65 0a 26 31 34 09 70 6f 69 6e 74 65 | name.&14.pointe| 0001a0c0 72 20 74 6f 20 75 73 65 72 20 6e 61 6d 65 0a 26 |r to user name.&| 0001a0d0 31 38 09 70 6f 69 6e 74 65 72 20 74 6f 20 68 6f |18.pointer to ho| 0001a0e0 6d 65 20 64 69 72 65 63 74 6f 72 79 20 28 61 73 |me directory (as| 0001a0f0 74 65 72 69 73 6b 20 74 72 61 6e 73 6c 61 74 65 |terisk translate| 0001a100 64 20 74 6f 20 63 6f 6c 6f 6e 29 0a 44 41 54 41 |d to colon).DATA| 0001a110 56 01 00 00 55 73 65 72 73 5f 53 65 74 55 49 44 |V...Users_SetUID| 0001a120 0a 23 50 61 72 65 6e 74 20 55 73 65 72 73 5f 0a |.#Parent Users_.| 0001a130 3d 3e 09 52 30 20 3d 09 75 69 64 20 6e 75 6d 62 |=>.R0 =.uid numb| 0001a140 65 72 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 |er..R1 =.pointer| 0001a150 20 74 6f 20 70 61 73 73 77 6f 72 64 2c 20 6f 72 | to password, or| 0001a160 20 30 20 74 6f 20 69 67 6e 6f 72 65 20 70 61 73 | 0 to ignore pas| 0001a170 73 77 6f 72 64 0a 0a 54 68 69 73 20 53 57 49 20 |sword..This SWI | 0001a180 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 74 |is used to set t| 0001a190 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 |he current proce| 0001a1a0 73 73 27 20 75 69 64 2e 20 49 66 20 74 68 65 20 |ss' uid. If the | 0001a1b0 70 61 73 73 77 6f 72 64 20 69 73 20 69 6e 63 6f |password is inco| 0001a1c0 72 72 65 63 74 2c 20 6f 72 20 74 68 65 20 75 73 |rrect, or the us| 0001a1d0 65 72 20 69 73 20 6e 6f 74 20 72 6f 6f 74 20 74 |er is not root t| 0001a1e0 68 65 6e 20 74 68 69 73 20 63 61 6c 6c 20 77 69 |hen this call wi| 0001a1f0 6c 6c 20 63 61 75 73 65 20 61 6e 20 65 72 72 6f |ll cause an erro| 0001a200 72 2c 20 6c 65 61 76 69 6e 67 20 74 68 65 20 75 |r, leaving the u| 0001a210 73 65 72 20 69 6e 20 74 68 65 20 70 72 65 76 69 |ser in the previ| 0001a220 6f 75 73 20 75 69 64 2e 20 54 68 65 20 7b 66 43 |ous uid. The {fC| 0001a230 6f 64 65 7d 73 75 7b 66 7d 20 63 6f 6d 6d 61 6e |ode}su{f} comman| 0001a240 64 20 75 73 65 73 20 74 68 69 73 20 63 61 6c 6c |d uses this call| 0001a250 20 74 6f 20 63 68 61 6e 67 65 20 75 69 64 27 73 | to change uid's| 0001a260 2e 0a 00 00 44 41 54 41 8d 00 00 00 55 73 65 72 |....DATA....User| 0001a270 73 5f 52 65 61 64 55 49 44 0a 23 50 61 72 65 6e |s_ReadUID.#Paren| 0001a280 74 20 55 73 65 72 73 5f 0a 3c 3d 09 52 30 20 3d |t Users_.<=.R0 =| 0001a290 09 75 69 64 20 6e 75 6d 62 65 72 0a 09 52 31 20 |.uid number..R1 | 0001a2a0 3d 09 63 75 72 72 65 6e 74 20 67 69 64 20 6e 75 |=.current gid nu| 0001a2b0 6d 62 65 72 0a 0a 54 68 69 73 20 53 57 49 20 69 |mber..This SWI i| 0001a2c0 73 20 75 73 65 64 20 74 6f 20 72 65 61 64 20 74 |s used to read t| 0001a2d0 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 |he current proce| 0001a2e0 73 73 27 20 75 69 64 20 61 6e 64 20 67 69 64 2e |ss' uid and gid.| 0001a2f0 0a 00 00 00 44 41 54 41 63 00 00 00 55 73 65 72 |....DATAc...User| 0001a300 73 5f 52 65 61 64 50 49 44 0a 23 50 61 72 65 6e |s_ReadPID.#Paren| 0001a310 74 20 55 73 65 72 73 5f 0a 3c 3d 09 52 30 20 3d |t Users_.<=.R0 =| 0001a320 09 70 69 64 20 6e 75 6d 62 65 72 0a 0a 54 68 69 |.pid number..Thi| 0001a330 73 20 53 57 49 20 69 73 20 75 73 65 64 20 74 6f |s SWI is used to| 0001a340 20 72 65 61 64 20 74 68 65 20 63 75 72 72 65 6e | read the curren| 0001a350 74 20 70 69 64 2e 0a 00 44 49 52 24 2c 00 00 00 |t pid...DIR$,...| 0001a360 2c 00 00 00 84 a3 01 00 46 fd ff ff 4b f4 dc 14 |,.......F...K...| 0001a370 40 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |@...........!Roo| 0001a380 74 00 00 00 44 41 54 41 40 00 00 00 56 50 72 6f |t...DATA@...VPro| 0001a390 74 65 63 74 0a 23 50 61 72 65 6e 74 20 21 52 6f |tect.#Parent !Ro| 0001a3a0 6f 74 0a 23 50 72 65 66 69 78 20 56 50 72 6f 74 |ot.#Prefix VProt| 0001a3b0 65 63 74 5f 0a 46 49 0a 4f 46 0a 4c 55 0a 4d 4d |ect_.FI.OF.LU.MM| 0001a3c0 0a 43 46 0a 44 49 52 24 2c 00 00 00 2c 00 00 00 |.CF.DIR$,...,...| 0001a3d0 f0 a3 01 00 47 fd ff ff de 6e 7d 82 57 00 00 00 |....G....n}.W...| 0001a3e0 03 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 0001a3f0 44 41 54 41 57 00 00 00 57 69 6d 70 48 61 63 6b |DATAW...WimpHack| 0001a400 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a 23 |.#Parent !Root.#| 0001a410 50 72 65 66 69 78 20 57 69 6d 70 48 61 63 6b 5f |Prefix WimpHack_| 0001a420 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 0001a430 32 0a 52 65 73 69 7a 65 49 63 6f 6e 0a 23 45 6e |2.ResizeIcon.#En| 0001a440 64 54 61 62 6c 65 0a 00 44 49 52 24 2c 00 00 00 |dTable..DIR$,...| 0001a450 2c 00 00 00 74 a4 01 00 46 fd ff ff 28 f7 71 18 |,...t...F...(.q.| 0001a460 64 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |d...........!Roo| 0001a470 74 00 00 00 44 41 54 41 64 00 00 00 57 69 6d 70 |t...DATAd...Wimp| 0001a480 4b 65 79 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f |Key.#Parent !Roo| 0001a490 74 0a 23 50 72 65 66 69 78 20 57 69 6d 70 4b 65 |t.#Prefix WimpKe| 0001a4a0 79 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e |y_.#Table Column| 0001a4b0 73 20 31 0a 43 6f 64 65 54 6f 53 74 72 69 6e 67 |s 1.CodeToString| 0001a4c0 0a 53 74 72 69 6e 67 54 6f 43 6f 64 65 0a 23 45 |.StringToCode.#E| 0001a4d0 6e 64 54 61 62 6c 65 0a 44 49 52 24 2c 00 00 00 |ndTable.DIR$,...| 0001a4e0 2c 00 00 00 04 a5 01 00 46 fd ff ff 05 4d c7 13 |,.......F....M..| 0001a4f0 62 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |b...........!Roo| 0001a500 74 00 00 00 44 41 54 41 62 00 00 00 41 42 43 4c |t...DATAb...ABCL| 0001a510 69 62 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 |ib.#Parent !Root| 0001a520 0a 23 50 72 65 66 69 78 20 41 42 43 4c 69 62 5f |.#Prefix ABCLib_| 0001a530 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 0001a540 32 0a 49 6e 69 74 0a 52 65 67 69 73 74 65 72 0a |2.Init.Register.| 0001a550 50 72 6f 66 69 6c 65 0a 57 41 43 0a 23 45 6e 64 |Profile.WAC.#End| 0001a560 54 61 62 6c 65 0a 00 00 44 49 52 24 10 01 00 00 |Table...DIR$....| 0001a570 10 01 00 00 78 a6 01 00 46 fd ff ff 28 e5 87 4d |....x...F...(..M| 0001a580 8c 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 0001a590 74 00 00 00 04 a7 01 00 46 ff ff ff 00 bb 98 a5 |t.......F.......| 0001a5a0 a2 01 00 00 13 00 00 00 00 00 00 00 4d 65 6e 75 |............Menu| 0001a5b0 00 00 00 00 a8 a8 01 00 46 ff ff ff e2 f3 86 4d |........F......M| 0001a5c0 1e 00 00 00 13 00 00 00 00 00 00 00 45 6e 64 4d |............EndM| 0001a5d0 65 6e 75 00 c8 a8 01 00 46 ff ff ff 01 ff 86 4d |enu.....F......M| 0001a5e0 1e 00 00 00 13 00 00 00 00 00 00 00 4f 70 74 69 |............Opti| 0001a5f0 6f 6e 00 00 e8 a8 01 00 46 ff ff ff 16 04 87 4d |on......F......M| 0001a600 1e 00 00 00 13 00 00 00 00 00 00 00 44 61 73 68 |............Dash| 0001a610 00 00 00 00 08 a9 01 00 46 ff ff ff 6d 05 87 4d |........F...m..M| 0001a620 1e 00 00 00 13 00 00 00 00 00 00 00 43 6f 6d 6d |............Comm| 0001a630 61 6e 64 00 28 a9 01 00 46 ff ff ff 70 5f 87 4d |and.(...F...p_.M| 0001a640 64 01 00 00 13 00 00 00 00 00 00 00 45 6e 75 6d |d...........Enum| 0001a650 65 72 61 74 65 00 00 00 8c aa 01 00 46 ff ff ff |erate.......F...| 0001a660 30 80 87 4d 9c 01 00 00 13 00 00 00 00 00 00 00 |0..M............| 0001a670 4d 65 6d 6f 72 79 00 00 44 41 54 41 8c 00 00 00 |Memory..DATA....| 0001a680 44 69 72 65 63 74 6f 72 0a 23 50 61 72 65 6e 74 |Director.#Parent| 0001a690 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 20 44 | !Root.#Prefix D| 0001a6a0 69 72 65 63 74 6f 72 5f 0a 23 54 61 62 6c 65 20 |irector_.#Table | 0001a6b0 43 6f 6c 75 6d 6e 73 20 32 0a 3c 4d 65 6e 75 3e |Columns 2.<Menu>| 0001a6c0 0a 3c 45 6e 64 4d 65 6e 75 3e 0a 3c 4f 70 74 69 |.<EndMenu>.<Opti| 0001a6d0 6f 6e 3e 0a 3c 44 61 73 68 3e 0a 3c 43 6f 6d 6d |on>.<Dash>.<Comm| 0001a6e0 61 6e 64 3e 0a 3c 45 6e 75 6d 65 72 61 74 65 3e |and>.<Enumerate>| 0001a6f0 0a 3c 4d 65 6d 6f 72 79 3e 0a 23 45 6e 64 54 61 |.<Memory>.#EndTa| 0001a700 62 6c 65 0a 44 41 54 41 a2 01 00 00 44 69 72 65 |ble.DATA....Dire| 0001a710 63 74 6f 72 20 63 6f 6d 6d 61 6e 64 20 53 57 49 |ctor command SWI| 0001a720 20 65 71 75 69 76 69 6c 65 6e 74 73 0a 23 50 61 | equivilents.#Pa| 0001a730 72 65 6e 74 20 44 69 72 65 63 74 6f 72 5f 0a 3d |rent Director_.=| 0001a740 3e 09 52 30 20 3d 20 70 6f 69 6e 74 65 72 20 74 |>.R0 = pointer t| 0001a750 6f 20 6c 69 6e 65 0a 0a 54 68 65 20 53 57 49 73 |o line..The SWIs| 0001a760 20 3a 0a 23 49 6e 64 65 6e 74 20 32 0a 3c 44 69 | :.#Indent 2.<Di| 0001a770 72 65 63 74 6f 72 5f 4d 65 6e 75 3e 0a 3c 44 69 |rector_Menu>.<Di| 0001a780 72 65 63 74 6f 72 5f 45 6e 64 4d 65 6e 75 3e 0a |rector_EndMenu>.| 0001a790 3c 44 69 72 65 63 74 6f 72 5f 4f 70 74 69 6f 6e |<Director_Option| 0001a7a0 3e 0a 3c 44 69 72 65 63 74 6f 72 5f 44 61 73 68 |>.<Director_Dash| 0001a7b0 3e 0a 3c 44 69 72 65 63 74 6f 72 5f 43 6f 6d 6d |>.<Director_Comm| 0001a7c0 61 6e 64 3e 0a 23 49 6e 64 65 6e 74 0a 0a 61 72 |and>.#Indent..ar| 0001a7d0 65 20 64 69 72 65 63 74 6c 79 20 65 71 75 69 76 |e directly equiv| 0001a7e0 69 6c 65 6e 74 20 74 6f 20 74 68 65 69 72 20 4f |ilent to their O| 0001a7f0 53 43 4c 49 20 63 6f 6d 6d 61 6e 64 20 63 6f 75 |SCLI command cou| 0001a800 6e 74 65 72 70 61 72 74 73 2e 0a 0a 54 68 65 73 |nterparts...Thes| 0001a810 65 20 61 72 65 20 64 65 66 69 6e 65 64 20 62 65 |e are defined be| 0001a820 63 61 75 73 65 20 70 72 6f 63 65 73 73 69 6e 67 |cause processing| 0001a830 20 73 74 61 72 20 63 6f 6d 6d 61 6e 64 73 20 69 | star commands i| 0001a840 73 20 76 65 72 79 20 73 6c 6f 77 20 61 6e 64 20 |s very slow and | 0001a850 69 6e 20 64 79 6e 61 6d 69 63 20 6d 65 6e 75 73 |in dynamic menus| 0001a860 20 65 73 70 65 63 69 61 6c 6c 79 20 69 74 20 69 | especially it i| 0001a870 73 20 69 6d 70 6f 72 74 61 6e 74 20 74 68 61 74 |s important that| 0001a880 20 69 74 65 6d 73 20 63 61 6e 20 62 65 20 61 64 | items can be ad| 0001a890 64 65 64 20 74 6f 20 6d 65 6e 75 73 20 71 75 69 |ded to menus qui| 0001a8a0 63 6b 6c 79 2e 0a 00 00 44 41 54 41 1e 00 00 00 |ckly....DATA....| 0001a8b0 23 49 6e 63 6c 75 64 65 20 44 69 72 65 63 74 6f |#Include Directo| 0001a8c0 72 5f 4d 65 6e 75 00 00 44 41 54 41 1e 00 00 00 |r_Menu..DATA....| 0001a8d0 23 49 6e 63 6c 75 64 65 20 44 69 72 65 63 74 6f |#Include Directo| 0001a8e0 72 5f 4d 65 6e 75 00 00 44 41 54 41 1e 00 00 00 |r_Menu..DATA....| 0001a8f0 23 49 6e 63 6c 75 64 65 20 44 69 72 65 63 74 6f |#Include Directo| 0001a900 72 5f 4d 65 6e 75 00 00 44 41 54 41 1e 00 00 00 |r_Menu..DATA....| 0001a910 23 49 6e 63 6c 75 64 65 20 44 69 72 65 63 74 6f |#Include Directo| 0001a920 72 5f 4d 65 6e 75 00 00 44 41 54 41 64 01 00 00 |r_Menu..DATAd...| 0001a930 44 69 72 65 63 74 6f 72 5f 45 6e 75 6d 65 72 61 |Director_Enumera| 0001a940 74 65 20 20 28 26 34 41 31 30 35 29 0a 45 6e 75 |te (&4A105).Enu| 0001a950 6d 65 72 61 74 65 73 20 6c 69 73 74 73 20 68 65 |merates lists he| 0001a960 6c 64 20 62 79 20 64 69 72 65 63 74 6f 72 0a 0a |ld by director..| 0001a970 3d 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 |=>.R0 =.pointer | 0001a980 74 6f 20 62 6c 6f 63 6b 20 6f 72 20 74 6f 20 73 |to block or to s| 0001a990 74 61 72 74 20 75 73 65 20 3a 0a 09 20 09 20 20 |tart use :.. . | 0001a9a0 30 20 3d 20 73 74 6f 72 65 64 20 6d 65 6e 75 73 |0 = stored menus| 0001a9b0 0a 09 20 09 20 20 31 20 3d 20 64 69 73 70 6c 61 |.. . 1 = displa| 0001a9c0 79 65 64 20 6d 65 6e 75 73 0a 09 20 09 20 20 32 |yed menus.. . 2| 0001a9d0 20 3d 20 69 63 6f 6e 73 0a 09 20 09 20 20 33 20 | = icons.. . 3 | 0001a9e0 3d 20 66 69 6c 74 65 72 73 0a 0a 3c 3d 09 52 30 |= filters..<=.R0| 0001a9f0 20 3d 20 6e 65 77 20 70 6f 69 6e 74 65 72 20 74 | = new pointer t| 0001aa00 6f 20 62 6c 6f 63 6b 20 28 30 20 66 6f 72 20 65 |o block (0 for e| 0001aa10 6e 64 29 0a 09 52 31 20 3d 20 70 6f 69 6e 74 65 |nd)..R1 = pointe| 0001aa20 72 20 74 6f 20 6e 61 6d 65 20 6f 66 20 62 6c 6f |r to name of blo| 0001aa30 63 6b 0a 0a 44 79 6e 61 6d 69 63 20 6d 65 6e 75 |ck..Dynamic menu| 0001aa40 73 20 74 6f 20 76 69 65 77 20 74 68 65 73 65 20 |s to view these | 0001aa50 6c 69 73 74 73 20 61 6e 64 20 61 63 74 20 6f 6e |lists and act on| 0001aa60 20 74 68 65 6d 20 63 61 6e 20 62 65 20 66 6f 75 | them can be fou| 0001aa70 6e 64 20 6f 6e 20 44 69 72 65 63 74 6f 72 27 73 |nd on Director's| 0001aa80 20 6d 61 69 6e 20 6d 65 6e 75 2e 0a 44 41 54 41 | main menu..DATA| 0001aa90 9c 01 00 00 44 69 72 65 63 74 6f 72 5f 4d 65 6d |....Director_Mem| 0001aaa0 6f 72 79 20 20 28 26 34 41 31 30 36 29 0a 52 65 |ory (&4A106).Re| 0001aab0 74 75 72 6e 73 20 74 68 65 20 6d 65 6d 6f 72 79 |turns the memory| 0001aac0 20 75 73 65 64 20 62 79 20 64 69 72 65 63 74 6f | used by directo| 0001aad0 72 0a 0a 3c 3d 09 52 30 20 3d 09 6d 6f 64 75 6c |r..<=.R0 =.modul| 0001aae0 65 20 73 69 7a 65 20 28 63 6f 6e 73 74 61 6e 74 |e size (constant| 0001aaf0 29 0a 09 52 31 20 3d 09 6d 61 69 6e 20 77 6f 72 |)..R1 =.main wor| 0001ab00 6b 73 70 61 63 65 20 73 69 7a 65 20 28 63 6f 6e |kspace size (con| 0001ab10 73 74 61 6e 74 29 0a 09 52 32 20 3d 09 74 6f 74 |stant)..R2 =.tot| 0001ab20 61 6c 20 73 69 7a 65 20 6f 66 20 61 6c 6c 20 61 |al size of all a| 0001ab30 6c 6c 6f 63 61 74 65 64 20 62 6c 6f 63 6b 73 0a |llocated blocks.| 0001ab40 09 52 33 20 3d 09 6e 75 6d 62 65 72 20 6f 66 20 |.R3 =.number of | 0001ab50 62 6c 6f 63 6b 73 20 61 6c 6c 6f 63 61 74 65 64 |blocks allocated| 0001ab60 0a 09 52 34 20 3d 09 64 79 6e 61 6d 69 63 20 61 |..R4 =.dynamic a| 0001ab70 72 65 61 20 73 69 7a 65 20 28 30 20 66 6f 72 20 |rea size (0 for | 0001ab80 6e 6f 20 64 79 6e 61 6d 69 63 20 61 72 65 61 29 |no dynamic area)| 0001ab90 0a 09 52 35 20 3d 09 62 79 74 65 73 20 66 72 65 |..R5 =.bytes fre| 0001aba0 65 20 69 6e 20 64 79 6e 61 6d 69 63 20 61 72 65 |e in dynamic are| 0001abb0 61 0a 09 52 36 20 3d 09 6c 61 72 67 65 73 74 20 |a..R6 =.largest | 0001abc0 62 6c 6f 63 6b 20 69 6e 20 64 79 6e 61 6d 69 63 |block in dynamic| 0001abd0 20 61 72 65 61 0a 0a 41 20 64 79 6e 61 6d 69 63 | area..A dynamic| 0001abe0 20 6d 65 6e 75 20 74 6f 20 64 69 73 70 6c 61 79 | menu to display| 0001abf0 20 74 68 69 73 20 69 6e 66 6f 72 6d 61 74 69 6f | this informatio| 0001ac00 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 6f |n can be found o| 0001ac10 6e 20 44 69 72 65 63 74 6f 72 27 73 20 6d 61 69 |n Director's mai| 0001ac20 6e 20 6d 65 6e 75 2e 0a 44 49 52 24 2c 00 00 00 |n menu..DIR$,...| 0001ac30 2c 00 00 00 54 ac 01 00 47 fd ff ff 19 0f 84 82 |,...T...G.......| 0001ac40 67 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |g...........!Roo| 0001ac50 74 00 00 00 44 41 54 41 67 00 00 00 45 61 73 79 |t...DATAg...Easy| 0001ac60 46 53 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 |FS.#Parent !Root| 0001ac70 0a 23 50 72 65 66 69 78 20 45 61 73 79 46 53 5f |.#Prefix EasyFS_| 0001ac80 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 |.#Table Columns | 0001ac90 32 0a 4c 6f 63 6b 65 72 4f 70 0a 53 65 74 46 6f |2.LockerOp.SetFo| 0001aca0 6e 74 73 0a 4d 65 73 73 61 67 65 53 74 61 74 65 |nts.MessageState| 0001acb0 0a 23 45 6e 64 54 61 62 6c 65 0a 00 44 49 52 24 |.#EndTable..DIR$| 0001acc0 2c 00 00 00 2c 00 00 00 e8 ac 01 00 46 fd ff ff |,...,.......F...| 0001acd0 39 ed dc 14 3b 00 00 00 13 00 00 00 00 00 00 00 |9...;...........| 0001ace0 21 52 6f 6f 74 00 00 00 44 41 54 41 3b 00 00 00 |!Root...DATA;...| 0001acf0 48 65 6c 69 78 42 61 73 69 63 0a 23 50 61 72 65 |HelixBasic.#Pare| 0001ad00 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 |nt !Root.#Prefix| 0001ad10 20 48 65 6c 69 78 42 61 73 69 63 5f 0a 53 65 74 | HelixBasic_.Set| 0001ad20 75 70 0a 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |up..DIR$,...,...| 0001ad30 50 ad 01 00 46 fd ff ff 19 66 ee 13 16 01 00 00 |P...F....f......| 0001ad40 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 0001ad50 44 41 54 41 16 01 00 00 4c 61 72 67 65 72 53 75 |DATA....LargerSu| 0001ad60 70 70 6f 72 74 0a 23 50 61 72 65 6e 74 20 21 52 |pport.#Parent !R| 0001ad70 6f 6f 74 0a 23 50 72 65 66 69 78 20 4c 61 72 67 |oot.#Prefix Larg| 0001ad80 65 72 53 75 70 70 6f 72 74 5f 0a 23 54 61 62 6c |erSupport_.#Tabl| 0001ad90 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 57 72 69 74 |e Columns 2.Writ| 0001ada0 65 53 68 69 66 74 0a 52 65 61 64 46 61 73 74 4d |eShift.ReadFastM| 0001adb0 6f 76 65 0a 45 6e 61 62 6c 65 46 69 6c 74 65 72 |ove.EnableFilter| 0001adc0 0a 44 69 73 61 62 6c 65 46 69 6c 74 65 72 0a 52 |.DisableFilter.R| 0001add0 65 61 64 57 69 6e 64 6f 77 73 4f 70 65 6e 65 64 |eadWindowsOpened| 0001ade0 0a 52 65 61 64 50 6f 6c 6c 57 6f 72 64 41 64 64 |.ReadPollWordAdd| 0001adf0 72 65 73 73 0a 52 65 6f 72 67 61 6e 69 73 65 0a |ress.Reorganise.| 0001ae00 46 69 6e 64 4c 65 66 74 0a 46 69 6e 64 52 69 67 |FindLeft.FindRig| 0001ae10 68 74 0a 46 69 6e 64 55 70 0a 46 69 6e 64 44 6f |ht.FindUp.FindDo| 0001ae20 77 6e 0a 46 69 6e 64 4e 6f 6e 65 0a 43 6f 70 79 |wn.FindNone.Copy| 0001ae30 53 70 72 69 74 65 0a 52 65 61 64 42 61 63 6b 64 |Sprite.ReadBackd| 0001ae40 72 6f 70 43 6f 6d 6d 61 6e 64 54 61 69 6c 0a 52 |ropCommandTail.R| 0001ae50 65 61 64 52 65 67 69 73 74 65 72 0a 23 45 6e 64 |eadRegister.#End| 0001ae60 54 61 62 6c 65 0a 00 00 44 49 52 24 2c 00 00 00 |Table...DIR$,...| 0001ae70 2c 00 00 00 94 ae 01 00 47 fd ff ff 8e 10 84 82 |,.......G.......| 0001ae80 ad 00 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |............!Roo| 0001ae90 74 00 00 00 44 41 54 41 ad 00 00 00 50 43 44 65 |t...DATA....PCDe| 0001aea0 76 48 65 6c 70 0a 23 50 61 72 65 6e 74 20 21 52 |vHelp.#Parent !R| 0001aeb0 6f 6f 74 0a 23 50 72 65 66 69 78 20 50 43 44 65 |oot.#Prefix PCDe| 0001aec0 76 48 65 6c 70 5f 0a 23 54 61 62 6c 65 20 43 6f |vHelp_.#Table Co| 0001aed0 6c 75 6d 6e 73 20 32 0a 49 6e 69 74 0a 52 65 67 |lumns 2.Init.Reg| 0001aee0 69 73 74 65 72 49 4f 0a 52 65 67 69 73 74 65 72 |isterIO.Register| 0001aef0 4d 65 6d 0a 52 65 67 69 73 74 65 72 44 4d 41 0a |Mem.RegisterDMA.| 0001af00 52 65 67 69 73 74 65 72 45 76 65 6e 74 0a 52 65 |RegisterEvent.Re| 0001af10 67 69 73 74 65 72 43 6f 6e 66 69 67 0a 52 65 67 |gisterConfig.Reg| 0001af20 69 73 74 65 72 48 50 43 0a 47 65 74 53 74 72 75 |isterHPC.GetStru| 0001af30 63 74 41 64 64 72 0a 23 45 6e 64 54 61 62 6c 65 |ctAddr.#EndTable| 0001af40 0a 00 00 00 44 49 52 24 2c 00 00 00 2c 00 00 00 |....DIR$,...,...| 0001af50 70 af 01 00 47 fd ff ff e3 0e 84 82 ca 00 00 00 |p...G...........| 0001af60 13 00 00 00 00 00 00 00 21 52 6f 6f 74 00 00 00 |........!Root...| 0001af70 44 41 54 41 ca 00 00 00 50 43 49 4f 0a 23 50 61 |DATA....PCIO.#Pa| 0001af80 72 65 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 |rent !Root.#Pref| 0001af90 69 78 20 50 43 49 4f 5f 0a 23 54 61 62 6c 65 20 |ix PCIO_.#Table | 0001afa0 43 6f 6c 75 6d 6e 73 20 32 0a 4c 50 54 49 6e 69 |Columns 2.LPTIni| 0001afb0 74 0a 4c 50 54 53 65 74 43 61 6c 6c 62 61 63 6b |t.LPTSetCallback| 0001afc0 0a 43 4f 4d 49 6e 69 74 0a 43 4f 4d 53 65 74 43 |.COMInit.COMSetC| 0001afd0 61 6c 6c 62 61 63 6b 0a 43 4f 4d 53 65 74 52 61 |allback.COMSetRa| 0001afe0 74 65 0a 43 4f 4d 53 65 74 42 79 74 65 46 6f 72 |te.COMSetByteFor| 0001aff0 6d 61 74 0a 43 4f 4d 53 65 74 4d 6f 64 65 6d 0a |mat.COMSetModem.| 0001b000 43 4f 4d 54 72 61 6e 73 6d 69 74 0a 43 4f 4d 47 |COMTransmit.COMG| 0001b010 65 74 53 74 61 74 75 73 0a 43 4f 4d 52 65 63 65 |etStatus.COMRece| 0001b020 69 76 65 0a 4c 50 54 52 65 61 64 50 6f 72 74 0a |ive.LPTReadPort.| 0001b030 23 45 6e 64 54 61 62 6c 65 0a 00 00 44 49 52 24 |#EndTable...DIR$| 0001b040 2c 00 00 00 2c 00 00 00 68 b0 01 00 47 fd ff ff |,...,...h...G...| 0001b050 9a 0f 84 82 68 00 00 00 13 00 00 00 00 00 00 00 |....h...........| 0001b060 21 52 6f 6f 74 00 00 00 44 41 54 41 68 00 00 00 |!Root...DATAh...| 0001b070 50 43 4d 65 6d 0a 23 50 61 72 65 6e 74 20 21 52 |PCMem.#Parent !R| 0001b080 6f 6f 74 0a 23 50 72 65 66 69 78 20 50 43 4d 65 |oot.#Prefix PCMe| 0001b090 6d 5f 0a 23 54 61 62 6c 65 20 43 6f 6c 75 6d 6e |m_.#Table Column| 0001b0a0 73 20 32 0a 53 65 74 4d 65 6d 0a 46 69 6c 6c 50 |s 2.SetMem.FillP| 0001b0b0 54 45 0a 47 65 74 4d 65 6d 54 62 6c 0a 53 68 6f |TE.GetMemTbl.Sho| 0001b0c0 77 49 6e 66 6f 0a 23 45 6e 64 54 61 62 6c 65 0a |wInfo.#EndTable.| 0001b0d0 44 49 52 24 0c 00 00 00 0c 00 00 00 44 49 52 24 |DIR$........DIR$| 0001b0e0 2c 00 00 00 2c 00 00 00 08 b1 01 00 46 fd ff ff |,...,.......F...| 0001b0f0 7d 90 db 14 26 01 00 00 13 00 00 00 00 00 00 00 |}...&...........| 0001b100 21 52 6f 6f 74 00 00 00 44 41 54 41 26 01 00 00 |!Root...DATA&...| 0001b110 54 72 61 6e 73 6c 61 74 6f 72 0a 23 50 61 72 65 |Translator.#Pare| 0001b120 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 |nt !Root.#Prefix| 0001b130 20 54 72 61 6e 73 6c 61 74 6f 72 5f 0a 23 54 61 | Translator_.#Ta| 0001b140 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 4d 61 |ble Columns 2.Ma| 0001b150 6b 65 4d 61 70 73 0a 53 65 74 56 61 72 69 61 62 |keMaps.SetVariab| 0001b160 6c 65 0a 52 65 61 64 56 61 72 69 61 62 6c 65 0a |le.ReadVariable.| 0001b170 55 6e 70 61 63 6b 50 72 65 0a 55 6e 70 61 63 6b |UnpackPre.Unpack| 0001b180 0a 53 65 74 50 61 6c 65 74 74 65 0a 52 6f 74 61 |.SetPalette.Rota| 0001b190 74 65 0a 4d 69 72 72 6f 72 58 0a 4d 69 72 72 6f |te.MirrorX.Mirro| 0001b1a0 72 59 0a 43 6c 6f 73 65 73 74 54 6f 52 47 42 0a |rY.ClosestToRGB.| 0001b1b0 44 4d 41 0a 50 69 78 65 6c 46 72 65 71 0a 43 61 |DMA.PixelFreq.Ca| 0001b1c0 6c 63 54 72 61 6e 73 0a 50 61 6c 65 74 74 65 0a |lcTrans.Palette.| 0001b1d0 4d 6f 76 65 57 6f 72 64 73 0a 45 78 63 68 61 6e |MoveWords.Exchan| 0001b1e0 67 65 57 6f 72 64 73 0a 57 72 69 74 65 57 6f 72 |geWords.WriteWor| 0001b1f0 64 73 0a 54 61 73 6b 53 74 61 72 74 0a 54 61 73 |ds.TaskStart.Tas| 0001b200 6b 51 75 69 74 0a 48 65 63 6b 62 65 72 74 0a 43 |kQuit.Heckbert.C| 0001b210 6f 72 72 65 63 74 43 6f 6c 0a 43 61 6c 63 52 61 |orrectCol.CalcRa| 0001b220 6e 67 65 0a 23 45 6e 64 54 61 62 6c 65 0a 00 00 |nge.#EndTable...| 0001b230 44 49 52 24 2c 00 00 00 2c 00 00 00 5c b2 01 00 |DIR$,...,...\...| 0001b240 47 fd ff ff f7 6c 7d 82 7c 00 00 00 03 00 00 00 |G....l}.|.......| 0001b250 00 00 00 00 21 52 6f 6f 74 00 00 00 44 41 54 41 |....!Root...DATA| 0001b260 7c 00 00 00 5a 61 70 4a 52 46 0a 23 50 61 72 65 ||...ZapJRF.#Pare| 0001b270 6e 74 20 21 52 6f 6f 74 0a 23 50 72 65 66 69 78 |nt !Root.#Prefix| 0001b280 20 5a 61 70 4a 52 46 5f 0a 23 54 61 62 6c 65 20 | ZapJRF_.#Table | 0001b290 43 6f 6c 75 6d 6e 73 20 32 0a 52 65 67 69 73 74 |Columns 2.Regist| 0001b2a0 65 72 53 63 72 69 70 74 44 69 72 65 63 74 69 76 |erScriptDirectiv| 0001b2b0 65 73 0a 44 65 52 65 67 69 73 74 65 72 53 63 72 |es.DeRegisterScr| 0001b2c0 69 70 74 44 69 72 65 63 74 69 76 65 73 0a 23 45 |iptDirectives.#E| 0001b2d0 6e 64 54 61 62 6c 65 0a 44 49 52 24 2c 00 00 00 |ndTable.DIR$,...| 0001b2e0 2c 00 00 00 04 b3 01 00 46 fd ff ff 61 8e db 14 |,.......F...a...| 0001b2f0 5a 01 00 00 13 00 00 00 00 00 00 00 21 52 6f 6f |Z...........!Roo| 0001b300 74 00 00 00 44 41 54 41 5a 01 00 00 5a 61 70 52 |t...DATAZ...ZapR| 0001b310 65 64 72 61 77 0a 23 50 61 72 65 6e 74 20 21 52 |edraw.#Parent !R| 0001b320 6f 6f 74 0a 23 50 72 65 66 69 78 20 5a 61 70 52 |oot.#Prefix ZapR| 0001b330 65 64 72 61 77 5f 0a 23 54 61 62 6c 65 20 43 6f |edraw_.#Table Co| 0001b340 6c 75 6d 6e 73 20 32 0a 52 65 64 72 61 77 41 72 |lumns 2.RedrawAr| 0001b350 65 61 0a 47 65 74 50 61 6c 65 74 74 65 45 6e 74 |ea.GetPaletteEnt| 0001b360 72 79 0a 52 65 64 72 61 77 52 61 73 74 65 72 0a |ry.RedrawRaster.| 0001b370 43 6f 6e 76 65 72 74 42 69 74 6d 61 70 0a 50 72 |ConvertBitmap.Pr| 0001b380 65 70 61 72 65 44 61 74 61 4c 69 6e 65 0a 41 64 |epareDataLine.Ad| 0001b390 64 43 75 72 73 6f 72 0a 46 69 6e 64 43 68 61 72 |dCursor.FindChar| 0001b3a0 61 63 74 65 72 0a 4d 6f 76 65 42 79 74 65 73 0a |acter.MoveBytes.| 0001b3b0 43 61 63 68 65 64 43 68 61 72 53 69 7a 65 0a 43 |CachedCharSize.C| 0001b3c0 6f 6e 76 42 69 74 6d 61 70 43 68 61 72 0a 43 72 |onvBitmapChar.Cr| 0001b3d0 65 61 74 65 50 61 6c 65 74 74 65 0a 49 6e 73 65 |eatePalette.Inse| 0001b3e0 72 74 43 68 61 72 0a 52 65 61 64 53 79 73 74 65 |rtChar.ReadSyste| 0001b3f0 6d 43 68 61 72 73 0a 52 65 76 65 72 73 65 42 69 |mChars.ReverseBi| 0001b400 74 6d 61 70 73 0a 52 65 61 64 56 64 75 56 61 72 |tmaps.ReadVduVar| 0001b410 73 0a 47 65 74 52 65 63 74 61 6e 67 6c 65 0a 41 |s.GetRectangle.A| 0001b420 64 64 56 64 75 42 69 74 6d 61 70 73 0a 43 61 63 |ddVduBitmaps.Cac| 0001b430 68 65 46 6f 6e 74 43 68 61 72 73 0a 53 70 72 69 |heFontChars.Spri| 0001b440 74 65 53 69 7a 65 0a 52 65 64 72 61 77 57 69 6e |teSize.RedrawWin| 0001b450 64 6f 77 0a 23 45 6e 64 54 61 62 6c 65 0a 00 00 |dow.#EndTable...| 0001b460 44 41 54 41 45 04 00 00 4d 69 73 63 65 6c 6c 61 |DATAE...Miscella| 0001b470 6e 65 6f 75 73 20 53 57 49 73 0a 23 50 61 72 65 |neous SWIs.#Pare| 0001b480 6e 74 20 53 74 72 6f 6e 67 48 65 6c 70 3a 21 4d |nt StrongHelp:!M| 0001b490 65 6e 75 0a 23 50 6f 73 74 66 69 78 20 5f 0a 43 |enu.#Postfix _.C| 0001b4a0 6f 6d 70 75 74 65 72 20 43 6f 6e 63 65 70 74 73 |omputer Concepts| 0001b4b0 20 3a 0a 23 49 6e 64 65 6e 74 20 32 0a 23 54 61 | :.#Indent 2.#Ta| 0001b4c0 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 33 0a 3c 41 |ble Columns 3.<A| 0001b4d0 42 49 3e 0a 3c 41 42 43 4c 69 62 3e 0a 3c 41 75 |BI>.<ABCLib>.<Au| 0001b4e0 64 69 6f 4d 61 6e 61 67 65 72 3e 0a 3c 41 57 52 |dioManager>.<AWR| 0001b4f0 65 6e 64 65 72 3e 0a 3c 43 6f 6c 6f 75 72 45 78 |ender>.<ColourEx| 0001b500 74 65 6e 64 3e 0a 3c 44 69 74 68 65 72 45 78 74 |tend>.<DitherExt| 0001b510 65 6e 64 3e 0a 3c 44 6f 63 75 6d 65 6e 74 4d 61 |end>.<DocumentMa| 0001b520 6e 61 67 65 72 3e 0a 3c 46 6f 6e 74 44 72 61 77 |nager>.<FontDraw| 0001b530 3e 0a 3c 47 44 72 61 77 3e 0a 3c 47 53 70 72 69 |>.<GDraw>.<GSpri| 0001b540 74 65 45 78 74 65 6e 64 3e 0a 3c 48 79 70 68 65 |teExtend>.<Hyphe| 0001b550 6e 61 74 6f 72 3e 0a 3c 49 6d 61 67 65 45 78 74 |nator>.<ImageExt| 0001b560 65 6e 64 3e 0a 3c 49 6d 70 75 6c 73 65 3e 0a 3c |end>.<Impulse>.<| 0001b570 4f 4c 45 3e 0a 3c 50 6f 63 6b 65 74 46 53 3e 0a |OLE>.<PocketFS>.| 0001b580 3c 50 6f 63 6b 65 74 4c 69 6e 6b 3e 0a 3c 53 70 |<PocketLink>.<Sp| 0001b590 65 6c 6c 3e 0a 3c 53 74 72 65 61 6d 3e 0a 3c 53 |ell>.<Stream>.<S| 0001b5a0 74 72 65 61 6d 53 71 75 61 73 68 3e 0a 3c 57 69 |treamSquash>.<Wi| 0001b5b0 6d 70 4b 65 79 3e 0a 23 45 6e 64 54 61 62 6c 65 |mpKey>.#EndTable| 0001b5c0 0a 0a 23 49 6e 64 65 6e 74 20 30 0a 41 63 6f 72 |..#Indent 0.Acor| 0001b5d0 6e 20 75 74 69 6c 69 74 69 65 73 20 3a 0a 23 49 |n utilities :.#I| 0001b5e0 6e 64 65 6e 74 20 33 0a 23 54 61 62 6c 65 20 43 |ndent 3.#Table C| 0001b5f0 6f 6c 75 6d 6e 73 20 34 0a 3c 43 6f 6d 70 72 65 |olumns 4.<Compre| 0001b600 73 73 4a 50 45 47 3e 0a 3c 44 72 61 67 41 6e 4f |ssJPEG>.<DragAnO| 0001b610 62 6a 65 63 74 3e 0a 3c 46 72 6f 6e 74 45 6e 64 |bject>.<FrontEnd| 0001b620 3e 0a 4d 61 6b 65 50 53 46 6f 6e 74 0a 52 65 6d |>.MakePSFont.Rem| 0001b630 6f 74 65 50 72 69 6e 74 65 72 53 75 70 70 6f 72 |otePrinterSuppor| 0001b640 74 0a 3c 52 4f 4d 43 61 63 68 65 3e 0a 23 45 6e |t.<ROMCache>.#En| 0001b650 64 54 61 62 6c 65 0a 0a 23 49 6e 64 65 6e 74 20 |dTable..#Indent | 0001b660 30 0a 4a 6f 68 6e 20 4b 6f 72 74 69 6e 6b 20 3a |0.John Kortink :| 0001b670 0a 23 49 6e 64 65 6e 74 20 33 0a 23 54 61 62 6c |.#Indent 3.#Tabl| 0001b680 65 20 43 6f 6c 75 6d 6e 73 20 34 0a 3c 42 6f 72 |e Columns 4.<Bor| 0001b690 64 65 72 73 3e 0a 3c 43 72 65 61 74 6f 72 3e 0a |ders>.<Creator>.| 0001b6a0 3c 46 69 6c 65 42 75 66 66 65 72 3e 0a 3c 4c 5a |<FileBuffer>.<LZ| 0001b6b0 57 3e 0a 3c 4c 5a 57 42 3e 0a 3c 4c 5a 57 44 3e |W>.<LZWB>.<LZWD>| 0001b6c0 0a 3c 4d 61 6b 65 47 49 46 3e 0a 3c 54 72 61 6e |.<MakeGIF>.<Tran| 0001b6d0 73 6c 61 74 6f 72 3e 0a 23 45 6e 64 54 61 62 6c |slator>.#EndTabl| 0001b6e0 65 0a 0a 23 49 6e 64 65 6e 74 20 30 0a 4d 69 73 |e..#Indent 0.Mis| 0001b6f0 63 65 6c 6c 61 6e 65 6f 75 73 20 3a 0a 23 49 6e |cellaneous :.#In| 0001b700 64 65 6e 74 20 33 0a 23 54 61 62 6c 65 20 43 6f |dent 3.#Table Co| 0001b710 6c 75 6d 6e 73 20 34 0a 3c 41 45 48 3d 3e 41 45 |lumns 4.<AEH=>AE| 0001b720 48 4d 6f 64 75 6c 65 3a 21 52 6f 6f 74 3e 0a 3c |HModule:!Root>.<| 0001b730 41 72 63 46 53 3e 0a 3c 41 72 63 46 53 4d 65 6d |ArcFS>.<ArcFSMem| 0001b740 4d 61 6e 3e 0a 3c 41 52 43 54 4f 4f 4c 53 3e 0a |Man>.<ARCTOOLS>.| 0001b750 3c 43 41 49 46 53 3e 0a 3c 44 69 72 65 63 74 6f |<CAIFS>.<Directo| 0001b760 72 3e 0a 3c 44 69 73 73 3e 0a 3c 44 53 79 6d 3e |r>.<Diss>.<DSym>| 0001b770 0a 3c 45 61 73 79 46 53 3e 0a 3c 45 75 63 6c 69 |.<EasyFS>.<Eucli| 0001b780 64 3e 0a 3c 50 72 6f 46 69 6c 65 72 3d 3e 46 69 |d>.<ProFiler=>Fi| 0001b790 6c 65 72 5f 3e 0a 3c 47 64 62 6d 3e 0a 3c 48 65 |ler_>.<Gdbm>.<He| 0001b7a0 6c 69 78 42 61 73 69 63 3e 0a 3c 49 6e 74 65 72 |lixBasic>.<Inter| 0001b7b0 66 61 63 65 3e 0a 3c 49 5a 69 70 46 53 3e 0a 3c |face>.<IZipFS>.<| 0001b7c0 4c 61 72 67 65 72 53 75 70 70 6f 72 74 3e 0a 3c |LargerSupport>.<| 0001b7d0 4c 69 6e 65 45 64 69 74 6f 72 3e 0a 3c 4e 65 74 |LineEditor>.<Net| 0001b7e0 4d 6f 6e 69 74 6f 72 3e 0a 3c 4d 6f 44 65 6c 3e |Monitor>.<MoDel>| 0001b7f0 0a 3c 4e 48 3e 0a 50 43 53 75 70 70 6f 72 74 0a |.<NH>.PCSupport.| 0001b800 3c 50 43 49 4f 3e 0a 3c 50 43 4d 65 6d 3e 0a 3c |<PCIO>.<PCMem>.<| 0001b810 50 43 44 65 76 48 65 6c 70 3e 0a 3c 50 50 41 44 |PCDevHelp>.<PPAD| 0001b820 72 69 76 65 72 3e 0a 3c 51 54 4d 3e 0a 3c 52 65 |river>.<QTM>.<Re| 0001b830 61 64 4d 61 69 6c 3e 0a 3c 53 70 63 68 3e 0a 3c |adMail>.<Spch>.<| 0001b840 53 70 61 72 6b 46 53 3e 0a 3c 54 72 61 63 6b 65 |SparkFS>.<Tracke| 0001b850 72 3e 0a 3c 56 50 72 6f 74 65 63 74 3e 0a 3c 57 |r>.<VProtect>.<W| 0001b860 69 6d 70 45 78 74 3d 3e 57 69 6d 70 45 78 74 3a |impExt=>WimpExt:| 0001b870 21 52 6f 6f 74 3e 0a 3c 57 69 6d 70 48 61 63 6b |!Root>.<WimpHack| 0001b880 3e 0a 3c 5a 61 70 52 65 64 72 61 77 3e 0a 3c 5a |>.<ZapRedraw>.<Z| 0001b890 61 70 4a 52 46 3e 0a 23 45 6e 64 54 61 62 6c 65 |apJRF>.#EndTable| 0001b8a0 0a 30 2e 39 39 00 00 00 44 41 54 41 f4 06 00 00 |.0.99...DATA....| 0001b8b0 4d 69 73 63 20 53 57 49 73 20 6d 61 6e 75 61 6c |Misc SWIs manual| 0001b8c0 0a 23 41 6c 69 67 6e 20 43 65 6e 74 72 65 0a 7b |.#Align Centre.{| 0001b8d0 66 68 33 7d 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 |fh3}Miscellaneou| 0001b8e0 73 20 53 57 49 73 20 6d 61 6e 75 61 6c 7b 66 7d |s SWIs manual{f}| 0001b8f0 0a 23 6c 69 6e 65 0a 23 41 6c 69 67 6e 20 4c 65 |.#line.#Align Le| 0001b900 66 74 0a 54 68 69 73 20 6d 61 6e 75 61 6c 20 69 |ft.This manual i| 0001b910 73 20 70 61 72 74 20 6f 66 20 61 20 63 6f 6c 6c |s part of a coll| 0001b920 65 63 74 69 6f 6e 20 63 6f 6d 70 72 69 73 69 6e |ection comprisin| 0001b930 67 20 74 68 65 20 6d 61 69 6e 20 70 75 62 6c 69 |g the main publi| 0001b940 63 20 64 6f 6d 61 69 6e 20 70 72 6f 67 72 61 6d |c domain program| 0001b950 6d 69 6e 67 20 72 65 66 65 72 65 6e 63 65 2e 20 |ming reference. | 0001b960 54 68 65 20 6f 74 68 65 72 20 6d 61 6e 75 61 6c |The other manual| 0001b970 73 20 69 6e 20 74 68 65 20 73 65 72 69 65 73 20 |s in the series | 0001b980 61 72 65 20 3a 0a 23 49 6e 64 65 6e 74 20 32 0a |are :.#Indent 2.| 0001b990 23 50 6f 73 74 66 69 78 20 3a 21 52 6f 6f 74 0a |#Postfix :!Root.| 0001b9a0 3c 4f 53 3e 09 09 54 68 65 20 62 61 73 65 20 6f |<OS>..The base o| 0001b9b0 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 |perating system | 0001b9c0 73 74 75 66 66 0a 3c 57 69 6d 70 3e 09 09 54 68 |stuff.<Wimp>..Th| 0001b9d0 65 20 64 65 73 6b 74 6f 70 20 70 61 72 74 20 6f |e desktop part o| 0001b9e0 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 |f the operating | 0001b9f0 73 79 73 74 65 6d 0a 3c 49 6e 65 74 53 57 49 73 |system.<InetSWIs| 0001ba00 3e 09 49 6e 74 65 72 6e 65 74 20 62 61 73 65 64 |>.Internet based| 0001ba10 20 53 57 49 73 0a 3c 49 6e 65 74 53 6f 63 6b 65 | SWIs.<InetSocke| 0001ba20 74 3e 09 49 6e 74 65 72 6e 65 74 20 73 6f 63 6b |t>.Internet sock| 0001ba30 65 74 20 63 61 6c 6c 73 0a 3c 4d 69 73 63 53 57 |et calls.<MiscSW| 0001ba40 49 73 3e 09 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 |Is>.Miscellaneou| 0001ba50 73 20 53 57 49 73 0a 3c 56 44 55 3e 09 09 56 44 |s SWIs.<VDU>..VD| 0001ba60 55 20 63 6f 6d 6d 61 6e 64 73 0a 3c 54 6f 6f 6c |U commands.<Tool| 0001ba70 62 6f 78 3e 09 54 6f 6f 6c 62 6f 78 20 28 62 79 |box>.Toolbox (by| 0001ba80 20 4e 69 65 6c 20 42 69 6e 67 68 61 6d 29 0a 23 | Niel Bingham).#| 0001ba90 49 6e 64 65 6e 74 0a 0a 46 6f 72 20 63 6f 6d 6d |Indent..For comm| 0001baa0 65 6e 74 73 2c 20 73 75 67 67 65 73 74 69 6f 6e |ents, suggestion| 0001bab0 73 20 61 6e 64 20 73 75 62 6d 69 73 73 69 6f 6e |s and submission| 0001bac0 73 20 66 6f 72 20 74 68 65 73 65 2c 20 70 6c 65 |s for these, ple| 0001bad0 61 73 65 20 6d 61 69 6c 20 4a 75 73 74 69 6e 20 |ase mail Justin | 0001bae0 46 6c 65 74 63 68 65 72 20 3c 5c 3c 67 65 72 70 |Fletcher <\<gerp| 0001baf0 68 40 69 6e 6e 6f 63 65 6e 74 2e 63 6f 6d 5c 3e |h@innocent.com\>| 0001bb00 3d 3e 23 55 52 4c 20 6d 61 69 6c 74 6f 3a 67 65 |=>#URL mailto:ge| 0001bb10 72 70 68 40 69 6e 6e 6f 63 65 6e 74 2e 63 6f 6d |rph@innocent.com| 0001bb20 3e 20 77 68 6f 20 69 73 20 63 75 72 72 65 6e 74 |> who is current| 0001bb30 6c 79 20 6d 6f 64 65 72 61 74 69 6e 67 20 74 68 |ly moderating th| 0001bb40 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 20 54 68 |e collection. Th| 0001bb50 65 20 70 72 69 6d 61 72 79 20 6c 6f 63 61 74 69 |e primary locati| 0001bb60 6f 6e 20 66 6f 72 20 74 68 65 73 65 20 6d 61 6e |on for these man| 0001bb70 75 61 6c 73 20 77 69 6c 6c 20 62 65 20 3c 68 74 |uals will be <ht| 0001bb80 74 70 3a 2f 2f 66 72 65 65 6e 65 74 2e 62 61 72 |tp://freenet.bar| 0001bb90 6e 65 74 2e 61 63 2e 75 6b 2f 6d 61 6e 75 61 6c |net.ac.uk/manual| 0001bba0 73 2f 3d 3e 23 55 52 4c 20 68 74 74 70 3a 2f 2f |s/=>#URL http://| 0001bbb0 66 72 65 65 6e 65 74 2e 62 61 72 6e 65 74 2e 61 |freenet.barnet.a| 0001bbc0 63 2e 75 6b 2f 6d 61 6e 75 61 6c 73 2f 3e 2e 0a |c.uk/manuals/>..| 0001bbd0 0a 43 6c 69 63 6b 20 3c 68 65 72 65 3d 3e 2e 68 |.Click <here=>.h| 0001bbe0 69 73 74 31 30 33 3e 20 66 6f 72 20 68 69 73 74 |ist103> for hist| 0001bbf0 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e |ory information.| 0001bc00 0a 23 0a 23 53 75 62 70 61 67 65 20 68 69 73 74 |.#.#Subpage hist| 0001bc10 31 30 30 0a 48 69 73 74 6f 72 79 20 66 6f 72 20 |100.History for | 0001bc20 4d 69 73 63 20 76 31 2e 30 30 0a 23 41 6c 69 67 |Misc v1.00.#Alig| 0001bc30 6e 20 52 69 67 68 74 0a 7b 2f 7d 31 30 20 4f 63 |n Right.{/}10 Oc| 0001bc40 74 20 31 39 39 37 7b 2f 7d 0a 23 41 6c 69 67 6e |t 1997{/}.#Align| 0001bc50 20 4c 65 66 74 0a 8f 09 43 68 61 6e 67 65 64 20 | Left...Changed | 0001bc60 61 6c 6c 20 74 68 65 20 62 69 74 73 20 61 72 6f |all the bits aro| 0001bc70 75 6e 64 20 73 6f 20 74 68 61 74 20 74 68 65 20 |und so that the | 0001bc80 6d 61 69 6e 20 77 69 6e 64 6f 77 20 6c 6f 6f 6b |main window look| 0001bc90 73 20 61 20 6c 69 74 74 6c 65 20 6d 6f 72 65 20 |s a little more | 0001bca0 6c 69 6b 65 20 74 68 65 20 6f 74 68 65 72 20 6d |like the other m| 0001bcb0 61 6e 75 61 6c 73 0a 8f 09 41 64 64 65 64 20 73 |anuals...Added s| 0001bcc0 6f 6d 65 20 4c 69 6e 65 45 64 69 74 6f 72 20 64 |ome LineEditor d| 0001bcd0 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 0a 3c 4e |ocumentation..<N| 0001bce0 65 78 74 20 68 69 73 74 6f 72 79 3d 3e 2e 68 69 |ext history=>.hi| 0001bcf0 73 74 31 30 31 3e 0a 23 53 75 62 70 61 67 65 20 |st101>.#Subpage | 0001bd00 68 69 73 74 31 30 31 0a 48 69 73 74 6f 72 79 20 |hist101.History | 0001bd10 66 6f 72 20 4d 69 73 63 20 76 31 2e 30 31 0a 23 |for Misc v1.01.#| 0001bd20 41 6c 69 67 6e 20 52 69 67 68 74 0a 7b 2f 7d 31 |Align Right.{/}1| 0001bd30 35 20 4e 6f 76 20 31 39 39 37 7b 2f 7d 0a 23 41 |5 Nov 1997{/}.#A| 0001bd40 6c 69 67 6e 20 4c 65 66 74 0a 8f 09 4c 6f 74 73 |lign Left...Lots| 0001bd50 20 6f 66 20 63 68 61 6e 67 65 73 20 66 72 6f 6d | of changes from| 0001bd60 20 44 61 76 65 20 54 68 6f 6d 61 73 3b 20 73 6f | Dave Thomas; so| 0001bd70 6d 65 20 41 70 70 45 6e 67 69 6e 65 20 64 6f 63 |me AppEngine doc| 0001bd80 73 2c 20 43 6f 6d 70 72 65 73 73 4a 50 45 47 20 |s, CompressJPEG | 0001bd90 61 6e 64 20 53 70 61 72 6b 46 53 20 53 57 49 73 |and SparkFS SWIs| 0001bda0 20 66 72 6f 6d 20 68 69 73 20 6f 77 6e 20 6d 61 | from his own ma| 0001bdb0 6e 75 61 6c 73 0a 8f 09 44 44 45 55 74 69 6c 73 |nuals...DDEUtils| 0001bdc0 20 62 75 67 20 66 69 78 65 73 0a 0a 23 54 61 62 | bug fixes..#Tab| 0001bdd0 0a 3c 50 72 65 76 69 6f 75 73 20 68 69 73 74 6f |.<Previous histo| 0001bde0 72 79 3d 3e 2e 68 69 73 74 31 30 30 3e 09 3c 4e |ry=>.hist100>.<N| 0001bdf0 65 78 74 20 68 69 73 74 6f 72 79 3d 3e 2e 68 69 |ext history=>.hi| 0001be00 73 74 31 30 32 3e 0a 23 53 75 62 70 61 67 65 20 |st102>.#Subpage | 0001be10 68 69 73 74 31 30 32 0a 48 69 73 74 6f 72 79 20 |hist102.History | 0001be20 66 6f 72 20 4d 69 73 63 20 76 31 2e 30 32 0a 23 |for Misc v1.02.#| 0001be30 41 6c 69 67 6e 20 52 69 67 68 74 0a 7b 2f 7d 32 |Align Right.{/}2| 0001be40 30 20 44 65 63 20 31 39 39 37 20 2d 20 31 35 20 |0 Dec 1997 - 15 | 0001be50 4a 61 6e 20 31 39 39 38 7b 2f 7d 0a 23 41 6c 69 |Jan 1998{/}.#Ali| 0001be60 67 6e 20 4c 65 66 74 0a 8f 09 41 64 64 65 64 20 |gn Left...Added | 0001be70 73 6f 6d 65 20 53 70 65 61 6b 20 53 57 49 73 0a |some Speak SWIs.| 0001be80 8f 09 44 44 45 55 74 69 6c 73 20 6d 6f 76 65 64 |..DDEUtils moved| 0001be90 20 74 6f 20 57 69 6d 70 0a 8f 09 41 64 64 65 64 | to Wimp...Added| 0001bea0 20 72 65 61 6c 20 53 70 65 61 6b 20 64 6f 63 75 | real Speak docu| 0001beb0 6d 65 6e 74 61 74 69 6f 6e 20 66 72 6f 6d 20 4a |mentation from J| 0001bec0 6f 68 6e 61 74 68 61 6e 20 44 75 64 64 69 6e 67 |ohnathan Dudding| 0001bed0 74 6f 6e 2e 0a 0a 23 54 61 62 0a 3c 50 72 65 76 |ton...#Tab.<Prev| 0001bee0 69 6f 75 73 20 68 69 73 74 6f 72 79 3d 3e 2e 68 |ious history=>.h| 0001bef0 69 73 74 31 30 31 3e 09 3c 4e 65 78 74 20 68 69 |ist101>.<Next hi| 0001bf00 73 74 6f 72 79 3d 3e 2e 68 69 73 74 31 30 33 3e |story=>.hist103>| 0001bf10 0a 23 53 75 62 70 61 67 65 20 68 69 73 74 31 30 |.#Subpage hist10| 0001bf20 33 0a 48 69 73 74 6f 72 79 20 66 6f 72 20 4d 69 |3.History for Mi| 0001bf30 73 63 20 76 31 2e 30 33 0a 23 41 6c 69 67 6e 20 |sc v1.03.#Align | 0001bf40 52 69 67 68 74 0a 7b 2f 7d 32 32 20 4d 61 72 20 |Right.{/}22 Mar | 0001bf50 31 39 39 38 7b 2f 7d 0a 23 41 6c 69 67 6e 20 4c |1998{/}.#Align L| 0001bf60 65 66 74 0a 8f 09 4d 69 73 63 20 6d 69 6e 6f 72 |eft...Misc minor| 0001bf70 20 63 68 61 6e 67 65 73 0a 0a 23 54 61 62 0a 3c | changes..#Tab.<| 0001bf80 50 72 65 76 69 6f 75 73 20 68 69 73 74 6f 72 79 |Previous history| 0001bf90 3d 3e 2e 68 69 73 74 31 30 32 3e 0a 44 49 52 24 |=>.hist102>.DIR$| 0001bfa0 b4 00 00 00 b4 00 00 00 50 c0 01 00 47 fd ff ff |........P...G...| 0001bfb0 cd 32 e3 d1 f8 00 00 00 33 00 00 00 00 00 00 00 |.2......3.......| 0001bfc0 21 52 6f 6f 74 00 00 00 48 c1 01 00 48 fd ff ff |!Root...H...H...| 0001bfd0 c2 ec 80 2b 64 00 00 00 13 01 00 00 00 00 00 00 |...+d...........| 0001bfe0 43 6f 64 65 63 4f 70 00 e0 c9 01 00 48 fd ff ff |CodecOp.....H...| 0001bff0 8b ed 80 2b d8 00 00 00 13 01 00 00 00 00 00 00 |...+............| 0001c000 48 65 61 70 00 00 00 00 84 e2 01 00 48 fd ff ff |Heap........H...| 0001c010 56 ef 80 2b b8 00 00 00 13 01 00 00 00 00 00 00 |V..+............| 0001c020 53 6f 63 6b 65 74 4f 70 00 00 00 00 78 ec 01 00 |SocketOp....x...| 0001c030 48 fd ff ff 6f f0 80 2b b4 01 00 00 13 01 00 00 |H...o..+........| 0001c040 00 00 00 00 53 74 72 69 6e 67 4f 70 00 00 00 00 |....StringOp....| 0001c050 44 41 54 41 f8 00 00 00 41 70 70 45 6e 67 69 6e |DATA....AppEngin| 0001c060 65 20 4d 6f 64 75 6c 65 0a 23 50 72 65 66 69 78 |e Module.#Prefix| 0001c070 20 41 70 70 45 6e 67 69 6e 65 5f 0a 23 53 70 72 | AppEngine_.#Spr| 0001c080 69 74 65 20 30 2c 30 20 21 61 70 70 65 6e 67 69 |ite 0,0 !appengi| 0001c090 6e 65 0a 23 49 6e 64 65 6e 74 20 35 0a 7b 2a 7d |ne.#Indent 5.{*}| 0001c0a0 41 70 70 45 6e 67 69 6e 65 20 4d 6f 64 75 6c 65 |AppEngine Module| 0001c0b0 7b 2a 7d 0a 30 2e 30 36 20 28 31 33 20 53 65 70 |{*}.0.06 (13 Sep| 0001c0c0 20 31 39 39 37 29 0a 23 4c 69 6e 65 0a 23 54 61 | 1997).#Line.#Ta| 0001c0d0 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a 52 65 |ble Columns 2.Re| 0001c0e0 73 6f 75 72 63 65 4f 70 0a 3c 53 74 72 69 6e 67 |sourceOp.<String| 0001c0f0 4f 70 3e 0a 57 69 6e 64 6f 77 4f 70 0a 49 63 6f |Op>.WindowOp.Ico| 0001c100 6e 4f 70 0a 44 61 74 65 4f 70 0a 3c 53 6f 63 6b |nOp.DateOp.<Sock| 0001c110 65 74 4f 70 3e 0a 3c 43 6f 64 65 63 4f 70 3e 0a |etOp>.<CodecOp>.| 0001c120 55 52 4c 4f 70 0a 4d 65 6d 6f 72 79 4f 70 0a 3c |URLOp.MemoryOp.<| 0001c130 48 65 61 70 3e 0a 23 45 6e 64 54 61 62 6c 65 0a |Heap>.#EndTable.| 0001c140 23 49 6e 64 65 6e 74 0a 44 49 52 24 64 00 00 00 |#Indent.DIR$d...| 0001c150 64 00 00 00 ac c1 01 00 47 ff ff ff e1 5f 90 e9 |d.......G...._..| 0001c160 d4 01 00 00 33 00 00 00 00 00 00 00 21 52 6f 6f |....3.......!Roo| 0001c170 74 00 00 00 80 c3 01 00 47 fd ff ff c2 21 91 e9 |t.......G....!..| 0001c180 39 03 00 00 03 00 00 00 00 00 00 00 30 00 00 00 |9...........0...| 0001c190 bc c6 01 00 47 fd ff ff 98 1a 91 e9 24 03 00 00 |....G.......$...| 0001c1a0 03 00 00 00 00 00 00 00 31 00 00 00 44 41 54 41 |........1...DATA| 0001c1b0 d4 01 00 00 41 70 70 45 6e 67 69 6e 65 5f 43 6f |....AppEngine_Co| 0001c1c0 64 65 63 4f 70 20 20 28 26 34 44 39 34 36 29 0a |decOp (&4D946).| 0001c1d0 23 57 72 61 70 20 6f 66 66 0a 3d 3e 09 52 30 20 |#Wrap off.=>.R0 | 0001c1e0 3d 09 3c 72 65 61 73 6f 6e 20 63 6f 64 65 3d 3e |=.<reason code=>| 0001c1f0 2e 72 65 61 73 6f 6e 73 3e 0a 09 6f 74 68 65 72 |.reasons>..other| 0001c200 20 72 65 67 69 73 74 65 72 73 20 61 72 65 20 72 | registers are r| 0001c210 65 61 73 6f 6e 20 63 6f 64 65 20 64 65 70 65 6e |eason code depen| 0001c220 64 65 6e 74 0a 0a 3c 3d 09 52 30 20 70 72 65 73 |dent..<=.R0 pres| 0001c230 65 72 76 65 64 0a 09 6f 74 68 65 72 20 72 65 67 |erved..other reg| 0001c240 69 73 74 65 72 73 20 61 72 65 20 72 65 61 73 6f |isters are reaso| 0001c250 6e 20 63 6f 64 65 20 64 65 70 65 6e 64 65 6e 74 |n code dependent| 0001c260 0a 23 57 72 61 70 0a 0a 54 68 69 73 20 63 61 6c |.#Wrap..This cal| 0001c270 6c 20 70 72 6f 76 69 64 65 73 20 6f 70 65 72 61 |l provides opera| 0001c280 74 69 6f 6e 73 20 74 6f 20 65 6e 63 6f 64 65 20 |tions to encode | 0001c290 61 6e 64 20 64 65 63 6f 64 65 20 64 61 74 61 20 |and decode data | 0001c2a0 69 6e 74 6f 20 76 61 72 69 6f 75 73 20 65 6e 63 |into various enc| 0001c2b0 6f 64 65 64 20 66 6f 72 6d 61 74 73 2e 0a 23 53 |oded formats..#S| 0001c2c0 75 62 70 61 67 65 20 72 65 61 73 6f 6e 73 0a 41 |ubpage reasons.A| 0001c2d0 70 70 45 6e 67 69 6e 65 5f 43 6f 64 65 63 4f 70 |ppEngine_CodecOp| 0001c2e0 20 72 65 61 73 6f 6e 20 63 6f 64 65 73 0a 23 57 | reason codes.#W| 0001c2f0 72 61 70 20 6f 66 66 0a 52 30 09 41 63 74 69 6f |rap off.R0.Actio| 0001c300 6e 0a 23 4c 69 6e 65 0a 30 09 3c 45 6e 63 6f 64 |n.#Line.0.<Encod| 0001c310 65 20 64 61 74 61 20 69 6e 74 6f 20 61 20 42 61 |e data into a Ba| 0001c320 73 65 36 34 20 73 74 72 69 6e 67 3d 3e 41 70 70 |se64 string=>App| 0001c330 45 6e 67 69 6e 65 5f 43 6f 64 65 63 4f 70 30 3e |Engine_CodecOp0>| 0001c340 0a 31 09 3c 44 65 63 6f 64 65 20 42 61 73 65 36 |.1.<Decode Base6| 0001c350 34 20 64 61 74 61 20 69 6e 74 6f 20 61 20 73 74 |4 data into a st| 0001c360 72 69 6e 67 3d 3e 41 70 70 45 6e 67 69 6e 65 5f |ring=>AppEngine_| 0001c370 43 6f 64 65 63 4f 70 31 3e 0a 23 57 72 61 70 0a |CodecOp1>.#Wrap.| 0001c380 44 41 54 41 39 03 00 00 41 70 70 45 6e 67 69 6e |DATA9...AppEngin| 0001c390 65 5f 43 6f 64 65 63 4f 70 20 30 20 20 28 26 34 |e_CodecOp 0 (&4| 0001c3a0 44 39 34 36 29 0a 23 50 61 72 65 6e 74 20 41 70 |D946).#Parent Ap| 0001c3b0 70 45 6e 67 69 6e 65 5f 43 6f 64 65 63 4f 70 0a |pEngine_CodecOp.| 0001c3c0 3d 3e 09 52 30 20 3d 09 30 0a 09 52 31 20 3d 09 |=>.R0 =.0..R1 =.| 0001c3d0 70 6f 69 6e 74 65 72 20 74 6f 20 69 6e 70 75 74 |pointer to input| 0001c3e0 20 64 61 74 61 0a 09 52 32 20 3d 09 6c 65 6e 67 | data..R2 =.leng| 0001c3f0 74 68 20 6f 66 20 69 6e 70 75 74 20 64 61 74 61 |th of input data| 0001c400 20 28 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 20 31 | (no more than 1| 0001c410 38 39 20 62 79 74 65 73 29 0a 0a 3c 3d 09 52 30 |89 bytes)..<=.R0| 0001c420 2c 20 52 31 2c 20 52 32 20 70 72 65 73 65 72 76 |, R1, R2 preserv| 0001c430 65 64 0a 09 52 33 20 3d 09 70 6f 69 6e 74 65 72 |ed..R3 =.pointer| 0001c440 20 74 6f 20 42 61 73 65 36 34 2d 65 6e 63 6f 64 | to Base64-encod| 0001c450 65 64 20 73 74 72 69 6e 67 0a 0a 45 6e 63 6f 64 |ed string..Encod| 0001c460 65 73 20 64 61 74 61 20 69 6e 74 6f 20 61 20 42 |es data into a B| 0001c470 61 73 65 36 34 20 73 74 72 69 6e 67 2e 0a 0a 54 |ase64 string...T| 0001c480 68 69 73 20 63 61 6c 6c 20 69 73 20 75 73 65 64 |his call is used| 0001c490 20 74 6f 20 65 6e 63 6f 64 65 20 73 6d 61 6c 6c | to encode small| 0001c4a0 20 61 6d 6f 75 6e 74 73 20 6f 66 20 64 61 74 61 | amounts of data| 0001c4b0 20 69 6e 74 6f 20 74 68 65 20 37 2d 62 69 74 20 | into the 7-bit | 0001c4c0 4d 49 4d 45 20 42 61 73 65 36 34 20 65 6e 63 6f |MIME Base64 enco| 0001c4d0 64 65 64 20 66 6f 72 6d 61 74 2c 20 66 6f 72 20 |ded format, for | 0001c4e0 75 73 65 20 69 6e 20 49 6e 74 65 72 6e 65 74 20 |use in Internet | 0001c4f0 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 0a 53 |applications...S| 0001c500 69 6e 63 65 20 74 68 65 20 6f 75 74 70 75 74 20 |ince the output | 0001c510 69 73 20 61 20 73 74 72 69 6e 67 2c 20 6c 69 6d |is a string, lim| 0001c520 69 74 65 64 20 74 6f 20 61 20 6d 61 78 69 6d 75 |ited to a maximu| 0001c530 6d 20 6f 66 20 32 35 35 20 63 68 61 72 61 63 74 |m of 255 charact| 0001c540 65 72 73 20 79 6f 75 20 6d 75 73 74 20 65 6e 73 |ers you must ens| 0001c550 75 72 65 20 74 68 61 74 20 79 6f 75 20 73 75 70 |ure that you sup| 0001c560 70 6c 79 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e |ply no more than| 0001c570 20 31 38 39 20 62 79 74 65 73 20 6f 66 20 69 6e | 189 bytes of in| 0001c580 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 62 65 |put. This is be| 0001c590 63 61 75 73 65 20 66 6f 72 20 65 76 65 72 79 20 |cause for every | 0001c5a0 74 68 72 65 65 20 62 79 74 65 73 20 6f 66 20 69 |three bytes of i| 0001c5b0 6e 70 75 74 2c 20 74 68 65 20 65 6e 63 6f 64 65 |nput, the encode| 0001c5c0 72 20 67 65 6e 65 72 61 74 65 73 20 66 6f 75 72 |r generates four| 0001c5d0 20 62 79 74 65 73 20 6f 66 20 6f 75 74 70 75 74 | bytes of output| 0001c5e0 20 61 6e 64 20 61 6c 73 6f 20 73 74 72 69 6e 67 | and also string| 0001c5f0 73 20 6f 66 20 63 65 72 74 61 69 6e 20 6c 65 6e |s of certain len| 0001c600 67 74 68 73 20 61 72 65 20 73 75 66 66 69 78 65 |gths are suffixe| 0001c610 64 20 77 69 74 68 20 27 3d 27 20 63 68 61 72 61 |d with '=' chara| 0001c620 63 74 65 72 73 20 77 68 69 63 68 20 72 65 64 75 |cters which redu| 0001c630 63 65 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 |ces the maximum | 0001c640 69 6e 70 75 74 20 6c 65 6e 67 74 68 20 6d 6f 72 |input length mor| 0001c650 65 2e 0a 0a 54 68 65 20 65 78 61 63 74 20 6d 65 |e...The exact me| 0001c660 74 68 6f 64 20 66 6f 72 20 64 65 74 65 6d 69 6e |thod for detemin| 0001c670 69 6e 67 20 74 68 65 20 6f 75 74 70 75 74 20 73 |ing the output s| 0001c680 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 69 73 3a |tring length is:| 0001c690 20 28 20 28 20 69 6e 5f 6c 65 6e 67 74 68 20 2a | ( ( in_length *| 0001c6a0 20 34 20 2f 20 33 20 29 20 2b 20 33 20 29 20 41 | 4 / 3 ) + 3 ) A| 0001c6b0 4e 44 20 4e 4f 54 20 33 0a 00 00 00 44 41 54 41 |ND NOT 3....DATA| 0001c6c0 24 03 00 00 41 70 70 45 6e 67 69 6e 65 5f 43 6f |$...AppEngine_Co| 0001c6d0 64 65 63 4f 70 20 31 20 20 28 26 34 44 39 34 36 |decOp 1 (&4D946| 0001c6e0 29 0a 23 50 61 72 65 6e 74 20 41 70 70 45 6e 67 |).#Parent AppEng| 0001c6f0 69 6e 65 5f 43 6f 64 65 63 4f 70 0a 3d 3e 09 52 |ine_CodecOp.=>.R| 0001c700 30 20 3d 09 31 0a 09 52 31 20 3d 09 70 6f 69 6e |0 =.1..R1 =.poin| 0001c710 74 65 72 20 74 6f 20 42 61 73 65 36 34 2d 63 6f |ter to Base64-co| 0001c720 64 65 64 20 69 6e 70 75 74 20 64 61 74 61 0a 09 |ded input data..| 0001c730 52 32 20 3d 09 6c 65 6e 67 74 68 20 6f 66 20 69 |R2 =.length of i| 0001c740 6e 70 75 74 20 64 61 74 61 20 28 6e 6f 20 6d 6f |nput data (no mo| 0001c750 72 65 20 74 68 61 6e 20 33 34 30 20 62 79 74 65 |re than 340 byte| 0001c760 73 29 0a 0a 3c 3d 09 52 30 2c 20 52 31 2c 20 52 |s)..<=.R0, R1, R| 0001c770 32 20 70 72 65 73 65 72 76 65 64 0a 09 52 33 20 |2 preserved..R3 | 0001c780 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 64 65 63 |=.pointer to dec| 0001c790 6f 64 65 64 20 73 74 72 69 6e 67 0a 0a 44 65 63 |oded string..Dec| 0001c7a0 6f 64 65 73 20 42 61 73 65 36 34 20 64 61 74 61 |odes Base64 data| 0001c7b0 20 69 6e 74 6f 20 61 20 73 74 72 69 6e 67 2e 0a | into a string..| 0001c7c0 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 20 75 73 |.This call is us| 0001c7d0 65 64 20 74 6f 20 64 65 63 6f 64 65 20 73 6d 61 |ed to decode sma| 0001c7e0 6c 6c 20 61 6d 6f 75 6e 74 73 20 6f 66 20 4d 49 |ll amounts of MI| 0001c7f0 4d 45 20 42 61 73 65 36 34 20 65 6e 63 6f 64 65 |ME Base64 encode| 0001c800 64 20 64 61 74 61 20 69 6e 74 6f 20 61 20 73 74 |d data into a st| 0001c810 72 69 6e 67 2c 20 66 6f 72 20 75 73 65 20 69 6e |ring, for use in| 0001c820 20 69 6e 74 65 72 6e 65 74 20 61 70 70 6c 69 63 | internet applic| 0001c830 61 74 69 6f 6e 73 2e 0a 0a 53 69 6e 63 65 20 74 |ations...Since t| 0001c840 68 65 20 6f 75 74 70 75 74 20 69 73 20 61 20 73 |he output is a s| 0001c850 74 72 69 6e 67 2c 20 6c 69 6d 69 74 65 64 20 74 |tring, limited t| 0001c860 6f 20 61 20 6d 61 78 69 6d 75 6d 20 6f 66 20 32 |o a maximum of 2| 0001c870 35 35 20 63 68 61 72 61 63 74 65 72 73 20 79 6f |55 characters yo| 0001c880 75 20 6d 75 73 74 20 65 6e 73 75 72 65 20 74 68 |u must ensure th| 0001c890 61 74 20 79 6f 75 20 73 75 70 70 6c 79 20 6e 6f |at you supply no| 0001c8a0 20 6d 6f 72 65 20 74 68 61 6e 20 33 34 30 20 62 | more than 340 b| 0001c8b0 79 74 65 73 20 6f 66 20 69 6e 70 75 74 2e 20 20 |ytes of input. | 0001c8c0 54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 |This is because | 0001c8d0 66 6f 72 20 65 76 65 72 79 20 66 6f 75 72 20 62 |for every four b| 0001c8e0 79 74 65 73 20 6f 66 20 69 6e 70 75 74 2c 20 74 |ytes of input, t| 0001c8f0 68 65 20 65 6e 63 6f 64 65 72 20 67 65 6e 65 72 |he encoder gener| 0001c900 61 74 65 73 20 74 68 72 65 65 20 62 79 74 65 73 |ates three bytes| 0001c910 20 6f 66 20 6f 75 74 70 75 74 2e 0a 0a 54 68 65 | of output...The| 0001c920 20 6d 65 74 68 6f 64 20 66 6f 72 20 64 65 74 65 | method for dete| 0001c930 6d 69 6e 69 6e 67 20 74 68 65 20 6f 75 74 70 75 |mining the outpu| 0001c940 74 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 |t string length | 0001c950 69 73 20 6e 6f 74 20 64 65 74 61 69 6c 65 64 20 |is not detailed | 0001c960 68 65 72 65 20 61 73 20 69 74 20 63 61 6e 6e 6f |here as it canno| 0001c970 74 20 62 65 20 65 61 73 69 6c 79 20 63 61 6c 63 |t be easily calc| 0001c980 75 6c 61 74 65 64 20 77 69 74 68 6f 75 74 20 61 |ulated without a| 0001c990 63 63 65 73 73 20 74 6f 20 74 68 65 20 69 6e 70 |ccess to the inp| 0001c9a0 75 74 20 64 61 74 61 2e 0a 0a 54 68 69 73 20 53 |ut data...This S| 0001c9b0 57 49 20 69 73 20 6e 6f 74 20 73 75 69 74 61 62 |WI is not suitab| 0001c9c0 6c 65 20 66 6f 72 20 64 65 63 6f 64 69 6e 67 20 |le for decoding | 0001c9d0 6e 6f 6e 2d 41 53 43 49 49 20 64 61 74 61 2e 0a |non-ASCII data..| 0001c9e0 44 49 52 24 d8 00 00 00 d8 00 00 00 b8 ca 01 00 |DIR$............| 0001c9f0 47 ff ff ff 25 51 13 fd 4d 02 00 00 33 00 00 00 |G...%Q..M...3...| 0001ca00 00 00 00 00 21 72 6f 6f 74 00 00 00 08 cd 01 00 |....!root.......| 0001ca10 47 fd ff ff b5 36 91 e9 e7 01 00 00 03 00 00 00 |G....6..........| 0001ca20 00 00 00 00 30 00 00 00 f0 ce 01 00 47 fd ff ff |....0.......G...| 0001ca30 7c 34 91 e9 ef 00 00 00 03 00 00 00 00 00 00 00 ||4..............| 0001ca40 31 00 00 00 e0 cf 01 00 47 fd ff ff bb 31 91 e9 |1.......G....1..| 0001ca50 3b 02 00 00 03 00 00 00 00 00 00 00 32 00 00 00 |;...........2...| 0001ca60 1c d2 01 00 47 fd ff ff a2 2e 91 e9 10 01 00 00 |....G...........| 0001ca70 03 00 00 00 00 00 00 00 33 00 00 00 2c d3 01 00 |........3...,...| 0001ca80 47 fd ff ff 34 2c 91 e9 2d 03 00 00 03 00 00 00 |G...4,..-.......| 0001ca90 00 00 00 00 34 00 00 00 5c d6 01 00 47 fd ff ff |....4...\...G...| 0001caa0 3c 46 91 e9 27 0c 00 00 03 00 00 00 00 00 00 00 |<F..'...........| 0001cab0 4d 61 69 6e 00 00 00 00 44 41 54 41 4d 02 00 00 |Main....DATAM...| 0001cac0 41 70 70 45 6e 67 69 6e 65 5f 48 65 61 70 20 20 |AppEngine_Heap | 0001cad0 28 26 34 44 39 34 39 29 0a 23 57 72 61 70 20 6f |(&4D949).#Wrap o| 0001cae0 66 66 0a 3d 3e 09 52 30 20 3d 20 3c 72 65 61 73 |ff.=>.R0 = <reas| 0001caf0 6f 6e 20 63 6f 64 65 3d 3e 2e 72 65 61 73 6f 6e |on code=>.reason| 0001cb00 73 3e 0a 09 6f 74 68 65 72 20 72 65 67 69 73 74 |s>..other regist| 0001cb10 65 72 73 20 61 72 65 20 72 65 61 73 6f 6e 20 63 |ers are reason c| 0001cb20 6f 64 65 20 64 65 70 65 6e 64 65 6e 74 0a 0a 3c |ode dependent..<| 0001cb30 3d 09 52 30 20 70 72 65 73 65 72 76 65 64 0a 09 |=.R0 preserved..| 0001cb40 6f 74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 |other registers | 0001cb50 61 72 65 20 72 65 61 73 6f 6e 20 63 6f 64 65 20 |are reason code | 0001cb60 64 65 70 65 6e 64 65 6e 74 0a 23 57 72 61 70 0a |dependent.#Wrap.| 0001cb70 0a 54 68 69 73 20 63 61 6c 6c 20 70 72 6f 76 69 |.This call provi| 0001cb80 64 65 73 20 61 20 3c 67 61 72 62 61 67 65 20 63 |des a <garbage c| 0001cb90 6f 6c 6c 65 63 74 69 6e 67 20 68 65 61 70 20 6d |ollecting heap m| 0001cba0 61 6e 61 67 65 72 3d 3e 61 70 70 65 6e 67 69 6e |anager=>appengin| 0001cbb0 65 5f 68 65 61 70 6d 61 69 6e 3e 2e 0a 23 53 75 |e_heapmain>..#Su| 0001cbc0 62 70 61 67 65 20 72 65 61 73 6f 6e 73 0a 41 70 |bpage reasons.Ap| 0001cbd0 70 45 6e 67 69 6e 65 5f 48 65 61 70 20 72 65 61 |pEngine_Heap rea| 0001cbe0 73 6f 6e 20 63 6f 64 65 73 0a 23 57 72 61 70 20 |son codes.#Wrap | 0001cbf0 6f 66 66 0a 52 30 09 41 63 74 69 6f 6e 0a 23 4c |off.R0.Action.#L| 0001cc00 69 6e 65 0a 30 09 3c 63 72 65 61 74 65 73 20 61 |ine.0.<creates a| 0001cc10 20 6e 65 77 20 68 65 61 70 3d 3e 41 70 70 45 6e | new heap=>AppEn| 0001cc20 67 69 6e 65 5f 48 65 61 70 30 3e 0a 31 09 3c 64 |gine_Heap0>.1.<d| 0001cc30 65 6c 65 74 65 73 20 61 20 68 65 61 70 3d 3e 41 |eletes a heap=>A| 0001cc40 70 70 45 6e 67 69 6e 65 5f 48 65 61 70 31 3e 0a |ppEngine_Heap1>.| 0001cc50 32 09 3c 63 6c 61 69 6d 73 20 61 20 62 6c 6f 63 |2.<claims a bloc| 0001cc60 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 6f 6d |k of memory from| 0001cc70 20 61 20 68 65 61 70 3d 3e 41 70 70 45 6e 67 69 | a heap=>AppEngi| 0001cc80 6e 65 5f 48 65 61 70 32 3e 0a 33 09 3c 72 65 6c |ne_Heap2>.3.<rel| 0001cc90 65 61 73 65 73 20 61 20 62 6c 6f 63 6b 20 6f 66 |eases a block of| 0001cca0 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 61 20 68 | memory from a h| 0001ccb0 65 61 70 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 48 |eap=>AppEngine_H| 0001ccc0 65 61 70 33 3e 0a 34 09 3c 72 65 73 69 7a 65 73 |eap3>.4.<resizes| 0001ccd0 20 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f | a block of memo| 0001cce0 72 79 20 69 6e 20 61 20 68 65 61 70 3d 3e 41 70 |ry in a heap=>Ap| 0001ccf0 70 45 6e 67 69 6e 65 5f 48 65 61 70 34 3e 0a 23 |pEngine_Heap4>.#| 0001cd00 57 72 61 70 0a 00 00 00 44 41 54 41 e7 01 00 00 |Wrap....DATA....| 0001cd10 41 70 70 45 6e 67 69 6e 65 5f 48 65 61 70 20 30 |AppEngine_Heap 0| 0001cd20 20 20 28 26 34 44 39 34 39 29 0a 23 50 61 72 65 | (&4D949).#Pare| 0001cd30 6e 74 20 41 70 70 45 6e 67 69 6e 65 5f 48 65 61 |nt AppEngine_Hea| 0001cd40 70 0a 3d 3e 09 52 30 20 3d 09 30 0a 09 52 31 20 |p.=>.R0 =.0..R1 | 0001cd50 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 64 |=.pointer to add| 0001cd60 72 65 73 73 20 74 6f 20 63 72 65 61 74 65 20 68 |ress to create h| 0001cd70 65 61 70 20 61 74 20 28 75 73 75 61 6c 6c 79 20 |eap at (usually | 0001cd80 3d 48 49 4d 45 4d 29 2c 0a 09 20 09 6f 72 20 7a |=HIMEM),.. .or z| 0001cd90 65 72 6f 20 74 6f 20 63 72 65 61 74 65 20 61 20 |ero to create a | 0001cda0 64 79 6e 61 6d 69 63 20 61 72 65 61 20 66 6f 72 |dynamic area for| 0001cdb0 20 74 68 65 20 68 65 61 70 0a 09 52 32 20 3d 09 | the heap..R2 =.| 0001cdc0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 6d |pointer to a nam| 0001cdd0 65 20 66 6f 72 20 74 68 65 20 64 79 6e 61 6d 69 |e for the dynami| 0001cde0 63 20 61 72 65 61 20 28 69 66 20 52 31 3d 30 29 |c area (if R1=0)| 0001cdf0 0a 0a 3c 3d 09 52 31 20 3d 09 70 6f 69 6e 74 65 |..<=.R1 =.pointe| 0001ce00 72 20 74 6f 20 68 65 61 70 0a 0a 54 68 69 73 20 |r to heap..This | 0001ce10 63 61 6c 6c 20 69 73 20 75 73 65 64 20 74 6f 20 |call is used to | 0001ce20 63 72 65 61 74 65 20 61 20 6e 65 77 20 68 65 61 |create a new hea| 0001ce30 70 2c 20 65 69 74 68 65 72 20 61 74 20 74 68 65 |p, either at the| 0001ce40 20 65 6e 64 20 6f 66 20 61 70 70 6c 69 63 61 74 | end of applicat| 0001ce50 69 6f 6e 20 6d 65 6d 6f 72 79 20 6f 72 20 69 6e |ion memory or in| 0001ce60 20 61 20 6e 65 77 20 64 79 6e 61 6d 69 63 20 61 | a new dynamic a| 0001ce70 72 65 61 2e 0a 0a 54 68 65 20 68 65 61 70 20 6d |rea...The heap m| 0001ce80 61 6e 61 67 65 72 20 77 69 6c 6c 20 61 75 74 6f |anager will auto| 0001ce90 6d 61 74 69 63 61 6c 6c 79 20 63 6c 61 69 6d 20 |matically claim | 0001cea0 74 68 65 20 72 65 71 75 69 72 65 64 20 61 6d 6f |the required amo| 0001ceb0 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 66 72 |unt of memory fr| 0001cec0 6f 6d 20 74 68 65 20 66 72 65 65 20 70 6f 6f 6c |om the free pool| 0001ced0 20 74 6f 20 73 65 74 20 75 70 20 74 68 65 20 68 | to set up the h| 0001cee0 65 61 70 20 73 74 72 75 63 74 75 72 65 2e 0a 00 |eap structure...| 0001cef0 44 41 54 41 ef 00 00 00 41 70 70 45 6e 67 69 6e |DATA....AppEngin| 0001cf00 65 5f 48 65 61 70 20 31 20 20 28 26 34 44 39 34 |e_Heap 1 (&4D94| 0001cf10 39 29 0a 23 50 61 72 65 6e 74 20 41 70 70 45 6e |9).#Parent AppEn| 0001cf20 67 69 6e 65 5f 48 65 61 70 0a 3d 3e 09 52 30 20 |gine_Heap.=>.R0 | 0001cf30 3d 09 31 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |=.1..R1 =.pointe| 0001cf40 72 20 74 6f 20 68 65 61 70 0a 0a 3c 3d 09 52 31 |r to heap..<=.R1| 0001cf50 20 3d 09 30 20 28 69 2e 65 2e 20 68 65 61 70 20 | =.0 (i.e. heap | 0001cf60 74 6f 20 72 65 74 75 72 6e 29 0a 0a 54 68 69 73 |to return)..This| 0001cf70 20 63 61 6c 6c 20 69 73 20 75 73 65 64 20 74 6f | call is used to| 0001cf80 20 64 65 6c 65 74 65 20 74 68 65 20 73 70 65 63 | delete the spec| 0001cf90 69 66 69 65 64 20 68 65 61 70 2e 20 20 41 6c 6c |ified heap. All| 0001cfa0 20 6d 65 6d 6f 72 79 20 61 73 73 6f 63 69 61 74 | memory associat| 0001cfb0 65 64 20 77 69 74 68 20 74 68 65 20 68 65 61 70 |ed with the heap| 0001cfc0 20 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 | is returned to | 0001cfd0 74 68 65 20 66 72 65 65 20 70 6f 6f 6c 2e 0a 00 |the free pool...| 0001cfe0 44 41 54 41 3b 02 00 00 41 70 70 45 6e 67 69 6e |DATA;...AppEngin| 0001cff0 65 5f 48 65 61 70 20 32 20 20 28 26 34 44 39 34 |e_Heap 2 (&4D94| 0001d000 39 29 0a 23 50 61 72 65 6e 74 20 41 70 70 45 6e |9).#Parent AppEn| 0001d010 67 69 6e 65 5f 48 65 61 70 0a 3d 3e 09 52 30 20 |gine_Heap.=>.R0 | 0001d020 3d 09 32 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |=.2..R1 =.pointe| 0001d030 72 20 74 6f 20 68 65 61 70 0a 09 52 32 20 3d 09 |r to heap..R2 =.| 0001d040 73 69 7a 65 20 6f 66 20 62 6c 6f 63 6b 20 72 65 |size of block re| 0001d050 71 75 69 72 65 64 20 28 62 79 74 65 73 29 0a 0a |quired (bytes)..| 0001d060 3c 3d 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 |<=.R1 =.pointer | 0001d070 74 6f 20 61 6e 63 68 6f 72 0a 0a 54 68 69 73 20 |to anchor..This | 0001d080 63 61 6c 6c 20 69 73 20 75 73 65 64 20 74 6f 20 |call is used to | 0001d090 63 6c 61 69 6d 20 61 20 62 6c 6f 63 6b 20 6f 66 |claim a block of| 0001d0a0 20 6d 65 6d 6f 72 79 20 66 72 6f 6d 20 74 68 65 | memory from the| 0001d0b0 20 68 65 61 70 2e 0a 0a 54 68 65 20 73 69 7a 65 | heap...The size| 0001d0c0 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 20 63 6c | of the block cl| 0001d0d0 61 69 6d 65 64 20 77 69 6c 6c 20 61 6c 77 61 79 |aimed will alway| 0001d0e0 73 20 62 65 20 72 6f 75 6e 64 65 64 20 75 70 20 |s be rounded up | 0001d0f0 74 6f 20 61 74 20 6c 65 61 73 74 20 74 68 65 20 |to at least the | 0001d100 6e 65 61 72 65 73 74 20 6d 75 6c 74 69 70 6c 65 |nearest multiple| 0001d110 20 6f 66 20 66 6f 75 72 20 62 79 74 65 73 2e 0a | of four bytes..| 0001d120 0a 54 68 65 20 63 61 6c 6c 20 72 65 74 75 72 6e |.The call return| 0001d130 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 |s a pointer to a| 0001d140 20 77 6f 72 64 20 68 6f 6c 64 69 6e 67 20 74 68 | word holding th| 0001d150 65 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 |e address of the| 0001d160 20 62 6c 6f 63 6b 2c 20 73 6f 20 69 6e 20 42 41 | block, so in BA| 0001d170 53 49 43 20 74 65 72 6d 73 20 62 6c 6f 63 6b 5f |SIC terms block_| 0001d180 61 64 64 72 65 73 73 25 3d 21 61 6e 63 68 6f 72 |address%=!anchor| 0001d190 25 2e 20 20 42 6c 6f 63 6b 73 20 63 61 6e 20 6d |%. Blocks can m| 0001d1a0 6f 76 65 20 61 62 6f 75 74 20 69 6e 20 72 65 73 |ove about in res| 0001d1b0 70 6f 6e 73 65 20 74 6f 20 2a 61 6e 79 2a 20 68 |ponse to *any* h| 0001d1c0 65 61 70 20 6f 70 65 72 61 74 69 6f 6e 2c 20 73 |eap operation, s| 0001d1d0 6f 20 79 6f 75 20 6d 75 73 74 20 65 6e 73 75 72 |o you must ensur| 0001d1e0 65 20 79 6f 75 72 20 62 6c 6f 63 6b 5f 61 64 64 |e your block_add| 0001d1f0 72 65 73 73 25 20 69 73 20 75 70 64 61 74 65 64 |ress% is updated| 0001d200 20 61 66 74 65 72 20 61 6e 79 20 68 65 61 70 20 | after any heap | 0001d210 6f 70 65 72 61 74 69 6f 6e 2e 0a 00 44 41 54 41 |operation...DATA| 0001d220 10 01 00 00 41 70 70 45 6e 67 69 6e 65 5f 48 65 |....AppEngine_He| 0001d230 61 70 20 33 20 20 28 26 34 44 39 34 39 29 0a 23 |ap 3 (&4D949).#| 0001d240 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e 65 |Parent AppEngine| 0001d250 5f 48 65 61 70 0a 3d 3e 09 52 30 20 3d 09 33 0a |_Heap.=>.R0 =.3.| 0001d260 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f |.R1 =.pointer to| 0001d270 20 68 65 61 70 0a 09 52 32 20 3d 09 70 6f 69 6e | heap..R2 =.poin| 0001d280 74 65 72 20 74 6f 20 61 6e 63 68 6f 72 0a 0a 3c |ter to anchor..<| 0001d290 3d 09 52 31 20 3d 09 30 20 28 69 2e 65 2e 20 61 |=.R1 =.0 (i.e. a| 0001d2a0 6e 63 68 6f 72 20 74 6f 20 72 65 74 75 72 6e 29 |nchor to return)| 0001d2b0 0a 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 20 75 |..This call is u| 0001d2c0 73 65 64 20 74 6f 20 72 65 6c 65 61 73 65 20 61 |sed to release a| 0001d2d0 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 | block of memory| 0001d2e0 20 66 72 6f 6d 20 74 68 65 20 68 65 61 70 2c 20 | from the heap, | 0001d2f0 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 72 |and return the r| 0001d300 65 73 75 6c 74 61 6e 74 20 66 72 65 65 20 6d 65 |esultant free me| 0001d310 6d 6f 72 79 20 62 61 63 6b 20 74 6f 20 74 68 65 |mory back to the| 0001d320 20 66 72 65 65 20 70 6f 6f 6c 2e 0a 44 41 54 41 | free pool..DATA| 0001d330 2d 03 00 00 41 70 70 45 6e 67 69 6e 65 5f 48 65 |-...AppEngine_He| 0001d340 61 70 20 34 20 20 28 26 34 44 39 34 39 29 0a 23 |ap 4 (&4D949).#| 0001d350 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e 65 |Parent AppEngine| 0001d360 5f 48 65 61 70 0a 3d 3e 09 52 30 20 3d 09 34 0a |_Heap.=>.R0 =.4.| 0001d370 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f |.R1 =.pointer to| 0001d380 20 68 65 61 70 0a 09 52 32 20 3d 09 70 6f 69 6e | heap..R2 =.poin| 0001d390 74 65 72 20 74 6f 20 61 6e 63 68 6f 72 0a 09 52 |ter to anchor..R| 0001d3a0 33 20 3d 09 62 79 74 65 73 20 74 6f 20 62 65 20 |3 =.bytes to be | 0001d3b0 61 64 64 65 64 20 6f 72 20 72 65 6d 6f 76 65 64 |added or removed| 0001d3c0 20 66 72 6f 6d 20 74 68 65 20 65 6e 64 20 6f 66 | from the end of| 0001d3d0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62 | the specified b| 0001d3e0 6c 6f 63 6b 20 28 61 20 73 69 67 6e 65 64 20 69 |lock (a signed i| 0001d3f0 6e 74 65 67 65 72 29 0a 0a 3c 3d 09 52 31 20 3d |nteger)..<=.R1 =| 0001d400 09 2d 31 20 66 6f 72 20 73 75 63 63 65 73 73 2c |.-1 for success,| 0001d410 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 0a 0a | 0 for failure..| 0001d420 54 68 69 73 20 63 61 6c 6c 20 69 73 20 75 73 65 |This call is use| 0001d430 64 20 74 6f 20 61 64 64 20 28 52 33 20 70 6f 73 |d to add (R3 pos| 0001d440 69 74 69 76 65 29 20 6f 72 20 72 65 6d 6f 76 65 |itive) or remove| 0001d450 20 28 52 33 20 6e 65 67 61 74 69 76 65 29 20 6d | (R3 negative) m| 0001d460 65 6d 6f 72 79 20 74 6f 2f 66 72 6f 6d 20 74 68 |emory to/from th| 0001d470 65 20 65 6e 64 20 6f 66 20 74 68 65 20 73 70 65 |e end of the spe| 0001d480 63 69 66 69 65 64 20 62 6c 6f 63 6b 2e 0a 0a 49 |cified block...I| 0001d490 66 20 61 64 64 69 6e 67 20 74 6f 20 61 20 62 6c |f adding to a bl| 0001d4a0 6f 63 6b 2c 20 74 68 65 6e 20 6f 6e 20 72 65 74 |ock, then on ret| 0001d4b0 75 72 6e 20 52 31 20 68 6f 6c 64 73 20 61 20 76 |urn R1 holds a v| 0001d4c0 61 6c 75 65 20 69 6e 64 69 63 61 74 69 6e 67 20 |alue indicating | 0001d4d0 77 68 65 74 68 65 72 20 74 68 65 20 6f 70 65 72 |whether the oper| 0001d4e0 61 74 69 6f 6e 20 77 61 73 20 73 75 63 63 65 73 |ation was succes| 0001d4f0 73 66 75 6c 20 6f 72 20 6e 6f 74 2e 0a 0a 49 66 |sful or not...If| 0001d500 20 72 65 6d 6f 76 69 6e 67 20 66 72 6f 6d 20 61 | removing from a| 0001d510 20 62 6c 6f 63 6b 2c 20 74 68 65 6e 20 74 68 65 | block, then the| 0001d520 20 72 65 73 75 6c 74 61 6e 74 20 66 72 65 65 20 | resultant free | 0001d530 6d 65 6d 6f 72 79 20 69 73 20 72 65 74 75 72 6e |memory is return| 0001d540 65 64 20 62 61 63 6b 20 74 6f 20 74 68 65 20 66 |ed back to the f| 0001d550 72 65 65 20 70 6f 6f 6c 2e 0a 0a 4e 6f 74 65 20 |ree pool...Note | 0001d560 74 68 61 74 20 61 73 20 77 69 74 68 20 74 68 65 |that as with the| 0001d570 20 63 6c 61 69 6d 20 6f 70 65 72 61 74 69 6f 6e | claim operation| 0001d580 2c 20 62 6c 6f 63 6b 20 73 69 7a 65 73 20 61 72 |, block sizes ar| 0001d590 65 20 72 6f 75 6e 64 65 64 20 2a 75 70 2a 20 74 |e rounded *up* t| 0001d5a0 6f 20 61 74 20 6c 65 61 73 74 20 74 68 65 20 6e |o at least the n| 0001d5b0 65 61 72 65 73 74 20 6d 75 6c 74 69 70 6c 65 20 |earest multiple | 0001d5c0 6f 66 20 66 6f 75 72 20 62 79 74 65 73 2e 20 20 |of four bytes. | 0001d5d0 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 |This means that | 0001d5e0 69 66 20 79 6f 75 20 74 72 79 20 74 6f 20 72 65 |if you try to re| 0001d5f0 6d 6f 76 65 2c 20 73 61 79 2c 20 33 20 62 79 74 |move, say, 3 byt| 0001d600 65 73 20 66 72 6f 6d 20 61 20 62 6c 6f 63 6b 20 |es from a block | 0001d610 28 52 33 20 3d 20 2d 33 29 20 74 68 65 6e 20 2a |(R3 = -3) then *| 0001d620 6e 6f 74 68 69 6e 67 2a 20 77 69 6c 6c 20 62 65 |nothing* will be| 0001d630 20 72 65 6d 6f 76 65 64 20 73 69 6e 63 65 20 2d | removed since -| 0001d640 33 20 69 73 20 72 6f 75 6e 64 65 64 20 75 70 20 |3 is rounded up | 0001d650 74 6f 20 7a 65 72 6f 2e 0a 00 00 00 44 41 54 41 |to zero.....DATA| 0001d660 27 0c 00 00 41 70 70 45 6e 67 69 6e 65 5f 48 65 |'...AppEngine_He| 0001d670 61 70 20 20 28 26 34 44 39 34 39 29 0a 23 50 61 |ap (&4D949).#Pa| 0001d680 72 65 6e 74 20 41 70 70 45 6e 67 69 6e 65 5f 0a |rent AppEngine_.| 0001d690 49 6e 74 72 6f 64 75 63 74 69 6f 6e 0a 0a 41 70 |Introduction..Ap| 0001d6a0 70 45 6e 67 69 6e 65 20 70 72 6f 76 69 64 65 73 |pEngine provides| 0001d6b0 20 61 20 90 67 61 72 62 61 67 65 20 63 6f 6c 6c | a .garbage coll| 0001d6c0 65 63 74 69 6e 67 91 20 68 65 61 70 20 6d 61 6e |ecting. heap man| 0001d6d0 61 67 65 72 2e 20 20 54 68 69 73 20 69 73 20 75 |ager. This is u| 0001d6e0 6e 6c 69 6b 65 20 52 49 53 43 20 4f 53 27 73 20 |nlike RISC OS's | 0001d6f0 6f 77 6e 20 3c 4f 53 5f 48 65 61 70 3d 3e 4f 53 |own <OS_Heap=>OS| 0001d700 3a 4f 53 5f 48 65 61 70 3e 20 68 65 61 70 20 6d |:OS_Heap> heap m| 0001d710 61 6e 61 67 65 72 20 69 6e 20 74 68 61 74 20 69 |anager in that i| 0001d720 74 20 65 6e 73 75 72 65 73 20 61 6e 79 20 75 6e |t ensures any un| 0001d730 75 73 65 64 20 6d 65 6d 6f 72 79 20 69 6e 73 69 |used memory insi| 0001d740 64 65 20 74 68 65 20 68 65 61 70 20 69 73 20 72 |de the heap is r| 0001d750 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20 66 |eturned to the f| 0001d760 72 65 65 20 6d 65 6d 6f 72 79 20 70 6f 6f 6c 2e |ree memory pool.| 0001d770 0a 0a 54 68 69 73 20 69 73 20 61 63 68 69 65 76 |..This is achiev| 0001d780 65 64 20 62 79 20 61 6c 6c 6f 77 69 6e 67 20 62 |ed by allowing b| 0001d790 6c 6f 63 6b 73 20 63 6c 61 69 6d 65 64 20 66 72 |locks claimed fr| 0001d7a0 6f 6d 20 74 68 65 20 68 65 61 70 20 74 6f 20 90 |om the heap to .| 0001d7b0 66 6c 6f 61 74 91 20 28 6d 6f 76 65 20 61 62 6f |float. (move abo| 0001d7c0 75 74 20 77 69 74 68 69 6e 20 74 68 65 20 68 65 |ut within the he| 0001d7d0 61 70 29 20 61 6e 64 20 62 79 20 72 65 66 65 72 |ap) and by refer| 0001d7e0 65 6e 63 69 6e 67 20 65 61 63 68 20 6f 66 20 74 |encing each of t| 0001d7f0 68 65 20 62 6c 6f 63 6b 73 20 69 6e 64 69 72 65 |he blocks indire| 0001d800 63 74 6c 79 20 76 69 61 20 61 20 66 69 78 65 64 |ctly via a fixed| 0001d810 20 61 64 64 72 65 73 73 20 6b 6e 6f 77 6e 20 61 | address known a| 0001d820 73 20 61 6e 20 90 61 6e 63 68 6f 72 91 2e 20 20 |s an .anchor.. | 0001d830 44 6f 69 6e 67 20 74 68 69 73 20 61 6c 6c 6f 77 |Doing this allow| 0001d840 73 20 74 68 65 20 68 65 61 70 20 6d 61 6e 61 67 |s the heap manag| 0001d850 65 72 20 74 6f 20 73 71 75 65 65 7a 65 20 6f 75 |er to squeeze ou| 0001d860 74 20 61 6e 79 20 66 72 65 65 20 73 70 61 63 65 |t any free space| 0001d870 20 66 72 6f 6d 20 74 68 65 20 68 65 61 70 20 77 | from the heap w| 0001d880 69 74 68 6f 75 74 20 74 68 69 73 20 61 66 66 65 |ithout this affe| 0001d890 63 74 69 6e 67 20 74 68 65 20 63 6c 69 65 6e 74 |cting the client| 0001d8a0 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 0a 41 | application...A| 0001d8b0 6e 79 20 68 65 61 70 20 6f 70 65 72 61 74 69 6f |ny heap operatio| 0001d8c0 6e 20 63 61 6e 20 63 61 75 73 65 20 74 68 65 20 |n can cause the | 0001d8d0 62 6c 6f 63 6b 73 91 20 70 6f 73 69 74 69 6f 6e |blocks. position| 0001d8e0 20 69 6e 20 6d 65 6d 6f 72 79 20 74 6f 20 6d 6f | in memory to mo| 0001d8f0 76 65 2e 0a 0a 4f 6e 65 20 64 69 66 66 65 72 65 |ve...One differe| 0001d900 6e 63 65 20 62 65 74 77 65 65 6e 20 74 68 69 73 |nce between this| 0001d910 20 68 65 61 70 20 6d 61 6e 61 67 65 72 20 61 6e | heap manager an| 0001d920 64 20 6f 74 68 65 72 73 20 69 73 20 74 68 61 74 |d others is that| 0001d930 20 74 68 69 73 20 6f 6e 65 20 6e 65 76 65 72 20 | this one never | 0001d940 61 6c 6c 6f 77 73 20 67 61 70 73 20 6f 66 20 66 |allows gaps of f| 0001d950 72 65 65 20 73 70 61 63 65 20 74 6f 20 61 70 70 |ree space to app| 0001d960 65 61 72 20 69 6e 62 65 74 77 65 65 6e 20 74 68 |ear inbetween th| 0001d970 65 20 62 6c 6f 63 6b 73 2e 20 20 41 73 20 73 6f |e blocks. As so| 0001d980 6f 6e 20 61 73 20 61 6e 79 20 66 72 65 65 20 73 |on as any free s| 0001d990 70 61 63 65 20 69 73 20 63 72 65 61 74 65 64 2c |pace is created,| 0001d9a0 20 74 68 65 6e 20 74 68 65 20 68 65 61 70 20 6d | then the heap m| 0001d9b0 61 6e 61 67 65 72 20 77 69 6c 6c 20 72 65 61 72 |anager will rear| 0001d9c0 72 61 6e 67 65 20 74 68 65 20 68 65 61 70 20 73 |range the heap s| 0001d9d0 75 63 68 20 74 68 61 74 20 74 68 65 20 62 6c 6f |uch that the blo| 0001d9e0 63 6b 20 6f 66 20 66 72 65 65 20 73 70 61 63 65 |ck of free space| 0001d9f0 20 69 73 20 72 65 6d 6f 76 65 64 2e 20 20 54 68 | is removed. Th| 0001da00 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 |is means that th| 0001da10 65 20 68 65 61 70 20 69 73 20 61 6c 77 61 79 73 |e heap is always| 0001da20 20 6b 65 70 74 20 61 74 20 69 74 73 20 73 6d 61 | kept at its sma| 0001da30 6c 6c 65 73 74 20 70 6f 73 73 69 62 6c 65 20 73 |llest possible s| 0001da40 69 7a 65 2e 0a 0a 41 6e 63 68 6f 72 73 0a 0a 41 |ize...Anchors..A| 0001da50 6e 63 68 6f 72 73 20 61 72 65 20 6c 6f 63 61 74 |nchors are locat| 0001da60 65 64 20 61 74 20 74 68 65 20 62 61 73 65 20 6f |ed at the base o| 0001da70 66 20 74 68 65 20 68 65 61 70 20 69 6d 6d 65 64 |f the heap immed| 0001da80 69 61 74 65 6c 79 20 62 65 66 6f 72 65 20 74 68 |iately before th| 0001da90 65 20 62 6c 6f 63 6b 73 2e 20 20 49 6e 69 74 69 |e blocks. Initi| 0001daa0 61 6c 6c 79 20 74 68 65 20 68 65 61 70 20 6d 61 |ally the heap ma| 0001dab0 6e 61 67 65 72 20 61 6c 6c 6f 63 61 74 65 73 20 |nager allocates | 0001dac0 65 6e 6f 75 67 68 20 73 70 61 63 65 20 66 6f 72 |enough space for| 0001dad0 20 65 69 67 68 74 20 61 6e 63 68 6f 72 73 20 61 | eight anchors a| 0001dae0 6e 64 20 68 65 6e 63 65 20 65 69 67 68 74 20 68 |nd hence eight h| 0001daf0 65 61 70 2d 6d 61 6e 61 67 65 64 20 62 6c 6f 63 |eap-managed bloc| 0001db00 6b 73 2e 20 20 49 66 20 79 6f 75 20 63 6c 61 69 |ks. If you clai| 0001db10 6d 20 61 20 6e 69 6e 74 68 20 62 6c 6f 63 6b 2c |m a ninth block,| 0001db20 20 74 68 65 6e 20 74 68 65 20 68 65 61 70 20 6d | then the heap m| 0001db30 61 6e 61 67 65 72 20 77 69 6c 6c 20 6d 61 6b 65 |anager will make| 0001db40 20 73 70 61 63 65 20 66 6f 72 20 65 69 67 68 74 | space for eight| 0001db50 20 6d 6f 72 65 20 61 6e 63 68 6f 72 73 2c 20 61 | more anchors, a| 0001db60 6e 64 20 73 6f 20 6f 6e 2e 20 20 48 6f 77 65 76 |nd so on. Howev| 0001db70 65 72 20 28 69 6e 20 74 68 69 73 20 76 65 72 73 |er (in this vers| 0001db80 69 6f 6e 29 20 74 68 69 73 20 6d 65 6d 6f 72 79 |ion) this memory| 0001db90 20 69 73 20 2a 6e 6f 74 2a 20 61 75 74 6f 6d 61 | is *not* automa| 0001dba0 74 69 63 61 6c 6c 79 20 72 65 74 75 72 6e 65 64 |tically returned| 0001dbb0 20 74 6f 20 74 68 65 20 66 72 65 65 20 70 6f 6f | to the free poo| 0001dbc0 6c 2e 0a 0a 46 6f 72 20 74 68 69 73 20 72 65 61 |l...For this rea| 0001dbd0 73 6f 6e 20 69 74 20 69 73 20 73 74 72 6f 6e 67 |son it is strong| 0001dbe0 6c 79 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 |ly recommended t| 0001dbf0 68 61 74 20 79 6f 75 20 73 68 6f 75 6c 64 20 6d |hat you should m| 0001dc00 61 69 6e 74 61 69 6e 20 61 20 90 62 6c 6f 63 6b |aintain a .block| 0001dc10 73 5f 61 6c 6c 6f 63 61 74 65 64 91 20 63 6f 75 |s_allocated. cou| 0001dc20 6e 74 65 72 20 69 6e 20 79 6f 75 72 20 6f 77 6e |nter in your own| 0001dc30 20 68 65 61 70 20 69 6e 74 65 72 66 61 63 65 20 | heap interface | 0001dc40 63 6f 64 65 2c 20 61 6e 64 20 77 68 65 6e 20 69 |code, and when i| 0001dc50 74 20 62 65 63 6f 6d 65 73 20 7a 65 72 6f 2c 20 |t becomes zero, | 0001dc60 79 6f 75 20 73 68 6f 75 6c 64 20 64 65 6c 65 74 |you should delet| 0001dc70 65 20 74 68 65 20 68 65 61 70 2e 20 20 57 68 65 |e the heap. Whe| 0001dc80 6e 20 61 20 63 6c 61 69 6d 20 66 6f 72 20 61 20 |n a claim for a | 0001dc90 62 6c 6f 63 6b 20 69 73 20 6d 61 64 65 20 61 6e |block is made an| 0001dca0 64 20 62 6c 6f 63 6b 73 5f 61 6c 6c 6f 63 61 74 |d blocks_allocat| 0001dcb0 65 64 20 69 73 20 7a 65 72 6f 2c 20 79 6f 75 20 |ed is zero, you | 0001dcc0 73 68 6f 75 6c 64 20 28 72 65 2d 29 63 72 65 61 |should (re-)crea| 0001dcd0 74 65 20 74 68 65 20 68 65 61 70 2e 0a 0a 57 61 |te the heap...Wa| 0001dce0 72 6e 69 6e 67 73 0a 0a 69 2e 09 57 68 65 6e 20 |rnings..i..When | 0001dcf0 74 68 65 20 68 65 61 70 20 6d 61 6e 61 67 65 72 |the heap manager| 0001dd00 20 69 73 20 61 63 74 69 76 65 20 61 6e 64 20 69 | is active and i| 0001dd10 73 20 72 65 73 69 64 69 6e 67 20 61 74 20 74 68 |s residing at th| 0001dd20 65 20 74 6f 70 20 6f 66 20 79 6f 75 72 20 61 70 |e top of your ap| 0001dd30 70 6c 69 63 61 74 69 6f 6e 27 73 20 73 6c 6f 74 |plication's slot| 0001dd40 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 2a 6e 65 |, you should *ne| 0001dd50 76 65 72 2a 20 75 73 65 20 57 69 6d 70 5f 53 6c |ver* use Wimp_Sl| 0001dd60 6f 74 53 69 7a 65 20 28 6f 72 20 45 4e 44 3d 20 |otSize (or END= | 0001dd70 69 6e 09 42 41 53 49 43 20 73 69 6e 63 65 20 74 |in.BASIC since t| 0001dd80 68 61 74 20 63 61 6c 6c 73 20 57 69 6d 70 5f 53 |hat calls Wimp_S| 0001dd90 6c 6f 74 53 69 7a 65 29 2e 20 20 4e 65 69 74 68 |lotSize). Neith| 0001dda0 65 72 20 73 68 6f 75 6c 64 20 79 6f 75 20 61 74 |er should you at| 0001ddb0 74 65 6d 70 74 20 74 6f 20 73 74 6f 72 65 20 61 |tempt to store a| 0001ddc0 6e 79 74 68 69 6e 67 20 61 62 6f 76 65 20 74 68 |nything above th| 0001ddd0 65 20 68 65 61 70 2e 0a 0a 69 69 2e 09 45 78 65 |e heap...ii..Exe| 0001dde0 63 75 74 61 62 6c 65 20 63 6f 64 65 20 6d 61 79 |cutable code may| 0001ddf0 20 6e 6f 74 20 62 65 20 63 6f 6e 74 61 69 6e 65 | not be containe| 0001de00 64 20 69 6e 20 64 79 6e 61 6d 69 63 20 61 72 65 |d in dynamic are| 0001de10 61 73 2c 20 73 6f 20 79 6f 75 20 73 68 6f 75 6c |as, so you shoul| 0001de20 64 20 61 76 6f 69 64 20 6b 65 65 70 69 6e 67 20 |d avoid keeping | 0001de30 63 6f 64 65 20 69 6e 20 61 20 68 65 61 70 2d 6d |code in a heap-m| 0001de40 61 6e 61 67 65 64 20 62 6c 6f 63 6b 2e 0a 0a 69 |anaged block...i| 0001de50 69 69 2e 09 54 68 65 20 69 6e 74 65 72 6e 61 6c |ii..The internal| 0001de60 20 73 74 72 75 63 74 75 72 65 20 6f 66 20 74 68 | structure of th| 0001de70 65 20 68 65 61 70 20 77 69 6c 6c 20 6e 6f 74 20 |e heap will not | 0001de80 62 65 20 64 6f 63 75 6d 65 6e 74 65 64 20 68 65 |be documented he| 0001de90 72 65 2e 20 20 54 6f 20 65 6e 73 75 72 65 20 66 |re. To ensure f| 0001dea0 75 74 75 72 65 20 63 6f 6d 70 61 74 69 62 69 6c |uture compatibil| 0001deb0 69 74 79 20 79 6f 75 20 73 68 6f 75 6c 64 20 6f |ity you should o| 0001dec0 6e 6c 79 20 75 73 65 20 74 68 65 20 64 65 66 69 |nly use the defi| 0001ded0 6e 65 64 20 73 6f 66 74 77 61 72 65 20 69 6e 74 |ned software int| 0001dee0 65 72 66 61 63 65 73 2e 0a 0a 4e 6f 74 65 73 0a |erfaces...Notes.| 0001def0 0a 69 2e 09 54 68 65 20 68 65 61 70 20 6d 61 6e |.i..The heap man| 0001df00 61 67 65 72 20 69 73 20 76 65 72 79 20 66 72 75 |ager is very fru| 0001df10 67 61 6c 2c 20 69 74 20 64 6f 65 73 6e 91 74 20 |gal, it doesn.t | 0001df20 61 6c 69 67 6e 20 62 6c 6f 63 6b 73 20 6f 72 20 |align blocks or | 0001df30 62 6c 6f 63 6b 20 73 69 7a 65 73 20 74 6f 20 31 |block sizes to 1| 0001df40 36 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 69 65 |6-byte boundarie| 0001df50 73 20 61 73 20 73 6f 6d 65 20 6f 74 68 65 72 73 |s as some others| 0001df60 20 64 6f 2e 0a 0a 69 69 2e 09 49 74 20 69 73 20 | do...ii..It is | 0001df70 77 72 69 74 74 65 6e 20 69 6e 20 31 30 30 25 20 |written in 100% | 0001df80 68 61 6e 64 2d 63 72 61 66 74 65 64 20 61 73 73 |hand-crafted ass| 0001df90 65 6d 62 6c 65 72 20 61 6e 64 20 49 27 76 65 20 |embler and I've | 0001dfa0 6f 70 74 69 6d 69 73 65 64 20 63 65 72 74 61 69 |optimised certai| 0001dfb0 6e 20 70 61 72 74 73 20 6f 66 20 69 74 20 66 6f |n parts of it fo| 0001dfc0 72 20 74 68 65 20 53 74 72 6f 6e 67 41 52 4d 2c |r the StrongARM,| 0001dfd0 20 64 65 73 70 69 74 65 20 6e 6f 74 20 6f 77 6e | despite not own| 0001dfe0 69 6e 67 20 6f 6e 65 2e 20 28 49 6e 20 66 61 63 |ing one. (In fac| 0001dff0 74 20 69 74 20 77 61 73 20 77 72 69 74 74 65 6e |t it was written| 0001e000 20 6f 6e 20 6d 79 20 32 4d 62 20 41 52 4d 20 32 | on my 2Mb ARM 2| 0001e010 20 41 33 30 30 30 2e 20 3a 2d 29 0a 0a 69 69 69 | A3000. :-)..iii| 0001e020 2e 09 49 74 20 69 73 20 63 6f 64 65 64 20 74 6f |..It is coded to| 0001e030 20 77 6f 72 6b 20 69 66 20 75 73 69 6e 67 20 6d | work if using m| 0001e040 65 6d 6f 72 79 20 61 62 6f 76 65 20 32 47 62 2c |emory above 2Gb,| 0001e050 20 77 68 69 63 68 20 49 20 75 6e 64 65 72 73 74 | which I underst| 0001e060 61 6e 64 20 77 69 6c 6c 20 68 61 70 70 65 6e 20 |and will happen | 0001e070 69 66 20 79 6f 75 20 68 61 76 65 20 31 32 38 4d |if you have 128M| 0001e080 62 20 6f 72 20 6d 6f 72 65 20 6d 65 6d 6f 72 79 |b or more memory| 0001e090 20 28 74 68 69 73 20 72 65 6d 61 69 6e 73 20 75 | (this remains u| 0001e0a0 6e 74 65 73 74 65 64 29 2e 0a 0a 45 78 61 6d 70 |ntested)...Examp| 0001e0b0 6c 65 0a 7b 66 43 6f 64 65 7d 0a 52 45 4d 20 43 |le.{fCode}.REM C| 0001e0c0 72 65 61 74 65 20 61 20 68 65 61 70 20 72 65 73 |reate a heap res| 0001e0d0 69 64 69 6e 67 20 61 62 6f 76 65 20 42 41 53 49 |iding above BASI| 0001e0e0 43 27 73 20 77 6f 72 6b 73 70 61 63 65 0a 53 59 |C's workspace.SY| 0001e0f0 53 20 22 41 70 70 45 6e 67 69 6e 65 5f 48 65 61 |S "AppEngine_Hea| 0001e100 70 22 2c 30 2c 48 49 4d 45 4d 2c 22 22 20 54 4f |p",0,HIMEM,"" TO| 0001e110 20 2c 68 65 61 70 25 0a 0a 52 45 4d 20 43 6c 61 | ,heap%..REM Cla| 0001e120 69 6d 20 61 20 32 30 30 30 20 62 79 74 65 20 62 |im a 2000 byte b| 0001e130 6c 6f 63 6b 0a 53 59 53 20 22 41 70 70 45 6e 67 |lock.SYS "AppEng| 0001e140 69 6e 65 5f 48 65 61 70 22 2c 32 2c 68 65 61 70 |ine_Heap",2,heap| 0001e150 25 2c 32 30 30 30 20 54 4f 20 2c 61 6e 63 68 6f |%,2000 TO ,ancho| 0001e160 72 25 0a 0a 52 45 4d 20 46 69 6e 64 20 74 68 65 |r%..REM Find the| 0001e170 20 62 61 73 65 20 61 64 64 72 65 73 73 20 6f 66 | base address of| 0001e180 20 74 68 65 20 62 6c 6f 63 6b 0a 61 64 64 72 65 | the block.addre| 0001e190 73 73 25 3d 21 61 6e 63 68 6f 72 25 0a 0a 52 45 |ss%=!anchor%..RE| 0001e1a0 4d 20 41 64 64 20 34 38 20 62 79 74 65 73 20 74 |M Add 48 bytes t| 0001e1b0 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 |o the end of the| 0001e1c0 20 62 6c 6f 63 6b 0a 53 59 53 20 22 41 70 70 45 | block.SYS "AppE| 0001e1d0 6e 67 69 6e 65 5f 48 65 61 70 22 2c 34 2c 68 65 |ngine_Heap",4,he| 0001e1e0 61 70 25 2c 61 6e 63 68 6f 72 25 2c 34 38 20 54 |ap%,anchor%,48 T| 0001e1f0 4f 20 2c 73 75 63 63 65 73 73 25 0a 0a 52 45 4d |O ,success%..REM| 0001e200 20 44 65 6c 65 74 65 20 74 68 65 20 62 6c 6f 63 | Delete the bloc| 0001e210 6b 0a 53 59 53 20 22 41 70 70 45 6e 67 69 6e 65 |k.SYS "AppEngine| 0001e220 5f 48 65 61 70 22 2c 33 2c 68 65 61 70 25 2c 61 |_Heap",3,heap%,a| 0001e230 6e 63 68 6f 72 25 20 54 4f 20 2c 61 6e 63 68 6f |nchor% TO ,ancho| 0001e240 72 25 0a 0a 52 45 4d 20 44 65 6c 65 74 65 20 74 |r%..REM Delete t| 0001e250 68 65 20 68 65 61 70 0a 53 59 53 20 22 41 70 70 |he heap.SYS "App| 0001e260 45 6e 67 69 6e 65 5f 48 65 61 70 22 2c 31 2c 68 |Engine_Heap",1,h| 0001e270 65 61 70 25 20 54 4f 20 2c 68 65 61 70 25 0a 7b |eap% TO ,heap%.{| 0001e280 66 7d 0a 00 44 49 52 24 b8 00 00 00 b8 00 00 00 |f}..DIR$........| 0001e290 3c e3 01 00 47 ff ff ff 42 0b 13 fd 9c 03 00 00 |<...G...B.......| 0001e2a0 33 00 00 00 00 00 00 00 21 72 6f 6f 74 00 00 00 |3.......!root...| 0001e2b0 d8 e6 01 00 47 fd ff ff 9f 6e 91 e9 0f 01 00 00 |....G....n......| 0001e2c0 03 00 00 00 00 00 00 00 30 00 00 00 e8 e7 01 00 |........0.......| 0001e2d0 47 fd ff ff 1a 6d 91 e9 2b 01 00 00 03 00 00 00 |G....m..+.......| 0001e2e0 00 00 00 00 31 00 00 00 14 e9 01 00 47 fd ff ff |....1.......G...| 0001e2f0 d5 6b 91 e9 09 01 00 00 03 00 00 00 00 00 00 00 |.k..............| 0001e300 32 00 00 00 20 ea 01 00 47 fd ff ff 9f 6a 91 e9 |2... ...G....j..| 0001e310 0b 01 00 00 03 00 00 00 00 00 00 00 33 00 00 00 |............3...| 0001e320 2c eb 01 00 47 fd ff ff 08 59 91 e9 49 01 00 00 |,...G....Y..I...| 0001e330 03 00 00 00 00 00 00 00 34 00 00 00 44 41 54 41 |........4...DATA| 0001e340 9c 03 00 00 41 70 70 45 6e 67 69 6e 65 5f 53 6f |....AppEngine_So| 0001e350 63 6b 65 74 4f 70 20 20 28 26 34 44 39 34 35 29 |cketOp (&4D945)| 0001e360 0a 23 57 72 61 70 20 6f 66 66 0a 3d 3e 09 52 30 |.#Wrap off.=>.R0| 0001e370 20 3d 20 3c 72 65 61 73 6f 6e 20 63 6f 64 65 3d | = <reason code=| 0001e380 3e 2e 72 65 61 73 6f 6e 73 3e 0a 09 6f 74 68 65 |>.reasons>..othe| 0001e390 72 20 72 65 67 69 73 74 65 72 73 20 61 72 65 20 |r registers are | 0001e3a0 72 65 61 73 6f 6e 20 63 6f 64 65 20 64 65 70 65 |reason code depe| 0001e3b0 6e 64 65 6e 74 0a 0a 3c 3d 09 52 30 20 70 72 65 |ndent..<=.R0 pre| 0001e3c0 73 65 72 76 65 64 0a 09 6f 74 68 65 72 20 72 65 |served..other re| 0001e3d0 67 69 73 74 65 72 73 20 61 72 65 20 72 65 61 73 |gisters are reas| 0001e3e0 6f 6e 20 63 6f 64 65 20 64 65 70 65 6e 64 65 6e |on code dependen| 0001e3f0 74 0a 23 57 72 61 70 0a 0a 54 68 69 73 20 63 61 |t.#Wrap..This ca| 0001e400 6c 6c 20 70 72 6f 76 69 64 65 73 20 6f 70 65 72 |ll provides oper| 0001e410 61 74 69 6f 6e 73 20 74 6f 20 63 6f 6e 74 72 6f |ations to contro| 0001e420 6c 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f |l file descripto| 0001e430 72 73 2c 20 77 68 69 63 68 20 61 72 65 20 72 65 |rs, which are re| 0001e440 71 75 72 69 65 64 20 74 6f 20 75 73 65 20 74 68 |quried to use th| 0001e450 65 20 3c 53 6f 63 6b 65 74 5f 53 65 6c 65 63 74 |e <Socket_Select| 0001e460 3d 3e 49 6e 65 74 53 6f 63 6b 65 74 3a 53 6f 63 |=>InetSocket:Soc| 0001e470 6b 65 74 5f 53 65 6c 65 63 74 3e 20 53 57 49 2e |ket_Select> SWI.| 0001e480 0a 0a 41 20 66 69 6c 65 20 64 65 73 63 72 69 70 |..A file descrip| 0001e490 74 6f 72 20 69 73 20 61 20 62 6c 6f 63 6b 20 6f |tor is a block o| 0001e4a0 66 20 33 32 20 62 79 74 65 73 20 28 32 35 36 20 |f 32 bytes (256 | 0001e4b0 62 69 74 73 29 20 77 68 69 63 68 20 69 6e 64 69 |bits) which indi| 0001e4c0 63 61 74 65 73 20 77 68 69 63 68 20 73 6f 63 6b |cates which sock| 0001e4d0 65 74 73 20 73 68 6f 75 6c 64 20 62 65 20 63 68 |ets should be ch| 0001e4e0 65 63 6b 65 64 20 66 6f 72 20 61 63 74 69 76 69 |ecked for activi| 0001e4f0 74 79 2e 0a 0a 4e 6f 74 65 3a 20 54 68 65 20 41 |ty...Note: The A| 0001e500 63 6f 72 6e 20 43 20 53 6f 63 6b 65 74 20 6c 69 |corn C Socket li| 0001e510 62 72 61 72 79 20 70 72 6f 76 69 64 65 73 20 65 |brary provides e| 0001e520 71 75 69 76 61 6c 65 6e 74 73 20 6f 66 20 74 68 |quivalents of th| 0001e530 69 73 20 53 57 49 20 69 6e 20 68 65 61 64 65 72 |is SWI in header| 0001e540 66 69 6c 65 20 6d 61 63 72 6f 73 2e 0a 23 53 75 |file macros..#Su| 0001e550 62 70 61 67 65 20 72 65 61 73 6f 6e 73 0a 41 70 |bpage reasons.Ap| 0001e560 70 45 6e 67 69 6e 65 5f 53 6f 63 6b 65 74 4f 70 |pEngine_SocketOp| 0001e570 20 72 65 61 73 6f 6e 20 63 6f 64 65 73 0a 23 57 | reason codes.#W| 0001e580 72 61 70 20 6f 66 66 0a 52 30 09 41 63 74 69 6f |rap off.R0.Actio| 0001e590 6e 0a 23 4c 69 6e 65 0a 30 09 3c 63 6c 65 61 72 |n.#Line.0.<clear| 0001e5a0 73 20 61 20 66 69 6c 65 20 64 65 73 63 72 69 70 |s a file descrip| 0001e5b0 74 6f 72 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 53 |tor=>AppEngine_S| 0001e5c0 6f 63 6b 65 74 4f 70 30 3e 0a 31 09 3c 63 6f 70 |ocketOp0>.1.<cop| 0001e5d0 69 65 73 20 6f 6e 65 20 66 69 6c 65 20 64 65 73 |ies one file des| 0001e5e0 63 72 69 70 74 6f 72 20 74 6f 20 61 6e 6f 74 68 |criptor to anoth| 0001e5f0 65 72 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 53 6f |er=>AppEngine_So| 0001e600 63 6b 65 74 4f 70 31 3e 0a 32 09 3c 73 65 74 73 |cketOp1>.2.<sets| 0001e610 20 61 20 62 69 74 20 77 69 74 68 69 6e 20 61 20 | a bit within a | 0001e620 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 3d |file descriptor=| 0001e630 3e 41 70 70 45 6e 67 69 6e 65 5f 53 6f 63 6b 65 |>AppEngine_Socke| 0001e640 74 4f 70 32 3e 0a 33 09 3c 63 6c 65 61 72 73 20 |tOp2>.3.<clears | 0001e650 61 20 62 69 74 20 77 69 74 68 69 6e 20 61 20 66 |a bit within a f| 0001e660 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 3d 3e |ile descriptor=>| 0001e670 41 70 70 45 6e 67 69 6e 65 5f 53 6f 63 6b 65 74 |AppEngine_Socket| 0001e680 4f 70 33 3e 0a 34 09 3c 74 65 73 74 73 20 77 68 |Op3>.4.<tests wh| 0001e690 65 74 68 65 72 20 61 20 62 69 74 20 77 69 74 68 |ether a bit with| 0001e6a0 69 6e 20 61 20 66 69 6c 65 20 64 65 73 63 72 69 |in a file descri| 0001e6b0 70 74 6f 72 20 69 73 20 73 65 74 3d 3e 41 70 70 |ptor is set=>App| 0001e6c0 45 6e 67 69 6e 65 5f 53 6f 63 6b 65 74 4f 70 34 |Engine_SocketOp4| 0001e6d0 3e 0a 23 57 72 61 70 0a 44 41 54 41 0f 01 00 00 |>.#Wrap.DATA....| 0001e6e0 41 70 70 45 6e 67 69 6e 65 5f 53 6f 63 6b 65 74 |AppEngine_Socket| 0001e6f0 4f 70 20 30 20 20 28 26 34 44 39 34 35 29 0a 23 |Op 0 (&4D945).#| 0001e700 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e 65 |Parent AppEngine| 0001e710 5f 53 6f 63 6b 65 74 4f 70 0a 3d 3e 09 52 30 20 |_SocketOp.=>.R0 | 0001e720 3d 09 30 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |=.0..R1 =.pointe| 0001e730 72 20 74 6f 20 62 6c 6f 63 6b 20 6f 66 20 33 32 |r to block of 32| 0001e740 20 62 79 74 65 73 20 74 6f 20 62 65 63 6f 6d 65 | bytes to become| 0001e750 20 61 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 | a file descript| 0001e760 6f 72 0a 0a 3c 3d 09 52 30 2c 20 52 31 20 70 72 |or..<=.R0, R1 pr| 0001e770 65 73 65 72 76 65 64 0a 0a 54 68 69 73 20 63 61 |eserved..This ca| 0001e780 6c 6c 20 69 73 20 75 73 65 64 20 74 6f 20 63 6c |ll is used to cl| 0001e790 65 61 72 20 74 68 65 20 73 70 65 63 69 66 69 65 |ear the specifie| 0001e7a0 64 20 62 6c 6f 63 6b 20 6f 66 20 33 32 20 62 79 |d block of 32 by| 0001e7b0 74 65 73 20 73 6f 20 74 68 61 74 20 69 74 20 6d |tes so that it m| 0001e7c0 61 79 20 62 65 20 75 73 65 64 20 61 73 20 61 20 |ay be used as a | 0001e7d0 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 |file descriptor | 0001e7e0 62 6c 6f 63 6b 2e 0a 00 44 41 54 41 2b 01 00 00 |block...DATA+...| 0001e7f0 41 70 70 45 6e 67 69 6e 65 5f 53 6f 63 6b 65 74 |AppEngine_Socket| 0001e800 4f 70 20 31 20 20 28 26 34 44 39 34 35 29 0a 23 |Op 1 (&4D945).#| 0001e810 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e 65 |Parent AppEngine| 0001e820 5f 53 6f 63 6b 65 74 4f 70 0a 3d 3e 09 52 30 20 |_SocketOp.=>.R0 | 0001e830 3d 09 31 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |=.1..R1 =.pointe| 0001e840 72 20 74 6f 20 64 65 73 74 69 6e 61 74 69 6f 6e |r to destination| 0001e850 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 | file descriptor| 0001e860 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 72 20 74 |..R2 =.pointer t| 0001e870 6f 20 73 6f 75 72 63 65 20 66 69 6c 65 20 64 65 |o source file de| 0001e880 73 63 72 69 70 74 6f 72 0a 0a 3c 3d 09 52 30 2c |scriptor..<=.R0,| 0001e890 20 52 31 2c 20 52 32 20 70 72 65 73 65 72 76 65 | R1, R2 preserve| 0001e8a0 64 0a 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 20 |d..This call is | 0001e8b0 75 73 65 64 20 74 6f 20 63 6f 70 79 20 6f 6e 65 |used to copy one| 0001e8c0 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 | file descriptor| 0001e8d0 20 62 6c 6f 63 6b 20 74 6f 20 61 6e 6f 74 68 65 | block to anothe| 0001e8e0 72 20 28 6f 72 20 6d 65 6d 6f 72 79 20 74 6f 20 |r (or memory to | 0001e8f0 62 65 20 75 73 65 64 20 61 73 20 61 20 6e 65 77 |be used as a new| 0001e900 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 | file descriptor| 0001e910 29 2e 0a 00 44 41 54 41 09 01 00 00 41 70 70 45 |)...DATA....AppE| 0001e920 6e 67 69 6e 65 5f 53 6f 63 6b 65 74 4f 70 20 32 |ngine_SocketOp 2| 0001e930 20 20 28 26 34 44 39 34 35 29 0a 23 50 61 72 65 | (&4D945).#Pare| 0001e940 6e 74 20 41 70 70 45 6e 67 69 6e 65 5f 53 6f 63 |nt AppEngine_Soc| 0001e950 6b 65 74 4f 70 0a 3d 3e 09 52 30 20 3d 09 32 0a |ketOp.=>.R0 =.2.| 0001e960 09 52 31 20 3d 09 62 69 74 20 74 6f 20 73 65 74 |.R1 =.bit to set| 0001e970 20 28 30 2d 32 35 35 29 0a 09 52 32 20 3d 09 70 | (0-255)..R2 =.p| 0001e980 6f 69 6e 74 65 72 20 74 6f 20 66 69 6c 65 20 64 |ointer to file d| 0001e990 65 73 63 72 69 70 74 6f 72 0a 0a 3c 3d 09 52 30 |escriptor..<=.R0| 0001e9a0 2c 20 52 31 2c 20 52 32 20 70 72 65 73 65 72 76 |, R1, R2 preserv| 0001e9b0 65 64 0a 0a 54 68 69 73 20 63 61 6c 6c 20 69 73 |ed..This call is| 0001e9c0 20 75 73 65 64 20 74 6f 20 73 65 74 20 61 20 62 | used to set a b| 0001e9d0 69 74 20 77 69 74 68 69 6e 20 61 20 66 69 6c 65 |it within a file| 0001e9e0 20 64 65 73 63 72 69 70 74 6f 72 20 69 6e 64 69 | descriptor indi| 0001e9f0 63 61 74 69 6e 67 20 74 68 61 74 20 74 68 65 20 |cating that the | 0001ea00 72 65 73 70 65 63 74 69 76 65 20 73 6f 63 6b 65 |respective socke| 0001ea10 74 20 69 73 20 61 63 74 69 76 65 2e 0a 00 00 00 |t is active.....| 0001ea20 44 41 54 41 0b 01 00 00 41 70 70 45 6e 67 69 6e |DATA....AppEngin| 0001ea30 65 5f 53 6f 63 6b 65 74 4f 70 20 33 20 20 28 26 |e_SocketOp 3 (&| 0001ea40 34 44 39 34 35 29 0a 23 50 61 72 65 6e 74 20 41 |4D945).#Parent A| 0001ea50 70 70 45 6e 67 69 6e 65 5f 53 6f 63 6b 65 74 4f |ppEngine_SocketO| 0001ea60 70 0a 3d 3e 09 52 30 20 3d 09 33 0a 09 52 31 20 |p.=>.R0 =.3..R1 | 0001ea70 3d 09 62 69 74 20 74 6f 20 73 65 74 20 28 30 2d |=.bit to set (0-| 0001ea80 32 35 35 29 0a 09 52 32 20 3d 09 70 6f 69 6e 74 |255)..R2 =.point| 0001ea90 65 72 20 74 6f 20 66 69 6c 65 20 64 65 73 63 72 |er to file descr| 0001eaa0 69 70 74 6f 72 0a 0a 3c 3d 09 52 30 2c 20 52 31 |iptor..<=.R0, R1| 0001eab0 2c 20 52 32 20 70 72 65 73 65 72 76 65 64 0a 0a |, R2 preserved..| 0001eac0 54 68 69 73 20 63 61 6c 6c 20 69 73 20 75 73 65 |This call is use| 0001ead0 64 20 74 6f 20 63 6c 65 61 72 20 61 20 62 69 74 |d to clear a bit| 0001eae0 20 77 69 74 68 69 6e 20 61 20 66 69 6c 65 20 64 | within a file d| 0001eaf0 65 73 63 72 69 70 74 6f 72 20 69 6e 64 69 63 61 |escriptor indica| 0001eb00 74 69 6e 67 20 74 68 61 74 20 74 68 65 20 72 65 |ting that the re| 0001eb10 73 70 65 63 74 69 76 65 20 73 6f 63 6b 65 74 20 |spective socket | 0001eb20 69 73 20 61 63 74 69 76 65 2e 0a 00 44 41 54 41 |is active...DATA| 0001eb30 49 01 00 00 41 70 70 45 6e 67 69 6e 65 5f 53 6f |I...AppEngine_So| 0001eb40 63 6b 65 74 4f 70 20 34 20 20 28 26 34 44 39 34 |cketOp 4 (&4D94| 0001eb50 35 29 0a 23 50 61 72 65 6e 74 20 41 70 70 45 6e |5).#Parent AppEn| 0001eb60 67 69 6e 65 5f 53 6f 63 6b 65 74 4f 70 0a 3d 3e |gine_SocketOp.=>| 0001eb70 09 52 30 20 3d 09 34 0a 09 52 31 20 3d 09 62 69 |.R0 =.4..R1 =.bi| 0001eb80 74 20 74 6f 20 74 65 73 74 20 28 30 2d 32 35 35 |t to test (0-255| 0001eb90 29 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 72 20 |)..R2 =.pointer | 0001eba0 74 6f 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 |to file descript| 0001ebb0 6f 72 0a 0a 3c 3d 09 52 30 2c 20 52 32 20 70 72 |or..<=.R0, R2 pr| 0001ebc0 65 73 65 72 76 65 64 0a 09 52 31 20 3d 09 2d 31 |eserved..R1 =.-1| 0001ebd0 20 69 66 20 74 68 65 20 62 69 74 20 77 61 73 20 | if the bit was | 0001ebe0 73 65 74 2c 20 6f 72 20 30 20 69 66 20 69 74 20 |set, or 0 if it | 0001ebf0 77 61 73 20 6e 6f 74 20 73 65 74 0a 0a 54 68 69 |was not set..Thi| 0001ec00 73 20 63 61 6c 6c 20 69 73 20 75 73 65 64 20 74 |s call is used t| 0001ec10 6f 20 74 65 73 74 20 69 66 20 61 20 62 69 74 20 |o test if a bit | 0001ec20 77 69 74 68 69 6e 20 61 20 66 69 6c 65 20 64 65 |within a file de| 0001ec30 73 63 72 69 70 74 6f 72 20 69 73 20 73 65 74 2c |scriptor is set,| 0001ec40 20 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 74 | indicating whet| 0001ec50 68 65 72 20 74 68 65 20 72 65 73 70 65 63 74 69 |her the respecti| 0001ec60 76 65 20 73 6f 63 6b 65 74 20 69 73 20 61 63 74 |ve socket is act| 0001ec70 69 76 65 2e 0a 00 00 00 44 49 52 24 b4 01 00 00 |ive.....DIR$....| 0001ec80 b4 01 00 00 2c ee 01 00 47 ff ff ff b5 94 df d2 |....,...G.......| 0001ec90 8b 08 00 00 33 00 00 00 00 00 00 00 21 52 6f 6f |....3.......!Roo| 0001eca0 74 00 00 00 b8 f6 01 00 47 fd ff ff e8 10 91 e9 |t.......G.......| 0001ecb0 67 01 00 00 03 00 00 00 00 00 00 00 30 00 00 00 |g...........0...| 0001ecc0 20 f8 01 00 47 fd ff ff fa d1 91 e9 58 01 00 00 | ...G.......X...| 0001ecd0 03 00 00 00 00 00 00 00 31 00 00 00 78 f9 01 00 |........1...x...| 0001ece0 47 fd ff ff f8 09 91 e9 e5 01 00 00 03 00 00 00 |G...............| 0001ecf0 00 00 00 00 31 30 00 00 60 fb 01 00 47 fd ff ff |....10..`...G...| 0001ed00 25 05 91 e9 6d 02 00 00 03 00 00 00 00 00 00 00 |%...m...........| 0001ed10 31 32 00 00 d0 fd 01 00 47 fd ff ff d3 00 91 e9 |12......G.......| 0001ed20 18 01 00 00 03 00 00 00 00 00 00 00 31 33 00 00 |............13..| 0001ed30 e8 fe 01 00 47 fd ff ff 47 fd 90 e9 5c 01 00 00 |....G...G...\...| 0001ed40 03 00 00 00 00 00 00 00 31 34 00 00 44 00 02 00 |........14..D...| 0001ed50 47 fd ff ff 72 8e 91 e9 bc 01 00 00 03 00 00 00 |G...r...........| 0001ed60 00 00 00 00 32 00 00 00 00 02 02 00 47 fd ff ff |....2.......G...| 0001ed70 c1 8a 91 e9 bd 01 00 00 03 00 00 00 00 00 00 00 |................| 0001ed80 33 00 00 00 c0 03 02 00 47 fd ff ff 51 89 91 e9 |3.......G...Q...| 0001ed90 7d 01 00 00 03 00 00 00 00 00 00 00 34 00 00 00 |}...........4...| 0001eda0 40 05 02 00 47 fd ff ff 01 86 91 e9 7d 01 00 00 |@...G.......}...| 0001edb0 03 00 00 00 00 00 00 00 35 00 00 00 c0 06 02 00 |........5.......| 0001edc0 47 fd ff ff b4 84 91 e9 d8 01 00 00 03 00 00 00 |G...............| 0001edd0 00 00 00 00 36 00 00 00 98 08 02 00 47 fd ff ff |....6.......G...| 0001ede0 f7 81 91 e9 5b 01 00 00 03 00 00 00 00 00 00 00 |....[...........| 0001edf0 37 00 00 00 f4 09 02 00 47 fd ff ff 21 80 91 e9 |7.......G...!...| 0001ee00 1b 02 00 00 03 00 00 00 00 00 00 00 38 00 00 00 |............8...| 0001ee10 10 0c 02 00 47 fd ff ff 38 7e 91 e9 bc 01 00 00 |....G...8~......| 0001ee20 03 00 00 00 00 00 00 00 39 00 00 00 44 41 54 41 |........9...DATA| 0001ee30 8b 08 00 00 41 70 70 45 6e 67 69 6e 65 5f 53 74 |....AppEngine_St| 0001ee40 72 69 6e 67 4f 70 20 20 28 26 34 44 39 34 31 29 |ringOp (&4D941)| 0001ee50 0a 23 57 72 61 70 20 6f 66 66 0a 3d 3e 09 52 30 |.#Wrap off.=>.R0| 0001ee60 20 3d 20 3c 72 65 61 73 6f 6e 20 63 6f 64 65 3d | = <reason code=| 0001ee70 3e 2e 72 65 61 73 6f 6e 73 3e 0a 09 6f 74 68 65 |>.reasons>..othe| 0001ee80 72 20 72 65 67 69 73 74 65 72 73 20 61 72 65 20 |r registers are | 0001ee90 72 65 61 73 6f 6e 20 63 6f 64 65 20 64 65 70 65 |reason code depe| 0001eea0 6e 64 65 6e 74 0a 0a 3c 3d 09 52 30 20 70 72 65 |ndent..<=.R0 pre| 0001eeb0 73 65 72 76 65 64 0a 09 6f 74 68 65 72 20 72 65 |served..other re| 0001eec0 67 69 73 74 65 72 73 20 61 72 65 20 72 65 61 73 |gisters are reas| 0001eed0 6f 6e 20 63 6f 64 65 20 64 65 70 65 6e 64 65 6e |on code dependen| 0001eee0 74 0a 23 57 72 61 70 0a 0a 54 68 69 73 20 63 61 |t.#Wrap..This ca| 0001eef0 6c 6c 20 70 72 6f 76 69 64 65 73 20 76 61 72 69 |ll provides vari| 0001ef00 6f 75 73 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 |ous operations t| 0001ef10 6f 20 64 65 61 6c 20 77 69 74 68 20 41 53 43 49 |o deal with ASCI| 0001ef20 49 20 73 74 72 69 6e 67 73 2e 0a 0a 3c 4d 6f 72 |I strings...<Mor| 0001ef30 65 20 69 6e 66 6f 3d 3e 2e 6d 6f 72 65 3e 2e 0a |e info=>.more>..| 0001ef40 23 53 75 62 70 61 67 65 20 6d 6f 72 65 0a 41 70 |#Subpage more.Ap| 0001ef50 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f 70 |pEngine_StringOp| 0001ef60 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 54 68 69 | information.Thi| 0001ef70 73 20 63 61 6c 6c 20 70 72 6f 76 69 64 65 73 20 |s call provides | 0001ef80 76 61 72 69 6f 75 73 20 6f 70 65 72 61 74 69 6f |various operatio| 0001ef90 6e 73 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 |ns to deal with | 0001efa0 41 53 43 49 49 20 73 74 72 69 6e 67 73 2e 0a 0a |ASCII strings...| 0001efb0 4d 6f 73 74 20 28 69 66 20 6e 6f 74 20 61 6c 6c |Most (if not all| 0001efc0 29 20 6f 66 20 74 68 65 20 63 61 6c 6c 73 20 70 |) of the calls p| 0001efd0 6c 61 63 65 20 74 68 65 69 72 20 72 65 73 75 6c |lace their resul| 0001efe0 74 20 77 69 74 68 69 6e 20 41 70 70 45 6e 67 69 |t within AppEngi| 0001eff0 6e 65 27 73 20 77 6f 72 6b 73 70 61 63 65 20 61 |ne's workspace a| 0001f000 6e 64 20 72 65 74 75 72 6e 20 61 20 70 6f 69 6e |nd return a poin| 0001f010 74 65 72 20 74 6f 20 74 68 65 20 73 74 72 69 6e |ter to the strin| 0001f020 67 20 77 69 74 68 69 6e 20 74 68 65 20 77 6f 72 |g within the wor| 0001f030 6b 73 70 61 63 65 2e 20 20 46 6f 72 20 74 68 69 |kspace. For thi| 0001f040 73 20 72 65 61 73 6f 6e 2c 20 79 6f 75 20 6d 75 |s reason, you mu| 0001f050 73 74 20 61 6c 77 61 79 73 20 63 6f 70 79 20 74 |st always copy t| 0001f060 68 65 20 73 74 72 69 6e 67 20 74 6f 20 73 6f 6d |he string to som| 0001f070 65 77 68 65 72 65 20 65 6c 73 65 20 62 65 66 6f |ewhere else befo| 0001f080 72 65 20 63 61 6c 6c 69 6e 67 20 53 74 72 69 6e |re calling Strin| 0001f090 67 4f 70 20 61 67 61 69 6e 20 2d 20 69 66 20 79 |gOp again - if y| 0001f0a0 6f 75 20 64 6f 6e 27 74 20 64 6f 20 74 68 61 74 |ou don't do that| 0001f0b0 20 74 68 65 6e 20 66 75 72 74 68 65 72 20 63 61 | then further ca| 0001f0c0 6c 6c 73 20 74 6f 20 53 74 72 69 6e 67 4f 70 20 |lls to StringOp | 0001f0d0 77 69 6c 6c 20 6f 76 65 72 77 72 69 74 65 20 74 |will overwrite t| 0001f0e0 68 65 20 77 6f 72 6b 73 70 61 63 65 2c 20 64 65 |he workspace, de| 0001f0f0 73 74 72 6f 79 69 6e 67 20 74 68 65 20 73 74 72 |stroying the str| 0001f100 69 6e 67 2e 0a 0a 41 6c 6c 20 73 74 72 69 6e 67 |ing...All string| 0001f110 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 |s are stored in | 0001f120 74 68 65 20 73 61 6d 65 20 73 74 79 6c 65 20 61 |the same style a| 0001f130 73 20 42 41 53 49 43 2c 20 69 2e 65 2e 20 77 69 |s BASIC, i.e. wi| 0001f140 74 68 20 43 52 20 28 31 33 29 20 61 73 20 74 68 |th CR (13) as th| 0001f150 65 20 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68 |e terminating ch| 0001f160 61 72 61 63 74 65 72 2e 20 20 41 73 20 77 69 74 |aracter. As wit| 0001f170 68 20 42 41 53 49 43 2c 20 74 68 65 79 20 61 72 |h BASIC, they ar| 0001f180 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 61 20 6d |e limited to a m| 0001f190 61 78 69 6d 75 6d 20 6f 66 20 32 35 36 20 63 68 |aximum of 256 ch| 0001f1a0 61 72 61 63 74 65 72 73 2c 20 69 6e 63 6c 75 64 |aracters, includ| 0001f1b0 69 6e 67 20 74 65 72 6d 69 6e 61 74 6f 72 20 28 |ing terminator (| 0001f1c0 61 6c 74 68 6f 75 67 68 20 74 68 69 73 20 6d 61 |although this ma| 0001f1d0 79 20 63 68 61 6e 67 65 20 6c 61 74 65 72 20 6f |y change later o| 0001f1e0 6e 29 2e 20 20 54 79 70 69 63 61 6c 6c 79 20 79 |n). Typically y| 0001f1f0 6f 75 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 |ou will use the | 0001f200 6f 70 65 72 61 74 69 6f 6e 73 20 69 6e 20 74 68 |operations in th| 0001f210 69 73 20 77 61 79 3a 0a 09 0a 7b 66 43 6f 64 65 |is way:...{fCode| 0001f220 3a 53 59 53 20 22 41 70 70 45 6e 67 69 6e 65 5f |:SYS "AppEngine_| 0001f230 53 74 72 69 6e 67 4f 70 22 2c 31 2c 73 6f 75 72 |StringOp",1,sour| 0001f240 63 65 25 20 54 4f 20 2c 2c 73 74 72 69 6e 67 24 |ce% TO ,,string$| 0001f250 7d 0a 09 0a 49 6e 70 75 74 20 73 74 72 69 6e 67 |}...Input string| 0001f260 73 20 63 61 6e 20 62 65 20 74 65 72 6d 69 6e 61 |s can be termina| 0001f270 74 65 64 20 62 79 20 61 6e 79 20 63 6f 6e 74 72 |ted by any contr| 0001f280 6f 6c 20 63 68 61 72 61 63 74 65 72 2c 20 75 6e |ol character, un| 0001f290 6c 65 73 73 20 6f 74 68 65 72 77 69 73 65 20 73 |less otherwise s| 0001f2a0 74 61 74 65 64 2e 0a 23 53 75 62 70 61 67 65 20 |tated..#Subpage | 0001f2b0 72 65 61 73 6f 6e 73 0a 41 70 70 45 6e 67 69 6e |reasons.AppEngin| 0001f2c0 65 5f 53 74 72 69 6e 67 4f 70 20 72 65 61 73 6f |e_StringOp reaso| 0001f2d0 6e 20 63 6f 64 65 73 0a 23 57 72 61 70 20 6f 66 |n codes.#Wrap of| 0001f2e0 66 0a 52 30 09 41 63 74 69 6f 6e 0a 23 4c 69 6e |f.R0.Action.#Lin| 0001f2f0 65 0a 30 09 3c 72 65 61 64 73 20 61 20 73 74 72 |e.0.<reads a str| 0001f300 69 6e 67 20 66 72 6f 6d 20 6d 65 6d 6f 72 79 20 |ing from memory | 0001f310 28 4c 46 20 74 65 72 6d 69 6e 61 74 65 64 29 3d |(LF terminated)=| 0001f320 3e 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e |>AppEngine_Strin| 0001f330 67 4f 70 30 3e 0a 31 09 3c 72 65 61 64 73 20 61 |gOp0>.1.<reads a| 0001f340 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 6d 65 6d | string from mem| 0001f350 6f 72 79 20 28 63 6f 6e 74 72 6f 6c 20 74 65 72 |ory (control ter| 0001f360 6d 69 6e 61 74 65 64 29 3d 3e 41 70 70 45 6e 67 |minated)=>AppEng| 0001f370 69 6e 65 5f 53 74 72 69 6e 67 4f 70 31 3e 0a 32 |ine_StringOp1>.2| 0001f380 09 3c 73 68 6f 72 74 65 6e 73 20 61 20 73 74 72 |.<shortens a str| 0001f390 69 6e 67 2c 20 61 64 64 69 6e 67 20 61 6e 20 65 |ing, adding an e| 0001f3a0 6c 6c 69 70 73 69 73 20 6f 6e 20 74 68 65 20 6c |llipsis on the l| 0001f3b0 65 66 74 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 53 |eft=>AppEngine_S| 0001f3c0 74 72 69 6e 67 4f 70 32 3e 0a 33 09 3c 73 68 6f |tringOp2>.3.<sho| 0001f3d0 72 74 65 6e 73 20 61 20 73 74 72 69 6e 67 2c 20 |rtens a string, | 0001f3e0 61 64 64 69 6e 67 20 61 6e 20 65 6c 6c 69 70 73 |adding an ellips| 0001f3f0 69 73 20 6f 6e 20 74 68 65 20 72 69 67 68 74 3d |is on the right=| 0001f400 3e 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e |>AppEngine_Strin| 0001f410 67 4f 70 33 3e 0a 34 09 3c 63 6f 6e 76 65 72 74 |gOp3>.4.<convert| 0001f420 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 6c 6f |s a string to lo| 0001f430 77 65 72 2d 63 61 73 65 20 63 68 61 72 61 63 74 |wer-case charact| 0001f440 65 72 73 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 53 |ers=>AppEngine_S| 0001f450 74 72 69 6e 67 4f 70 34 3e 0a 35 09 3c 63 6f 6e |tringOp4>.5.<con| 0001f460 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 74 |verts a string t| 0001f470 6f 20 75 70 70 65 72 2d 63 61 73 65 20 63 68 61 |o upper-case cha| 0001f480 72 61 63 74 65 72 73 3d 3e 41 70 70 45 6e 67 69 |racters=>AppEngi| 0001f490 6e 65 5f 53 74 72 69 6e 67 4f 70 35 3e 0a 36 09 |ne_StringOp5>.6.| 0001f4a0 3c 74 65 73 74 73 20 77 68 65 74 68 65 72 20 61 |<tests whether a| 0001f4b0 20 73 74 72 69 6e 67 20 69 73 20 61 20 76 61 6c | string is a val| 0001f4c0 69 64 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 |id integer numbe| 0001f4d0 72 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 |r=>AppEngine_Str| 0001f4e0 69 6e 67 4f 70 36 3e 0a 37 09 3c 73 74 72 69 70 |ingOp6>.7.<strip| 0001f4f0 73 20 6c 65 61 64 69 6e 67 20 73 70 61 63 65 73 |s leading spaces| 0001f500 20 61 6e 64 20 74 61 62 73 20 66 72 6f 6d 20 61 | and tabs from a| 0001f510 20 73 74 72 69 6e 67 3d 3e 41 70 70 45 6e 67 69 | string=>AppEngi| 0001f520 6e 65 5f 53 74 72 69 6e 67 4f 70 37 3e 0a 38 09 |ne_StringOp7>.8.| 0001f530 3c 63 6f 6d 70 61 72 65 73 20 74 77 6f 20 73 74 |<compares two st| 0001f540 72 69 6e 67 73 3d 3e 41 70 70 45 6e 67 69 6e 65 |rings=>AppEngine| 0001f550 5f 53 74 72 69 6e 67 4f 70 38 3e 0a 39 09 3c 6a |_StringOp8>.9.<j| 0001f560 6f 69 6e 73 20 74 77 6f 20 73 74 72 69 6e 67 73 |oins two strings| 0001f570 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 |=>AppEngine_Stri| 0001f580 6e 67 4f 70 39 3e 0a 31 30 09 3c 72 65 74 75 72 |ngOp9>.10.<retur| 0001f590 6e 73 20 74 68 65 20 6c 65 61 66 6e 61 6d 65 20 |ns the leafname | 0001f5a0 66 72 6f 6d 20 61 20 70 61 74 68 20 73 74 72 69 |from a path stri| 0001f5b0 6e 67 3d 3e 41 70 70 45 6e 67 69 6e 65 5f 53 74 |ng=>AppEngine_St| 0001f5c0 72 69 6e 67 4f 70 31 30 3e 0a 31 31 09 72 65 74 |ringOp10>.11.ret| 0001f5d0 75 72 6e 73 20 74 68 65 20 62 72 61 6e 63 68 6e |urns the branchn| 0001f5e0 61 6d 65 20 66 72 6f 6d 20 61 20 70 61 74 68 20 |ame from a path | 0001f5f0 73 74 72 69 6e 67 20 28 6e 6f 74 20 79 65 74 20 |string (not yet | 0001f600 69 6d 70 6c 65 6d 65 6e 74 65 64 29 0a 31 32 09 |implemented).12.| 0001f610 3c 73 75 62 73 74 69 74 75 74 65 73 20 61 72 67 |<substitutes arg| 0001f620 75 6d 65 6e 74 73 20 69 6e 74 6f 20 61 20 73 74 |uments into a st| 0001f630 72 69 6e 67 3d 3e 41 70 70 45 6e 67 69 6e 65 5f |ring=>AppEngine_| 0001f640 53 74 72 69 6e 67 4f 70 31 32 3e 0a 31 33 09 3c |StringOp12>.13.<| 0001f650 72 65 74 75 72 6e 73 20 74 68 65 20 6c 65 6e 67 |returns the leng| 0001f660 74 68 20 6f 66 20 61 20 73 74 72 69 6e 67 3d 3e |th of a string=>| 0001f670 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 |AppEngine_String| 0001f680 4f 70 31 33 3e 0a 31 34 09 3c 63 6f 70 69 65 73 |Op13>.14.<copies| 0001f690 20 61 20 73 74 72 69 6e 67 3d 3e 41 70 70 45 6e | a string=>AppEn| 0001f6a0 67 69 6e 65 5f 53 74 72 69 6e 67 4f 70 31 34 3e |gine_StringOp14>| 0001f6b0 0a 23 57 72 61 70 0a 00 44 41 54 41 67 01 00 00 |.#Wrap..DATAg...| 0001f6c0 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 |AppEngine_String| 0001f6d0 4f 70 20 30 20 20 28 26 34 44 39 34 31 29 0a 23 |Op 0 (&4D941).#| 0001f6e0 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e 65 |Parent AppEngine| 0001f6f0 5f 53 74 72 69 6e 67 4f 70 0a 3d 3e 09 52 30 20 |_StringOp.=>.R0 | 0001f700 3d 09 30 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |=.0..R1 =.pointe| 0001f710 72 20 74 6f 20 61 64 64 72 65 73 73 20 74 6f 20 |r to address to | 0001f720 72 65 61 64 20 73 74 72 69 6e 67 20 66 72 6f 6d |read string from| 0001f730 0a 0a 3c 3d 09 52 30 20 70 72 65 73 65 72 76 65 |..<=.R0 preserve| 0001f740 64 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 |d..R1 =.pointer | 0001f750 74 6f 20 63 68 61 72 61 63 74 65 72 20 61 66 74 |to character aft| 0001f760 65 72 20 74 68 65 20 69 6e 70 75 74 91 73 20 74 |er the input.s t| 0001f770 65 72 6d 69 6e 61 74 6f 72 0a 09 52 32 20 3d 09 |erminator..R2 =.| 0001f780 70 6f 69 6e 74 65 72 20 74 6f 20 72 65 61 64 20 |pointer to read | 0001f790 73 74 72 69 6e 67 20 28 75 70 20 74 6f 20 32 35 |string (up to 25| 0001f7a0 35 20 63 68 61 72 73 29 0a 0a 54 68 69 73 20 63 |5 chars)..This c| 0001f7b0 61 6c 6c 20 63 6f 6e 76 65 72 74 73 20 61 6e 20 |all converts an | 0001f7c0 4c 46 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 |LF-terminated st| 0001f7d0 72 69 6e 67 20 69 6e 20 6d 65 6d 6f 72 79 20 69 |ring in memory i| 0001f7e0 6e 74 6f 20 61 20 43 52 2d 74 65 72 6d 69 6e 61 |nto a CR-termina| 0001f7f0 74 65 64 20 73 74 72 69 6e 67 20 69 6e 20 74 68 |ted string in th| 0001f800 65 20 6d 6f 64 75 6c 65 27 73 20 69 6e 74 65 72 |e module's inter| 0001f810 6e 61 6c 20 77 6f 72 6b 73 70 61 63 65 2e 0a 00 |nal workspace...| 0001f820 44 41 54 41 58 01 00 00 41 70 70 45 6e 67 69 6e |DATAX...AppEngin| 0001f830 65 5f 53 74 72 69 6e 67 4f 70 20 31 20 20 28 26 |e_StringOp 1 (&| 0001f840 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 41 |4D941).#Parent A| 0001f850 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f |ppEngine_StringO| 0001f860 70 0a 3d 3e 09 52 30 20 3d 09 31 0a 09 52 31 20 |p.=>.R0 =.1..R1 | 0001f870 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 64 |=.pointer to add| 0001f880 72 65 73 73 20 74 6f 20 72 65 61 64 20 73 74 72 |ress to read str| 0001f890 69 6e 67 20 66 72 6f 6d 0a 0a 3c 3d 09 52 30 20 |ing from..<=.R0 | 0001f8a0 70 72 65 73 65 72 76 65 64 0a 09 52 31 20 3d 09 |preserved..R1 =.| 0001f8b0 70 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 72 61 |pointer to chara| 0001f8c0 63 74 65 72 20 61 66 74 65 72 20 74 68 65 20 69 |cter after the i| 0001f8d0 6e 70 75 74 91 73 20 74 65 72 6d 69 6e 61 74 6f |nput.s terminato| 0001f8e0 72 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 72 20 |r..R2 =.pointer | 0001f8f0 74 6f 20 72 65 61 64 20 73 74 72 69 6e 67 20 28 |to read string (| 0001f900 75 70 20 74 6f 20 32 35 35 20 63 68 61 72 73 29 |up to 255 chars)| 0001f910 0a 0a 54 68 69 73 20 63 61 6c 6c 20 63 6f 6e 76 |..This call conv| 0001f920 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e |erts a string in| 0001f930 20 6d 65 6d 6f 72 79 20 69 6e 74 6f 20 61 20 43 | memory into a C| 0001f940 52 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 |R-terminated str| 0001f950 69 6e 67 20 69 6e 20 74 68 65 20 6d 6f 64 75 6c |ing in the modul| 0001f960 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 77 6f 72 |e's internal wor| 0001f970 6b 73 70 61 63 65 2e 0a 44 41 54 41 e5 01 00 00 |kspace..DATA....| 0001f980 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 |AppEngine_String| 0001f990 4f 70 20 31 30 20 20 28 26 34 44 39 34 31 29 0a |Op 10 (&4D941).| 0001f9a0 23 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e |#Parent AppEngin| 0001f9b0 65 5f 53 74 72 69 6e 67 4f 70 0a 3d 3e 09 52 30 |e_StringOp.=>.R0| 0001f9c0 20 3d 09 31 30 0a 09 52 31 20 3d 09 70 6f 69 6e | =.10..R1 =.poin| 0001f9d0 74 65 72 20 74 6f 20 61 64 64 72 65 73 73 20 74 |ter to address t| 0001f9e0 6f 20 72 65 61 64 20 73 74 72 69 6e 67 20 66 72 |o read string fr| 0001f9f0 6f 6d 0a 09 52 32 20 3d 09 64 69 72 65 63 74 6f |om..R2 =.directo| 0001fa00 72 79 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 |ry separator cha| 0001fa10 72 61 63 74 65 72 2c 20 74 79 70 69 63 61 6c 6c |racter, typicall| 0001fa20 79 20 27 2e 27 20 6f 72 20 27 2f 27 20 28 41 53 |y '.' or '/' (AS| 0001fa30 43 49 49 20 63 6f 64 65 29 0a 0a 3c 3d 09 52 30 |CII code)..<=.R0| 0001fa40 2c 20 52 32 20 70 72 65 73 65 72 76 65 64 0a 09 |, R2 preserved..| 0001fa50 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 |R1 =.pointer to | 0001fa60 63 68 61 72 61 63 74 65 72 20 61 66 74 65 72 20 |character after | 0001fa70 74 68 65 20 69 6e 70 75 74 27 73 20 74 65 72 6d |the input's term| 0001fa80 69 6e 61 74 6f 72 0a 09 52 33 20 3d 09 70 6f 69 |inator..R3 =.poi| 0001fa90 6e 74 65 72 20 74 6f 20 6f 75 74 70 75 74 20 73 |nter to output s| 0001faa0 74 72 69 6e 67 20 28 75 70 20 74 6f 20 32 35 35 |tring (up to 255| 0001fab0 20 63 68 61 72 73 29 0a 0a 54 68 69 73 20 63 61 | chars)..This ca| 0001fac0 6c 6c 20 74 61 6b 65 73 20 61 6e 20 69 6e 70 75 |ll takes an inpu| 0001fad0 74 20 70 61 74 68 20 73 74 72 69 6e 67 20 28 65 |t path string (e| 0001fae0 2e 67 2e 20 90 41 44 46 53 3a 3a 48 44 34 2e 24 |.g. .ADFS::HD4.$| 0001faf0 2e 53 6f 75 6e 64 73 2e 57 61 76 65 91 29 20 61 |.Sounds.Wave.) a| 0001fb00 6e 64 20 72 65 74 75 72 6e 73 20 77 68 61 74 20 |nd returns what | 0001fb10 66 6f 6c 6c 6f 77 73 20 74 68 65 20 6c 61 73 74 |follows the last| 0001fb20 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 | instance of the| 0001fb30 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 | separator chara| 0001fb40 63 74 65 72 20 28 69 6e 20 74 68 69 73 20 63 61 |cter (in this ca| 0001fb50 73 65 2c 20 90 57 61 76 65 91 29 2e 0a 00 00 00 |se, .Wave.).....| 0001fb60 44 41 54 41 6d 02 00 00 41 70 70 45 6e 67 69 6e |DATAm...AppEngin| 0001fb70 65 5f 53 74 72 69 6e 67 4f 70 20 31 32 20 20 28 |e_StringOp 12 (| 0001fb80 26 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 |&4D941).#Parent | 0001fb90 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 |AppEngine_String| 0001fba0 4f 70 0a 3d 3e 09 52 30 20 3d 09 31 32 0a 09 52 |Op.=>.R0 =.12..R| 0001fbb0 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 74 |1 =.pointer to t| 0001fbc0 65 6d 70 6c 61 74 65 20 73 74 72 69 6e 67 2c 20 |emplate string, | 0001fbd0 63 6f 6e 74 61 69 6e 69 6e 67 20 27 25 30 27 20 |containing '%0' | 0001fbe0 75 70 20 74 6f 20 27 25 33 27 2e 0a 09 52 33 20 |up to '%3'...R3 | 0001fbf0 3d 09 73 74 72 69 6e 67 20 74 6f 20 73 75 62 73 |=.string to subs| 0001fc00 74 69 74 75 74 65 20 66 6f 72 20 27 25 30 27 20 |titute for '%0' | 0001fc10 6f 72 20 30 20 66 6f 72 20 6e 6f 20 73 74 72 69 |or 0 for no stri| 0001fc20 6e 67 0a 09 52 34 20 3d 09 73 74 72 69 6e 67 20 |ng..R4 =.string | 0001fc30 74 6f 20 73 75 62 73 74 69 74 75 74 65 20 66 6f |to substitute fo| 0001fc40 72 20 27 25 31 27 20 6f 72 20 30 20 66 6f 72 20 |r '%1' or 0 for | 0001fc50 6e 6f 20 73 74 72 69 6e 67 0a 09 52 35 20 3d 09 |no string..R5 =.| 0001fc60 73 74 72 69 6e 67 20 74 6f 20 73 75 62 73 74 69 |string to substi| 0001fc70 74 75 74 65 20 66 6f 72 20 27 25 32 27 20 6f 72 |tute for '%2' or| 0001fc80 20 30 20 66 6f 72 20 6e 6f 20 73 74 72 69 6e 67 | 0 for no string| 0001fc90 0a 09 52 36 20 3d 09 73 74 72 69 6e 67 20 74 6f |..R6 =.string to| 0001fca0 20 73 75 62 73 74 69 74 75 74 65 20 66 6f 72 20 | substitute for | 0001fcb0 27 25 33 27 20 6f 72 20 30 20 66 6f 72 20 6e 6f |'%3' or 0 for no| 0001fcc0 20 73 74 72 69 6e 67 0a 0a 3c 3d 09 52 30 2c 20 | string..<=.R0, | 0001fcd0 52 33 2c 20 52 34 2c 20 52 35 2c 20 52 36 20 70 |R3, R4, R5, R6 p| 0001fce0 72 65 73 65 72 76 65 64 0a 09 52 31 20 3d 09 70 |reserved..R1 =.p| 0001fcf0 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 72 61 63 |ointer to charac| 0001fd00 74 65 72 20 61 66 74 65 72 20 74 68 65 20 74 65 |ter after the te| 0001fd10 6d 70 6c 61 74 65 20 73 74 72 69 6e 67 27 73 20 |mplate string's | 0001fd20 74 65 72 6d 69 6e 61 74 6f 72 0a 09 52 32 20 3d |terminator..R2 =| 0001fd30 09 70 6f 69 6e 74 65 72 20 74 6f 20 6f 75 74 70 |.pointer to outp| 0001fd40 75 74 20 73 74 72 69 6e 67 20 28 75 70 20 74 6f |ut string (up to| 0001fd50 20 32 35 35 20 63 68 61 72 73 29 0a 0a 54 68 69 | 255 chars)..Thi| 0001fd60 73 20 63 61 6c 6c 20 74 61 6b 65 73 20 61 6e 20 |s call takes an | 0001fd70 69 6e 70 75 74 20 74 65 6d 70 6c 61 74 65 20 73 |input template s| 0001fd80 74 72 69 6e 67 20 61 6e 64 20 73 75 62 73 74 69 |tring and substi| 0001fd90 74 75 74 65 73 20 61 6e 6f 74 68 65 72 20 73 74 |tutes another st| 0001fda0 72 69 6e 67 20 77 68 65 72 65 20 61 6e 20 69 64 |ring where an id| 0001fdb0 65 6e 74 69 66 69 65 72 20 90 25 30 91 2e 2e 90 |entifier .%0....| 0001fdc0 25 33 91 20 61 70 70 65 61 72 73 2e 0a 00 00 00 |%3. appears.....| 0001fdd0 44 41 54 41 18 01 00 00 41 70 70 45 6e 67 69 6e |DATA....AppEngin| 0001fde0 65 5f 53 74 72 69 6e 67 4f 70 20 31 33 20 20 28 |e_StringOp 13 (| 0001fdf0 26 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 |&4D941).#Parent | 0001fe00 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 |AppEngine_String| 0001fe10 4f 70 0a 3d 3e 09 52 30 20 3d 09 31 33 0a 09 52 |Op.=>.R0 =.13..R| 0001fe20 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 |1 =.pointer to a| 0001fe30 64 64 72 65 73 73 20 74 6f 20 72 65 61 64 20 73 |ddress to read s| 0001fe40 74 72 69 6e 67 20 66 72 6f 6d 0a 0a 3c 3d 09 52 |tring from..<=.R| 0001fe50 30 20 70 72 65 73 65 72 76 65 64 0a 09 52 31 20 |0 preserved..R1 | 0001fe60 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 |=.pointer to cha| 0001fe70 72 61 63 74 65 72 20 61 66 74 65 72 20 74 68 65 |racter after the| 0001fe80 20 69 6e 70 75 74 27 73 20 74 65 72 6d 69 6e 61 | input's termina| 0001fe90 74 6f 72 0a 09 52 32 20 3d 09 6c 65 6e 67 74 68 |tor..R2 =.length| 0001fea0 20 6f 66 20 73 74 72 69 6e 67 0a 0a 54 68 69 73 | of string..This| 0001feb0 20 63 61 6c 6c 20 64 65 74 65 72 6d 69 6e 65 73 | call determines| 0001fec0 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 61 | the length of a| 0001fed0 20 73 74 72 69 6e 67 2c 20 69 6e 20 63 68 61 72 | string, in char| 0001fee0 61 63 74 65 72 73 2e 0a 44 41 54 41 5c 01 00 00 |acters..DATA\...| 0001fef0 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 |AppEngine_String| 0001ff00 4f 70 20 31 34 20 20 28 26 34 44 39 34 31 29 0a |Op 14 (&4D941).| 0001ff10 23 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e |#Parent AppEngin| 0001ff20 65 5f 53 74 72 69 6e 67 4f 70 0a 3d 3e 09 52 30 |e_StringOp.=>.R0| 0001ff30 20 3d 09 31 34 0a 09 52 31 20 3d 09 70 6f 69 6e | =.14..R1 =.poin| 0001ff40 74 65 72 20 74 6f 20 61 64 64 72 65 73 73 20 74 |ter to address t| 0001ff50 6f 20 72 65 61 64 20 73 74 72 69 6e 67 20 66 72 |o read string fr| 0001ff60 6f 6d 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 72 |om..R2 =.pointer| 0001ff70 20 74 6f 20 61 64 64 72 65 73 73 20 74 6f 20 63 | to address to c| 0001ff80 6f 70 79 20 73 74 72 69 6e 67 20 74 6f 0a 0a 3c |opy string to..<| 0001ff90 3d 09 52 30 20 70 72 65 73 65 72 76 65 64 0a 09 |=.R0 preserved..| 0001ffa0 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 |R1 =.pointer to | 0001ffb0 63 68 61 72 61 63 74 65 72 20 61 66 74 65 72 20 |character after | 0001ffc0 74 68 65 20 69 6e 70 75 74 27 73 20 74 65 72 6d |the input's term| 0001ffd0 69 6e 61 74 6f 72 0a 09 52 32 20 3d 09 70 6f 69 |inator..R2 =.poi| 0001ffe0 6e 74 65 72 20 74 6f 20 63 68 61 72 61 63 74 65 |nter to characte| 0001fff0 72 20 61 66 74 65 72 20 74 68 65 20 6f 75 74 70 |r after the outp| 00020000 75 74 27 73 20 74 65 72 6d 69 6e 61 74 6f 72 0a |ut's terminator.| 00020010 0a 54 68 69 73 20 63 6f 70 69 65 73 20 61 20 73 |.This copies a s| 00020020 74 72 69 6e 67 20 66 72 6f 6d 20 6f 6e 65 20 6c |tring from one l| 00020030 6f 63 61 74 69 6f 6e 20 74 6f 20 61 6e 6f 74 68 |ocation to anoth| 00020040 65 72 2e 0a 44 41 54 41 bc 01 00 00 41 70 70 45 |er..DATA....AppE| 00020050 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f 70 20 32 |ngine_StringOp 2| 00020060 20 20 28 26 34 44 39 34 31 29 0a 23 50 61 72 65 | (&4D941).#Pare| 00020070 6e 74 20 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 |nt AppEngine_Str| 00020080 69 6e 67 4f 70 0a 3d 3e 09 52 30 20 3d 09 32 0a |ingOp.=>.R0 =.2.| 00020090 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f |.R1 =.pointer to| 000200a0 20 61 64 64 72 65 73 73 20 74 6f 20 72 65 61 64 | address to read| 000200b0 20 73 74 72 69 6e 67 20 66 72 6f 6d 0a 09 52 32 | string from..R2| 000200c0 20 3d 09 6c 65 6e 67 74 68 20 6f 66 20 6f 75 74 | =.length of out| 000200d0 70 75 74 20 73 74 72 69 6e 67 20 28 6d 61 78 69 |put string (maxi| 000200e0 6d 75 6d 20 6f 66 20 32 35 35 2c 20 5c 3c 33 20 |mum of 255, \<3 | 000200f0 69 73 20 75 6e 64 65 66 69 6e 65 64 29 0a 0a 3c |is undefined)..<| 00020100 3d 09 52 30 2c 20 52 32 20 70 72 65 73 65 72 76 |=.R0, R2 preserv| 00020110 65 64 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 |ed..R1 =.pointer| 00020120 20 74 6f 20 63 68 61 72 61 63 74 65 72 20 61 66 | to character af| 00020130 74 65 72 20 74 68 65 20 69 6e 70 75 74 91 73 20 |ter the input.s | 00020140 74 65 72 6d 69 6e 61 74 6f 72 0a 09 52 33 20 3d |terminator..R3 =| 00020150 09 70 6f 69 6e 74 65 72 20 74 6f 20 6f 75 74 70 |.pointer to outp| 00020160 75 74 20 73 74 72 69 6e 67 20 28 75 70 20 74 6f |ut string (up to| 00020170 20 32 35 35 20 63 68 61 72 73 29 0a 0a 54 68 69 | 255 chars)..Thi| 00020180 73 20 63 61 6c 6c 20 63 6f 70 69 65 73 20 61 20 |s call copies a | 00020190 73 74 72 69 6e 67 2c 20 74 72 75 6e 63 61 74 69 |string, truncati| 000201a0 6e 67 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 |ng the left-hand| 000201b0 20 73 69 64 65 20 61 6e 64 20 70 72 65 66 69 78 | side and prefix| 000201c0 69 6e 67 20 61 6e 20 65 6c 6c 69 70 73 69 73 20 |ing an ellipsis | 000201d0 28 90 2e 2e 2e 91 29 20 69 66 20 69 74 27 73 20 |(.....) if it's | 000201e0 6c 6f 6e 67 65 72 20 74 68 61 6e 20 74 68 65 20 |longer than the | 000201f0 73 70 65 63 69 66 69 65 64 20 73 69 7a 65 2e 0a |specified size..| 00020200 44 41 54 41 bd 01 00 00 41 70 70 45 6e 67 69 6e |DATA....AppEngin| 00020210 65 5f 53 74 72 69 6e 67 4f 70 20 33 20 20 28 26 |e_StringOp 3 (&| 00020220 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 41 |4D941).#Parent A| 00020230 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f |ppEngine_StringO| 00020240 70 0a 3d 3e 09 52 30 20 3d 09 33 0a 09 52 31 20 |p.=>.R0 =.3..R1 | 00020250 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 64 |=.pointer to add| 00020260 72 65 73 73 20 74 6f 20 72 65 61 64 20 73 74 72 |ress to read str| 00020270 69 6e 67 20 66 72 6f 6d 0a 09 52 32 20 3d 09 6c |ing from..R2 =.l| 00020280 65 6e 67 74 68 20 6f 66 20 6f 75 74 70 75 74 20 |ength of output | 00020290 73 74 72 69 6e 67 20 28 6d 61 78 69 6d 75 6d 20 |string (maximum | 000202a0 6f 66 20 32 35 35 2c 20 5c 3c 33 20 69 73 20 75 |of 255, \<3 is u| 000202b0 6e 64 65 66 69 6e 65 64 29 0a 0a 3c 3d 09 52 30 |ndefined)..<=.R0| 000202c0 2c 20 52 32 20 70 72 65 73 65 72 76 65 64 0a 09 |, R2 preserved..| 000202d0 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 |R1 =.pointer to | 000202e0 63 68 61 72 61 63 74 65 72 20 61 66 74 65 72 20 |character after | 000202f0 74 68 65 20 69 6e 70 75 74 91 73 20 74 65 72 6d |the input.s term| 00020300 69 6e 61 74 6f 72 0a 09 52 33 20 3d 09 70 6f 69 |inator..R3 =.poi| 00020310 6e 74 65 72 20 74 6f 20 6f 75 74 70 75 74 20 73 |nter to output s| 00020320 74 72 69 6e 67 20 28 75 70 20 74 6f 20 32 35 35 |tring (up to 255| 00020330 20 63 68 61 72 73 29 0a 0a 54 68 69 73 20 63 61 | chars)..This ca| 00020340 6c 6c 20 63 6f 70 69 65 73 20 61 20 73 74 72 69 |ll copies a stri| 00020350 6e 67 2c 20 74 72 75 6e 63 61 74 69 6e 67 20 74 |ng, truncating t| 00020360 68 65 20 72 69 67 68 74 2d 68 61 6e 64 20 73 69 |he right-hand si| 00020370 64 65 20 61 6e 64 20 61 70 70 65 6e 64 69 6e 67 |de and appending| 00020380 20 61 6e 20 65 6c 6c 69 70 73 69 73 20 28 90 2e | an ellipsis (..| 00020390 2e 2e 91 29 20 69 66 20 69 74 91 73 20 6c 6f 6e |...) if it.s lon| 000203a0 67 65 72 20 74 68 61 6e 20 74 68 65 20 73 70 65 |ger than the spe| 000203b0 63 69 66 69 65 64 20 73 69 7a 65 2e 0a 00 00 00 |cified size.....| 000203c0 44 41 54 41 7d 01 00 00 41 70 70 45 6e 67 69 6e |DATA}...AppEngin| 000203d0 65 5f 53 74 72 69 6e 67 4f 70 20 34 20 20 28 26 |e_StringOp 4 (&| 000203e0 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 41 |4D941).#Parent A| 000203f0 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f |ppEngine_StringO| 00020400 70 0a 3d 3e 09 52 30 20 3d 09 34 0a 09 52 31 20 |p.=>.R0 =.4..R1 | 00020410 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 64 |=.pointer to add| 00020420 72 65 73 73 20 74 6f 20 72 65 61 64 20 73 74 72 |ress to read str| 00020430 69 6e 67 20 66 72 6f 6d 0a 0a 3c 3d 09 52 30 20 |ing from..<=.R0 | 00020440 70 72 65 73 65 72 76 65 64 0a 09 52 31 20 3d 09 |preserved..R1 =.| 00020450 70 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 72 61 |pointer to chara| 00020460 63 74 65 72 20 61 66 74 65 72 20 74 68 65 20 69 |cter after the i| 00020470 6e 70 75 74 27 73 20 74 65 72 6d 69 6e 61 74 6f |nput's terminato| 00020480 72 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 72 20 |r..R2 =.pointer | 00020490 74 6f 20 6f 75 74 70 75 74 20 73 74 72 69 6e 67 |to output string| 000204a0 20 28 75 70 20 74 6f 20 32 35 35 20 63 68 61 72 | (up to 255 char| 000204b0 73 29 0a 0a 54 68 69 73 20 63 61 6c 6c 20 63 6f |s)..This call co| 000204c0 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 |nverts a string | 000204d0 69 6e 20 6d 65 6d 6f 72 79 20 69 6e 74 6f 20 61 |in memory into a| 000204e0 20 43 52 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 | CR-terminated s| 000204f0 74 72 69 6e 67 2c 20 75 73 69 6e 67 20 6f 6e 6c |tring, using onl| 00020500 79 20 6c 6f 77 65 72 2d 63 61 73 65 20 63 68 61 |y lower-case cha| 00020510 72 61 63 74 65 72 73 2c 20 69 6e 20 74 68 65 20 |racters, in the | 00020520 6d 6f 64 75 6c 65 27 73 20 69 6e 74 65 72 6e 61 |module's interna| 00020530 6c 20 77 6f 72 6b 73 70 61 63 65 2e 0a 00 00 00 |l workspace.....| 00020540 44 41 54 41 7d 01 00 00 41 70 70 45 6e 67 69 6e |DATA}...AppEngin| 00020550 65 5f 53 74 72 69 6e 67 4f 70 20 35 20 20 28 26 |e_StringOp 5 (&| 00020560 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 41 |4D941).#Parent A| 00020570 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f |ppEngine_StringO| 00020580 70 0a 3d 3e 09 52 30 20 3d 09 35 0a 09 52 31 20 |p.=>.R0 =.5..R1 | 00020590 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 64 |=.pointer to add| 000205a0 72 65 73 73 20 74 6f 20 72 65 61 64 20 73 74 72 |ress to read str| 000205b0 69 6e 67 20 66 72 6f 6d 0a 0a 3c 3d 09 52 30 20 |ing from..<=.R0 | 000205c0 70 72 65 73 65 72 76 65 64 0a 09 52 31 20 3d 09 |preserved..R1 =.| 000205d0 70 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 72 61 |pointer to chara| 000205e0 63 74 65 72 20 61 66 74 65 72 20 74 68 65 20 69 |cter after the i| 000205f0 6e 70 75 74 27 73 20 74 65 72 6d 69 6e 61 74 6f |nput's terminato| 00020600 72 0a 09 52 32 20 3d 09 70 6f 69 6e 74 65 72 20 |r..R2 =.pointer | 00020610 74 6f 20 6f 75 74 70 75 74 20 73 74 72 69 6e 67 |to output string| 00020620 20 28 75 70 20 74 6f 20 32 35 35 20 63 68 61 72 | (up to 255 char| 00020630 73 29 0a 0a 54 68 69 73 20 63 61 6c 6c 20 63 6f |s)..This call co| 00020640 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 |nverts a string | 00020650 69 6e 20 6d 65 6d 6f 72 79 20 69 6e 74 6f 20 61 |in memory into a| 00020660 20 43 52 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 | CR-terminated s| 00020670 74 72 69 6e 67 2c 20 75 73 69 6e 67 20 6f 6e 6c |tring, using onl| 00020680 79 20 75 70 70 65 72 2d 63 61 73 65 20 63 68 61 |y upper-case cha| 00020690 72 61 63 74 65 72 73 2c 20 69 6e 20 74 68 65 20 |racters, in the | 000206a0 6d 6f 64 75 6c 65 27 73 20 69 6e 74 65 72 6e 61 |module's interna| 000206b0 6c 20 77 6f 72 6b 73 70 61 63 65 2e 0a 00 00 00 |l workspace.....| 000206c0 44 41 54 41 d8 01 00 00 41 70 70 45 6e 67 69 6e |DATA....AppEngin| 000206d0 65 5f 53 74 72 69 6e 67 4f 70 20 36 20 20 28 26 |e_StringOp 6 (&| 000206e0 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 41 |4D941).#Parent A| 000206f0 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f |ppEngine_StringO| 00020700 70 0a 3d 3e 09 52 30 20 3d 09 36 0a 09 52 31 20 |p.=>.R0 =.6..R1 | 00020710 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 64 |=.pointer to add| 00020720 72 65 73 73 20 74 6f 20 72 65 61 64 20 73 74 72 |ress to read str| 00020730 69 6e 67 20 66 72 6f 6d 0a 0a 3c 3d 09 52 30 20 |ing from..<=.R0 | 00020740 70 72 65 73 65 72 76 65 64 0a 09 52 31 20 3d 09 |preserved..R1 =.| 00020750 70 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 72 61 |pointer to chara| 00020760 63 74 65 72 20 61 66 74 65 72 20 74 68 65 20 69 |cter after the i| 00020770 6e 70 75 74 27 73 20 74 65 72 6d 69 6e 61 74 6f |nput's terminato| 00020780 72 0a 09 52 32 20 3d 09 54 52 55 45 20 28 2d 31 |r..R2 =.TRUE (-1| 00020790 29 20 6f 72 20 46 41 4c 53 45 20 28 30 29 20 66 |) or FALSE (0) f| 000207a0 6f 72 20 76 61 6c 69 64 20 6f 72 20 69 6e 76 61 |or valid or inva| 000207b0 6c 69 64 20 72 65 73 70 65 63 74 69 76 65 6c 79 |lid respectively| 000207c0 0a 0a 54 68 69 73 20 63 61 6c 6c 20 72 65 61 64 |..This call read| 000207d0 73 20 61 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 |s a string from | 000207e0 6d 65 6d 6f 72 79 2c 20 69 66 20 69 74 20 66 69 |memory, if it fi| 000207f0 6e 64 73 20 74 68 61 74 20 74 68 65 20 73 74 72 |nds that the str| 00020800 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 6e |ing contains non| 00020810 2d 6e 75 6d 65 72 69 63 20 63 68 61 72 61 63 74 |-numeric charact| 00020820 65 72 73 20 74 68 65 6e 20 69 74 20 77 69 6c 6c |ers then it will| 00020830 20 72 65 74 75 72 6e 20 46 41 4c 53 45 2e 20 20 | return FALSE. | 00020840 49 66 20 69 74 20 66 69 6e 64 73 20 74 68 61 74 |If it finds that| 00020850 20 74 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 | the string cont| 00020860 61 69 6e 73 20 6f 6e 6c 79 20 6e 75 6d 65 72 69 |ains only numeri| 00020870 63 20 63 68 61 72 61 63 74 65 72 73 2c 20 74 68 |c characters, th| 00020880 65 6e 20 69 74 20 77 69 6c 6c 20 72 65 74 75 72 |en it will retur| 00020890 6e 20 54 52 55 45 2e 0a 44 41 54 41 5b 01 00 00 |n TRUE..DATA[...| 000208a0 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 |AppEngine_String| 000208b0 4f 70 20 37 20 20 28 26 34 44 39 34 31 29 0a 23 |Op 7 (&4D941).#| 000208c0 50 61 72 65 6e 74 20 41 70 70 45 6e 67 69 6e 65 |Parent AppEngine| 000208d0 5f 53 74 72 69 6e 67 4f 70 0a 3d 3e 09 52 30 20 |_StringOp.=>.R0 | 000208e0 3d 09 37 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |=.7..R1 =.pointe| 000208f0 72 20 74 6f 20 61 64 64 72 65 73 73 20 74 6f 20 |r to address to | 00020900 72 65 61 64 20 73 74 72 69 6e 67 20 66 72 6f 6d |read string from| 00020910 0a 0a 3c 3d 09 52 30 20 70 72 65 73 65 72 76 65 |..<=.R0 preserve| 00020920 64 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 |d..R1 =.pointer | 00020930 74 6f 20 63 68 61 72 61 63 74 65 72 20 61 66 74 |to character aft| 00020940 65 72 20 74 68 65 20 69 6e 70 75 74 27 73 20 74 |er the input's t| 00020950 65 72 6d 69 6e 61 74 6f 72 0a 09 52 32 20 3d 09 |erminator..R2 =.| 00020960 70 6f 69 6e 74 65 72 20 74 6f 20 6f 75 74 70 75 |pointer to outpu| 00020970 74 20 73 74 72 69 6e 67 20 28 75 70 20 74 6f 20 |t string (up to | 00020980 32 35 35 20 63 68 61 72 73 29 0a 0a 54 68 69 73 |255 chars)..This| 00020990 20 63 61 6c 6c 20 63 6f 6e 76 65 72 74 73 20 61 | call converts a| 000209a0 6e 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 77 |n input string w| 000209b0 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 20 6c 65 |hich contains le| 000209c0 61 64 69 6e 67 20 73 70 61 63 65 20 61 6e 64 20 |ading space and | 000209d0 74 61 62 20 63 68 61 72 61 63 74 65 72 73 20 74 |tab characters t| 000209e0 6f 20 6f 6e 65 20 77 69 74 68 6f 75 74 20 74 68 |o one without th| 000209f0 65 6d 2e 00 44 41 54 41 1b 02 00 00 41 70 70 45 |em..DATA....AppE| 00020a00 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f 70 20 38 |ngine_StringOp 8| 00020a10 20 20 28 26 34 44 39 34 31 29 0a 23 50 61 72 65 | (&4D941).#Pare| 00020a20 6e 74 20 41 70 70 45 6e 67 69 6e 65 5f 53 74 72 |nt AppEngine_Str| 00020a30 69 6e 67 4f 70 0a 3d 3e 09 52 30 20 3d 09 38 0a |ingOp.=>.R0 =.8.| 00020a40 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f |.R1 =.pointer to| 00020a50 20 61 64 64 72 65 73 73 20 74 6f 20 72 65 61 64 | address to read| 00020a60 20 73 74 72 69 6e 67 20 66 72 6f 6d 0a 09 52 32 | string from..R2| 00020a70 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 | =.pointer to ad| 00020a80 64 72 65 73 73 20 74 6f 20 72 65 61 64 20 73 65 |dress to read se| 00020a90 63 6f 6e 64 20 73 74 72 69 6e 67 20 66 72 6f 6d |cond string from| 00020aa0 0a 0a 3c 3d 09 52 30 20 70 72 65 73 65 72 76 65 |..<=.R0 preserve| 00020ab0 64 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 72 20 |d..R1 =.pointer | 00020ac0 74 6f 20 63 68 61 72 61 63 74 65 72 20 61 66 74 |to character aft| 00020ad0 65 72 20 74 68 65 20 69 6e 70 75 74 27 73 20 74 |er the input's t| 00020ae0 65 72 6d 69 6e 61 74 6f 72 0a 09 52 32 20 3d 09 |erminator..R2 =.| 00020af0 70 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 72 61 |pointer to chara| 00020b00 63 74 65 72 20 61 66 74 65 72 20 74 68 65 20 73 |cter after the s| 00020b10 65 63 6f 6e 64 20 69 6e 70 75 74 27 73 20 74 65 |econd input's te| 00020b20 72 6d 69 6e 61 74 6f 72 0a 09 52 33 20 3d 09 2d |rminator..R3 =.-| 00020b30 31 20 66 6f 72 20 73 74 72 69 6e 67 20 31 20 5c |1 for string 1 \| 00020b40 3c 20 73 74 72 69 6e 67 20 32 0a 09 20 09 30 20 |< string 2.. .0 | 00020b50 66 6f 72 20 73 74 72 69 6e 67 20 31 20 3d 20 73 |for string 1 = s| 00020b60 74 72 69 6e 67 20 32 0a 09 20 09 31 20 66 6f 72 |tring 2.. .1 for| 00020b70 20 73 74 72 69 6e 67 20 31 20 3e 20 73 74 72 69 | string 1 > stri| 00020b80 6e 67 20 32 0a 0a 54 68 69 73 20 63 61 6c 6c 20 |ng 2..This call | 00020b90 63 6f 6d 70 61 72 65 73 20 74 77 6f 20 73 74 72 |compares two str| 00020ba0 69 6e 67 73 20 61 6e 64 20 72 65 74 75 72 6e 73 |ings and returns| 00020bb0 20 61 6e 20 69 6e 74 65 67 65 72 20 72 65 70 72 | an integer repr| 00020bc0 65 73 65 6e 74 69 6e 67 20 74 68 65 20 72 65 6c |esenting the rel| 00020bd0 61 74 69 6f 6e 73 68 69 70 20 6f 66 20 74 68 65 |ationship of the| 00020be0 20 74 77 6f 20 73 74 72 69 6e 67 73 20 28 6c 65 | two strings (le| 00020bf0 73 73 20 74 68 61 6e 2c 20 65 71 75 61 6c 2c 20 |ss than, equal, | 00020c00 67 72 65 61 74 65 72 20 74 68 61 6e 29 2e 0a 00 |greater than)...| 00020c10 44 41 54 41 bc 01 00 00 41 70 70 45 6e 67 69 6e |DATA....AppEngin| 00020c20 65 5f 53 74 72 69 6e 67 4f 70 20 39 20 20 28 26 |e_StringOp 9 (&| 00020c30 34 44 39 34 31 29 0a 23 50 61 72 65 6e 74 20 41 |4D941).#Parent A| 00020c40 70 70 45 6e 67 69 6e 65 5f 53 74 72 69 6e 67 4f |ppEngine_StringO| 00020c50 70 0a 3d 3e 09 52 30 20 3d 09 39 0a 09 52 31 20 |p.=>.R0 =.9..R1 | 00020c60 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 61 64 64 |=.pointer to add| 00020c70 72 65 73 73 20 74 6f 20 72 65 61 64 20 66 69 72 |ress to read fir| 00020c80 73 74 20 73 74 72 69 6e 67 20 66 72 6f 6d 0a 09 |st string from..| 00020c90 52 32 20 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 |R2 =.pointer to | 00020ca0 61 64 64 72 65 73 73 20 74 6f 20 72 65 61 64 20 |address to read | 00020cb0 73 65 63 6f 6e 64 20 73 74 72 69 6e 67 20 66 72 |second string fr| 00020cc0 6f 6d 0a 0a 3c 3d 09 52 30 20 70 72 65 73 65 72 |om..<=.R0 preser| 00020cd0 76 65 64 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |ved..R1 =.pointe| 00020ce0 72 20 74 6f 20 63 68 61 72 61 63 74 65 72 20 61 |r to character a| 00020cf0 66 74 65 72 20 74 68 65 20 69 6e 70 75 74 27 73 |fter the input's| 00020d00 20 74 65 72 6d 69 6e 61 74 6f 72 0a 09 52 32 20 | terminator..R2 | 00020d10 3d 09 70 6f 69 6e 74 65 72 20 74 6f 20 63 68 61 |=.pointer to cha| 00020d20 72 61 63 74 65 72 20 61 66 74 65 72 20 74 68 65 |racter after the| 00020d30 20 73 65 63 6f 6e 64 20 69 6e 70 75 74 27 73 20 | second input's | 00020d40 74 65 72 6d 69 6e 61 74 6f 72 0a 09 52 33 20 3d |terminator..R3 =| 00020d50 09 70 6f 69 6e 74 65 72 20 74 6f 20 6f 75 74 70 |.pointer to outp| 00020d60 75 74 20 73 74 72 69 6e 67 20 28 75 70 20 74 6f |ut string (up to| 00020d70 20 32 35 35 20 63 68 61 72 73 29 0a 0a 54 68 69 | 255 chars)..Thi| 00020d80 73 20 63 61 6c 6c 20 74 61 6b 65 73 20 74 77 6f |s call takes two| 00020d90 20 73 74 72 69 6e 67 73 20 61 6e 64 20 72 65 74 | strings and ret| 00020da0 75 72 6e 73 20 74 68 65 20 73 65 63 6f 6e 64 20 |urns the second | 00020db0 73 74 72 69 6e 67 20 6a 6f 69 6e 65 64 20 74 6f |string joined to| 00020dc0 20 74 68 65 20 66 69 72 73 74 2e 0a 44 49 52 24 | the first..DIR$| 00020dd0 c8 01 00 00 c8 01 00 00 94 0f 02 00 48 fd ff ff |............H...| 00020de0 6f 92 b9 04 ac 00 00 00 33 00 00 00 00 00 00 00 |o.......3.......| 00020df0 21 52 6f 6f 74 00 00 00 40 10 02 00 48 fd ff ff |!Root...@...H...| 00020e00 87 3c d3 08 0e 01 00 00 33 00 00 00 00 00 00 00 |.<......3.......| 00020e10 21 49 6e 66 6f 00 00 00 50 11 02 00 48 ff ff ff |!Info...P...H...| 00020e20 27 fa d2 08 ad 01 00 00 33 00 00 00 00 00 00 00 |'.......3.......| 00020e30 4d 69 73 63 00 00 00 00 00 13 02 00 48 fd ff ff |Misc........H...| 00020e40 d4 db d2 08 b4 00 00 00 33 00 00 00 00 00 00 00 |........3.......| 00020e50 4d 69 73 63 30 00 00 00 b4 13 02 00 47 fd ff ff |Misc0.......G...| 00020e60 9a 7a 16 fb 12 01 00 00 33 00 00 00 00 00 00 00 |.z......3.......| 00020e70 4d 69 73 63 31 00 00 00 c8 14 02 00 48 fd ff ff |Misc1.......H...| 00020e80 70 18 ba 04 d2 00 00 00 33 00 00 00 00 00 00 00 |p.......3.......| 00020e90 4d 69 73 63 32 00 00 00 9c 15 02 00 48 fd ff ff |Misc2.......H...| 00020ea0 91 e6 d2 08 01 01 00 00 33 00 00 00 00 00 00 00 |........3.......| 00020eb0 4d 69 73 63 33 00 00 00 a0 16 02 00 48 fd ff ff |Misc3.......H...| 00020ec0 60 f4 d2 08 7c 00 00 00 33 00 00 00 00 00 00 00 |`...|...3.......| 00020ed0 4d 69 73 63 34 00 00 00 1c 17 02 00 47 fd ff ff |Misc4.......G...| 00020ee0 77 b6 16 fb d6 00 00 00 33 00 00 00 00 00 00 00 |w.......3.......| 00020ef0 4d 69 73 63 35 00 00 00 f4 17 02 00 48 ff ff ff |Misc5.......H...| 00020f00 e4 61 ba 04 a0 01 00 00 33 00 00 00 00 00 00 00 |.a......3.......| 00020f10 53 61 79 00 94 19 02 00 48 ff ff ff 0a 6d ba 04 |Say.....H....m..| 00020f20 6b 00 00 00 33 00 00 00 00 00 00 00 53 61 79 57 |k...3.......SayW| 00020f30 00 00 00 00 00 1a 02 00 47 ff ff ff eb 18 17 fb |........G.......| 00020f40 61 00 00 00 33 00 00 00 00 00 00 00 53 74 6f 70 |a...3.......Stop| 00020f50 00 00 00 00 64 1a 02 00 48 ff ff ff e3 a8 b9 04 |....d...H.......| 00020f60 9f 00 00 00 33 00 00 00 00 00 00 00 52 65 61 64 |....3.......Read| 00020f70 79 00 00 00 04 1b 02 00 48 fd ff ff 9d 0f d3 08 |y.......H.......| 00020f80 90 00 00 00 33 00 00 00 00 00 00 00 4d 69 73 63 |....3.......Misc| 00020f90 36 00 00 00 44 41 54 41 ac 00 00 00 53 70 65 61 |6...DATA....Spea| 00020fa0 6b 0a 23 50 61 72 65 6e 74 20 21 52 6f 6f 74 0a |k.#Parent !Root.| 00020fb0 23 50 72 65 66 69 78 20 53 70 65 61 6b 5f 0a 23 |#Prefix Speak_.#| 00020fc0 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 73 20 32 0a |Table Columns 2.| 00020fd0 3c 52 65 61 64 79 3e 0a 3c 4d 69 73 63 3e 0a 3c |<Ready>.<Misc>.<| 00020fe0 53 61 79 3e 0a 3c 53 61 79 57 3e 0a 3c 53 74 6f |Say>.<SayW>.<Sto| 00020ff0 70 3e 0a 50 69 74 63 68 0a 53 70 65 65 64 0a 57 |p>.Pitch.Speed.W| 00021000 6f 72 64 47 61 70 0a 50 69 74 63 68 52 61 6e 67 |ordGap.PitchRang| 00021010 65 0a 23 45 6e 64 54 61 62 6c 65 0a 23 4c 69 6e |e.#EndTable.#Lin| 00021020 65 0a 3c 49 6e 66 6f 20 6f 6e 20 6d 6f 64 75 6c |e.<Info on modul| 00021030 65 3d 3e 53 70 65 61 6b 5f 21 49 6e 66 6f 3e 0a |e=>Speak_!Info>.| 00021040 44 41 54 41 0e 01 00 00 53 70 65 61 6b 0a 23 50 |DATA....Speak.#P| 00021050 61 72 65 6e 74 20 53 70 65 61 6b 5f 0a 4d 6f 64 |arent Speak_.Mod| 00021060 75 6c 65 20 6e 61 6d 65 3a 09 53 70 65 61 6b 0a |ule name:.Speak.| 00021070 41 75 74 68 6f 72 3a 09 09 4a 6f 68 6e 61 74 68 |Author:..Johnath| 00021080 61 6e 20 44 75 64 64 69 6e 67 74 6f 6e 0a 56 65 |an Duddington.Ve| 00021090 72 73 69 6f 6e 3a 09 32 2e 30 39 20 28 32 33 20 |rsion:.2.09 (23 | 000210a0 4a 75 6c 20 31 39 39 37 29 0a 23 4c 69 6e 65 0a |Jul 1997).#Line.| 000210b0 54 68 65 20 53 70 65 61 6b 20 6d 6f 64 75 6c 65 |The Speak module| 000210c0 20 70 72 6f 76 69 64 65 73 20 66 61 63 69 6c 69 | provides facili| 000210d0 74 69 65 73 20 74 6f 20 6d 61 6b 65 20 73 69 6d |ties to make sim| 000210e0 70 6c 65 20 6c 69 6e 65 73 20 6f 66 20 74 65 78 |ple lines of tex| 000210f0 74 20 69 6e 74 6f 20 73 70 6f 6b 65 6e 20 77 6f |t into spoken wo| 00021100 72 64 73 2e 20 54 68 69 73 20 64 6f 63 75 6d 65 |rds. This docume| 00021110 6e 74 61 74 69 6f 6e 20 77 61 73 20 70 72 6f 76 |ntation was prov| 00021120 69 64 65 64 20 77 69 74 68 20 68 69 73 20 70 65 |ided with his pe| 00021130 72 6d 69 73 73 69 6f 6e 2e 20 4d 61 6e 79 20 74 |rmission. Many t| 00021140 68 61 6e 6b 73 20 74 6f 20 68 69 6d 2e 0a 00 00 |hanks to him....| 00021150 44 41 54 41 ad 01 00 00 53 70 65 61 6b 5f 4d 69 |DATA....Speak_Mi| 00021160 73 63 20 20 28 26 34 41 44 38 32 29 0a 23 50 61 |sc (&4AD82).#Pa| 00021170 72 65 6e 74 20 53 70 65 61 6b 5f 0a 3d 3e 09 52 |rent Speak_.=>.R| 00021180 30 20 3d 09 72 65 61 73 6f 6e 20 63 6f 64 65 0a |0 =.reason code.| 00021190 09 09 20 20 30 09 3c 72 65 74 75 72 6e 20 76 65 |.. 0.<return ve| 000211a0 72 73 69 6f 6e 3d 3e 53 70 65 61 6b 5f 4d 69 73 |rsion=>Speak_Mis| 000211b0 63 30 3e 0a 09 09 20 20 31 09 3c 72 65 67 69 73 |c0>... 1.<regis| 000211c0 74 65 72 3d 3e 53 70 65 61 6b 5f 4d 69 73 63 31 |ter=>Speak_Misc1| 000211d0 3e 0a 09 09 20 20 32 09 3c 64 65 72 65 67 69 73 |>... 2.<deregis| 000211e0 74 65 72 3d 3e 53 70 65 61 6b 5f 4d 69 73 63 32 |ter=>Speak_Misc2| 000211f0 3e 0a 09 09 20 20 33 09 3c 63 6f 6e 76 65 72 74 |>... 3.<convert| 00021200 20 74 6f 20 70 68 6f 6e 65 6d 65 73 3d 3e 53 70 | to phonemes=>Sp| 00021210 65 61 6b 5f 4d 69 73 63 33 3e 0a 09 09 20 20 34 |eak_Misc3>... 4| 00021220 09 3c 72 65 6c 6f 61 64 20 77 6f 72 64 20 64 69 |.<reload word di| 00021230 63 74 69 6f 6e 61 72 79 3d 3e 53 70 65 61 6b 5f |ctionary=>Speak_| 00021240 4d 69 73 63 34 3e 0a 09 09 20 20 35 09 3c 72 65 |Misc4>... 5.<re| 00021250 61 64 20 76 6f 69 63 65 20 6e 61 6d 65 73 3d 3e |ad voice names=>| 00021260 53 70 65 61 6b 5f 4d 69 73 63 35 3e 0a 09 09 20 |Speak_Misc5>... | 00021270 20 36 09 3c 73 65 74 20 63 75 72 72 65 6e 74 20 | 6.<set current | 00021280 76 6f 69 63 65 3d 3e 53 70 65 61 6b 5f 4d 69 73 |voice=>Speak_Mis| 00021290 63 36 3e 0a 3c 3d 09 64 65 70 65 6e 64 61 6e 74 |c6>.<=.dependant| 000212a0 20 6f 6e 20 72 65 61 73 6f 6e 20 63 6f 64 65 0a | on reason code.| 000212b0 0a 54 68 69 73 20 53 57 49 20 69 73 20 63 61 6c |.This SWI is cal| 000212c0 6c 65 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 6d |led to perform m| 000212d0 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20 6f 70 65 |iscellaneous ope| 000212e0 72 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 53 |rations on the S| 000212f0 70 65 61 6b 20 6d 6f 64 75 6c 65 2e 0a 00 00 00 |peak module.....| 00021300 44 41 54 41 b4 00 00 00 53 70 65 61 6b 5f 4d 69 |DATA....Speak_Mi| 00021310 73 63 20 30 0a 23 50 61 72 65 6e 74 20 53 70 65 |sc 0.#Parent Spe| 00021320 61 6b 5f 4d 69 73 63 0a 3d 3e 09 52 30 20 3d 09 |ak_Misc.=>.R0 =.| 00021330 30 20 28 72 65 61 64 20 76 65 72 73 69 6f 6e 29 |0 (read version)| 00021340 0a 3c 3d 09 52 30 20 3d 09 76 65 72 73 69 6f 6e |.<=.R0 =.version| 00021350 20 6d 61 6a 6f 72 20 6e 75 6d 62 65 72 20 61 73 | major number as| 00021360 20 69 6e 74 65 67 65 72 20 28 65 67 20 32 29 0a | integer (eg 2).| 00021370 0a 54 68 69 73 20 53 57 49 20 72 65 74 75 72 6e |.This SWI return| 00021380 73 20 74 68 65 20 6d 61 6a 6f 72 20 70 61 72 74 |s the major part| 00021390 20 6f 66 20 74 68 65 20 76 65 72 73 69 6f 6e 20 | of the version | 000213a0 6f 66 20 74 68 65 20 53 70 65 61 6b 20 6d 6f 64 |of the Speak mod| 000213b0 75 6c 65 2e 44 41 54 41 12 01 00 00 53 70 65 61 |ule.DATA....Spea| 000213c0 6b 5f 4d 69 73 63 20 31 0a 23 50 61 72 65 6e 74 |k_Misc 1.#Parent| 000213d0 20 53 70 65 61 6b 5f 4d 69 73 63 0a 3d 3e 09 52 | Speak_Misc.=>.R| 000213e0 30 20 3d 09 31 20 28 72 65 67 69 73 74 65 72 29 |0 =.1 (register)| 000213f0 0a 3c 3d 09 52 30 20 3d 09 6e 75 6d 62 65 72 20 |.<=.R0 =.number | 00021400 6f 66 20 72 65 67 69 73 74 65 72 65 64 20 63 6c |of registered cl| 00021410 69 65 6e 74 73 0a 0a 54 68 69 73 20 53 57 49 20 |ients..This SWI | 00021420 69 73 20 75 73 65 64 20 74 6f 20 72 65 67 69 73 |is used to regis| 00021430 74 65 72 20 77 69 74 68 20 74 68 65 20 53 70 65 |ter with the Spe| 00021440 61 6b 20 6d 6f 64 75 6c 65 2e 20 41 6c 6c 20 61 |ak module. All a| 00021450 70 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 |pplications shou| 00021460 6c 64 20 75 73 65 20 74 68 69 73 20 74 6f 20 77 |ld use this to w| 00021470 68 65 6e 20 74 68 65 79 20 73 74 61 72 74 20 74 |hen they start t| 00021480 6f 20 75 73 65 20 74 68 65 20 73 79 73 74 65 6d |o use the system| 00021490 20 61 6e 64 20 63 61 6c 6c 20 3c 64 65 67 72 65 | and call <degre| 000214a0 67 69 73 74 65 72 3d 3e 53 70 65 61 6b 5f 4d 69 |gister=>Speak_Mi| 000214b0 73 63 32 3e 20 77 68 65 6e 20 74 68 65 79 20 66 |sc2> when they f| 000214c0 69 6e 69 73 68 2e 00 00 44 41 54 41 d2 00 00 00 |inish...DATA....| 000214d0 53 70 65 61 6b 5f 4d 69 73 63 20 32 0a 23 50 61 |Speak_Misc 2.#Pa| 000214e0 72 65 6e 74 20 53 70 65 61 6b 5f 4d 69 73 63 0a |rent Speak_Misc.| 000214f0 3d 3e 09 52 30 20 3d 09 32 20 28 64 65 72 65 67 |=>.R0 =.2 (dereg| 00021500 69 73 74 65 72 29 0a 3c 3d 09 52 30 20 3d 09 6e |ister).<=.R0 =.n| 00021510 75 6d 62 65 72 20 6f 66 20 72 65 67 69 73 74 65 |umber of registe| 00021520 72 65 64 20 63 6c 69 65 6e 74 73 0a 0a 54 68 69 |red clients..Thi| 00021530 73 20 53 57 49 20 69 73 20 75 73 65 64 20 74 6f |s SWI is used to| 00021540 20 64 65 72 65 67 69 73 74 65 72 20 77 69 74 68 | deregister with| 00021550 20 74 68 65 20 53 70 65 61 6b 20 6d 6f 64 75 6c | the Speak modul| 00021560 65 2e 20 49 66 20 6e 6f 62 6f 64 79 20 65 6c 73 |e. If nobody els| 00021570 65 20 69 73 20 75 73 69 6e 67 20 69 74 2c 20 74 |e is using it, t| 00021580 68 65 20 6d 6f 64 75 6c 65 20 77 69 6c 6c 20 62 |he module will b| 00021590 65 20 6b 69 6c 6c 65 64 2e 0a 00 00 44 41 54 41 |e killed....DATA| 000215a0 01 01 00 00 53 70 65 61 6b 5f 4d 69 73 63 20 33 |....Speak_Misc 3| 000215b0 0a 23 50 61 72 65 6e 74 20 53 70 65 61 6b 5f 4d |.#Parent Speak_M| 000215c0 69 73 63 0a 3d 3e 09 52 30 20 3d 09 33 20 28 63 |isc.=>.R0 =.3 (c| 000215d0 6f 6e 76 65 72 74 20 74 6f 20 70 68 6f 6e 65 6d |onvert to phonem| 000215e0 65 73 29 0a 09 52 31 20 3d 09 70 6f 69 6e 74 65 |es)..R1 =.pointe| 000215f0 72 20 74 6f 20 7a 65 72 6f 20 74 65 72 6d 69 6e |r to zero termin| 00021600 61 74 65 64 20 74 65 78 74 20 73 74 72 69 6e 67 |ated text string| 00021610 0a 3c 3d 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 |.<=.R0 =.pointer| 00021620 20 74 6f 20 73 74 72 69 6e 67 0a 0a 54 68 69 73 | to string..This| 00021630 20 53 57 49 20 69 73 20 75 73 65 64 20 74 6f 20 | SWI is used to | 00021640 63 6f 6e 76 65 72 74 20 74 65 78 74 20 69 6e 74 |convert text int| 00021650 6f 20 61 20 6c 69 73 74 20 6f 66 20 70 68 6f 6e |o a list of phon| 00021660 65 6d 65 73 2e 20 54 68 65 20 72 65 74 75 72 6e |emes. The return| 00021670 65 64 20 62 75 66 66 65 72 20 77 69 6c 6c 20 62 |ed buffer will b| 00021680 65 20 76 61 6c 69 64 20 75 6e 74 69 6c 20 74 68 |e valid until th| 00021690 65 20 6e 65 78 74 20 63 61 6c 6c 2e 0a 00 00 00 |e next call.....| 000216a0 44 41 54 41 7c 00 00 00 53 70 65 61 6b 5f 4d 69 |DATA|...Speak_Mi| 000216b0 73 63 20 34 0a 23 50 61 72 65 6e 74 20 53 70 65 |sc 4.#Parent Spe| 000216c0 61 6b 5f 4d 69 73 63 0a 3d 3e 09 52 30 20 3d 09 |ak_Misc.=>.R0 =.| 000216d0 34 20 28 72 65 6c 6f 61 64 20 77 6f 72 64 20 64 |4 (reload word d| 000216e0 69 63 74 69 6f 6e 61 72 79 29 0a 0a 54 68 69 73 |ictionary)..This| 000216f0 20 53 57 49 20 69 73 20 75 73 65 64 20 74 6f 20 | SWI is used to | 00021700 72 65 6c 6f 61 64 20 74 68 65 20 77 6f 72 64 20 |reload the word | 00021710 64 69 63 74 69 6f 6e 61 72 79 2e 0a 44 41 54 41 |dictionary..DATA| 00021720 d6 00 00 00 53 70 65 61 6b 5f 4d 69 73 63 20 34 |....Speak_Misc 4| 00021730 0a 23 50 61 72 65 6e 74 20 53 70 65 61 6b 5f 4d |.#Parent Speak_M| 00021740 69 73 63 0a 3d 3e 09 52 30 20 3d 09 34 20 28 72 |isc.=>.R0 =.4 (r| 00021750 65 61 64 20 76 6f 69 63 65 20 6e 61 6d 65 73 29 |ead voice names)| 00021760 0a 3c 3d 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 |.<=.R0 =.pointer| 00021770 20 74 6f 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 | to zero termina| 00021780 74 65 64 20 61 72 72 61 79 20 6f 66 20 6e 61 6d |ted array of nam| 00021790 65 20 70 6f 69 6e 74 65 72 73 0a 0a 54 68 69 73 |e pointers..This| 000217a0 20 53 57 49 20 69 73 20 75 73 65 64 20 74 6f 20 | SWI is used to | 000217b0 72 65 61 64 20 74 68 65 20 6e 61 6d 65 73 20 6f |read the names o| 000217c0 66 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 |f the currently | 000217d0 6b 6e 6f 77 6e 20 76 6f 69 63 65 73 20 77 68 69 |known voices whi| 000217e0 63 68 20 53 70 65 61 6b 20 63 61 6e 20 75 73 65 |ch Speak can use| 000217f0 2e 0a 00 00 44 41 54 41 a0 01 00 00 53 70 65 61 |....DATA....Spea| 00021800 6b 5f 53 61 79 20 20 28 26 34 41 44 38 33 29 0a |k_Say (&4AD83).| 00021810 23 50 61 72 65 6e 74 20 53 70 65 61 6b 5f 0a 3d |#Parent Speak_.=| 00021820 3e 09 52 30 20 3d 09 70 6f 69 6e 74 65 72 20 74 |>.R0 =.pointer t| 00021830 6f 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 65 |o zero terminate| 00021840 64 20 73 74 72 69 6e 67 0a 09 52 31 20 3d 09 6e |d string..R1 =.n| 00021850 75 6d 62 65 72 20 6f 66 20 63 68 72 61 63 74 65 |umber of chracte| 00021860 72 73 20 74 6f 20 73 61 79 2c 20 6f 72 20 30 20 |rs to say, or 0 | 00021870 66 6f 72 20 61 6c 6c 0a 09 52 32 20 3d 09 62 69 |for all..R2 =.bi| 00021880 74 73 20 30 2d 37 20 3a 09 76 6f 69 63 65 20 74 |ts 0-7 :.voice t| 00021890 6f 20 75 73 65 0a 09 20 09 6f 74 68 65 72 73 09 |o use.. .others.| 000218a0 09 72 65 73 65 72 76 65 64 0a 0a 54 68 69 73 20 |.reserved..This | 000218b0 53 57 49 20 69 73 20 63 61 6c 6c 65 64 20 74 6f |SWI is called to| 000218c0 20 73 70 65 61 6b 20 61 20 6c 69 6e 65 20 6f 66 | speak a line of| 000218d0 20 74 65 78 74 2e 20 49 66 20 61 6e 20 6e 75 6d | text. If an num| 000218e0 62 65 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 |ber of character| 000218f0 73 20 69 73 20 67 69 76 65 6e 20 74 68 65 6e 20 |s is given then | 00021900 69 74 20 77 69 6c 6c 20 62 65 20 74 61 6b 65 6e |it will be taken| 00021910 20 69 6e 74 6f 20 61 63 63 6f 75 6e 74 20 61 6e | into account an| 00021920 64 20 69 66 20 6f 6e 6c 79 20 61 20 73 69 6e 67 |d if only a sing| 00021930 6c 65 20 77 6f 72 64 20 68 61 73 20 62 65 65 6e |le word has been| 00021940 20 67 69 76 65 6e 20 74 68 65 6e 20 65 61 63 68 | given then each| 00021950 20 69 6e 64 69 76 69 64 75 61 6c 20 6c 65 74 74 | individual lett| 00021960 65 72 20 73 70 6f 6b 65 6e 2c 20 6f 74 68 65 72 |er spoken, other| 00021970 77 69 73 65 20 74 68 65 20 77 68 6f 6c 65 20 6c |wise the whole l| 00021980 69 6e 65 20 77 69 6c 6c 20 62 65 20 73 70 6f 6b |ine will be spok| 00021990 65 6e 2e 0a 44 41 54 41 6b 00 00 00 53 70 65 61 |en..DATAk...Spea| 000219a0 6b 5f 53 61 79 57 20 20 28 26 34 41 44 38 34 29 |k_SayW (&4AD84)| 000219b0 0a 23 50 61 72 65 6e 74 20 53 70 65 61 6b 5f 0a |.#Parent Speak_.| 000219c0 41 73 20 3c 53 70 65 61 6b 5f 53 61 79 3e 20 62 |As <Speak_Say> b| 000219d0 75 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 |ut does not retu| 000219e0 72 6e 20 75 6e 74 69 6c 20 73 70 65 65 63 68 20 |rn until speech | 000219f0 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 0a 00 |has completed...| 00021a00 44 41 54 41 61 00 00 00 53 70 65 61 6b 5f 53 74 |DATAa...Speak_St| 00021a10 6f 70 20 20 28 26 34 41 44 38 35 29 0a 23 50 61 |op (&4AD85).#Pa| 00021a20 72 65 6e 74 20 53 70 65 61 6b 5f 0a 54 68 69 73 |rent Speak_.This| 00021a30 20 53 57 49 20 69 73 20 63 61 6c 6c 65 64 20 74 | SWI is called t| 00021a40 6f 20 73 74 6f 70 20 53 70 65 61 6b 20 66 72 6f |o stop Speak fro| 00021a50 6d 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 2e |m saying things.| 00021a60 0a 00 00 00 44 41 54 41 9f 00 00 00 53 70 65 61 |....DATA....Spea| 00021a70 6b 5f 52 65 61 64 79 20 20 28 26 34 41 44 38 30 |k_Ready (&4AD80| 00021a80 29 0a 23 50 61 72 65 6e 74 20 53 70 65 61 6b 5f |).#Parent Speak_| 00021a90 0a 3c 3d 09 52 30 20 3d 09 30 20 69 66 20 73 74 |.<=.R0 =.0 if st| 00021aa0 69 6c 6c 20 73 70 65 61 6b 69 6e 67 2c 20 2d 31 |ill speaking, -1| 00021ab0 20 69 66 20 69 64 6c 65 0a 0a 54 68 69 73 20 53 | if idle..This S| 00021ac0 57 49 20 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 |WI is called to | 00021ad0 63 68 65 63 6b 20 77 68 65 74 68 65 72 20 73 70 |check whether sp| 00021ae0 65 65 63 68 20 69 73 20 73 74 69 6c 6c 20 62 65 |eech is still be| 00021af0 69 6e 67 20 6f 75 74 70 75 74 20 6f 72 20 6e 6f |ing output or no| 00021b00 74 2e 0a 00 44 41 54 41 90 00 00 00 53 70 65 61 |t...DATA....Spea| 00021b10 6b 5f 4d 69 73 63 20 34 0a 23 50 61 72 65 6e 74 |k_Misc 4.#Parent| 00021b20 20 53 70 65 61 6b 5f 4d 69 73 63 0a 3d 3e 09 52 | Speak_Misc.=>.R| 00021b30 30 20 3d 09 34 20 28 73 65 74 20 63 75 72 72 65 |0 =.4 (set curre| 00021b40 6e 74 20 76 6f 69 63 65 29 0a 09 52 31 20 3d 09 |nt voice)..R1 =.| 00021b50 6e 65 77 20 76 6f 69 63 65 20 6e 75 6d 62 65 72 |new voice number| 00021b60 0a 0a 54 68 69 73 20 53 57 49 20 69 73 20 75 73 |..This SWI is us| 00021b70 65 64 20 74 6f 20 73 65 74 20 74 68 65 20 63 75 |ed to set the cu| 00021b80 72 72 65 6e 74 20 76 6f 69 63 65 20 6e 75 6d 62 |rrent voice numb| 00021b90 65 72 2e 0a |er..| 00021b94