Imagen

FM77AV - learning how to program it (english thread)

Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

Hi,
I don't remember the use of port $D431-$D432 on the Subsystem.
The game has this code

Código: Seleccionar todo

; ----------------------------------------------------------------------------------------------------
; Subsystem SBR. -  param received in regA
; ----------------------------------------------------------------------------------------------------
ZD6B2   STA     <$31         ; $C172   ; param to encoder data reg ($D431)	*D6B2: 97 31          '.1'
ZD6B4   LDA     <$32         ; $C174   ; read encoder status reg				*D6B4: 96 32          '.2'
        LSRA                 ; $C176   ; pass bit 0 to carry					*D6B6: 44             'D'
        BCC     ZD6B4        ; $C177   ; if not set, loopback					*D6B7: 24 FB          '$.'
        RTS                  ; $C179   ; else return								*D6B9: 39             '9'
What is that 'encoder' on the SUB?
There are other blocks that send to that encoder some bytes in sequence
Does this ring any bell to anybody?
cheers!
pere
malikto999
Mensajes: 162
Registrado: 09 Jun 2017 11:20

Re: FM77AV - learning how to program it (english thread)

Mensaje por malikto999 »

pser1 escribió:Hi,
I don't remember the use of port $D431-$D432 on the Subsystem.
The game has this code

Código: Seleccionar todo

; ----------------------------------------------------------------------------------------------------
; Subsystem SBR. -  param received in regA
; ----------------------------------------------------------------------------------------------------
ZD6B2   STA     <$31         ; $C172   ; param to encoder data reg ($D431)	*D6B2: 97 31          '.1'
ZD6B4   LDA     <$32         ; $C174   ; read encoder status reg				*D6B4: 96 32          '.2'
        LSRA                 ; $C176   ; pass bit 0 to carry					*D6B6: 44             'D'
        BCC     ZD6B4        ; $C177   ; if not set, loopback					*D6B7: 24 FB          '$.'
        RTS                  ; $C179   ; else return								*D6B9: 39             '9'
What is that 'encoder' on the SUB?
There are other blocks that send to that encoder some bytes in sequence
Does this ring any bell to anybody?
cheers!
pere
FM77AV has three microcontrollers (MB88551, MB88201, MBL80C) called key encoders, and has the following functions.
(1) Key encoding
(2)RTC (Real Time Clock) control
(3) Screen control
(4) Digitization control
$D431-$D432 are I/O for controlling the key encoder from the sub CPU. For example, I previously introduced changing the key scan code using subsystem commands, but you can do this by directly manipulating I/O.

In addition to an explanatory article published in the May 1986 issue of Oh!FM, there is also a chapter on key encoders in Fujitsu's hardware manual. I will try to scan the manual, but it will take a few days as there are many pages, so please bear with me.
Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

@malikto999
thanks for that info. I didn't know that inside the FM77AV were that many microcontrollers!
1) I have found the data sheet for the MB88551 and MB88201, but when searching for the MBL80C I have found three
chips with same numbers: MBL80C39H, MBL80C49N, MBL80C49H, which one is used in the FM77AV?

2) The encoder @ $D431-32 is called a few times in the game.
There are two Subroutines, one that sends a byte (ZD6B2) and another one that receives a byte (ZD6AB).
These subroutines are called from 8 places in the SUB code, but only 3 of them are called from the MAIN CPU
It is strange that there are so many functions that never got called (?)
From MD654 (in the Subsystem RAM) the code sends two bytes to ZD6B2 and then the calls ZD6AB seven times!
How could we know what this code is expecting to receive?

3) Another suspicious point is that despite the subsystem has a table with 30 functions that can be called from the main CPU
only 12 are used ... unless there are 'hidden' calls that I have not spotted.

cheers!
pere
Avatar de Usuario
jimbobaby
Mensajes: 539
Registrado: 13 Ago 2023 21:17

Re: FM77AV - learning how to program it (english thread)

Mensaje por jimbobaby »

pser1 escribió: ; ------------------------------------------------------------------------------------------------------
; BLK 65 (Z8B16) - FM related
sends $00,$01,$02 in sequence to register $28. for what?
Sorry to backtrack again, but from the BGM sample that malikto999 provided us, there is this little snippet inside...

