Browse code

Expanded File/offset to 32-bit /offset-hs and /offset-ls

Andrew Alderwick authored on 27/08/2021 23:37:27
Showing 12 changed files
... ...
@@ -21,7 +21,7 @@
21 21
 |60 @Audio3     [ &vector $2 &position $2 &output $1 &pad   $3 &adsr   $2 &length $2 &addr $2 &volume $1 &pitch $1 ]
22 22
 |80 @Controller [ &vector $2 &button   $1 &key    $1 ]
23 23
 |90 @Mouse      [ &vector $2 &x        $2 &y      $2 &state $1 &wheel  $1 ]
24
-|a0 @File       [ &vector $2 &success  $2 &offset $2 &pad   $2 &name   $2 &length $2 &load $2 &save   $2 ]
24
+|a0 @File       [ &vector $2 &success  $2 &offset-hs $2 &offset-ls $2 &name   $2 &length $2 &load $2 &save   $2 ]
25 25
 |b0 @DateTime   [ &year   $2 &month    $1 &day    $1 &hour  $1 &minute $1 &second $1 &dotw $1 &doty   $2 &isdst $1 ]
26 26
 
27 27
 ( variables )
... ...
@@ -30,7 +30,7 @@
30 30
 |70 @Midi       [ &vector $2 &channel  $1 &note   $1 &velocity $1 ]
31 31
 |80 @Controller [ &vector $2 &button   $1 &key    $1 ]
32 32
 |90 @Mouse      [ &vector $2 &x        $2 &y      $2 &state $1 &wheel $1 ]
