ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HP39GS 土星系统文件结构简介

2021-04-04 13:04:33  阅读:217  来源: 互联网

标签:土星 文件大小 struct 系统文件 HP39GS 字节 sat dir SAT


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有