Código: Seleccionar todo

*FM sound source stopped
           ldd #$2800 ;KEY OFF 1CH
           bsr @fmsound
           incb ;KEY OFF 2CH
           bsr @fmsound
           incb ;KEY OFF 3CH
           bsr @fmsound
That's called when stopping the song, and it's exactly what you were asking for -grin (fmsound puts the A/B register pair "register/data" onto it's place with the appropiate "weird" protocol).
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

jimbobaby escribió:Sorry to backtrack again, but from the BGM sample that malikto999 provided us, there is this little snippet inside...

Código: Seleccionar todo

*FM sound source stopped
           ldd #$2800 ;KEY OFF 1CH
           bsr @fmsound
           incb ;KEY OFF 2CH
           bsr @fmsound
           incb ;KEY OFF 3CH
           bsr @fmsound
That's called when stopping the song, and it's exactly what you were asking for -grin (fmsound puts the A/B register pair "register/data" onto it's place with the appropiate "weird" protocol).
HI,
thx
I had changed the comments, now they are: slots 1/2/3 are no more linked to channels A/B/C, so equal to mute the 3 channels
cheers!
pere
malikto999
Mensajes: 162
Registrado: 09 Jun 2017 11:20

Re: FM77AV - learning how to program it (english thread)

Mensaje por malikto999 »

I'm late, but I'm attaching a scanned image of the key encoder from the hardware manual.
pser1 escribió: thanks for that info. I didn't know that inside the FM77AV were that many microcontrollers!
1) I have found the data sheet for the MB88551 and MB88201, but when searching for the MBL80C I have found three
chips with same numbers: MBL80C39H, MBL80C49N, MBL80C49H, which one is used in the FM77AV?
The manual says MBL80C49, but I don't know if it's "H" or "N".
pser1 escribió: 2) The encoder @ $D431-32 is called a few times in the game.
There are two Subroutines, one that sends a byte (ZD6B2) and another one that receives a byte (ZD6AB).
These subroutines are called from 8 places in the SUB code, but only 3 of them are called from the MAIN CPU
It is strange that there are so many functions that never got called (?)
From MD654 (in the Subsystem RAM) the code sends two bytes to ZD6B2 and then the calls ZD6AB seven times!
How could we know what this code is expecting to receive?
MD654 is a routine that obtains date and time from RTC. ZD6B2 sends data to the key encoder, and ZD6AB catches data from the key encoder.
The first $80 sent means RTC control, and the next $00 means RTC reading. After that, it is divided into 7 times to obtain the year, month, day, day of the week, hour, minute, and second.
See chapter 7 of the manual for key encoder commands.
Adjuntos
MANUAL.zip
(13.12 MiB) Descargado 42 veces
Avatar de Usuario
jimbobaby
Mensajes: 539
Registrado: 13 Ago 2023 21:17

Re: FM77AV - learning how to program it (english thread)

Mensaje por jimbobaby »

malikto999 escribió:I'm late, but I'm attaching a scanned image of the key encoder from the hardware manual.
You are not late, there is no deadline or anything -drinks . Thank you, that's a lot of new info to learn -grin

-thumbup
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

I have added comments to 65 Blocks for the Main CPU, 22 for the IRQ service Routine and 14 for the SUB CPU ...
These are the blocks related to the two first calls of the program: BLK 01 and BLK 02

Código: Seleccionar todo

; ----------------------------------------------------------------------------------------------------
M4000   LDS     #MFC80                 ; set stack at highest RAM point		*4000: 10 CE FC 80    '....'
M4004   JSR     Z809C      		  		; call BLK 01								*4004: BD 80 9C       '...'
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Z4007   LDS     #MFC80                 ; set stack at highest RAM point		*4007: 10 CE FC 80    '....'
        JSR     ZB3CF      				; call BLK 02								*400B: BD B3 CF       '...'
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
I am not very happy with the comments I have added to some blocks because the program uses a lot of variables and structures.
Memory $F000-$F0FF is the direct Page for the main CPU
Memory $F100-$F5FF is used for data, so a great amount!
Trying to discover the usage of these variables seems an overwhelming task.
But at least we should try to know the format of some structures (what each byte represents)

