BASIC Command additions
This commit is contained in:
BIN
docs/Nascom_Basic_Manual.pdf
Normal file
BIN
docs/Nascom_Basic_Manual.pdf
Normal file
Binary file not shown.
Binary file not shown.
@@ -149,6 +149,10 @@ INIT3: ; Setup keyboard buffer control.
|
|||||||
LD A,0FFH
|
LD A,0FFH
|
||||||
LD (SWRK),A
|
LD (SWRK),A
|
||||||
|
|
||||||
|
INITANSI: IF INCLUDE_ANSITERM = 1 ; If the ansi terminal emulator is builtin, enable it as default.
|
||||||
|
LD (ANSIENABLE),A
|
||||||
|
ENDIF
|
||||||
|
|
||||||
; Setup timer interrupts
|
; Setup timer interrupts
|
||||||
LD IX,TIMIN ; Pass the interrupt service handler vector.
|
LD IX,TIMIN ; Pass the interrupt service handler vector.
|
||||||
LD BC,00000H ; Time starts at 00:00:00 01/01/1980 on initialisation.
|
LD BC,00000H ; Time starts at 00:00:00 01/01/1980 on initialisation.
|
||||||
@@ -292,17 +296,29 @@ WORDS: DB 'E'+80H,"ND" ; 0x80
|
|||||||
DB 'C'+80H,"ONT" ; 0x9f
|
DB 'C'+80H,"ONT" ; 0x9f
|
||||||
DB 'L'+80H,"IST" ; 0xa0
|
DB 'L'+80H,"IST" ; 0xa0
|
||||||
DB 'C'+80H,"LEAR" ; 0xa1
|
DB 'C'+80H,"LEAR" ; 0xa1
|
||||||
DB 'C'+80H,"LOAD" ; 0xa2
|
DB 'A'+80H,"NSITERM" ; 0xa2
|
||||||
DB 'C'+80H,"SAVE" ; 0xa3
|
|
||||||
DB 'L'+80H,"OAD" ; 0xa4
|
; Optional commands to be builtin when a tranZPUter board is present.
|
||||||
DB 'S'+80H,"AVE" ; 0xa5
|
OPTIONS0: IF BUILD_TZFS = 1
|
||||||
DB 'F'+80H,"REQ" ; 0xa6
|
DB 'C'+80H,"LOAD" ; 0xa3
|
||||||
DB 'N'+80H,"EW" ; 0xa7 <- Command list terminator word, move to lowest command. Update the ZNEW variable below as well.
|
DB 'C'+80H,"SAVE" ; 0xa4
|
||||||
; <- Reserved space for new commands.
|
DB 'L'+80H,"OAD" ; 0xa5
|
||||||
DB 'R'+80H,"EM" ; 0xa8
|
DB 'S'+80H,"AVE" ; 0xa6
|
||||||
|
DB 'F'+80H,"REQ" ; 0xa7
|
||||||
|
DB 'D'+80H,"IR" ; 0xa8
|
||||||
|
DB 'C'+80H,"D" ; 0xa9
|
||||||
|
ELSE
|
||||||
|
DB 'R'+80H,"EM" ; 0xa3
|
||||||
|
DB 'R'+80H,"EM" ; 0xa4
|
||||||
|
DB 'R'+80H,"EM" ; 0xa5
|
||||||
|
DB 'R'+80H,"EM" ; 0xa6
|
||||||
|
DB 'R'+80H,"EM" ; 0xa7
|
||||||
|
DB 'R'+80H,"EM" ; 0xa8
|
||||||
DB 'R'+80H,"EM" ; 0xa9
|
DB 'R'+80H,"EM" ; 0xa9
|
||||||
DB 'R'+80H,"EM" ; 0xaa
|
ENDIF
|
||||||
DB 'R'+80H,"EM" ; 0xab
|
DB 'N'+80H,"EW" ; 0xaa <- Command list terminator word, move to lowest command. Update the ZNEW variable below as well.
|
||||||
|
; <- Reserved space for new commands.
|
||||||
|
DB 'R'+80H,"EM" ; 0xab
|
||||||
DB 'R'+80H,"EM" ; 0xac
|
DB 'R'+80H,"EM" ; 0xac
|
||||||
DB 'R'+80H,"EM" ; 0xad
|
DB 'R'+80H,"EM" ; 0xad
|
||||||
DB 'R'+80H,"EM" ; 0xae
|
DB 'R'+80H,"EM" ; 0xae
|
||||||
@@ -409,12 +425,26 @@ WORDTB: DW PEND
|
|||||||
DW CONT
|
DW CONT
|
||||||
DW LIST
|
DW LIST
|
||||||
DW CLEAR
|
DW CLEAR
|
||||||
|
DW SETANSITERM ; Enable/disable the ANSI Terminal Emulator.
|
||||||
|
|
||||||
|
; Optional commands to be builtin when a tranZPUter board is present.
|
||||||
|
OPTIONS1: IF BUILD_TZFS = 1
|
||||||
DW CLOAD ; Load tokenised BASIC program.
|
DW CLOAD ; Load tokenised BASIC program.
|
||||||
DW CSAVE ; Save tokenised BASIC program.
|
DW CSAVE ; Save tokenised BASIC program.
|
||||||
DW LOAD ; Load ASCII text BASIC program.
|
DW LOAD ; Load ASCII text BASIC program.
|
||||||
DW SAVE ; Save BASIC as ASCII text.
|
DW SAVE ; Save BASIC as ASCII text.
|
||||||
DW SETFREQ ; Set the CPU Frequency.
|
DW SETFREQ ; Set the CPU Frequency.
|
||||||
|
DW DIRSDCARD ; List out the SD directory.
|
||||||
|
DW SETDIR ; Change directory for all load and save operations.
|
||||||
|
ELSE
|
||||||
|
DW REM
|
||||||
|
DW REM
|
||||||
|
DW REM
|
||||||
|
DW REM
|
||||||
|
DW REM
|
||||||
|
DW REM
|
||||||
DW NEW
|
DW NEW
|
||||||
|
ENDIF
|
||||||
|
|
||||||
; RESERVED WORD TOKEN VALUES
|
; RESERVED WORD TOKEN VALUES
|
||||||
|
|
||||||
@@ -425,8 +455,8 @@ ZGOTO EQU 088H ; GOTO
|
|||||||
ZGOSUB EQU 08CH ; GOSUB
|
ZGOSUB EQU 08CH ; GOSUB
|
||||||
ZREM EQU 08EH ; REM
|
ZREM EQU 08EH ; REM
|
||||||
ZPRINT EQU 09EH ; PRINT
|
ZPRINT EQU 09EH ; PRINT
|
||||||
ZNEW EQU 0A7H ; NEW - ZNEW marks the end of the table
|
ZNEW EQU 0AAH ; NEW - ZNEW marks the end of the table
|
||||||
; A8..BF are reserved for future commands.
|
; AA..BF are reserved for future commands.
|
||||||
|
|
||||||
; Space for expansion, a block of tokens for commands has been created from 0xA5 to 0xBF.
|
; Space for expansion, a block of tokens for commands has been created from 0xA5 to 0xBF.
|
||||||
|
|
||||||
@@ -523,6 +553,8 @@ ERRORS: DB "NF" ; NEXT without FOR
|
|||||||
DB "MO" ; Missing operand
|
DB "MO" ; Missing operand
|
||||||
DB "HX" ; HEX error
|
DB "HX" ; HEX error
|
||||||
DB "BN" ; BIN error
|
DB "BN" ; BIN error
|
||||||
|
DB "BV" ; Bad Value
|
||||||
|
DB "IO" ; IO error
|
||||||
|
|
||||||
; INITIALISATION TABLE -------------------------------------------------------
|
; INITIALISATION TABLE -------------------------------------------------------
|
||||||
|
|
||||||
@@ -559,7 +591,7 @@ INITAB: JP WARMST ; Warm start jump
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
DB 1 ; POS (x) number (1)
|
DB 1 ; POS (x) number (1)
|
||||||
DB 80 ; Terminal width (47)
|
DB COLW ; Terminal width
|
||||||
DB 28 ; Width for commas (3 columns)
|
DB 28 ; Width for commas (3 columns)
|
||||||
DB 0 ; No nulls after input bytes
|
DB 0 ; No nulls after input bytes
|
||||||
DB 0 ; Output enabled (^O off)
|
DB 0 ; Output enabled (^O off)
|
||||||
@@ -582,7 +614,7 @@ INITAB: JP WARMST ; Warm start jump
|
|||||||
DW STLOOK ; Temp string space
|
DW STLOOK ; Temp string space
|
||||||
DW -2 ; Current line number (cold)
|
DW -2 ; Current line number (cold)
|
||||||
DW PROGST+1 ; Start of program text
|
DW PROGST+1 ; Start of program text
|
||||||
INITBE: ; END OF INITIALISATION TABLE
|
INITBE: ; END OF INITIALISATION TABLE
|
||||||
|
|
||||||
; END OF INITIALISATION TABLE ---------------------------------------------------
|
; END OF INITIALISATION TABLE ---------------------------------------------------
|
||||||
|
|
||||||
@@ -1090,13 +1122,18 @@ OUTC: PUSH AF ; Save character
|
|||||||
CALL Z,PRNTCRLF ; Yes - output CRLF
|
CALL Z,PRNTCRLF ; Yes - output CRLF
|
||||||
INCLEN: INC A ; Move on one character
|
INCLEN: INC A ; Move on one character
|
||||||
LD (CURPOS),A ; Save new position
|
LD (CURPOS),A ; Save new position
|
||||||
DINPOS: POP AF ; Restore character
|
DINPOS: IF INCLUDE_ANSITERM = 1
|
||||||
|
LD A,(ANSIENABLE)
|
||||||
|
OR A
|
||||||
|
JR Z,NOANSI
|
||||||
|
POP AF ; Restore character
|
||||||
POP BC ; Restore buffer length
|
POP BC ; Restore buffer length
|
||||||
ANSIINC: IF INCLUDE_ANSITERM = 1
|
|
||||||
CALL ANSITERM ; Send it via the Ansi processor.
|
CALL ANSITERM ; Send it via the Ansi processor.
|
||||||
ELSE
|
RET
|
||||||
CALL PRNT ; Send it .
|
|
||||||
ENDIF
|
ENDIF
|
||||||
|
NOANSI: POP AF ; Restore character
|
||||||
|
POP BC ; Restore buffer length
|
||||||
|
CALL PRNT ; Send it .
|
||||||
RET
|
RET
|
||||||
|
|
||||||
CLOTST: CALL GETKY ; Get input character
|
CLOTST: CALL GETKY ; Get input character
|
||||||
@@ -4427,6 +4464,17 @@ TSTBIT: PUSH AF ; Save bit mask
|
|||||||
OUTNCR: CALL OUTC ; Output character in A
|
OUTNCR: CALL OUTC ; Output character in A
|
||||||
JP PRNTCRLF ; Output CRLF
|
JP PRNTCRLF ; Output CRLF
|
||||||
|
|
||||||
|
; Command to enable/disable the ANSI Terminal emulator.
|
||||||
|
SETANSITERM:CALL GETINT
|
||||||
|
CP 2 ; Can only have 0 or 1.
|
||||||
|
JR NC,SETANSIERR
|
||||||
|
LD (ANSIENABLE),A ; Update the flag.
|
||||||
|
RET
|
||||||
|
SETANSIERR: LD E,BV ; ?BV Error
|
||||||
|
JP BERROR ; Yes - output "?BV Error"
|
||||||
|
|
||||||
|
|
||||||
|
OPTIONS2: IF BUILD_TZFS = 1
|
||||||
|
|
||||||
; Method to load BASIC text program.
|
; Method to load BASIC text program.
|
||||||
LOAD: LD A,TAPELOAD ; Set the type of operation into the flag var.
|
LOAD: LD A,TAPELOAD ; Set the type of operation into the flag var.
|
||||||
@@ -4908,6 +4956,235 @@ SETFREQERR: LD HL,FREQERR
|
|||||||
JR SDERR
|
JR SDERR
|
||||||
|
|
||||||
|
|
||||||
|
; Method to get a string parameter and copy it into the provided buffer.
|
||||||
|
;
|
||||||
|
; Inputs:
|
||||||
|
; HL = Pointer to input line from BASIC.
|
||||||
|
; DE = Pointer to Destination buffer.
|
||||||
|
; B = Max number of characters to read.
|
||||||
|
; Outputs:
|
||||||
|
; DE and HL point to end of buffer and input line resepectively.
|
||||||
|
; B = Characters copied (ie. B - input B = no characters).
|
||||||
|
;
|
||||||
|
GETSTRING: LD A,(HL) ; Skip white space before copy.
|
||||||
|
CP ' '
|
||||||
|
JR NC, GETSTR2
|
||||||
|
CP 00DH
|
||||||
|
JR GETSTR4 ; No directory means use the I/O set default.
|
||||||
|
INC DE
|
||||||
|
JR GETSTRING
|
||||||
|
GETSTR1: LD (DE),A ; Copy the name entered by user. Validation is done on the I/O processor, bad directory name will result in error next read/write.
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
LD A,(HL) ; Get next char and check it isnt CR, end of input line character.
|
||||||
|
GETSTR2: CP 00DH
|
||||||
|
JR Z,GETSTR4 ; Finished if we encounter CR.
|
||||||
|
CP ZTIMES
|
||||||
|
JR NZ,GETSTR3
|
||||||
|
LD A, '*' ; BASIC has already tokenised the line so revert.
|
||||||
|
GETSTR3: DJNZ GETSTR1 ; Loop until buffer is full, ignore characters beyond buffer limit.
|
||||||
|
GETSTR4: XOR A ; Place end of buffer terminator as I/O processor uses C strings.
|
||||||
|
LD (DE),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
; Method to set the file search wildcard prior to requesting a directory listing. The I/O processor applies this filter only returning directories
|
||||||
|
; which match the wildcard, ie. A* returns directories starting A...
|
||||||
|
;
|
||||||
|
; Inputs:
|
||||||
|
; HL = Pointer to BASIC input line/
|
||||||
|
;
|
||||||
|
; HL and B are not preserved.
|
||||||
|
|
||||||
|
SETWILDCARD:LD DE, TZSVCWILDC ; Location of the wildcard filter in the service record.
|
||||||
|
LD B, TZSVCWILDSZ-1
|
||||||
|
CALL GETSTRING ; Copy the string into the service record.
|
||||||
|
RET
|
||||||
|
|
||||||
|
; Command to set the current working directory on the SD card.
|
||||||
|
SETDIR: LD DE, TZSVC_DIRNAME ; Location of directory name in the service record.
|
||||||
|
LD B, TZSVCDIRSZ-1
|
||||||
|
CALL GETSTRING ; Copy the string into the service record.
|
||||||
|
RET
|
||||||
|
|
||||||
|
; Method to print out the filename within an SD Card header.
|
||||||
|
; The name may not be terminated as the full 17 chars are used, so this needs
|
||||||
|
; to be checked.
|
||||||
|
;
|
||||||
|
; Input: DE = Address of filename.
|
||||||
|
;
|
||||||
|
PRTFN: PUSH BC
|
||||||
|
LD B,TZSVCLONGFILESZ ; Maximum size of filename.
|
||||||
|
PRTMSG: LD A,(DE)
|
||||||
|
INC DE
|
||||||
|
CP 000H ; If there is a valid terminator, exit.
|
||||||
|
JR Z,PRTMSGE
|
||||||
|
CP 00DH
|
||||||
|
JR Z,PRTMSGE
|
||||||
|
CALL OUTC
|
||||||
|
DJNZ PRTMSG ; Else print until 17 chars have been processed.
|
||||||
|
CALL PRNTCRLF
|
||||||
|
PRTMSGE: POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; Method to print out an SDC directory entry name.
|
||||||
|
;
|
||||||
|
; Input: HL = Address of filename.
|
||||||
|
;
|
||||||
|
PRTDIR: PUSH BC
|
||||||
|
PUSH DE
|
||||||
|
PUSH HL
|
||||||
|
;
|
||||||
|
LD A,(LWIDTH) ; At the moment only cater for 40/80 columns.
|
||||||
|
CP COLW
|
||||||
|
LD H,47
|
||||||
|
JR NZ,PRTDIR0
|
||||||
|
LD H,93
|
||||||
|
PRTDIR0: LD A,(LINECNT) ; Pause if we fill the screen.
|
||||||
|
LD E,A
|
||||||
|
INC E
|
||||||
|
CP H
|
||||||
|
JR NZ,PRTNOWAIT
|
||||||
|
LD E, 0
|
||||||
|
PRTDIRWAIT: CALL GETKY
|
||||||
|
CP ' '
|
||||||
|
JR Z,PRTNOWAIT
|
||||||
|
CP 'X' ; Exit from listing.
|
||||||
|
LD A,001H
|
||||||
|
JR Z,PRTDIR4
|
||||||
|
JR PRTDIRWAIT
|
||||||
|
PRTNOWAIT: LD A,E
|
||||||
|
LD (LINECNT),A
|
||||||
|
POP DE
|
||||||
|
PUSH DE ; Get pointer to the file name and print.
|
||||||
|
CALL PRTFN ; Print out the filename.
|
||||||
|
LD HL, (DSPXY)
|
||||||
|
LD A,L
|
||||||
|
CP 20
|
||||||
|
LD A,20
|
||||||
|
JR C, PRTDIR2
|
||||||
|
LD A,(LWIDTH) ; 40 Char mode? 2 columns of filenames displayed so NL.
|
||||||
|
CP 0
|
||||||
|
JR Z,PRTDIR1
|
||||||
|
LD A,L ; 80 Char mode we print 4 columns of filenames.
|
||||||
|
CP 40
|
||||||
|
LD A,40
|
||||||
|
JR C, PRTDIR2
|
||||||
|
LD A,L
|
||||||
|
CP 60
|
||||||
|
LD A,60
|
||||||
|
JR C, PRTDIR2
|
||||||
|
;
|
||||||
|
PRTDIR1: CALL PRNTCRLF
|
||||||
|
JR PRTDIR3
|
||||||
|
PRTDIR2: LD L,A
|
||||||
|
LD (DSPXY),HL
|
||||||
|
PRTDIR3: XOR A
|
||||||
|
PRTDIR4: OR A
|
||||||
|
POP HL
|
||||||
|
POP DE
|
||||||
|
POP BC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; Method to request a sector full of directory entries from the I/O processor.
|
||||||
|
;
|
||||||
|
; Inputs:
|
||||||
|
; A = Director Sector number to request (set of directory entries in 512byte blocks).
|
||||||
|
; Outputs:
|
||||||
|
; A = 0 - success, directory sector filled.
|
||||||
|
; A = 255 - I/O Error.
|
||||||
|
; A > 1 - Result from I/O processor, which is normally the error code.
|
||||||
|
;
|
||||||
|
SVC_GETDIR: PUSH AF
|
||||||
|
LD A, TZSVC_FTYPE_ALLFMT ; Setup the filetype so we retrieve all entries in the current directory.
|
||||||
|
LD (TZSVC_FILE_TYPE),A
|
||||||
|
POP AF
|
||||||
|
LD (TZSVCDIRSEC),A ; Save the sector number into the service structure.
|
||||||
|
OR A ; Sector is 0 then setup for initial read.
|
||||||
|
LD A, TZSVC_CMD_READDIR ; Readdir command opens the directory. The default directory and wildcard have either been placed in the
|
||||||
|
JR Z,SVC_GETD1 ; buffer by earlier commands or will be defaulted by the I/O processor.
|
||||||
|
LD A, TZSVC_CMD_NEXTDIR ; Request the next directory sector. The I/O processor either gets the next block or uses the TZSVCDIRSEC value.
|
||||||
|
SVC_GETD1: CALL SVC_CMD ; And make communications wit the I/O processor, returning with the required record.
|
||||||
|
OR A
|
||||||
|
LD A,255 ; Report I/O error as 255.
|
||||||
|
RET NZ
|
||||||
|
LD A,(TZSVCRESULT)
|
||||||
|
RET ; Return status to caller, 0 = success.
|
||||||
|
|
||||||
|
; Method to get an SD Directory entry.
|
||||||
|
; The I/O processor communications structure uses a 512 byte sector to pass SD data. A sector is cached and each call evaluates if the required request is in cache, if it is not,
|
||||||
|
; a new sector is read.
|
||||||
|
;
|
||||||
|
; Input: D = Directory entry number to retrieve.
|
||||||
|
; Output: HL = Address of directory entry.
|
||||||
|
; A = 0, no errors, A > 1 error.
|
||||||
|
GETSDDIRENT:PUSH BC
|
||||||
|
PUSH DE;
|
||||||
|
;
|
||||||
|
LD A,D
|
||||||
|
SRL A
|
||||||
|
SRL A
|
||||||
|
SRL A
|
||||||
|
SRL A ; Divide by 16 to get sector number.
|
||||||
|
LD C,A
|
||||||
|
LD A,(TZSVCDIRSEC) ; Do we have this sector in the buffer? If we do, use it.
|
||||||
|
CP C
|
||||||
|
JR Z,GETDIRSD0
|
||||||
|
LD A,C ; Retrieve the directory sector we need.
|
||||||
|
CALL SVC_GETDIR ; Read a sector full of directory entries..
|
||||||
|
OR A
|
||||||
|
JR NZ,DIRSDERR
|
||||||
|
;
|
||||||
|
GETDIRSD0: POP DE
|
||||||
|
PUSH DE
|
||||||
|
LD A,D ; Retrieve the directory entry number required.
|
||||||
|
AND 00FH
|
||||||
|
LD HL,TZSVCSECTOR
|
||||||
|
JR Z,GETDIRSD2
|
||||||
|
LD B,A
|
||||||
|
LD DE,TZSVCDIR_ENTSZ ; Directory entry size
|
||||||
|
GETDIRSD1: ADD HL,DE ; Directory entry address into HL.
|
||||||
|
DJNZ GETDIRSD1
|
||||||
|
GETDIRSD2: POP DE
|
||||||
|
POP BC
|
||||||
|
XOR A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
DIRSDERR: POP DE ; Clean up stack.
|
||||||
|
POP BC
|
||||||
|
LD E,IO ; ?IO Error
|
||||||
|
JP BERROR ; Yes - output "?IO Error"
|
||||||
|
|
||||||
|
|
||||||
|
; Method to list the directory of the SD Card.
|
||||||
|
;
|
||||||
|
; This method obtains a directory listing, either the default or from the search path given and lists it out.
|
||||||
|
; No inputs or outputs.
|
||||||
|
;
|
||||||
|
DIRSDCARD: CALL SETWILDCARD ; Setup any wildcard filter prior to processing.
|
||||||
|
PUSH HL
|
||||||
|
LD A,1 ; Setup screen for printing, account for the title line. LINECNT is used for page pause.
|
||||||
|
LD (LINECNT),A
|
||||||
|
LD A,0FFH
|
||||||
|
LD (TZSVCDIRSEC),A ; Reset the sector buffer in memory indicator, using 0xFF will force a reread..
|
||||||
|
;
|
||||||
|
DIRSD0: LD D,0 ; Directory entry number
|
||||||
|
LD B,0
|
||||||
|
DIRSD1: CALL GETSDDIRENT ; Get SD Directory entry details for directory entry number stored in D.
|
||||||
|
JR NZ,DIRSD4
|
||||||
|
DIRSD2: LD A,(HL)
|
||||||
|
INC HL
|
||||||
|
OR A
|
||||||
|
JR Z,DIRSD4
|
||||||
|
CALL PRTDIR ; Valid entry so print directory number and name pointed to by HL.
|
||||||
|
JR NZ,DIRSD4
|
||||||
|
DIRSD3: INC D ; Onto next directory entry number.
|
||||||
|
DJNZ DIRSD1
|
||||||
|
DIRSD4: POP HL
|
||||||
|
RET
|
||||||
|
|
||||||
|
ENDIF ; End of optional commands for use when a tranZPUter board is present.
|
||||||
|
|
||||||
|
|
||||||
MONITR:
|
MONITR:
|
||||||
MONITR2 IF BUILD_TZFS = 1
|
MONITR2 IF BUILD_TZFS = 1
|
||||||
; Switch memory back to TZFS mode.
|
; Switch memory back to TZFS mode.
|
||||||
@@ -7562,6 +7839,7 @@ READER: DB "File read error!", C
|
|||||||
FREQERR: DB "Failed to change frequency!", CR, NUL
|
FREQERR: DB "Failed to change frequency!", CR, NUL
|
||||||
FREQSET: DB " KHz set.", CR, LF, NUL
|
FREQSET: DB " KHz set.", CR, LF, NUL
|
||||||
FREQDEF: DB "Set to default.", CR, LF, NUL
|
FREQDEF: DB "Set to default.", CR, LF, NUL
|
||||||
|
ANSIERR: DB "Bad valueIlleFailed to change frequency!", CR, NUL
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; END OF STATIC LOOKUP TABLES AND CONSTANTS
|
; END OF STATIC LOOKUP TABLES AND CONSTANTS
|
||||||
@@ -7817,6 +8095,9 @@ DSPXYADDR: DS virtual 2 ; Addre
|
|||||||
|
|
||||||
FLASHCTL: DS virtual 1 ; CURSOR FLASH CONTROL. BIT 0 = Cursor On/Off, BIT 1 = Cursor displayed.
|
FLASHCTL: DS virtual 1 ; CURSOR FLASH CONTROL. BIT 0 = Cursor On/Off, BIT 1 = Cursor displayed.
|
||||||
TIMESEC: DS virtual 6 ; RTC 48bit TIME IN MILLISECONDS
|
TIMESEC: DS virtual 6 ; RTC 48bit TIME IN MILLISECONDS
|
||||||
|
LINECNT: DS virtual 2 ; Counter for displayed lines.
|
||||||
|
|
||||||
|
ANSIENABLE: DS virtual 1 ; Ansi Terminal flag.
|
||||||
;
|
;
|
||||||
TPFLAG DS virtual 1
|
TPFLAG DS virtual 1
|
||||||
SECTPOS DS virtual 2
|
SECTPOS DS virtual 2
|
||||||
|
|||||||
@@ -89,6 +89,8 @@ UF EQU 22H ; UnDEF
|
|||||||
MO EQU 24H ; Missing operand
|
MO EQU 24H ; Missing operand
|
||||||
HX EQU 26H ; HEX error
|
HX EQU 26H ; HEX error
|
||||||
BN EQU 28H ; BIN error
|
BN EQU 28H ; BIN error
|
||||||
|
BV EQU 2AH ; Bad Value error
|
||||||
|
IO EQU 2CH ; IO error
|
||||||
|
|
||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
; Memory mapped ports in hardware.
|
; Memory mapped ports in hardware.
|
||||||
@@ -248,6 +250,8 @@ TZSVCMEM: EQU 0FD80H ; Start
|
|||||||
TZSVCSIZE: EQU 00280H ;
|
TZSVCSIZE: EQU 00280H ;
|
||||||
TZSVCDIRSZ: EQU 20 ; Size of the directory/file name.
|
TZSVCDIRSZ: EQU 20 ; Size of the directory/file name.
|
||||||
TZSVCFILESZ: EQU 17 ; Size of a Sharp filename.
|
TZSVCFILESZ: EQU 17 ; Size of a Sharp filename.
|
||||||
|
TZSVCLONGFILESZ: EQU 31 ; Size of a standard filename.
|
||||||
|
TZSVCLONGFMTSZ: EQU 20 ; Size of a formatted standard filename for use in directory listings.
|
||||||
TZSVCWILDSZ: EQU 20 ; Size of the wildcard.
|
TZSVCWILDSZ: EQU 20 ; Size of the wildcard.
|
||||||
TZSVCSECSIZE: EQU 512
|
TZSVCSECSIZE: EQU 512
|
||||||
TZSVCDIR_ENTSZ: EQU 32 ; Size of a directory entry.
|
TZSVCDIR_ENTSZ: EQU 32 ; Size of a directory entry.
|
||||||
@@ -256,6 +260,8 @@ TZSVCWAITCOUNT: EQU 65535 ; Wait
|
|||||||
TZSVC_FTYPE_MZF: EQU 0 ; File type being handled is an MZF
|
TZSVC_FTYPE_MZF: EQU 0 ; File type being handled is an MZF
|
||||||
TZSVC_FTYPE_CAS: EQU 1 ; File type being handled is an CASsette BASIC script.
|
TZSVC_FTYPE_CAS: EQU 1 ; File type being handled is an CASsette BASIC script.
|
||||||
TZSVC_FTYPE_BAS: EQU 2 ; File type being handled is an BASic script
|
TZSVC_FTYPE_BAS: EQU 2 ; File type being handled is an BASic script
|
||||||
|
TZSVC_FTYPE_ALL: EQU 10 ; Handle any filetype.
|
||||||
|
TZSVC_FTYPE_ALLFMT: EQU 11 ; Special case for directory listings, all files but truncated and formatted.
|
||||||
TZSVCCMD: DS virtual 1 ; Service command.
|
TZSVCCMD: DS virtual 1 ; Service command.
|
||||||
TZSVCRESULT: DS virtual 1 ; Service command result.
|
TZSVCRESULT: DS virtual 1 ; Service command result.
|
||||||
TZSVCDIRSEC: DS virtual 1 ; Storage for the directory sector number.
|
TZSVCDIRSEC: DS virtual 1 ; Storage for the directory sector number.
|
||||||
|
|||||||
@@ -300,6 +300,8 @@ TZSVCMEM: EQU 0F560H ; Start
|
|||||||
TZSVCSIZE: EQU 00280H ;
|
TZSVCSIZE: EQU 00280H ;
|
||||||
TZSVCDIRSZ: EQU 20 ; Size of the directory/file name.
|
TZSVCDIRSZ: EQU 20 ; Size of the directory/file name.
|
||||||
TZSVCFILESZ: EQU 17 ; Size of a Sharp filename.
|
TZSVCFILESZ: EQU 17 ; Size of a Sharp filename.
|
||||||
|
TZSVCLONGFILESZ: EQU 31 ; Size of a standard filename.
|
||||||
|
TZSVCLONGFMTSZ: EQU 20 ; Size of a formatted standard filename for use in directory listings.
|
||||||
TZSVCWILDSZ: EQU 20 ; Size of the wildcard.
|
TZSVCWILDSZ: EQU 20 ; Size of the wildcard.
|
||||||
TZSVCSECSIZE: EQU 512
|
TZSVCSECSIZE: EQU 512
|
||||||
TZSVCDIR_ENTSZ: EQU 32 ; Size of a directory entry.
|
TZSVCDIR_ENTSZ: EQU 32 ; Size of a directory entry.
|
||||||
@@ -308,6 +310,8 @@ TZSVCWAITCOUNT: EQU 65535 ; Wait
|
|||||||
TZSVC_FTYPE_MZF: EQU 0 ; File type being handled is an MZF
|
TZSVC_FTYPE_MZF: EQU 0 ; File type being handled is an MZF
|
||||||
TZSVC_FTYPE_CAS: EQU 1 ; File type being handled is an CASsette BASIC script.
|
TZSVC_FTYPE_CAS: EQU 1 ; File type being handled is an CASsette BASIC script.
|
||||||
TZSVC_FTYPE_BAS: EQU 2 ; File type being handled is an BASic script
|
TZSVC_FTYPE_BAS: EQU 2 ; File type being handled is an BASic script
|
||||||
|
TZSVC_FTYPE_ALL: EQU 10 ; Handle any filetype.
|
||||||
|
TZSVC_FTYPE_ALLFMT: EQU 11 ; Special case for directory listings, all files but truncated and formatted.
|
||||||
|
|
||||||
TZSVC_CMD_READDIR: EQU 01H ; Service command to open a directory and return the first block of entries.
|
TZSVC_CMD_READDIR: EQU 01H ; Service command to open a directory and return the first block of entries.
|
||||||
TZSVC_CMD_NEXTDIR: EQU 02H ; Service command to return the next block of an open directory.
|
TZSVC_CMD_NEXTDIR: EQU 02H ; Service command to return the next block of an open directory.
|
||||||
|
|||||||
@@ -352,6 +352,8 @@ TZSVCMEM: EQU 0ED80H ; Start
|
|||||||
TZSVCSIZE: EQU 00280H ;
|
TZSVCSIZE: EQU 00280H ;
|
||||||
TZSVCDIRSZ: EQU 20 ; Size of the directory/file name.
|
TZSVCDIRSZ: EQU 20 ; Size of the directory/file name.
|
||||||
TZSVCFILESZ: EQU 17 ; Size of a Sharp filename.
|
TZSVCFILESZ: EQU 17 ; Size of a Sharp filename.
|
||||||
|
TZSVCLONGFILESZ: EQU 31 ; Size of a standard filename.
|
||||||
|
TZSVCLONGFMTSZ: EQU 20 ; Size of a formatted standard filename for use in directory listings.
|
||||||
TZSVCWILDSZ: EQU 20 ; Size of the wildcard.
|
TZSVCWILDSZ: EQU 20 ; Size of the wildcard.
|
||||||
TZSVCSECSIZE: EQU 512
|
TZSVCSECSIZE: EQU 512
|
||||||
TZSVCDIR_ENTSZ: EQU 32 ; Size of a directory entry.
|
TZSVCDIR_ENTSZ: EQU 32 ; Size of a directory entry.
|
||||||
@@ -360,6 +362,8 @@ TZSVCWAITCOUNT: EQU 65535 ; Wait
|
|||||||
TZSVC_FTYPE_MZF: EQU 0 ; File type being handled is an MZF
|
TZSVC_FTYPE_MZF: EQU 0 ; File type being handled is an MZF
|
||||||
TZSVC_FTYPE_CAS: EQU 1 ; File type being handled is an CASsette BASIC script.
|
TZSVC_FTYPE_CAS: EQU 1 ; File type being handled is an CASsette BASIC script.
|
||||||
TZSVC_FTYPE_BAS: EQU 2 ; File type being handled is an BASic script
|
TZSVC_FTYPE_BAS: EQU 2 ; File type being handled is an BASic script
|
||||||
|
TZSVC_FTYPE_ALL: EQU 10 ; Handle any filetype.
|
||||||
|
TZSVC_FTYPE_ALLFMT: EQU 11 ; Special case for directory listings, all files but truncated and formatted.
|
||||||
TZSVCCMD: DS virtual 1 ; Service command.
|
TZSVCCMD: DS virtual 1 ; Service command.
|
||||||
TZSVCRESULT: DS virtual 1 ; Service command result.
|
TZSVCRESULT: DS virtual 1 ; Service command result.
|
||||||
TZSVCDIRSEC: DS virtual 1 ; Storage for the directory sector number.
|
TZSVCDIRSEC: DS virtual 1 ; Storage for the directory sector number.
|
||||||
|
|||||||
@@ -1370,7 +1370,7 @@ CDEF: POP DE
|
|||||||
LD (HL),07BH
|
LD (HL),07BH
|
||||||
INC HL
|
INC HL
|
||||||
|
|
||||||
L0336H: PUSH AF
|
L0336H: PUSH AF
|
||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH DE
|
PUSH DE
|
||||||
PUSH HL
|
PUSH HL
|
||||||
@@ -1587,7 +1587,7 @@ DIRSDERR: EX DE,HL ; Print
|
|||||||
PUSH HL
|
PUSH HL
|
||||||
POP BC ; HL to BC as the call requires the value to be displayed in BC.
|
POP BC ; HL to BC as the call requires the value to be displayed in BC.
|
||||||
LD DE,MSGSDRERR
|
LD DE,MSGSDRERR
|
||||||
CALL ?PRINTMSG ; Print out the filename.
|
CALL ?PRINTMSG ; Print out the filename.
|
||||||
POP DE
|
POP DE
|
||||||
POP BC
|
POP BC
|
||||||
LD A,1
|
LD A,1
|
||||||
|
|||||||
Reference in New Issue
Block a user