mirror of https://git.cro.wtf/kip.git
Compare commits
2 Commits
a10a16848c
...
ff93a7ccfc
Author | SHA1 | Date |
---|---|---|
Kitty-Cricket Piapiac | ff93a7ccfc | |
Kitty-Cricket Piapiac | 27329ad76d |
|
@ -3,14 +3,16 @@
|
|||
#define BLK 0x200
|
||||
|
||||
typedef struct{FILE*f;W z,s;}Disk;
|
||||
Disk ds[3]; B w; W a;
|
||||
Disk ds[3]; B w; W a, b;
|
||||
|
||||
V disk_open(B i,IM C*n){FILE*f=xopen(n,"r+b");fseek(f,0,SEEK_END),ds[i].z=ftell(f),fseek(f,0,SEEK_SET),ds[i].s=0,ds[i].f=f;}
|
||||
V disk_create(B i,IM C*n,W z){FILE*f=xopen(n,"w+b");fseek(f,1024*z-1,SEEK_SET),fputc(0,f),ds[i].z=z,fseek(ds[i].f=f,0,SEEK_SET),ds[i].s=0;}
|
||||
V disk_close(B i){Disk d=ds[i];Q(d.f,d.z=0,fclose(d.f))}
|
||||
V disk_open(B i,IM C*n){FILE*f=xopen(n,"r+b");fseek(f,0,SEEK_END),ds[i].z=ftell(f),rewind(f),ds[i].s=0,ds[i].f=f;}
|
||||
V disk_create(B i,IM C*n,W z){FILE*f=xopen(n,"w+b");fseek(f,1024*z-1,SEEK_SET),fputc(0,f),ds[i].z=z,rewind(ds[i].f=f),ds[i].s=0;}
|
||||
V disk_close(B i){Disk d=ds[i];Q(d.f,fclose(d.f),d.z=0,d.f=0)}
|
||||
V disk_closeall(V){disk_close(1),disk_close(2),disk_close(3);}
|
||||
|
||||
DEV(disk_which,(w=x),(R w))
|
||||
#define UA "disk %d unavailable",w
|
||||
DEV(disk_which,(Q(3>x&&ds[x].f,w=x)OR w=-1),(R w))
|
||||
DEV(disk_size,((V)x),(R ds[w].z))
|
||||
DEV(disk_seek,(fseek(ds[w].f,BLK*(ds[w].s=x),SEEK_SET)),(R ds[w].s))
|
||||
DEV(disk_read,(a=fread(mem+x,1,BLK,ds[w].f)),(R a))
|
||||
DEV(disk_seek,(FILE*f;N(f=ds[w].f,die(UA))fseek(f,BLK*(ds[w].s=x),SEEK_SET)),(R ds[w].s))
|
||||
DEV(disk_read,(FILE*f;N(f=ds[w].f,die(UA))a=fread(mem+x,1,BLK,f),printf("read %d\n",a)),(R a))
|
||||
DEV(disk_write,(FILE*f;N(f=ds[w].f,die(UA))b=fwrite(mem+x,1,BLK,f),fflush(f),printf("writ %d\n",b)),(R b))
|
||||
|
|
|
@ -4,6 +4,7 @@ X(io_disk_which)
|
|||
X(io_disk_size)
|
||||
X(io_disk_seek)
|
||||
X(io_disk_read)
|
||||
X(io_disk_write)
|
||||
X(io_display_pal)
|
||||
X(io_display_pos)
|
||||
X(io_display_blit)
|
||||
|
|
Loading…
Reference in New Issue