其他分享
首页 > 其他分享> > HP39GS 土星系统文件结构简介

HP39GS 土星系统文件结构简介

作者:互联网

HP39GS由32位的s3c2410模拟4位的土星cpu,在虚拟机和ARM之间可以通过一些方法互相通信。
在saturn.h和satdir.h中
土星系统文件目录名:
'calcdir ------ 计算器根目录
'pgmdir ------ PROGRAM目录,存储用户编辑的BASIC程序
'notesdir ------ NOTEPAD目录,存储用户编辑的记事本文本
'apletdir ------ APLET目录,存储下载/创建的应用程序
获取目录节点结构体:
以'calcdir为例,这里的'需要使用转义字符/'替代
函数原型
SAT_DIR_NODE *_sat_find_path(char *path);
SAT_DIR_NODE *dir = _sat_find_path("/'calcdir");

//结构体介绍

typedef
struct _sat_dir_node {
        char *name;
        struct _sat_dir_node *parent,*sibling,*child;
        struct _sat_dir_entry *object;
} SAT_DIR_NODE;

//目录名称,与_sat_find_path传入参数相同
//即调用_sat_find_path("/'calcdir")
//返回的SAT_DIR_NODE *dir->name也为'calcdir
char *name;
             
//同样为SAT_DIR_NODE结构体的父目录(文件夹)、同级目录、子目录指针
struct _sat_dir_node *parent,*sibling,*child;

//该目录下的文件,(不包含文件夹!)
struct _sat_dir_entry *object;

//SAT_DIR_ENTRY由单链表形式存储
typedef
struct _sat_dir_entry {
        SAT_OBJ_DSCR *sat_obj;       
		struct _sat_dir_entry *next;
} SAT_DIR_ENTRY;

//文件对象信息
SAT_OBJ_DSCR *sat_obj;  
//下一个文件实体
struct _sat_dir_entry *next;


//文件对象描述信息
typedef
struct _sat_obj_dscr {
    char *name;
    unsigned addr;
} SAT_OBJ_DSCR;


//文件名称,与显示的名称不同的是*(name + 0)存在一个 ' 符号
//在实际代码中获取文件名请从*(name + 1)开始读取
char *name;

//文件地址指针,通常为5个半字(nibbles)
//即2个半字节
//注意addr为半字移动
unsigned addr;

//读取到SAT_OBJ_DSCR后,使用sat_peek即可打开该文件内容
//注意:由于土星为4位cpu,每次读取只能读半字,即4位

//读取土星指定地址内容
//@param sat_addr 对象地址
//@param nibbles 读取数量(单位为半字节)
//@return 数据
unsigned sat_peek(int sat_addr,int nibbles);

return ((int) sat_peek_sat_addr(sat_addr + 5) - 5) / 2;
//2c 2a b0 35 00

//sat文件结构
//小端模式,一次读取半字,每隔一字添加空格
/*
sample
此处测试文件大小为0x1AB即427字节
(注意:文件大小是文件内容本身,不包含"HP39AscC"这些描述信息,该描述信息以0x0D 0x0A结尾)
即文件内容是0x0D 0x0A 后面的字节

文件前10字节
字节小端模式   |  字节大端模式
c2 a2 0b 53 00 |  2c 2a b0 35 00

前五半字表示文件类型
c2 a2 0 表明该文件为NOTEPAD文件

后五半字为文件大小(注意:此处文件大小为字节数而不是半字数!)

文件大小算法
将前10字节的后5字节合成int
即 b 53 00 转换成大端模式为 0x0035b 为859
文件大小 = (0x0035b - 0x5) >> 1
         = 1AB
与上文文件大小相符
*/

标签:土星,文件大小,struct,系统文件,HP39GS,字节,sat,dir,SAT
来源: https://www.cnblogs.com/yanye0xff/p/14615953.html