So, there is this (from Mike Nugent's RAM-ROM file)

;2239H - Insert entry into directory.
;         Entry:
;               HL - Points to empty directory slot
;               DE - Contains address of file in RAM
;                A - Attribute (80h=.BA, C0h=.DO, A0h=.CO, etc.)
;         Note: Routine gets filename from FC93H, where it must be
;       stored,padded with spaces, no delimiter.
;         Exit: DE - Unchanged

And I have the ROM call itself working in smallclib... but this is only
part of the story. To use this successfully (ie without causing a cold
start) we need to know more about it.

I've been trying to create a .DO file.

1) Where do yo get a starting address for the file? I've tried every
variant of COSTART (FBB0h) and DOSTART (FBAEh). At best I can get is
intact DO files and the CO file directory entries switched around (using
COSTART-1). DOSTART results in the text files being switched around and
the binary files remaining correct. Anything else (COSTART or
DOSTART-1) leads to file corruption and/or cold starts.

2)Is there a second directory-repair routine, besides DIROK (2146h)?
Because DIROK() is not being sufficient. :-(

Here is the test code. DO NOT USE!!!!
/*tmf.c
 *Test MakFil
 *test for Model 100 Small C-85 Library
 *
 *Willard Goosey
 *[email protected]
 *10/19/2017
 */

#include "m100vars.h"
#include "dir.h"

/*MAKFIL extension bytes: */
#define BA 0x80
#define DO 0xC0
#define CO 0xA0

main(char A, char *HL)
{
  char *name; 
  struct dir *slot;
  char *start;
  int i;

  name= "RTMF1.DO";
  start= COSTART-1; //start at beginning of CO files

  slot=FREDIR();  

  hex16(start);CRLF();

  prsnam(name,strlen(name));

  hex16(makfil(slot,start,DO)); CRLF();
  if(makhol(1,start)<0)
  {
    BEEP();
    MENU();
  }
  *start=0x1a;
 //makfil doesn't autoinsert EOF
  DIROK();
}

HELP!!!!
Willard
-- 
Willard Goosey  [email protected]
Socorro, New Mexico, USA
I search my heart and find Cimmeria, land of Darkness and the Night.
  -- R.E. Howard

Reply via email to