SUBT High level Filing System interface. => &.Hdr.File OldOpt SETA {OPT} OPT OptNoList+OptNoP1List ; *********************************** ; *** C h a n g e L i s t *** ; *********************************** ; Date Name Description ; ---- ---- ----------- ; 12-Oct-87 SKS Add OSGBPB_ReadDirEntriesCatInfo ; 06-Nov-87 SKS Add offsets in ReadDirEntriesInfo ; 28-Jan-88 SKS Add cc_rfs number ; 08-Feb-88 SKS Add FSControl_FileTypeFromString ; 01-Mar-88 SKS Add ramfs number ; 24-Mar-88 SKS Add FSControl_FileInfo ; 25-Mar-88 SKS Add FSControl_ReadFSName ; 26-May-88 SKS Add FSControl_SetContexts ; 04-Jun-88 SKS Add OSFile_MakeError ; 03-Aug-88 SKS Add unixfs number ; 15-Sep-88 SKS Add digitape_number ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; Reason codes in r0b for OSFile ; ============================== OSFile_Load * &FF ; Uses File$Path OSFile_Save * 0 OSFile_WriteInfo * 1 OSFile_WriteLoad * 2 OSFile_WriteExec * 3 OSFile_WriteAttr * 4 OSFile_ReadInfo * 5 ; Uses File$Path OSFile_Delete * 6 OSFile_Create * 7 OSFile_CreateDir * 8 OSFile_SetStamp * 9 ; These ops don't get passed to a Filing System OSFile_SaveStamp * 10 OSFile_CreateStamp * 11 OSFile_LoadPath * 12 ; Uses given path OSFile_ReadPath * 13 ; Uses given path OSFile_LoadPathVar * 14 ; Uses given path variable OSFile_ReadPathVar * 15 ; Uses given path variable OSFile_LoadNoPath * 16 ; No nonsense load OSFile_ReadNoPath * 17 ; No nonsense read OSFile_SetType * 18 OSFile_MakeError * 19 load_at_given * 0 ; Load at address given in r2 load_at_own * -1 ; Load at file's own address ; Object type (r0 in OSFile) object_nothing * 0 object_file * 1 object_directory * 2 ; Attribute bits (r5 in OSFile) read_attribute * 1 :SHL: 0 write_attribute * 1 :SHL: 1 locked_attribute * 1 :SHL: 3 public_read_attribute * 1 :SHL: 4 public_write_attribute * 1 :SHL: 5 ; Reason codes in r0 for FSControl ; ================================ ^ 0 FSControl_Dir # 1 ; 0 FSControl_Lib # 1 ; 1 FSControl_StartApplication # 1 ; 2 FSControl_RunType # 1 ; 3 FSControl_Run # 1 ; 4 FSControl_Cat # 1 ; 5 FSControl_Ex # 1 ; 6 FSControl_LCat # 1 ; 7 FSControl_LEx # 1 ; 8 FSControl_Info # 1 ; 9 FSControl_Opt # 1 ; 10 FSControl_StarMinus # 1 ; 11 - Was LIBFS run on PRB FSControl_AddFS # 1 ; 12 - Really new functions begin here FSControl_LookupFS # 1 ; 13 FSControl_SelectFS # 1 ; 14 FSControl_BootupFS # 1 ; 15 FSControl_RemoveFS # 1 ; 16 FSControl_AddSecondaryFS # 1 ; 17 FSControl_ReadFileType # 1 ; 18 FSControl_RestoreCurrent # 1 ; 19 FSControl_ReadModuleBase # 1 ; 20 FSControl_ReadFSHandle # 1 ; 21 FSControl_Shut # 1 ; 22 FSControl_ShutDown # 1 ; 23 FSControl_Access # 1 ; 24 FSControl_Rename # 1 ; 25 FSControl_Copy # 1 ; 26 FSControl_Wipe # 1 ; 27 FSControl_Count # 1 ; 28 FSControl_CreateHandle # 1 ; 29 FSControl_ReadSecondaryModuleBase # 1 ; 30 FSControl_FileTypeFromString # 1 ; 31 FSControl_FileInfo # 1 ; 32 FSControl_ReadFSName # 1 ; 33 FSControl_SetContexts # 1 ; 34 ; Aliases (to be removed) FSControl_OPT * FSControl_Opt FSControl_RUN * FSControl_Run FSControl_CAT * FSControl_Cat FSControl_SHUT * FSControl_Shut ; Some useful reason codes in r0b for OSFind ; ========================================== OSFind_OpenIn * open_read OSFind_OpenOut * open_write OSFind_OpenUp * open_update OSFind_ReadFile * open_read :OR: open_mustopen :OR: open_nodir ; Bits in r0b (open mode) for OSFind ; ================================== open_write * 2_10000000 open_read * 2_01000000 open_update * open_write :OR: open_read open_mustopen * 2_00001000 ; Always give error if not found open_nodir * 2_00000100 ; Always give error if is a dir open_default * 2_00000000 ; Use File$Path open_pathstring * 2_00000001 ; Use supplied path string open_pathvar * 2_00000010 ; Use supplied path variable open_nopath * 2_00000011 ; Don't use any path for lookup open_pathbits * 2_00000011 open_unused * 2_00110000 ; Will give 'Bad Mode' error if used ; Reason codes in r0b for OSArgs stream operations ; ================================================ OSArgs_ReadPTR * 0 OSArgs_SetPTR * 1 OSArgs_ReadEXT * 2 OSArgs_SetEXT * 3 OSArgs_ReadSize * 4 ; New function. Maybe combine with ReadInfo ? OSArgs_EOFCheck * 5 ; New function. Replaces FSCV(1) call OSArgs_EnsureSize * 6 ; New function OSArgs_ReadInfo * &FE ; New function OSArgs_Flush * &FF ; Reason codes in r0b for OSGBPB ; ============================== ^ 1 ; Perverse, eh ? OSGBPB_WriteAtGiven # 1 ; 1 OSGBPB_WriteAtPTR # 1 ; 2 OSGBPB_ReadFromGiven # 1 ; 3 OSGBPB_ReadFromPTR # 1 ; 4 OSGBPB_ReadDiscName # 1 ; 5 OSGBPB_ReadCSDName # 1 ; 6 OSGBPB_ReadLIBName # 1 ; 7 OSGBPB_ReadCSDEntries # 1 ; 8 OSGBPB_ReadDirEntries # 1 ; 9 OSGBPB_ReadDirEntriesInfo # 1 ; 10 OSGBPB_ReadDirEntriesCatInfo # 1 ; 11 ^ 0 RDE_load # 4 RDE_exec # 4 RDE_length # 4 RDE_attr # 4 RDE_type # 4 RDE_name # 0 ; File type definitions (real defs in Documents.Allocation.DateDoc) ; ===================== Absolute_LoadAddr * &FFFFF800 Sprite_LoadAddr * &FFFFF900 BASIC_LoadAddr * &FFFFFB00 Transient_LoadAddr * &FFFFFC00 Data_LoadAddr * &FFFFFD00 Command_LoadAddr * &FFFFFE00 Text_LoadAddr * &FFFFFF00 ; Filing System numbers - the definitive list ; =========================================== ; 0 No Filing System 1 1200 Baud cassette (NS) ; 2 300 Baud cassette (NS) 3 rom: ; 4 Acorn DFS (NS) 5 net: ; 6 Teletext/Telesoft (NS) 7 IEEE Filing System (NS) ; 8 adfs: 9 Unknown - but reserved ; 10 Acorn VFS (NS) 11 Acorn WDFS (NS) ; 12 netprint: 13 null: ; 14 vdu: 15 bbc: ; 16 Acacia RAM Filing System (?) 17 bbcb: ; 18 rawvdu: 19 kbd: ; 20 rawkbd: 21 deskfs: ; 22 ccrfs: 23 ramfs: ; 24 unixfs: 25 digitape: fsnumber_none * 0 ; No fs selected (valid state) fsnumber_tape1200 * 1 ; NS fsnumber_tape300 * 2 ; NS fsnumber_rom * 3 fsnumber_dfs * 4 ; NS : Single density DFS fsnumber_net * 5 fsnumber_telesoft * 6 ; ? fsnumber_IEEE * 7 ; ? fsnumber_adfs * 8 fsnumber_reserved * 9 ; ? fsnumber_vfs * 10 fsnumber_wdfs * 11 ; Reused by bbc: st. Modula works fsnumber_netprint * 12 fsnumber_null * 13 fsnumber_printer * 14 fsnumber_serial * 15 fsnumber_acacia_ramfs * 16 fsnumber_vdu * 17 fsnumber_rawvdu * 18 fsnumber_kbd * 19 fsnumber_rawkbd * 20 fsnumber_deskfs * 21 fsnumber_cc_rfs * 22 ; ComputerConcepts RFS fsnumber_ramfs * 23 ; Nick's RAMFS fsnumber_unixfs * 24 ; Jamie's UnixFS fsnumber_digitape * 25 ; Digital Services Tape Streamer EOF_char * &FE ; Unfortunately, &1FE isn't an immediate value OPT OldOpt END