33
-|a0 @File       [ &vector $2 &success  $2 &offset $2 &pad   $2 &name  $2 &length $2 &load $2 &save $2 ]
33
+|a0 @File       [ &vector $2 &success  $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
34 34
 
35 35
 ( variables )
36 36
 
... ...
@@ -12,7 +12,7 @@
12 12
 
13 13
 |00 @System  &vector $2 &pad     $6 &r      $2 &g     $2 &b      $2
14 14
 |20 @Screen  &vector $2 &width   $2 &height $2 &pad   $2 &x      $2 &y      $2 &addr $2 &pixel $1 &sprite $1
15
-|a0 @File    &vector $2 &success $2 &offset $2 &pad   $2 &name   $2 &length $2 &load $2 &save  $2
15
+|a0 @File    &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2
16 16
 
17 17
 ( variables )
18 18
 
... ...
@@ -25,7 +25,7 @@
25 25
 |70 @Midi       [ &vector $2 &channel  $1 &note   $1 &velocity $1 ]
26 26
 |80 @Controller [ &vector $2 &button   $1 &key    $1 ]
27 27
 |90 @Mouse      [ &vector $2 &x        $2 &y      $2 &state $1 &wheel  $1 ]
28
-|a0 @File       [ &vector $2 &success  $2 &offset $2 &pad   $2 &name  $2 &length $2 &load $2 &save $2 ]
28
+|a0 @File       [ &vector $2 &success  $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
29 29
 
30 30
 ( variables )
31 31
 
... ...
@@ -4,7 +4,7 @@
4 4
 
5 5
 |00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
6 6
 |20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
7
-|a0 @File   [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
7
+|a0 @File   [ &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
8 8
 
9 9
 ( variables )
10 10
 
... ...
@@ -3,7 +3,7 @@
3 3
 ( devices )
4 4
 
5 5
 |00 @System     [ &vector $2 &pad    $6 &r      $2 &g     $2 &b      $2 ]
6
-|a0 @File       [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
6
+|a0 @File       [ &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
7 7
 
8 8
 ( variables )
9 9
 
... ...
@@ -8,7 +8,7 @@
8 8
 |00 @System     [ &vector $2 &pad    $6 &r      $2 &g     $2 &b      $2 ]
9 9
 |10 @Console    [ &pad    $8 &write  $1 ]
10 10
 |20 @Screen     [ &vector $2 &width  $2 &height $2 &pad   $2 &x      $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
11
-|a0 @File       [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
11
+|a0 @File       [ &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
12 12
 
13 13
 ( variables )
14 14
 
... ...
@@ -7,7 +7,7 @@
7 7
 
8 8
 |00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
9 9
 |20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
10
-|a0 @File [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
10
+|a0 @File [ &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
11 11
 
12 12
 ( variables )
13 13
 
... ...
@@ -2,7 +2,7 @@
2 2
 
3 3
 |00 @System     [ &vector $2 &wst      $1 &rst    $1 &pad   $4 &r $2 &g $2 &b $2   &debug $1 &halt $1 ]
4 4
 |10 @Console    [ &pad    $8 &write    $1 ]
5
-|a0 @File       [ &vector $2 &success  $2 &offset $2 &pad   $2 &name  $2 &length $2 &load $2 &save $2 ]
5
+|a0 @File       [ &vector $2 &success  $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
6 6
 
7 7
 ( vectors )
8 8
 
... ...
@@ -62,7 +62,7 @@
62 62
 		that will prevent an infinite loop.
63 63
 	)
64 64
 	;&dest-file .File/name DEO2
65
-	#0000 .File/offset DEO2
65
+	#0000 .File/offset-ls DEO2
66 66
 	#ff00 .File/length DEO2
67 67
 	#0100 .File/load
68 68
 	LIT DEO2 #00ff STA
... ...
@@ -269,7 +269,7 @@
269 269
 
270 270
 	&loop
271 271
 	OVR2 .File/name DEO2
272
-	DUP2 .File/offset DEO2
272
+	DUP2 .File/offset-ls DEO2
273 273
 	;asma-read-buffer/end ;asma-read-buffer SUB2 STH2k .File/length DEO2
274 274
 	;asma-read-buffer DUP2k .File/load DEO2
275 275
 	.File/success DEI2
... ...
@@ -544,7 +544,7 @@
544 544
 
545 545
 @asma-flush-to-file ( len* -- )
546 546
 	DUP2 .File/length DEO2
547
-	,asma-output/offset LDR2 DUP2 .File/offset DEO2 ADD2 ,asma-output/offset STR2
547
+	,asma-output/offset LDR2 DUP2 .File/offset-ls DEO2 ADD2 ,asma-output/offset STR2
548 548
 	;asma/dest-filename LDA2 .File/name DEO2
549 549
 	;asma-write-buffer .File/save DEO2
550 550
 	JMP2r
... ...
@@ -10,7 +10,7 @@
10 10
 |00 @System  &vector $2 &pad     $6 &r      $2 &g     $2 &b      $2
11 11
 |20 @Screen  &vector $2 &width   $2 &height $2 &pad   $2 &x      $2 &y      $2 &addr $2 &pixel $1 &sprite $1
12 12
 |80 @Controller [ &vector $2 &button   $1 &key    $1 ]
13
-|a0 @File    &vector $2 &success $2 &offset $2 &pad   $2 &name   $2 &length $2 &load $2 &save  $2
13
+|a0 @File    &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save  $2
14 14
 
15 15
 ( init )
16 16
 
... ...
@@ -76,7 +76,7 @@ file_talk(Device *d, Uint8 b0, Uint8 w)
76 76
 	if(w && (read || b0 == 0xf)) {
77 77
 		char *name = (char *)&d->mem[mempeek16(d->dat, 0x8)];
78 78
 		Uint16 result = 0, length = mempeek16(d->dat, 0xa);
79
-		Uint16 offset = mempeek16(d->dat, 0x4);
79
+		long offset = (mempeek16(d->dat, 0x4) << 16) + mempeek16(d->dat, 0x6);
80 80
 		Uint16 addr = mempeek16(d->dat, b0 - 1);
81 81
 		FILE *f = fopen(name, read ? "r" : (offset ? "a" : "w"));
82 82
 		if(f) {
... ...
@@ -344,7 +344,7 @@ file_talk(Device *d, Uint8 b0, Uint8 w)
344 344
 	if(w && (read || b0 == 0xf)) {
345 345
 		char *name = (char *)&d->mem[mempeek16(d->dat, 0x8)];
346 346
 		Uint16 result = 0, length = mempeek16(d->dat, 0xa);
347
-		Uint16 offset = mempeek16(d->dat, 0x4);
347
+		long offset = (mempeek16(d->dat, 0x4) << 16) + mempeek16(d->dat, 0x6);
348 348
 		Uint16 addr = mempeek16(d->dat, b0 - 1);
349 349
 		FILE *f = fopen(name, read ? "r" : (offset ? "a" : "w"));
350 350
 		if(f) {