File tree Expand file tree Collapse file tree 5 files changed +115
-46
lines changed Expand file tree Collapse file tree 5 files changed +115
-46
lines changed Original file line number Diff line number Diff line change 27
27
ld a , CPM_SEG
28
28
ld mb , a
29
29
stmix
30
- jp .sis $ E1FD
30
+ jp .sis $ DCFD
31
31
32
32
_error:
33
33
xor a
@@ -47,7 +47,7 @@ _error:
47
47
48
48
_cpm_restore:
49
49
ld hl , _cpm_image
50
- ld de , $ 5E1FD
50
+ ld de , $ 5dcfd
51
51
ld bc , _cpm_end - _cpm_image
52
52
ldir
53
53
ret .lil
Original file line number Diff line number Diff line change @@ -74,64 +74,56 @@ _drive_write:
74
74
ret .lil
75
75
76
76
77
- drive_a:
78
- db "cpma.dsk" , 0
79
- drive_b:
80
- db "cpmb.dsk" , 0
81
- drive_c:
82
- db "cpmc.dsk" , 0
83
- drive_d:
84
- db "cpmd.dsk" , 0
77
+ drive:
78
+ db "cpm"
79
+ drive_letter:
80
+ db "a.dsk" , 0
85
81
86
82
87
83
f_handle: db 0
88
84
89
- f_a: db 0
90
- f_b: db 0
91
- f_c: db 0
92
- f_d: db 0
93
-
94
85
_drive_change:
95
- ld de , f_a
96
- or a
97
- sbc hl , hl
98
- ld l , a
99
- add hl , de
100
- ld a , (hl)
101
- ld (f_handle) , a
102
- ret .lil
103
-
86
+ add a , 'a'
87
+ ld (drive_letter) , a
88
+ xor a
89
+ ld mb , a
104
90
105
- fs_init:
106
- ld c , 0
91
+ ld a , (f_handle)
107
92
MOSCALL mos_fclose
108
93
109
- ld hl , drive_a
94
+ ld hl , drive
110
95
ld c , fa_read + fa_write
111
96
MOSCALL mos_fopen
112
- ld (f_a) , a
97
+
98
+ ld (f_handle) , a
113
99
or a
114
- ret z
100
+ jr z , _dr_change_err
115
101
116
- ld hl , drive_b
117
- ld c , fa_read + fa_write
118
- MOSCALL mos_fopen
119
- ld (f_b) , a
120
-
121
- ld hl , drive_c
122
- ld c , fa_read + fa_write
123
- MOSCALL mos_fopen
124
- ld (f_c) , a
125
-
126
- ld hl , drive_d
102
+ push af
103
+ ld a , CPM_SEG
104
+ ld mb , a
105
+ pop af
106
+ ret .lil
107
+
108
+ _dr_change_err:
109
+ xor a
110
+ call .lil _drive_change
111
+
112
+ ld a , CPM_SEG
113
+ ld mb , a
114
+ xor a
115
+ ret .lil
116
+
117
+ fs_init:
118
+ ld c , 0
119
+ MOSCALL mos_fclose
120
+
121
+ ld hl , drive
127
122
ld c , fa_read + fa_write
128
123
MOSCALL mos_fopen
129
- ld (f_d) , a
130
-
131
- ld a , (f_a)
132
124
ld (f_handle) , a
133
125
or a
134
- ret
126
+ ret
135
127
136
128
fs_seek:
137
129
add hl , hl ; *2
Original file line number Diff line number Diff line change @@ -39,6 +39,71 @@ dbp_size = $ - dbp
39
39
dw dirbf , dpblk
40
40
dw $ 0000 , all03
41
41
42
+ dw $ 0000 , $ 0000
43
+ dw $ 0000 , $ 0000
44
+ dw dirbf , dpblk
45
+ dw $ 0000 , all04
46
+
47
+ dw $ 0000 , $ 0000
48
+ dw $ 0000 , $ 0000
49
+ dw dirbf , dpblk
50
+ dw $ 0000 , all05
51
+
52
+ dw $ 0000 , $ 0000
53
+ dw $ 0000 , $ 0000
54
+ dw dirbf , dpblk
55
+ dw $ 0000 , all06
56
+
57
+ dw $ 0000 , $ 0000
58
+ dw $ 0000 , $ 0000
59
+ dw dirbf , dpblk
60
+ dw $ 0000 , all07
61
+
62
+ dw $ 0000 , $ 0000
63
+ dw $ 0000 , $ 0000
64
+ dw dirbf , dpblk
65
+ dw $ 0000 , all08
66
+
67
+ dw $ 0000 , $ 0000
68
+ dw $ 0000 , $ 0000
69
+ dw dirbf , dpblk
70
+ dw $ 0000 , all09
71
+
72
+ dw $ 0000 , $ 0000
73
+ dw $ 0000 , $ 0000
74
+ dw dirbf , dpblk
75
+ dw $ 0000 , all10
76
+
77
+ dw $ 0000 , $ 0000
78
+ dw $ 0000 , $ 0000
79
+ dw dirbf , dpblk
80
+ dw $ 0000 , all10
81
+
82
+ dw $ 0000 , $ 0000
83
+ dw $ 0000 , $ 0000
84
+ dw dirbf , dpblk
85
+ dw $ 0000 , all11
86
+
87
+ dw $ 0000 , $ 0000
88
+ dw $ 0000 , $ 0000
89
+ dw dirbf , dpblk
90
+ dw $ 0000 , all12
91
+
92
+ dw $ 0000 , $ 0000
93
+ dw $ 0000 , $ 0000
94
+ dw dirbf , dpblk
95
+ dw $ 0000 , all13
96
+
97
+ dw $ 0000 , $ 0000
98
+ dw $ 0000 , $ 0000
99
+ dw dirbf , dpblk
100
+ dw $ 0000 , all14
101
+
102
+ dw $ 0000 , $ 0000
103
+ dw $ 0000 , $ 0000
104
+ dw dirbf , dpblk
105
+ dw $ 0000 , all15
106
+
42
107
dpblk: ;disk parameter block for all disks.
43
108
dw 64 ;sectors per track
44
109
db 6 ;block shift factor
@@ -64,7 +129,7 @@ nothing:
64
129
ret
65
130
66
131
seldisk:
67
- cp 4
132
+ cp 16
68
133
jr nc , .ouch
69
134
70
135
ld (.drive_num) , a ;; It's more safe than joungling with stack(ONLY HERE!)
@@ -119,6 +184,18 @@ all00: ds 128
119
184
all01: ds 128
120
185
all02: ds 128
121
186
all03: ds 128
187
+ all04: ds 128
188
+ all05: ds 128
189
+ all06: ds 128
190
+ all07: ds 128
191
+ all08: ds 128
192
+ all09: ds 128
193
+ all10: ds 128
194
+ all11: ds 128
195
+ all12: ds 128
196
+ all13: ds 128
197
+ all14: ds 128
198
+ all15: ds 128
122
199
123
200
dirbf: ds 128
124
201
Original file line number Diff line number Diff line change 1
1
device zxspectrum48
2
2
3
- org $ e200 - 3
3
+ org $ dd00 - 3
4
4
DISPLAY "ORG: " , $
5
5
cpm:
6
6
jp BOOT
You can’t perform that action at this time.
0 commit comments