We need to learn how to deal with tiles, I mean how they are loaded and how the game loads a screen map when
the player enters a new room and how to draw the screen using this data.

The characters do move, so we need to find the way to load the sprites for each screen and how they are moved every IRQ
In next message I will upload the current source code and some questions ...
cheers!
pere
Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

Hello,
These are the points that need some kind of explanation in the functions (Blocks) where I have already added comments.

1)
; ------------------------------------------------------------------------------------------------------
; BLK 300 - called from BLK 297 ZZZZZ - REVISED PSR20231112
; ------------------------------------------------------------------------------------------------------

Código: Seleccionar todo

Z7FA9   LDB     MFD18                  ; get FDC command status				
        LSRB                           ; pass bit 0 to carry					
        BCC     Z7FB4                  ; if clear (not BUSY), skip 2			
        LDB     #$D0                   ; put $D0 (force interrupt)			
        STB     MFD18                  ; into FDC command register			
Z7FB4   LDA     MFD1B                  ; get a byte from FDC					
        COMA                           ; complement value (255-value)	
        										; *** WHY COMPLEMENT IT?
        STA     MFD1B                  ; send to FDC data register			
        BSR     Z7F99                  ; call BLK 293 - 23.5 uSec delay		
        CMPA    MFD1B                  ; still same value?					
        BNE     Z7F98                  ; no, go to Entry of BLK 292
2)
Z8AEE (BLK 61)
; *** NEEDS EXPLANATION. NOT SURE ABOUT THE EFFECT OF THE VALUES SENT TO REGISTERS
; ------------------------------------------------------------------------------------------------------

3)
Z8B7F (Entry in BLK 60)
; *** WHY SEND THREE TIMES A ZERO at the beginning?

; *** WHAT DOES THIS SEQUENCE DO ($40,$4E,$37)?
; these are not MIDI codes, maybe Fujitsu MIDI access implementation?
; ------------------------------------------------------------------------------------------------------

4)
a bit above ZB48F

Código: Seleccionar todo

        LDD     #Z0000                 ; colour code 0
        STD     MFD30                  ; send to palette register
        LDD     #M0303                 ; get values 3 and 3
        STD     MFD32                  ; $FD32=3, $FD33=3
        STA     MFD33                  ; *** SHOULDN'T IT BE $FD34?
5)
; ----------------------------------------------------------------------------------------------------
; BLK for command 6 (offset 12) in table $C627 called from ZD32E SSSSS - REVISED PSR-20231122
; parameter comes pointed by regU
; *** DOES THIS SET SCAN CODE INSTEAD OF ASCII CODE FOR THE KEYBOARD?
; ----------------------------------------------------------------------------------------------------

Código: Seleccionar todo

MD677
RC137   CLRA                 ; $C137   ; value 0 (chord system switching)
        BSR     ZD6B2        ; $C138   ; send to encoder $D431			
        LDA     ,U           ; $C13A   ; get parameter (2=scan code)	
        BRA     ZD6B2        ; $C13C   ; send to encoder $D431		
6)
In MD6BA (code in SUB memory)
; *** WHAT MEANING HAVE THESE BITA?

Código: Seleccionar todo

ZD6DE   BITA    $2000,X      ; $C19E   ; check bits from next plane	
        BITA    ,X+          ; $C1A2   ; check bits from current plane	
7)
; ----------------------------------------------------------------------------------------------------
; BLK 462 - called from BLK for command 7 XXXXX - REVISED
; ----------------------------------------------------------------------------------------------------

Código: Seleccionar todo

ZD71C   LDA     ,U           ; $C1DC   ; 			
; *** DOES THIS LDB SEQUENCE MAKE ANY SENSE? 
ZD71E   LDB     $2078,X      ; $C1DE   ; 		
        LDB     $78,X        ; $C1E2   ; 			
        LDB     $2050,X      ; $C1E5   ; 			
        LDB     $50,X        ; $C1E9   ; 			
        LDB     $2028,X      ; $C1EC   ; 			
        LDB     $28,X        ; $C1F0   ; 			
        LDB     $2000,X      ; $C1F3   ; 			
        LDB     ,X+          ; $C1F7   ; 			
        DECA                 ; $C1F9   ; 			
        BNE     ZD71E        ; $C1FA   ; 			
        LDX     $02,U        ; $C1FC   ; 			
        RTS                  ; $C1FE   ; 			
