Login

Subversion Repositories NedoOS

Rev

Rev 8 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

//// imported
#include "../_sdk/io.h"

//CONST PCHAR CH_ADD;
CONST PCHAR fn;

CONST PBYTE RUNADDR;
CONST PBYTE PARADDR;

////

PROC batch()
{
VAR CHAR c;
VAR PCHAR pfn;
VAR PCHAR ppar;
VAR BOOL waswaseof;
  _fin = nfopen(fn, "rb");
  IF (_fin != (PBYTE)0) {
    _waseof = +FALSE;

    WHILE (!_waseof) {
//read command to (fn), (eol = ' ' or '\n' or EOF, skip 0x0d), end with '\0'
      pfn = fn;
      ppar = (PCHAR)PARADDR; //(PCHAR)(*(PUINT)CH_ADD);
      //POKE *(PCHAR)(ppar) = (CHAR)0xea; //REM
      //INC ppar;
      readcmd:
        c = (CHAR)readfin();
        IF (c == ' ') goto readcmdq; //read parameters
        IF ((c == '\n') || _waseof) goto readparq; //skip parameters
        IF ((BYTE)c != 0x0d) {
          POKE *(PCHAR)(pfn) = c;
          INC pfn;
        };
        goto readcmd;
      readcmdq:
//read parameters to (CH_ADD), (eol = '\n' or EOF, skip 0x0d), end with 0x0d
      readpar:
        c = (CHAR)readfin();
        IF ((c == '\n') || _waseof) goto readparq;
        IF ((BYTE)c != 0x0d) {
          POKE *(PCHAR)(ppar) = c;
          INC ppar;
        };
        goto readpar;
      readparq:
      POKE *(PCHAR)(pfn) = '\0';
      POKE *(PCHAR)(ppar) = (CHAR)0x0d;
//run command: load file (fn) to RUNADDR
      waswaseof = _waseof;
      IF ((UINT)loadfile(fn, RUNADDR) != 0/**RUNADDR*/) {
        CALL (RUNADDR);
      };
      _waseof = waswaseof;
//next line
    };
    fclose(_fin); //closefin();
  };
}