GEOS Extensions

GEOS VLIR (Variable Length Index Record)

Later on in the life of the C64, the GEOS OS came out. It was a system much like many other windowing OS's (MAC OS, Windows) in that it used icons, windows, a mouse pointer and resource drivers. In order to contain all the information needed for the windowing system (icon, window position, creation time/date), a new filetype called VLIR was needed and directory changes were made. While GEOS files might not be of interest to many of the emulator users, it is likely that these files will be encountered, and knowledge of them would be helpful.

There are actually two types of GEOS files, VLIR and SEQuential. Don't confuse the GEOS SEQuential type with that of the standard D64 SEQ file. They are related, but not the same. VLIR are described in more detail following this paragraph. GEOS SEQuential files are all non-VLIR files, including normal PRG, USR and SEQ types.

GEOS files usually have an entity attached called an INFO block. It contains ICON info, author, file description, load address etc. However, just because an INFO block does not exist for a given file, does not mean that the file is not a GEOS file.

Each GEOS VLIR file or application is comprised of many separate chains (called RECORDS) for different sections of the app/file. Each RECORD can be loaded in separately and overtop of other ones. Below is a dump of the first directory sector of the GEOS 2.0 disk. Note the first entry seems normal enough, but the rest have additional information in the normally unused section of the entry.

Directory entry

Byte Content
7 6 5 4 3 2 1 0
00 15 As per CBM DOS, Location of next directory sector
or 0x0000 for last sector or not first file
8
01 7 0
02 Closed Locked Save 30CBM File Type
03 15 Location of first sector of file 8
04 7 0
05 Filename in PETASCII padded with 0xA0
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15 15 Location of info block 8
16 7 0
17 GEOS file structure, 00=Sequential 01=VLIR file
18 GEOS file type
19 Year (1900+value)
1A Month (1-12)
1B Day (1-31)
1C Hour (0-23)
1D Minute (1-59)
1E 7 File size in sectors 0
1F 15 8

Info block

Byte Content
7 6 5 4 3 2 1 0
00 15 Always 0x00, 0xFF as this is 1 sector long 8
01 7 0
02 Information sector ID Always 0x03 0x15, 0xBF
03
04
05 Icon bitmap in sprite format, 63 bytes
 
43
44 30CBM File Type
45 GEOS file type
46 GEOS file structure
47 7 Program load address 0
48 15 8
49 7 Program end address
Accessories only
0
4A 15 8
4B 7 Program start address 0
4C 15 8
4D Class text, terminated with 0x00
 
60
61 Author, terminated with 0x00
 
74
75 If document name of application that created it
 
88
89 Free for applications, unreserved
 
9F
A0 Description, terminated with 0x00
 
FF

The CBM File Type, GEOS file type and GEOS file structure fields are duplicated in both structures

CBM DOS file type

REL files are not permitted with GEOS. If byte 0x18 in the directory entry is 0x00 then it's a standard CBM DOS file, otherwise it's a GEOS file.

GEOS File type

Value Type Value Type
00Normal C64 file 08Font File
01BASIC 09Printer Driver
02Assembler 0AInput Driver
03Data file 0BDisk Driver
04System file 0CSystem Boot file
05Desk Accessory 0DTemporary
06Application 0EAuto-Execute file
07Application Data 0FUndefined

File types 0x0F…0xFF are undefined.

Sources


Last modified November 1, 2021: Add GEOS extensions (b7bf0a2)