8)
; ----------------------------------------------------------------------------------------------------
; BLK 463 - called from BLK for command 7 XXXXX - REVISED
; ----------------------------------------------------------------------------------------------------

Código: Seleccionar todo

ZD73F   LDB     $01,U        ; $C1FF   ; 		
; *** DOES THIS LDA SEQUENCE MAKE ANY SENSE? 
ZD741   LDA     $2000,X      ; $C201   ; 		
        LDA     ,X           ; $C205   ; 			
        LEAX    $28,X        ; $C207   ; 			
        DECB                 ; $C20A   ; 			
        BNE     ZD741        ; $C20B   ; 			
        LDX     $02,U        ; $C20D   ; 			
        RTS                  ; $C20F   ; 			
cheers!
pere
Code03-v26.zip
(246.86 KiB) Descargado 25 veces
malikto999
Mensajes: 162
Registrado: 09 Jun 2017 11:20

Re: FM77AV - learning how to program it (english thread)

Mensaje por malikto999 »

pser1 escribió:Hello,
These are the points that need some kind of explanation in the functions (Blocks) where I have already added comments.

1)
; ------------------------------------------------------------------------------------------------------
; BLK 300 - called from BLK 297 ZZZZZ - REVISED PSR20231112
; ------------------------------------------------------------------------------------------------------

Código: Seleccionar todo

Z7FA9   LDB     MFD18                  ; get FDC command status				
        LSRB                           ; pass bit 0 to carry					
        BCC     Z7FB4                  ; if clear (not BUSY), skip 2			
        LDB     #$D0                   ; put $D0 (force interrupt)			
        STB     MFD18                  ; into FDC command register			
Z7FB4   LDA     MFD1B                  ; get a byte from FDC					
        COMA                           ; complement value (255-value)	
        										; *** WHY COMPLEMENT IT?
        STA     MFD1B                  ; send to FDC data register			
        BSR     Z7F99                  ; call BLK 293 - 23.5 uSec delay		
        CMPA    MFD1B                  ; still same value?					
        BNE     Z7F98                  ; no, go to Entry of BLK 292
2)
Z8AEE (BLK 61)
; *** NEEDS EXPLANATION. NOT SURE ABOUT THE EFFECT OF THE VALUES SENT TO REGISTERS
; ------------------------------------------------------------------------------------------------------

3)
Z8B7F (Entry in BLK 60)
; *** WHY SEND THREE TIMES A ZERO at the beginning?

; *** WHAT DOES THIS SEQUENCE DO ($40,$4E,$37)?
; these are not MIDI codes, maybe Fujitsu MIDI access implementation?
; ------------------------------------------------------------------------------------------------------

4)
a bit above ZB48F

Código: Seleccionar todo

        LDD     #Z0000                 ; colour code 0
        STD     MFD30                  ; send to palette register
        LDD     #M0303                 ; get values 3 and 3
        STD     MFD32                  ; $FD32=3, $FD33=3
        STA     MFD33                  ; *** SHOULDN'T IT BE $FD34?
5)
; ----------------------------------------------------------------------------------------------------
; BLK for command 6 (offset 12) in table $C627 called from ZD32E SSSSS - REVISED PSR-20231122
; parameter comes pointed by regU
; *** DOES THIS SET SCAN CODE INSTEAD OF ASCII CODE FOR THE KEYBOARD?
; ----------------------------------------------------------------------------------------------------

Código: Seleccionar todo

MD677
RC137   CLRA                 ; $C137   ; value 0 (chord system switching)
        BSR     ZD6B2        ; $C138   ; send to encoder $D431			
        LDA     ,U           ; $C13A   ; get parameter (2=scan code)	
        BRA     ZD6B2        ; $C13C   ; send to encoder $D431		
6)
In MD6BA (code in SUB memory)
; *** WHAT MEANING HAVE THESE BITA?

Código: Seleccionar todo

ZD6DE   BITA    $2000,X      ; $C19E   ; check bits from next plane	
        BITA    ,X+          ; $C1A2   ; check bits from current plane	
7)
; ----------------------------------------------------------------------------------------------------
; BLK 462 - called from BLK for command 7 XXXXX - REVISED
; ----------------------------------------------------------------------------------------------------

