%TITLE "Pc Directory to XL/XE .ATR Disk Image File Creator - CHiPS bv 1998"
;**********************************************************************
;** **
;** Program : D_SPARTA (v05.06.00) **
;** Purpose : Pc Directory to XL/XE .ATR Disk Image Creator **
;** **
;** Author : B.F. Schreurs **
;** Computer High Performance Software (CHiPS) bv **
;** Date : November 12th, 1998 **
;** **
;** Calls : APPEND - Glue 2 strings together **
;** APPENDX - Glue 2 strings together using "\" target **
;** DC_DIRS - Determine Current Directories **
;** DC_FILES - Determine Current Files **
;** FMSIO - File Management System Handler **
;** HEX2DIGI - Convert Hex Data To Digits (Text) **
;** WSIO - Screen Handler **
;** **
;** Parameter : 1. Pass the address of the directory path where the **
;** files reside to be placed on an ATR disk image. **
;** Size is PATH_LENGTH. **
;** Parameter : 2. Pass the address of the directory path where the **
;** ATR disk image(s) will be stored. **
;** Size is PATH_LENGTH. **
;** Parameter : 3. Pass the address of the Disk format to use **
;** Size is 1 **
;** Parameter : 4. Pass the address of the Disk density to use **
;** Size is 1 **
;** Parameter : 5. Pass the address of the Create ATR or XFD disk **
;** Size is 1 **
;** Parameter : 6. Pass the address of the SpartaDos DOS path **
;** Size is PATH_LENGTH. **
;** Parameter : 7. Pass the address of the DOS included YN field **
;** Size is 1 **
;** Parameter : 8. Pass the address of the MAIN DIR usage YN field **
;** Size is 1 **
;** Parameter : 9. Pass the address of the Dir_Map Segment **
;** Size is Dir_Map_Length **
;** Parameter :10. Pass the address of the usage of a CLI **
;** Size is 1 **
;** Parameter :11. Pass the address of including subdirs Yes or No **
;** Size is 1 **
;** **
;** Language : Turbo Assembler **
;** **
;**********************************************************************
IDEAL
JUMPS
;----------------------------------------------------------------------
;-- Functions which can be called --
;----------------------------------------------------------------------
PUBLIC D_SPARTA
;----------------------------------------------------------------------
;-- Equates --
;----------------------------------------------------------------------
include ".\equ\attrib.equ"
include ".\equ\dos.equ"
include ".\equ\fmsio.equ"
include ".\equ\keyboard.equ"
include ".\equ\sysdep.equ"
include ".\equ\video.equ"
include ".\equ\wsio.equ"
EXTRA_TABLE_FIELDS EQU 16
EIGHTBIT_VTOC_ENTRY_SIZE EQU 23
EIGHTBIT_VTOC_ENTRY_DIRECTORY EQU 40
EIGHTBIT_VTOC_ENTRY_FILE EQU 8
EIGHTBIT_FILE_NAME_LENGTH EQU 11
DISK_VOLUME_NAME_LENGTH EQU 8
SECTOR_OFFSET_LINK_SECTOR_START EQU 4
NR_OF_SECTORS_PER_BITMAP_BYTE EQU 8
RESERVE_NR_OF_SECTORS_VTOC_SPACE EQU 2
EIGHTBIT_SECTOR_SIZE EQU 128
EIGHTBIT_SECTOR_SIZE_DOUBLE EQU 256
PC_DATE_YEAR_OFFSET EQU 80 ; Year 1980 for Pc date
ATR_HEADER_SIZE EQU 16
MINIMUM_NR_OF_VTOC_SECTORS EQU 12
MINIMUM_NR_OF_VTOC_SECTORS_DOUBLE EQU 6
LINK_SECTOR_POINTER_SIZE EQU 2
DIR_NR_CURR EQU 2
DIR_NR_FROM EQU 2
WS_E2_ERROR_MESSAGE_SIZE EQU 40
DIR_ENTRY_FILES_MAX_SPARTADOS EQU 126
DIR_ENTRY_FILES_MAX_SPARTADOSX EQU 1024
DIR_ENTRY_FILES_MAX_BEWEDOS EQU 1424
SECTOR_COUNT_LINK_SECTOR_SINGLE EQU 62
SECTOR_COUNT_LINK_SECTOR_DOUBLE EQU 126
DIR_MAP_LENGTH EQU ( MAX_DIRS_AND_FILES + EXTRA_TABLE_FIELDS ) * DIR_ENTRY_LENGTH
FILE_MAP_LENGTH EQU MAX_FILES * FILE_ENTRY_LENGTH
PC_DIR_MAP_ENTRY_LENGTH EQU PATH_LENGTH + DIR_NR_CURR + DIR_NR_FROM + LINK_SECTOR_POINTER_SIZE
PC_DIR_MAP_OFFSET_DIR_FROM EQU PATH_LENGTH + DIR_NR_CURR
PC_DIR_MAP_OFFSET_LINK_SECTOR EQU PATH_LENGTH + DIR_NR_CURR + DIR_NR_FROM
PC_DIR_MAP_LENGTH EQU MAX_DIRS * PC_DIR_MAP_ENTRY_LENGTH
VTOC_MAP_LENGTH EQU DIR_ENTRY_FILES_MAX_BEWEDOS * EIGHTBIT_VTOC_ENTRY_SIZE
BITMAP_BUFFER_LENGTH EQU 32 * EIGHTBIT_SECTOR_SIZE_DOUBLE
DISK_BOOTCODE_SIZE EQU 384
DISK_BOOTCODE_SECTOR_SIZE EQU 3
;---------------------------
DISK_MEDIA_TYPE_SINGLE EQU "S"
DISK_SECTORS_SINGLE EQU 720
;---------------------------
DISK_MEDIA_TYPE_MEDIUM EQU "M"
DISK_SECTORS_MEDIUM EQU 1040
;---------------------------
DISK_MEDIA_TYPE_DOUBLE EQU "D"
DISK_SECTORS_DOUBLE EQU 720
;---------------------------
DISK_MEDIA_TYPE_QUAD EQU "Q"
DISK_SECTORS_QUAD EQU 1440
;---------------------------
DISK_MEDIA_TYPE_720KB EQU "7"
DISK_SECTORS_720KB EQU 2880
;---------------------------
DISK_MEDIA_TYPE_1440KB EQU "1"
DISK_SECTORS_1440KB EQU 5760
;---------------------------
DISK_MEDIA_TYPE_HARDDISK EQU "H"
DISK_SECTORS_HARDDISK EQU 65535
;---------------------------
DISK_FORMAT_BEWEDOS EQU "B"
DISK_FORMAT_SPARTADOS EQU "S"
DISK_FORMAT_SPARTADOSX EQU "X"
DISK_FORMAT_MYOWNDOS EQU "Y"
;
; SpartaDos specific stuff
;
BOOTCODE_OFFSET_MAIN_DIR_LINK_SECTOR EQU 9
BOOTCODE_OFFSET_SECTORS_ON_DISK EQU 11
BOOTCODE_OFFSET_FREE_SECTORS EQU 13
BOOTCODE_OFFSET_NR_OF_BITMAPS EQU 15
BOOTCODE_OFFSET_FIRST_BITMAP_SECTOR EQU 16
BOOTCODE_OFFSET_FIRST_FREE_DATA_SECTOR EQU 18
BOOTCODE_OFFSET_FIRST_FREE_DIR_SECTOR EQU 20
BOOTCODE_OFFSET_VOLUME_NAME EQU 22
BOOTCODE_OFFSET_SIZE_OF_SECTOR EQU 31
BOOTCODE_OFFSET_DOS_BOOT_SECTOR EQU 40
;**********************************************************************
SEGMENT SSeg Para Stack 'STACK'
;**********************************************************************
db 256 dup (0) ; Stack
ENDS SSeg
;**********************************************************************
SEGMENT DSeg Word Public 'DATA'
;**********************************************************************
;----------------------------------------------------------------------
;-- Structures --
;----------------------------------------------------------------------
include ".\str\direntry.str"
include ".\str\dta.str"
include ".\str\fmsio.str"
include ".\str\position.str"
include ".\str\wsio.str"
;----------------------------------------------------------------------
;-- SELECT and FD --
;----------------------------------------------------------------------
;
; Atari Disk Image
;
ATARI____File FMS_Area <>
ATARI____Pathname DB PATH_LENGTH dup (SPACE)
DB 1 dup (0)
;
; Extracted Atari Disk Image (pc) File
;
PC_ATARI_File FMS_Area <>
PC_ATARI_Pathname DB PATH_LENGTH dup (SPACE)
DB 1 dup (0)
;----------------------------------------------------------------------
;-- Working Storage --
;----------------------------------------------------------------------
GLOBAL Return_Code:Byte:1
Parm_Dir_From_ptr_es DW 1 dup (NULL)
Parm_Dir_From_ptr_di DW 1 dup (NULL)
Parm_Disk_To_ptr_es DW 1 dup (NULL)
Parm_Disk_To_ptr_di DW 1 dup (NULL)
Parm_DOS_Path_ptr_es DW 1 dup (NULL)
Parm_DOS_Path_ptr_di DW 1 dup (NULL)
Parm_INCLUDE_DOS_ptr_es DW 1 dup (NULL)
Parm_INCLUDE_DOS_ptr_di DW 1 dup (NULL)
Parm_MAIN_DIR_ptr_es DW 1 dup (NULL)
Parm_MAIN_DIR_ptr_di DW 1 dup (NULL)
Parm_Dir_Map_ptr_es DW 1 dup (NULL)
Parm_Dir_Map_ptr_di DW 1 dup (NULL)
Parm_CLI_Used_ptr_es DW 1 dup (NULL)
Parm_CLI_Used_ptr_di DW 1 dup (NULL)
Parm_InclDirs_ptr_es DW 1 dup (NULL)
Parm_InclDirs_ptr_di DW 1 dup (NULL)
CLI_Used DB LOGIC_NO
CLI_Include_Subdirs DB LOGIC_NO
Disk_Present DB LOGIC_NO
SpartaDos_Date_YY DB 0
SpartaDos_Date_MM DB 0
SpartaDos_Date_DD DB 0
SpartaDos_Time_HH DB 0
SpartaDos_Time_MM DB 0
Include_DOS_Files DB LOGIC_NO
Too_Many_Files_In_Dir DB LOGIC_NO
Disk_Image_Not_Large_Enough DB LOGIC_NO
Dir_Entry_Fits_On_Image DB LOGIC_NO
Parm_XFD_Format DB LOGIC_NO
Dir2atr_Error DB LOGIC_NO ; 0=No Error
; 1=Error Encountered
Atari_File_Name_Invalid_Char DB KEY_VALID_DOS ; Translate to "_"
DB NULL
Disk_Media_Type DB DISK_MEDIA_TYPE_SINGLE ; Supported Densities: "S"=Singe, "M"=Medium, "D"=Double, "Q"=Quad, "7"=720 KB, "1"=1.44 MB, "H"=Harddisk 16 MB
Disk_Format DB DISK_FORMAT_SPARTADOS ; Supported DOS format types: "D"=DOS 2.5, "M"=MYDOS 4.53, "O"=User's DOS - MYDOS format, "B"=BEWEDOS, "S"=SPARTADOS 3.3a, "X"=SPARTADOS/X, "Y"=User's DOS - SPARTADOS format
Requested_Format_LibFil DB "1" ; 1 = DIRENTRY format etc.
; 2 = "..
"
; "ATARI "
Media_Id_Buffer DB 25 dup (NULL)
Search_Dirs_Path DB PATH_LENGTH dup (SPACE)
DB NULL ; To satisfy DOS find file
Search_Filemask DB FILE_NAME_LENGTH dup (SPACE)
PC_ATARI_DOS_Pathname DB PATH_LENGTH dup (SPACE)
DB NULL
Dir_SPARTADOS DB "SPARTA\ "
Dir_SPARTADOSX DB "SPARTAX\ "
Dir_BEWEDOS DB "BEWEDOS\ "
Dir_MYOWNDOS DB "MYOWNDOS\ "
File_Name_BOOTCODE DB "BOOTCODE "
File_Name_DOS_SYS DB "DOS.SYS "
Sectors_Per_Progress_Bar DW ?
Main_Directory_Name DB "MAIN\ "
Root_Directory_Name DB "Root\ "
Rewrite_Curr_Dir_VTOC_Size DW ?
Rewrite_Coming_From_Dir_ptr DW ?
Path_Spec DB PATH_LENGTH dup (SPACE)
File_Map_Entry Dir_Entry <>
Save_File_Map_Entry Dir_Entry <>
VTOC_Map_Entry_Nr DW 0
Dir_Entry_Files DW 0
Dir_Entry_File_Size DW 0
Dir_Entry_ptr_es DW 1 dup (NULL)
Dir_Entry_ptr_di DW 1 dup (NULL)
Save_ptr_es DW 1 dup (NULL)
Save_ptr_di DW 1 dup (NULL)
Ws_CF_Progress_Bar_Cnt_Prev DB 0
Ws_CF_Progress_Bar_Cnt_Max DB 32
Ws_CF_Progress_Bar_Cnt_Sectors_Hi DW 0
Ws_CF_Progress_Bar_Cnt_Sectors_Lo DW 0
Ws_CF_Progress_Bar_Sectors_Hi DW 0
Ws_CF_Progress_Bar_Sectors_Lo DW 0
Ws_FF_Progress_Bar_Cnt_Prev DB 0
Ws_FF_Progress_Bar_Cnt_Max DB 34
Ws_FF_Progress_Bar_Cnt_Sectors DW 0
Ws_FF_Progress_Bar_Sectors DW 0
Disk_Sector_Size DW ?
ATR_Header DB 096h,002h,080h,020h,080h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
ATR_Header_Single DB 096h,002h,080h,016h,080h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
ATR_Header_Medium DB 096h,002h,080h,020h,080h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
ATR_Header_Double DB 096h,002h,0E8h,02Ch,000h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
ATR_Header_Quad DB 096h,002h,000h,05Ah,000h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h
ATR_Header_720KB DB 096h,002h,000h,0B4h,000h,001h,000h,000h,000h,000h,000h,000h,000h,000h,000h,001h
ATR_Header_1440KB DB 096h,002h,000h,068h,000h,001h,001h,000h,000h,000h,000h,000h,000h,000h,000h,001h
ATR_Header_Harddisk DB 096h,002h,0F0h,0FFh,000h,001h,00Fh,000h,000h,000h,000h,000h,000h,000h,000h,001h
Last_Sector_In_Bitmap DW 0
Disk_Name DB " "
DB ".ATR"
Disk_Seq_Nr DW 0
Disk_Seq_Nr_Present DW 0
Passed_Parameters DB PATH_LENGTH dup (0)
Disk_Mask DB "*.ATR "
File_Mask DB "*.* "
ATR_Disk_Image_Open DB 1 dup (FALSE)
File_Size_In_Bytes_Hi DW 0
File_Size_In_Bytes_Lo DW 0
File_Size_In_Sectors DW 0
Max_File_Size_In_Sectors DW 0
VTOC_Size_In_Sectors DW 0
VTOC_Sectors_To_Write DW 0
Disk_Sector_Start DW 4
Disk_Sector_Current DW 4
Disk_Sector_Bitmap_Current DW 4
Disk_Sector_VTOC_Current DW 18
Disk_Sectors DW 0
Disk_Sectors_Usable DW 0
Disk_Sectors_Left DW 0
Disk_Sectors_Available DW 0
Disk_Sectors_Free DW 0
Disk_Sectors_VTOC DW 0
Disk_Sectors_Bitmap DW 0
Disk_Sectors_Calculated DW 0
Sector_Counter DW 0 ; Count in 128 bytes per sector
Sector_Counter_VTOC DW 0 ; Count in 128 bytes per sector
Dir_Dir_Counter DW 0
Dir_File_Counter DW 0
Dir_Dir_File_Counter_Max DW 0
Disk_Link_Sector_Current DW 0
Disk_Link_Sector_Next DW 0
Disk_Link_Sector_Prev DW 0
Sector_Count_Link_Sector DB 0
Sector_Offset_Link_Sector DB 0
Old_Dta_Seg DW ? ; Old Dta Segment Address
Old_Dta_Ofs DW ? ; Old Dta Segment Offset
Own_Dta Dta <>
Disk_I_O_Buffer DB EIGHTBIT_SECTOR_SIZE_DOUBLE dup (0)
Disk_Bitmap_Buffer DB BITMAP_BUFFER_LENGTH dup (0)
Disk_Link_Sector_Buffer DB EIGHTBIT_SECTOR_SIZE_DOUBLE dup (0)
Remainder_Bytes DW 0
; Continue adding disks after highest disk number found? N=NO Y=YES
Disk_Adding DB "N"
Bootcode_Data DB EIGHTBIT_SECTOR_SIZE dup (0)
DB EIGHTBIT_SECTOR_SIZE dup (0)
DB EIGHTBIT_SECTOR_SIZE dup (0)
Dir_Curr_ptr DW 0
Dir_To_ptr DW 0
VTOC_Map_ptr_es DW 1 dup (NULL) ; Segment 3
VTOC_Map_ptr_di DW 1 dup (NULL)
Pc_Dir_Map_ptr_es DW 1 dup (NULL) ; Segment 4
Pc_Dir_Map_ptr_di DW 1 dup (NULL)
;----------------------------------------------------------------------
;-- --
;-- G e n e r a l D i s k I m a g e L a y o u t --
;-- --
;----------------------------------------------------------------------
;
; +---------------------------------------------------------------+
; ³ 1 Boot sector (always 128 bytes/sector) ³
; ³ . . . . . . . . . . . . . . . ³
; ³ pos. thru description ³
; ³ 7 hex 80, indentifies SpartaDos ³
; ³ 9 10 sector link sector of "main" directory ³
; ³ "0500" means sector 5 ³
; ³ 11 12 nr of sectors on disk ³
; ³ 13 14 nr of free sectors ³
; ³ 15 nr of bitmap sectors ³
; ³ 16 17 sector nr of 1st bitmap sector ³
; ³ 18 19 1st free data sector nr ³
; ³ 20 21 1st free directory sector nr ³
; ³ 22 29 volume name ³
; ³ 31 disk sector size ³
; ³ 128 bytes/sector = hex 80 = decimal 128 ³
; ³ 256 bytes/sector = hex 00 = decimal 0 ³
; ³ 32 disk format version ³
; ³ SpartaDOS version 1.x = hex 11 = decimal 17 ³
; ³ SpartaDOS version 2.x = hex 20 = decimal 32 ³
; ³ BeWe-DOS can only access disks formatted with ³
; ³ SpartaDOS 2.x and up ³
; ³ 33 37 Reserved for different SpartaDOS versions ³
; ³ 38 Sequential number of the disk, which is ³
; ³ incremented when making changes to the disk ³
; ³ when you're using BeWe-DOS ³
; ³ 39 Random number of the disk. This number is ³
; ³ created while formatting the disk ³
; ³ 40 41 DOS boot start at sector nr ³
; ³ 42 47 Reserved for different SpartaDOS versions ³
; ³...............................................................³
; ³ 2 remaining Boot sectors (always 128 bytes/sector) ³
; +---------------------------------------------------------------+
; ³ 1 thru 32 Bitmap sectors ³
; ³ . . . . . . . . . . . . . . . ³
; ³ disk sector sector bitmap disk ³
; ³ type count size sectors size ³
; ³ single 720 128 1 92 KB ³
; ³ medium 1,040 128 1 133 KB ³
; ³ double 720 256 1 184 KB ³
; ³ quad 1,440 256 1 368 KB ³
; ³ 720 KB 2,880 256 2 720 KB ³
; ³ 1.44 MB 5,760 256 2 1.44 MB ³
; ³ harddisk 65,535 256 32 16 MB ³
; +---------------------------------------------------------------+
; ³ n number of VTOC sectors ³
; ³ . . . . . . . . . . . . . . . ³
; ³ VTOC sector ³
; ³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ³
; ³ . contains n VTOC entries . ³
; ³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ³
; ³ . sector link sector . ³
; ³ . contains 62 sectors pointers . ³
; ³ . for single density . ³
; ³ . or 126 sectors pointers . ³
; ³ . for double density . ³
; ³ ./////////////////////////////////////////////////////. ³
; ³ . pos. description . ³
; ³ . 1 sector nr of next link sector . ³
; ³ . 3 sector nr of prev link sector . ³
; ³ . 5 vtoc link sector nr 1 . ³
; ³ . 7 vtoc link sector nr 2 . ³
; ³ . nnn vtoc link sector nr ... . ³
; ³ . 126 vtoc link sector nr 62 . ³
; ³ . or 254 vtoc link sector nr 126 . ³
; ³ ....................................................... ³
; ³ . VTOC data sector(s) . ³
; ³ ....................................................... ³
; ³ . sector link sector . ³
; ³ ./////////////////////////////////////////////////////. ³
; ³ . pos. description . ³
; ³ . 1 sector nr of next link sector . ³
; ³ . 3 sector nr of prev link sector . ³
; ³ . 5 vtoc link sector nr 1 . ³
; ³ . 7 vtoc link sector nr 2 . ³
; ³ . nnn vtoc link sector nr ... . ³
; ³ . 126 vtoc link sector nr 62 . ³
; ³ . or 254 vtoc link sector nr 126 . ³
; ³ ....................................................... ³
; ³ . VTOC data sector(s), etc. . ³
; ³ . . . . . . . . . . . . . . . . . . . ³
; ³ . SpartaDOS supports a maximum of 126 entries. ³
; ³ . . per directory . ³
; ³ . SpartaDOS/X supports a maximum of 1024 entries. ³
; ³ . . per directory . ³
; ³ . BeWe-DOS supports a maximum of 1424 entries. ³
; ³ . . per directory . ³
; ³ ./////////////////////////////////////////////////////. ³
; ³ . . VTOC very first entry . ³
; ³ . .............................................. ³
; ³ . . pos. description . ³
; ³ . . 1 Status byte . ³
; ³ . . hex 28 indicates dir entry . ³
; ³ . . bit settings: "00101000" . ³
; ³ . . ³³³ ³ . ³
; ³ . . Directory entry--+³³ ³ . ³
; ³ . . Deleted entry ---+³ ³ . ³
; ³ . . Active entry ----+ ³ . ³
; ³ . . File protected -------+ . ³
; ³ . . "0"=False, "1"=True . ³
; ³ . . 2 sector nr of previous dir . ³
; ³ . . 4 VTOC directory size in bytes . ³
; ³ . . 7 directory name . ³
; ³ . . 18 hex 00 00 00 00 00 00 . ³
; ³ . .////////////////////////////////////////////. ³
; ³ . . VTOC entry directory . ³
; ³ . .............................................. ³
; ³ . . pos. description . ³
; ³ . . 1 Status byte . ³
; ³ . . hex 28 indicates dir entry . ³
; ³ . . bit settings: "00101000" . ³
; ³ . . 2 sector nr of dir VTOC sector . ³
; ³ . . 4 hex 00 00 00 . ³
; ³ . . 7 directory name . ³
; ³ . . 18 date/time stamp . ³
; ³ . .////////////////////////////////////////////. ³
; ³ . . VTOC entry file . ³
; ³ . .............................................. ³
; ³ . . pos. description . ³
; ³ . . 1 Status byte . ³
; ³ . . hex 08 indicates file entry . ³
; ³ . . bit settings: "00001000" . ³
; ³ . . 2 sector nr where data starts . ³
; ³ . . 4 file size (3 bytes) . ³
; ³ . . hex 28 33 00 . ³
; ³ . . means size is hex 003328 . ³
; ³ . . is dec 13096 bytes . ³
; ³ . . 7 file name . ³
; ³ . . 18 date/time stamp (6 bytes) . ³
; ³ . . hex 0D 09 62 14 22 00 . ³
; ³ . . format dd mm yy hh mm . ³
; ³ . . means 13/09/98 8:34p . ³
; ³ . . hh is a 24 hour clock . ³
; +---------------------------------------------------------------+
; ³ n number of File sectors ³
; ³ . . . . . . . . . . . . . . . ³
; ³ File sector ³
; ³ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ³
; ³ . sector link sector . ³
; ³ . contains 62 sectors pointers . ³
; ³ . for single density . ³
; ³ . or 126 sectors pointers . ³
; ³ . for double density . ³
; ³ ./////////////////////////////////////////////////////. ³
; ³ . pos. description . ³
; ³ . 1 sector nr of next link sector . ³
; ³ . 3 sector nr of prev link sector . ³
; ³ . 5 data link sector nr 1 . ³
; ³ . 7 data link sector nr 2 . ³
; ³ . nnn data link sector nr ... . ³
; ³ . 126 data link sector nr 62 . ³
; ³ . or 254 data link sector nr 126 . ³
; ³ ....................................................... ³
; ³ . data sector(s) . ³
; ³ ....................................................... ³
; ³ . sector link sector . ³
; ³ ./////////////////////////////////////////////////////. ³
; ³ . pos. description . ³
; ³ . 1 sector nr of next link sector . ³
; ³ . 3 sector nr of prev link sector . ³
; ³ . 5 data link sector nr 63 or 127 . ³
; ³ . 7 data link sector nr 64 or 128 . ³
; ³ . nnn data link sector nr ... or ... . ³
; ³ . 126 data link sector nr 124 or 188 . ³
; ³ . or 254 data link sector nr 252 . ³
; ³ ....................................................... ³
; ³ . data sector(s), etc. . ³
; +---------------------------------------------------------------+
;----------------------------------------------------------------------
;-- --
;-- S C R E E N S S E C T I O N --
;-- --
;----------------------------------------------------------------------
Filler DB 16 dup (" ")
;**********************************************************************
; I n c l u d e S u b d i r e c t o r i e s ( S p a r t a D o s ) *
;**********************************************************************
Ws_IS DB WSIO_OPEN
DB 8 ; Start of screen ROW
DB 31 ; Start of screen COLUMN
DB 18 ; End of screen ROW
DB 77 ; End of screen COLUMN
DB ATTRIB_GREEN_WHITE ; Screen attribute
DB ATTRIB_BLUE_WHITE ; Field attribute
DB ATTRIB_BLUE_WHITE ; Input attribute
DB 0 ; Error attribute
DB 1 ; Mouse support
DB 0 ; Locate cursor at field
DB 0 ; Locate cursor at occurrence
DB 0 ; Locate cursor at position
DB LOGIC_NO ; Screen not changed
DB 0 ; Go to first
DB 0 ; modifiable field
DW ? ; Screen Name Address HIGH
DW ? ; Screen Name Address LOW
DW ? ; Text Address HIGH
DW ? ; Text Address LOW
DW NULL ; Attribute Address HIGH
DW NULL ; Attribute Address LOW
DW ? ; Valid Keys Address HIGH
DW ? ; Valid Keys Address LOW
DW ? ; Enter Keys Address HIGH
DW ? ; Enter Keys Address LOW
DW ? ; Field Area Address HIGH
DW ? ; Field Area Address LOW
Ws_IS_Name DB "SUBDIRS "
Ws_IS_Keys DB KEY_ESC, KEY_ENTER
DB NULL
; 1 2 3 4 5 6 7 8
; ....5....0....5....0....5....0....5....0....5....0....5....0....5....0....5....0
Ws_IS_Text DB "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ[Subdirectories]ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
DB "º º"
DB "º Process the (sub)directories as well? º"
DB "º º"
DB "º [ ] Y=Yes, all files and (sub)directories º"
DB "º MUST fit on ONE disk image!!! º"
DB "º N=No , if files don't fit on one disk, º"
DB "º another disk will be created. º"
DB "º º"
DB "ºENTER=Specify Esc=Cancel º"
DB "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
DB NULL
;------------
; F I E L D S
;------------
;
; Include (sub)directories or not (only for SpartaDos)
;
Ws_IS_F_Subdirs_Yes_No DB 5 ; Relative ROW, NULL=End
DB 5 ; Relative COLUMN
DB 1 ; Field Size
DB 1 ; Nr of occurrences
DW 0 ; This is not a table
DB 1 ; Modifiable
DB KEY_ENTER ; Emulate Enter
DB 0 ; Edit External
DB 1 ; Blanks Trailing
DB 0 ; Uppercase
DB 0 ; Backspace destructive
DB 0 ;
DB 0 ;
DB 0 ;
DB 0 ;
DB 0 ;
DB LOGIC_NO ; Field changed indicator
DW ? ; Source Hi
DW ? ; ...... Lo
DW NULL ;