Código: Seleccionar todo

ZD71C   LDA     ,U           ; $C1DC   ; 			
; *** DOES THIS LDB SEQUENCE MAKE ANY SENSE? 
ZD71E   LDB     $2078,X      ; $C1DE   ; 		
        LDB     $78,X        ; $C1E2   ; 			
        LDB     $2050,X      ; $C1E5   ; 			
        LDB     $50,X        ; $C1E9   ; 			
        LDB     $2028,X      ; $C1EC   ; 			
        LDB     $28,X        ; $C1F0   ; 			
        LDB     $2000,X      ; $C1F3   ; 			
        LDB     ,X+          ; $C1F7   ; 			
        DECA                 ; $C1F9   ; 			
        BNE     ZD71E        ; $C1FA   ; 			
        LDX     $02,U        ; $C1FC   ; 			
        RTS                  ; $C1FE   ; 			
8)
; ----------------------------------------------------------------------------------------------------
; BLK 463 - called from BLK for command 7 XXXXX - REVISED
; ----------------------------------------------------------------------------------------------------

Código: Seleccionar todo

ZD73F   LDB     $01,U        ; $C1FF   ; 		
; *** DOES THIS LDA SEQUENCE MAKE ANY SENSE? 
ZD741   LDA     $2000,X      ; $C201   ; 		
        LDA     ,X           ; $C205   ; 			
        LEAX    $28,X        ; $C207   ; 			
        DECB                 ; $C20A   ; 			
        BNE     ZD741        ; $C20B   ; 			
        LDX     $02,U        ; $C20D   ; 			
        RTS                  ; $C20F   ; 			
cheers!
pere
Code03-v26.zip
I just downloaded the source, so my comments may be a little slow.
At first glance at the code you posted, it seems like it's doing something useless that I can't explain.
FM77AV sometimes requires some waiting for I/O operations, and I've seen meaningless code written instead of NOP, but what about this?
Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

malikto999 escribió: I just downloaded the source, so my comments may be a little slow.
Don't worry,
no need to rush at all ... There are lots of code blocks to be read!
At first glance at the code you posted, it seems like it's doing something useless that I can't explain.
FM77AV sometimes requires some waiting for I/O operations, and I've seen meaningless code written instead of NOP, but what about this?
I agree, but usually I insert opcodes known to use a certain number of cycles and then add in the comments field "waste some time"
Using addressing modes with 16 bit offsets you are wasting too many ram bytes. Instead you coud use:
PSHS DP,CC,D,X,Y,U ; 4+1+1+2+2+2+2 = 14 cycles
PULS DP,CC,D,X,Y,U ; 4+1+1+2+2+2+2 = 14 cycles
These sequence needs only 4 bytes and wastes 28 clock cycles!
And you can reduce cycles by simply taking registers out of both lines
cheers!
pere

Ps I will try to read one more time the three subroutines that load sectors from disk:
Z7E66, Z7DBC and Z8C4F
A screen map for a tiled game that uses the full screen would need 40x24=960 bytes. This would require 4 sectors to be read.
Another chance could be that previous 'loader' that has loaded the 'game' part from $4000 on, has loaded into the other 64Kb
a lot of data from $3000 on. Maybe looking for a point that changes mapping to some parts of that memory could do the trick.
I asume that this part would be reached later in the 'tracing' I am doing of the game ...
malikto999
Mensajes: 162
Registrado: 09 Jun 2017 11:20

Re: FM77AV - learning how to program it (english thread)

Mensaje por malikto999 »

This code is difficult and I have not been able to make any progress in analyzing it, but I will respond from the parts that I think I can comment on.
pser1 escribió: 4)
a bit above ZB48F

Código: Seleccionar todo

        LDD     #Z0000                 ; colour code 0
        STD     MFD30                  ; send to palette register
        LDD     #M0303                 ; get values 3 and 3
        STD     MFD32                  ; $FD32=3, $FD33=3
        STA     MFD33                  ; *** SHOULDN'T IT BE $FD34?
think this is a simple bug. As you say, $FD34 must be a mistake.
pser1 escribió: 6)
In MD6BA (code in SUB memory)
; *** WHAT MEANING HAVE THESE BITA?

Código: Seleccionar todo

ZD6DE   BITA    $2000,X      ; $C19E   ; check bits from next plane	
        BITA    ,X+          ; $C1A2   ; check bits from current plane	
When I set a breakpoint on $C19E of the sub CPU and ran the game, it was called in the scene where Mike enters the cave at the beginning.
The purpose of this routine seems to be to erase or draw Mike. (In the scene where he enters a cave, when these two line codes are executed, Mike
will disappear by one byte.)
I think it is drawn using the logical operation function of hardware drawing. The logical operation function is drawn with the contents set in I/O ($D410 to $D41E) by dummy reading the target VRAM. (I don't understand this feature very well so I need to read more code.)
Since the A register is used as a counter and don't want to change the value, used a BITA instead of an LDA. In this case, I think any instruction that reads VRAM will suffice.
Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

Hello,
is there an easy way to copy files from one drive to another or even to the same to duplicate the file?
By now I am using FCOPY, an utility that came with FBASIC3.3L10 that jltursan sent to me but I thought that the DOS would have its own command
thx in advance
pere
Avatar de Usuario
jimbobaby
Mensajes: 539
Registrado: 13 Ago 2023 21:17

Re: FM77AV - learning how to program it (english thread)

Mensaje por jimbobaby »

pser1 escribió:Hello,
is there an easy way to copy files from one drive to another or even to the same to duplicate the file?
By now I am using FCOPY, an utility that came with FBASIC3.3L10 that jltursan sent to me but I thought that the DOS would have its own command
thx in advance
pere
Nothing like a "copy" command, that i know.

You could do a LOAD[M]/SAVE[M], of course with size limitations. Or with some F-BASIC code, you can read/write sector by sector (DSKI$/DSKO$), or even with open/input#/get../close.. but not a true "copy" command. So i think probably it's better to just use the tool.
-sp3zy PC 386 -coam1 -m3s3x
Avatar de Usuario
pser1
Mensajes: 4840
Registrado: 08 Dic 2012 18:34

Re: FM77AV - learning how to program it (english thread)

Mensaje por pser1 »

jimbobaby escribió:Nothing like a "copy" command, that i know.
You could do a LOAD[M]/SAVE[M], of course with size limitations. Or with some F-BASIC code, you can read/write sector by sector (DSKI$/DSKO$), or even with open/input#/get../close.. but not a true "copy" command. So i think probably it's better to just use the tool.
Hi,
A disk can contain a lot of programs, so not an interesting way ... that implies you know where the binaries do load, end and have exec entry!
That's incredible and unforgivable!
Any Disk Operating System requires a command to copy files from one disk to another. Even to duplicate one and then rename it to be used
in another way
Fortunately I found the FCOPY inside the disk labelled FBASIC 3.3L10
cheers!
pere
Avatar de Usuario
jimbobaby
Mensajes: 539
Registrado: 13 Ago 2023 21:17

Re: FM77AV - learning how to program it (english thread)

Mensaje por jimbobaby »

pser1 escribió:
jimbobaby escribió:Nothing like a "copy" command, that i know.
You could do a LOAD[M]/SAVE[M], of course with size limitations. Or with some F-BASIC code, you can read/write sector by sector (DSKI$/DSKO$), or even with open/input#/get../close.. but not a true "copy" command. So i think probably it's better to just use the tool.
Hi,
A disk can contain a lot of programs, so not an interesting way ... that implies you know where the binaries do load, end and have exec entry!
That's incredible and unforgivable!
Any Disk Operating System requires a command to copy files from one disk to another. Even to duplicate one and then rename it to be used
in another way
Fortunately I found the FCOPY inside the disk labelled FBASIC 3.3L10
cheers!
pere
I have taken a look at my ZX Spectrum +3 manual and yes, there is a "COPY" command -grin.
Anyway, i have also seen a disk image with F-BASIC and it seems the commands are those (in abbreviated form):
DSKIN
DSKO
NAM
FIEL
LSE
RSE
DSK
CV
MKI
MKS
MKD
LO
DSKI
(offset 1700h on a F-BASIC D77 image)
-sp3zy PC 386 -coam1 -m3s3x
Responder

Volver a “Fujitsu FM7”