V0.1.0
added so many new things making a release new commands new interface!
This commit is contained in:
parent
de6092bb9e
commit
c127c5eb81
|
|
@ -0,0 +1 @@
|
||||||
|
*.swp
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Contributing
|
||||||
|
Before you fork and change anything, please read this file!
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
This project *may* contain some conventions not found in other simalar projects. The main code styles and locations of use are listed below.
|
||||||
|
|
||||||
|
### Universal
|
||||||
|
* Indents
|
||||||
|
Indents are inportant to keep code readable. The superior indent character is space, so. You should indent when:
|
||||||
|
* Pushing to stack (unindent when poping)
|
||||||
|
* ex instruction (only when the ex is temporary and reversed)
|
||||||
|
* Loops
|
||||||
|
* Routines
|
||||||
|
* Routines should have the following header:
|
||||||
|
```asm
|
||||||
|
;;name
|
||||||
|
;;Discription
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: purpose
|
||||||
|
;;Outputs:
|
||||||
|
;; HL: ...
|
||||||
|
```
|
||||||
|
* Inputs/Outputs only if needed.
|
||||||
|
* Labels
|
||||||
|
* Name of routine must be lowercase
|
||||||
|
* Name of routine must have prefix of file name
|
||||||
|
* If there are lables in a routine:
|
||||||
|
* label must be name of routine + Suffix (capitalized):
|
||||||
|
`fileroutineSuffix`
|
||||||
|
* Keep to `jr` in routines (unless impossible)
|
||||||
|
* All routines MUST ret at the end (no jp)
|
||||||
|
* Routines MUST preserve all registers (except outputs)
|
||||||
|
* A routine's instructions should be lowercase
|
||||||
|
|
||||||
|
### FSHa.asm
|
||||||
|
* All instructions/registers/directives are UPPERCASE (strings are fine)
|
||||||
|
* High level view
|
||||||
|
* Only ld, calls, jmps (no routines/macros)
|
||||||
|
* Keep it readable
|
||||||
|
|
||||||
|
### Command Files
|
||||||
|
* Name of file is UPPERCASE
|
||||||
|
* Inctructions are lowercase
|
||||||
|
* The layout of the file must be as follows:
|
||||||
|
```asm
|
||||||
|
<nameofmodule>cmd<COMMAND>: .db "<COMMAND>", 0
|
||||||
|
<nameofmodule>cmd<COMMAND>o: .db $<optcode>
|
||||||
|
<nameofmodule>cmd<COMMAND>u: .db "<Discription>", 0
|
||||||
|
<nameofmodule>cmd<COMMAND>f:
|
||||||
|
<Command code to execute>
|
||||||
|
jp Fin
|
||||||
|
```
|
||||||
|
* Registers CAN be destroyed during execution of command's code
|
||||||
31
FSHa.asm
31
FSHa.asm
|
|
@ -1,5 +1,6 @@
|
||||||
#include "includes/ti84pce.inc"
|
#include "includes/static/ti84pce.inc"
|
||||||
#include "includes/define.inc"
|
#include "includes/static/define.inc"
|
||||||
|
#include "includes/macros/macros.inc"
|
||||||
|
|
||||||
.assume ADL=1
|
.assume ADL=1
|
||||||
.org userMem-2
|
.org userMem-2
|
||||||
|
|
@ -12,9 +13,14 @@ Setup:
|
||||||
CALL _homeup
|
CALL _homeup
|
||||||
CALL _ClrLCDFull
|
CALL _ClrLCDFull
|
||||||
|
|
||||||
|
CALL drawstatusbar
|
||||||
|
|
||||||
CALL fshvarreset
|
CALL fshvarreset
|
||||||
|
|
||||||
|
CALL printmotd
|
||||||
|
|
||||||
Input:
|
Input:
|
||||||
|
;; TODO: Update status bar sometimes
|
||||||
LD A, $00
|
LD A, $00
|
||||||
CALL commandfill
|
CALL commandfill
|
||||||
|
|
||||||
|
|
@ -25,6 +31,9 @@ Input:
|
||||||
LD DE, FshCmdInptSize
|
LD DE, FshCmdInptSize
|
||||||
CALL inputstr
|
CALL inputstr
|
||||||
|
|
||||||
|
LD HL, FshCmd
|
||||||
|
CALL fshparsecommand
|
||||||
|
|
||||||
CALL _NewLine
|
CALL _NewLine
|
||||||
|
|
||||||
Decode:
|
Decode:
|
||||||
|
|
@ -45,28 +54,24 @@ Err:
|
||||||
Cleanup:
|
Cleanup:
|
||||||
SET graphdraw,(IY+graphflags)
|
SET graphdraw,(IY+graphflags)
|
||||||
CALL _ClrLCDFull
|
CALL _ClrLCDFull
|
||||||
|
CALL _ClrTxtShdw
|
||||||
|
CALL _homeup
|
||||||
|
call _DrawStatusBar
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
RES donePrgm,(iy+doneFlags)
|
RES donePrgm,(iy+doneFlags)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
PS1: .DB "FSH> ",0
|
#include "includes/Text.inc"
|
||||||
FshFlags: .DB %00000000
|
FshFlags: .DB %00000000
|
||||||
; 0: Debug Flag
|
; 0: Debug Flag
|
||||||
; 1: Error Flag
|
; 1: Error Flag
|
||||||
; 2: Program Flag
|
; 2: Program Flag
|
||||||
|
|
||||||
#include "includes/Math.asm"
|
#include "includes/lib/std/std.inc"
|
||||||
#include "includes/Byte.asm"
|
#include "includes/lib/fsh/fsh.inc"
|
||||||
#include "includes/Char.asm"
|
|
||||||
#include "includes/Cursor.asm"
|
|
||||||
#include "includes/Print.asm"
|
|
||||||
|
|
||||||
|
#include "includes/man-db.asm"
|
||||||
#include "includes/Command.asm"
|
#include "includes/Command.asm"
|
||||||
#include "includes/Err.asm"
|
|
||||||
#include "includes/String.asm"
|
|
||||||
|
|
||||||
#include "includes/FshVar.asm"
|
|
||||||
|
|
||||||
#include "includes/Input.asm"
|
|
||||||
.end
|
.end
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Fsh SHell
|
||||||
|
Fsh SHell is a compact command-line interface for TI-84 Plus CE calculators.
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
* Windows
|
||||||
|
1. Download and install a linking program. <https://education.ti.com/ticonnectce> is ti's prepritory software.
|
||||||
|
2. Plug in calculator and launch ti connect ce
|
||||||
|
3. Drag and drop `bin\FSHa.8xp` to calculator
|
||||||
|
4. Done!
|
||||||
|
* Linux
|
||||||
|
1. Install TiLP
|
||||||
|
2. Plug in Calculator and launch TiLP
|
||||||
|
3. Send over `bin/FSHa.8xp`
|
||||||
|
|
||||||
|
## Running
|
||||||
|
For most people all that is required is to press <kbd>2nd</kbd>+<kbd>0</kbd> and select the Asm( option. Then, press <kbd>Prgm</kbd> and select FSHA. you should now have the following: `Asm(PrgmFSHA` Press <kbd>Enter</kbd>
|
||||||
|
|
||||||
|
For TIOS 5.3+
|
||||||
|
Press <kbd>Prgm</kbd> and select FSHA. you should now have the following: `PrgmFSHA` Press <kbd>Enter</kbd>
|
||||||
|
|
||||||
|
## Building From Source
|
||||||
|
* Linux
|
||||||
|
1. Clone, make, and install spasm-ng <https://github.com/alberthdev/spasm-ng>
|
||||||
|
2. Run the `build` script
|
||||||
|
```
|
||||||
|
./build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
Please see `CONTRIBUTING.md`
|
||||||
|
|
||||||
|
## Bug Reports
|
||||||
|
If you find an Issue or Bug, please let me know by making an Issue on Gitlab: <https://gitlab.com/stephentoth/fsh-shell>
|
||||||
|
Please include:
|
||||||
|
1. What went wrong.
|
||||||
|
2. What you were doing when the issue occurred.
|
||||||
|
3. Possible cause/fixes? (optional)
|
||||||
|
|
||||||
|
Thank you!
|
||||||
BIN
bin/FSHa.8xp
BIN
bin/FSHa.8xp
Binary file not shown.
2
build
2
build
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
date
|
date
|
||||||
spasm -ET "FSHa.asm" "bin/FSHa.8xp"
|
spasm -ETA "FSHa.asm" "bin/FSHa.8xp"
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
;; bytecmp [Bytes]
|
|
||||||
;; Determines if two bytes are equal.
|
|
||||||
;; Inputs:
|
|
||||||
;; HL: Byte pointer
|
|
||||||
;; DE: Byte pointer
|
|
||||||
;; Outputs:
|
|
||||||
;; Z: Set if equal, reset if not equal
|
|
||||||
bytecmp:
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld a, (de)
|
|
||||||
or a
|
|
||||||
cp (hl)
|
|
||||||
pop de
|
|
||||||
pop hl
|
|
||||||
ret
|
|
||||||
|
|
||||||
;; bytecpy [Bytes]
|
|
||||||
;; Copies a byte.
|
|
||||||
;; Inputs:
|
|
||||||
;; HL: Byte pointer
|
|
||||||
;; DE: Destination
|
|
||||||
bytecpy:
|
|
||||||
push de
|
|
||||||
push hl
|
|
||||||
ex de, hl
|
|
||||||
ld a, (de)
|
|
||||||
ld (hl), a
|
|
||||||
pop hl
|
|
||||||
pop de
|
|
||||||
ret
|
|
||||||
|
|
@ -7,43 +7,22 @@
|
||||||
;; Sets (DE) with command op code
|
;; Sets (DE) with command op code
|
||||||
commanddecode:
|
commanddecode:
|
||||||
call fshcmddecode
|
call fshcmddecode
|
||||||
|
;Extention Point
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;;commandroute
|
;;commandroute
|
||||||
;;Routes all commamds.
|
;;Routes all commamds.
|
||||||
;;Inputs:
|
;;Inputs:
|
||||||
;; HL: Op code mem loc
|
;; HL: Op code mem loc
|
||||||
;;Outputs:
|
|
||||||
;; Jp to loc for cmd func
|
|
||||||
;; ult go to Fin
|
|
||||||
commandroute:
|
commandroute:
|
||||||
call fshcmdroute
|
call fshcmdroute
|
||||||
|
;Extention Point
|
||||||
|
|
||||||
ld hl, FshCmdErrCode
|
ld hl, ErrCmdNotFoundo
|
||||||
ld (hl), $01
|
ld de, FshCmdErrCode
|
||||||
|
call bytecpy
|
||||||
|
call ErrSet
|
||||||
jp Err
|
jp Err
|
||||||
|
|
||||||
; commandfill
|
#include "includes/FshCommands/FshCommand.asm"
|
||||||
;; fills command mem with byte a
|
|
||||||
commandfill:
|
|
||||||
push hl
|
|
||||||
push bc
|
|
||||||
push de
|
|
||||||
ld b, 0
|
|
||||||
ld de, 0
|
|
||||||
ld c, a
|
|
||||||
ld hl, FshCmd
|
|
||||||
commandfillLoop:
|
|
||||||
ld (hl), c
|
|
||||||
inc hl
|
|
||||||
inc b
|
|
||||||
inc de
|
|
||||||
ld a, b
|
|
||||||
cp FshCmdSize
|
|
||||||
jr c, commandfillLoop
|
|
||||||
pop de
|
|
||||||
pop bc
|
|
||||||
pop hl
|
|
||||||
ret
|
|
||||||
|
|
||||||
#include "includes/FshCmd.asm"
|
|
||||||
|
|
|
||||||
|
|
@ -1,114 +0,0 @@
|
||||||
;;fshcmddecode
|
|
||||||
;;Decodes all commands.
|
|
||||||
;;Inputs:
|
|
||||||
;; HL: Cmd String mem loc
|
|
||||||
;; DE: Op code mem loc
|
|
||||||
;;Output:
|
|
||||||
;; Sets (DE) with command op code
|
|
||||||
fshcmddecode:
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld de, fshcmdEXIT
|
|
||||||
call strcmp
|
|
||||||
ld hl, fshcmdEXITo
|
|
||||||
pop de
|
|
||||||
call z, bytecpy
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld de, fshcmdSET
|
|
||||||
call strcmp
|
|
||||||
ld hl, fshcmdSETo
|
|
||||||
pop de
|
|
||||||
call z, bytecpy
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld de, fshcmdCOPY
|
|
||||||
call strcmp
|
|
||||||
ld hl, fshcmdCOPYo
|
|
||||||
pop de
|
|
||||||
call z, bytecpy
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld de, fshcmdMOVE
|
|
||||||
call strcmp
|
|
||||||
ld hl, fshcmdMOVEo
|
|
||||||
pop de
|
|
||||||
call z, bytecpy
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld de, fshcmdCLS
|
|
||||||
call strcmp
|
|
||||||
ld hl, fshcmdCLSo
|
|
||||||
pop de
|
|
||||||
call z, bytecpy
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld de, fshcmdVARS
|
|
||||||
call strcmp
|
|
||||||
ld hl, fshcmdVARSo
|
|
||||||
pop de
|
|
||||||
call z, bytecpy
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld de, fshcmdSLEEP
|
|
||||||
call strcmp
|
|
||||||
ld hl, fshcmdSLEEPo
|
|
||||||
pop de
|
|
||||||
call z, bytecpy
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
;;fshcmdroute
|
|
||||||
;;Routes FshCommamds.
|
|
||||||
;;Inputs:
|
|
||||||
;; HL: Op code mem loc
|
|
||||||
;;Outputs:
|
|
||||||
;; Jp to loc for cmd func
|
|
||||||
fshcmdroute:
|
|
||||||
pop bc ;pop the ret loc from stack into bc
|
|
||||||
|
|
||||||
ld de, fshcmdEXITo
|
|
||||||
call bytecmp
|
|
||||||
jp z, fshcmdEXITf
|
|
||||||
|
|
||||||
ld de, fshcmdSETo
|
|
||||||
call bytecmp
|
|
||||||
jp z, fshcmdSETf
|
|
||||||
|
|
||||||
ld de, fshcmdCOPYo
|
|
||||||
call bytecmp
|
|
||||||
jp z, fshcmdCOPYf
|
|
||||||
|
|
||||||
ld de, fshcmdMOVEo
|
|
||||||
call bytecmp
|
|
||||||
jp z, fshcmdMOVEf
|
|
||||||
|
|
||||||
ld de, fshcmdCLSo
|
|
||||||
call bytecmp
|
|
||||||
jp z, fshcmdCLSf
|
|
||||||
|
|
||||||
ld de, fshcmdVARSo
|
|
||||||
call bytecmp
|
|
||||||
jp z, fshcmdVARSf
|
|
||||||
|
|
||||||
ld de, fshcmdSLEEPo
|
|
||||||
call bytecmp
|
|
||||||
jp z, fshcmdSLEEPf
|
|
||||||
|
|
||||||
push bc ;put ret location back on stack
|
|
||||||
ret
|
|
||||||
|
|
||||||
#include "includes/FshCommands/FshCommands.inc"
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
fshcmdCLS: .db "CLS", 0
|
fshcmdCLS: .db "CLS", 0
|
||||||
fshcmdCLSo: .db $10
|
fshcmdCLSo: .db $10
|
||||||
fshcmdCLSu: .db "Clears the screen", 0
|
fshcmdCLSm: .db "Clears the screen", 0
|
||||||
|
fshcmdCLSu: .db "CLS", 0
|
||||||
fshcmdCLSf:
|
fshcmdCLSf:
|
||||||
CALL _ClrLCDFull
|
call _ClrLCDFull
|
||||||
XOR A
|
xor a
|
||||||
LD (CurRow), A
|
ld (CurRow), a
|
||||||
LD (CurCol), A
|
ld (CurCol), a
|
||||||
JP Fin
|
jp Fin
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
fshcmdCOPY: .db "COPY", 0
|
fshcmdCOPY: .db "COPY", 0
|
||||||
fshcmdCOPYo: .db $02
|
fshcmdCOPYo: .db $02
|
||||||
fshcmdCOPYu: .db "Copys a value in FSH memory to another addess", 0
|
fshcmdCOPYm: .db "Copys a value in FSH memory to another addess", 0
|
||||||
|
fshcmdCOPYu: .db "COPY <source address> <destination address>", 0
|
||||||
fshcmdCOPYf:
|
fshcmdCOPYf:
|
||||||
fshcmdCOPYfArg0:
|
fshcmdCOPYfArg0:
|
||||||
ld hl, FshCmdArg0
|
ld hl, FshCmdArgFlags
|
||||||
ld de, 0
|
bit 1, (hl)
|
||||||
ld e, (hl)
|
|
||||||
inc hl
|
|
||||||
ld d, (hl)
|
|
||||||
ex de, hl
|
|
||||||
ld de, 0
|
|
||||||
call cpHLDE
|
|
||||||
jr nz, fshcmdCOPYfArg1
|
jr nz, fshcmdCOPYfArg1
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdCOPYfArg0Get
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
fshcmdCOPYfArg0Get:
|
fshcmdCOPYfArg0Get:
|
||||||
ld hl, fshcmdCOPYfDSource
|
ld hl, fshcmdCOPYfDSource
|
||||||
call printprompt
|
call printprompt
|
||||||
|
|
@ -23,25 +23,24 @@ fshcmdCOPYfArg0Get:
|
||||||
ld (hl), a
|
ld (hl), a
|
||||||
call _NewLine
|
call _NewLine
|
||||||
fshcmdCOPYfArg1:
|
fshcmdCOPYfArg1:
|
||||||
ld hl, FshCmdArg1
|
ld hl, FshCmdArgFlags
|
||||||
ld de, 0
|
bit 3, (hl)
|
||||||
ld e, (hl)
|
|
||||||
inc hl
|
|
||||||
ld d, (hl)
|
|
||||||
ex de, hl
|
|
||||||
ld de, 0
|
|
||||||
call cpHLDE
|
|
||||||
jr nz, fshcmdCOPYfExe
|
jr nz, fshcmdCOPYfExe
|
||||||
|
bit 2, (hl)
|
||||||
|
jr z, fshcmdCOPYfArg1Get
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
fshcmdCOPYfArg1Get:
|
fshcmdCOPYfArg1Get:
|
||||||
ld hl, fshcmdCOPYfDDestination
|
ld hl, fshcmdCOPYfDSource
|
||||||
call printprompt
|
call printprompt
|
||||||
ld hl, fshcmdCOPYfInputBuffer
|
ld hl, fshcmdCOPYfInputBuffer
|
||||||
ld de, 3
|
ld de, 3
|
||||||
call inputnumstr
|
call inputnumstr
|
||||||
call strtob
|
call strtob
|
||||||
ex de, hl
|
|
||||||
ld hl, FshCmdArg1
|
ld hl, FshCmdArg1
|
||||||
ld (hl), a
|
ld (hl), a
|
||||||
|
call _NewLine
|
||||||
fshcmdCOPYfExe:
|
fshcmdCOPYfExe:
|
||||||
ld hl, FshCmdArg0
|
ld hl, FshCmdArg0
|
||||||
ld de, 0
|
ld de, 0
|
||||||
|
|
@ -53,8 +52,8 @@ fshcmdCOPYfExe:
|
||||||
ld e, (hl)
|
ld e, (hl)
|
||||||
pop hl
|
pop hl
|
||||||
call fshvarcpy
|
call fshvarcpy
|
||||||
call _NewLine
|
call ErrCatch
|
||||||
jp ErrCatch
|
jp Fin
|
||||||
|
|
||||||
fshcmdCOPYfInputBuffer: .db $00, $00, $00, $00
|
fshcmdCOPYfInputBuffer: .db $00, $00, $00, $00
|
||||||
fshcmdCOPYfDSource: .db "Source= ", 0
|
fshcmdCOPYfDSource: .db "Source= ", 0
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
fshcmdEXIT: .db "EXIT", 0
|
fshcmdEXIT: .db "EXIT", 0
|
||||||
fshcmdEXITo: .db $FF
|
fshcmdEXITo: .db $FF
|
||||||
fshcmdEXITu: .db "Exits Fsh", 0
|
fshcmdEXITm: .db "Exits Fsh", 0
|
||||||
|
fshcmdEXITu: .db "EXIT", 0
|
||||||
fshcmdEXITf: JP Cleanup
|
fshcmdEXITf: JP Cleanup
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
fshcmddecode:
|
||||||
|
decodecmdopt(fshcmdEXIT, fshcmdEXITo)
|
||||||
|
decodecmdopt(fshcmdSET, fshcmdSETo)
|
||||||
|
decodecmdopt(fshcmdCOPY, fshcmdCOPYo)
|
||||||
|
decodecmdopt(fshcmdMOVE, fshcmdMOVEo)
|
||||||
|
decodecmdopt(fshcmdCLS, fshcmdCLSo)
|
||||||
|
decodecmdopt(fshcmdVAR, fshcmdVARo)
|
||||||
|
decodecmdopt(fshcmdVARS, fshcmdVARSo)
|
||||||
|
decodecmdopt(fshcmdSLEEP, fshcmdSLEEPo)
|
||||||
|
decodecmdopt(fshcmdINFO, fshcmdINFOo)
|
||||||
|
decodecmdopt(fshcmdHELP, fshcmdHELPo)
|
||||||
|
decodecmdopt(fshcmdMAN, fshcmdMANo)
|
||||||
|
ret
|
||||||
|
|
||||||
|
fshcmdroute:
|
||||||
|
pop bc ;pop the ret loc from stack into bc
|
||||||
|
routeoptjp(fshcmdEXITo, fshcmdEXITf)
|
||||||
|
routeoptjp(fshcmdSETo, fshcmdSETf)
|
||||||
|
routeoptjp(fshcmdCOPYo, fshcmdCOPYf)
|
||||||
|
routeoptjp(fshcmdMOVEo, fshcmdMOVEf)
|
||||||
|
routeoptjp(fshcmdCLSo, fshcmdCLSf)
|
||||||
|
routeoptjp(fshcmdVARo, fshcmdVARf)
|
||||||
|
routeoptjp(fshcmdVARSo, fshcmdVARSf)
|
||||||
|
routeoptjp(fshcmdSLEEPo, fshcmdSLEEPf)
|
||||||
|
routeoptjp(fshcmdINFOo, fshcmdINFOf)
|
||||||
|
routeoptjp(fshcmdHELPo, fshcmdHELPf)
|
||||||
|
routeoptjp(fshcmdMANo, fshcmdMANf)
|
||||||
|
push bc ;put ret location back on stack
|
||||||
|
ret
|
||||||
|
|
||||||
|
fshcmdmanroute:
|
||||||
|
pop bc
|
||||||
|
routestrjp(fshcmdEXIT, fshCmdEXITm)
|
||||||
|
routestrjp(fshcmdSET, fshCmdSETm)
|
||||||
|
routestrjp(fshcmdCOPY, fshCmdCOPYm)
|
||||||
|
routestrjp(fshcmdMOVE, fshCmdMOVEm)
|
||||||
|
routestrjp(fshcmdCLS, fshCmdCLSm)
|
||||||
|
routestrjp(fshcmdVAR, fshCmdVARm)
|
||||||
|
routestrjp(fshcmdVARS, fshCmdVARSm)
|
||||||
|
routestrjp(fshcmdSLEEP, fshCmdSLEEPm)
|
||||||
|
routestrjp(fshcmdINFO, fshCmdINFOm)
|
||||||
|
routestrjp(fshcmdHELP, fshCmdHELPm)
|
||||||
|
routestrjp(fshcmdMAN, fshCmdMANm)
|
||||||
|
push bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
fshcmdmanrouteu:
|
||||||
|
pop bc
|
||||||
|
routeustrjp(fshcmdEXIT, fshCmdEXITu)
|
||||||
|
routeustrjp(fshcmdSET, fshCmdSETu)
|
||||||
|
routeustrjp(fshcmdCOPY, fshCmdCOPYu)
|
||||||
|
routeustrjp(fshcmdMOVE, fshCmdMOVEu)
|
||||||
|
routeustrjp(fshcmdCLS, fshCmdCLSu)
|
||||||
|
routeustrjp(fshcmdVAR, fshCmdVARu)
|
||||||
|
routeustrjp(fshcmdVARS, fshCmdVARSu)
|
||||||
|
routeustrjp(fshcmdSLEEP, fshCmdSLEEPu)
|
||||||
|
routeustrjp(fshcmdINFO, fshCmdINFOu)
|
||||||
|
routeustrjp(fshcmdHELP, fshCmdHELPu)
|
||||||
|
routeustrjp(fshcmdMAN, fshCmdMANu)
|
||||||
|
push bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
#include "includes/FshCommands/FshCommands.inc"
|
||||||
|
|
@ -3,5 +3,9 @@
|
||||||
#include "includes/FshCommands/COPY.asm"
|
#include "includes/FshCommands/COPY.asm"
|
||||||
#include "includes/FshCommands/MOVE.asm"
|
#include "includes/FshCommands/MOVE.asm"
|
||||||
#include "includes/FshCommands/CLS.asm"
|
#include "includes/FshCommands/CLS.asm"
|
||||||
|
#include "includes/FshCommands/VAR.asm"
|
||||||
#include "includes/FshCommands/VARS.asm"
|
#include "includes/FshCommands/VARS.asm"
|
||||||
#include "includes/FshCommands/SLEEP.asm"
|
#include "includes/FshCommands/SLEEP.asm"
|
||||||
|
#include "includes/FshCommands/INFO.asm"
|
||||||
|
#include "includes/FshCommands/HELP.asm"
|
||||||
|
#include "includes/FshCommands/MAN.asm"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
fshcmdHELP: .db "HELP", 0
|
||||||
|
fshcmdHELPo: .db $21
|
||||||
|
fshcmdHELPm: .db "Displays all commands", 0
|
||||||
|
fshcmdHELPu: .db "HELP", 0
|
||||||
|
fshcmdHELPf:
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdHELPfExe
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
|
fshcmdHELPfExe:
|
||||||
|
ld hl, fshcmdHELPfLine1
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
#macro fshcmdHELPmRow1(cmdXs)
|
||||||
|
xor a
|
||||||
|
ld (curCol), a
|
||||||
|
ld hl, cmdXs
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
#endmacro
|
||||||
|
#macro fshcmdHELPmRow2(cmdXs, cmdYs)
|
||||||
|
xor a
|
||||||
|
ld (curCol), a
|
||||||
|
ld hl, cmdXs
|
||||||
|
call _PutS
|
||||||
|
ld a, 9
|
||||||
|
ld (curcol), a
|
||||||
|
ld hl, cmdYs
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
#endmacro
|
||||||
|
#macro fshcmdHELPmRow3(cmdXs, cmdYs, cmdZs)
|
||||||
|
xor a
|
||||||
|
ld (curCol), a
|
||||||
|
ld hl, cmdXs
|
||||||
|
call _PutS
|
||||||
|
ld a, 9
|
||||||
|
ld (curcol), a
|
||||||
|
ld hl, cmdYs
|
||||||
|
call _PutS
|
||||||
|
ld a, 19
|
||||||
|
ld (curcol), a
|
||||||
|
ld hl, cmdZs
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
fshcmdHELPmRow3(fshcmdEXIT, fshcmdSET, fshcmdCOPY)
|
||||||
|
fshcmdHELPmRow3(fshcmdMOVE, fshcmdCLS, fshcmdVAR)
|
||||||
|
fshcmdHELPmRow3(fshcmdVARS, fshcmdSLEEP, fshcmdINFO)
|
||||||
|
fshcmdHELPmRow2(fshcmdHELP, fshcmdMAN)
|
||||||
|
; Extention Point
|
||||||
|
|
||||||
|
call _NewLine
|
||||||
|
ld hl, fshcmdHELPfLine2
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
jp Fin
|
||||||
|
|
||||||
|
fshcmdHELPfLine1: .db "Available Commands:", 0
|
||||||
|
fshcmdHELPfLine2: .db "Type 'MAN' and command for more info", 0
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
fshcmdINFO: .db "INFO", 0
|
||||||
|
fshcmdINFOo: .db $20
|
||||||
|
fshcmdINFOm: .db "Displays Syetem Information and Stats", 0
|
||||||
|
fshcmdINFOu: .db "INFO", 0
|
||||||
|
fshcmdINFOf:
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdINFOfExe
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
|
fshcmdINFOfExe:
|
||||||
|
call _ClrLCDFull
|
||||||
|
xor a
|
||||||
|
ld (CurRow), a
|
||||||
|
ld (CurCol), a
|
||||||
|
|
||||||
|
call printfshnamelong
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
ld hl, FshBy
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
ld hl, FshSite
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
call _NewLine
|
||||||
|
ld hl, fshcmdINFOfSPS1
|
||||||
|
call _PutS
|
||||||
|
ld a, $27
|
||||||
|
call _PutC
|
||||||
|
ld hl, PS1
|
||||||
|
call _PutS
|
||||||
|
ld a, $27
|
||||||
|
call _PutC
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
jp Fin
|
||||||
|
|
||||||
|
fshcmdINFOfSPS1: .db "PS1", $CE, $CE, $CE, ":", 0
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
fshcmdMAN: .db "MAN", 0
|
||||||
|
fshcmdMANo: .db $22
|
||||||
|
fshcmdMANm: .db "Displays MAN text for command", 0
|
||||||
|
fshcmdMANu: .db "MAN <command>", 0
|
||||||
|
fshcmdMANf:
|
||||||
|
fshcmdMANfCheckArgs:
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdMANfArg0Get
|
||||||
|
bit 1, (hl)
|
||||||
|
jr z, fshcmdMANfExe
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
|
fshcmdMANfArg0Get:
|
||||||
|
ld hl, fshcmdMANfPrompt
|
||||||
|
call printprompt
|
||||||
|
|
||||||
|
ld hl, FshCmdArg0
|
||||||
|
ld de, FshCmdCmdSize
|
||||||
|
call inputstr
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
fshcmdMANfExe:
|
||||||
|
ld hl, FshCmdArg0
|
||||||
|
ld de, FshCmd
|
||||||
|
call strcpy
|
||||||
|
|
||||||
|
ld hl, fshcmdMANfPrefix
|
||||||
|
call _PutS
|
||||||
|
|
||||||
|
ld hl, FshCmd
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
ld hl, FshCmd
|
||||||
|
call manroute
|
||||||
|
ld de, $00
|
||||||
|
call cpHLDE
|
||||||
|
jp z, Err
|
||||||
|
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
ld hl, fshcmdMANfUsage
|
||||||
|
call _PutS
|
||||||
|
|
||||||
|
ld hl, FshCmd
|
||||||
|
call manrouteu
|
||||||
|
ld de, $00
|
||||||
|
call cpHLDE
|
||||||
|
jp z, Err
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
|
||||||
|
jp Fin
|
||||||
|
|
||||||
|
fshcmdMANfPrefix: .db "MAN-DB", $DF, ' ', 0
|
||||||
|
fshcmdMANfUsage: .db "Usage: ",0
|
||||||
|
fshcmdMANfPrompt: .db "Command= ", 0
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
fshcmdMOVE: .db "MOVE", 0
|
fshcmdMOVE: .db "MOVE", 0
|
||||||
fshcmdMOVEo: .db $03
|
fshcmdMOVEo: .db $03
|
||||||
fshcmdMOVEu: .db "Move a value in FSH memory to another addess", 0
|
fshcmdMOVEm: .db "Move a value in FSH memory to another addess", 0
|
||||||
|
fshcmdMOVEu: .db "MOVE <source address> <destination address>", 0
|
||||||
fshcmdMOVEf:
|
fshcmdMOVEf:
|
||||||
fshcmdMOVEfArg0:
|
fshcmdMOVEfArg0:
|
||||||
ld hl, FshCmdArg0
|
ld hl, FshCmdArgFlags
|
||||||
ld de, 0
|
bit 1, (hl)
|
||||||
ld e, (hl)
|
|
||||||
inc hl
|
|
||||||
ld d, (hl)
|
|
||||||
ex de, hl
|
|
||||||
ld de, 0
|
|
||||||
call cpHLDE
|
|
||||||
jr nz, fshcmdMOVEfArg1
|
jr nz, fshcmdMOVEfArg1
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdMOVEfArg0Get
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
fshcmdMOVEfArg0Get:
|
fshcmdMOVEfArg0Get:
|
||||||
ld hl, fshcmdMOVEfDSource
|
ld hl, fshcmdMOVEfDSource
|
||||||
call printprompt
|
call printprompt
|
||||||
|
|
@ -23,15 +23,14 @@ fshcmdMOVEfArg0Get:
|
||||||
ld (hl), a
|
ld (hl), a
|
||||||
call _NewLine
|
call _NewLine
|
||||||
fshcmdMOVEfArg1:
|
fshcmdMOVEfArg1:
|
||||||
ld hl, FshCmdArg1
|
ld hl, FshCmdArgFlags
|
||||||
ld de, 0
|
bit 3, (hl)
|
||||||
ld e, (hl)
|
|
||||||
inc hl
|
|
||||||
ld d, (hl)
|
|
||||||
ex de, hl
|
|
||||||
ld de, 0
|
|
||||||
call cpHLDE
|
|
||||||
jr nz, fshcmdMOVEfExe
|
jr nz, fshcmdMOVEfExe
|
||||||
|
bit 2, (hl)
|
||||||
|
jr z, fshcmdMOVEfArg1Get
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
fshcmdMOVEfArg1Get:
|
fshcmdMOVEfArg1Get:
|
||||||
ld hl, fshcmdMOVEfDDestination
|
ld hl, fshcmdMOVEfDDestination
|
||||||
call printprompt
|
call printprompt
|
||||||
|
|
@ -39,9 +38,9 @@ fshcmdMOVEfArg1Get:
|
||||||
ld de, 3
|
ld de, 3
|
||||||
call inputnumstr
|
call inputnumstr
|
||||||
call strtob
|
call strtob
|
||||||
ex de, hl
|
|
||||||
ld hl, FshCmdArg1
|
ld hl, FshCmdArg1
|
||||||
ld (hl), a
|
ld (hl), a
|
||||||
|
call _NewLine
|
||||||
fshcmdMOVEfExe:
|
fshcmdMOVEfExe:
|
||||||
ld hl, FshCmdArg0
|
ld hl, FshCmdArg0
|
||||||
ld de, 0
|
ld de, 0
|
||||||
|
|
@ -56,8 +55,8 @@ fshcmdMOVEfExe:
|
||||||
ex de, hl
|
ex de, hl
|
||||||
ld hl, 0
|
ld hl, 0
|
||||||
call fshvarset
|
call fshvarset
|
||||||
call _NewLine
|
call ErrCatch
|
||||||
jp ErrCatch
|
jp Fin
|
||||||
|
|
||||||
fshcmdMOVEfInputBuffer: .db $00, $00, $00, $00
|
fshcmdMOVEfInputBuffer: .db $00, $00, $00, $00
|
||||||
fshcmdMOVEfDSource: .db "Source= ", 0
|
fshcmdMOVEfDSource: .db "Source= ", 0
|
||||||
|
|
|
||||||
|
|
@ -1,37 +1,39 @@
|
||||||
fshcmdSET: .db "SET", 0
|
fshcmdSET: .db "SET", 0
|
||||||
fshcmdSETo: .db $01
|
fshcmdSETo: .db $01
|
||||||
fshcmdSETu: .db "Sets a value in FSH memory", 0
|
fshcmdSETm: .db "Sets a value in FSH memory", 0
|
||||||
|
fshcmdSETu: .db "SET <destination address> <value>", 0
|
||||||
fshcmdSETf:
|
fshcmdSETf:
|
||||||
fshcmdSETfArg0:
|
fshcmdSETfArg0:
|
||||||
ld hl, FshCmdArg0
|
ld hl, FshCmdArgFlags
|
||||||
ld de, 0
|
bit 1, (hl)
|
||||||
ld e, (hl)
|
|
||||||
inc hl
|
|
||||||
ld d, (hl)
|
|
||||||
ex de, hl
|
|
||||||
ld de, 0
|
|
||||||
call cpHLDE
|
|
||||||
jr nz, fshcmdSETfArg1
|
jr nz, fshcmdSETfArg1
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdSETfArg0Get
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
fshcmdSETfArg0Get:
|
fshcmdSETfArg0Get:
|
||||||
ld hl, fshcmdSETfDIndex
|
ld hl, fshcmdSETfDIndex
|
||||||
call printprompt
|
call printprompt
|
||||||
ld hl, fshcmdSETfInputBuffer
|
ld hl, fshcmdSETfInputBuffer
|
||||||
ld de, 3
|
ld de, 3
|
||||||
call inputnumstr
|
call inputnumstr
|
||||||
call strtob
|
call strtow
|
||||||
ld hl, FshCmdArg0
|
ld de, FshCmdArg0
|
||||||
ld (hl), a
|
ex de, hl
|
||||||
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
call _NewLine
|
call _NewLine
|
||||||
fshcmdSETfArg1:
|
fshcmdSETfArg1:
|
||||||
ld hl, FshCmdArg1
|
ld hl, FshCmdArgFlags
|
||||||
ld de, 0
|
bit 3, (hl)
|
||||||
ld e, (hl)
|
|
||||||
inc hl
|
|
||||||
ld d, (hl)
|
|
||||||
ex de, hl
|
|
||||||
ld de, 0
|
|
||||||
call cpHLDE
|
|
||||||
jr nz, fshcmdSETfExe
|
jr nz, fshcmdSETfExe
|
||||||
|
bit 2, (hl)
|
||||||
|
jr z, fshcmdSETfArg1Get
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
fshcmdSETfArg1Get:
|
fshcmdSETfArg1Get:
|
||||||
ld hl, fshcmdSETfDValue
|
ld hl, fshcmdSETfDValue
|
||||||
call printprompt
|
call printprompt
|
||||||
|
|
@ -41,23 +43,26 @@ fshcmdSETfArg1Get:
|
||||||
call strtow
|
call strtow
|
||||||
ex de, hl
|
ex de, hl
|
||||||
ld hl, FshCmdArg1
|
ld hl, FshCmdArg1
|
||||||
ld (hl), d
|
|
||||||
inc hl
|
|
||||||
ld (hl), e
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
|
call _NewLine
|
||||||
fshcmdSETfExe:
|
fshcmdSETfExe:
|
||||||
ld hl, FshCmdArg0
|
ld hl, FshCmdArg0
|
||||||
ld de, 0
|
ld de, 0
|
||||||
ld e, (hl)
|
ld e, (hl)
|
||||||
|
inc hl
|
||||||
|
ld d, (hl)
|
||||||
push de
|
push de
|
||||||
ld hl, FshCmdArg1
|
ld hl, FshCmdArg1
|
||||||
ld d, (hl)
|
|
||||||
inc hl
|
|
||||||
ld e, (hl)
|
ld e, (hl)
|
||||||
|
inc hl
|
||||||
|
ld d, (hl)
|
||||||
ex de, hl
|
ex de, hl
|
||||||
pop de
|
pop de
|
||||||
call fshvarset
|
call fshvarset
|
||||||
call _NewLine
|
call ErrCatch
|
||||||
jp ErrCatch
|
jp Fin
|
||||||
|
|
||||||
fshcmdSETfInputBuffer: .db $00, $00, $00, $00, $00, $00
|
fshcmdSETfInputBuffer: .db $00, $00, $00, $00, $00, $00
|
||||||
fshcmdSETfDIndex: .db "Destination= ", 0
|
fshcmdSETfDIndex: .db "Destination= ", 0
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
fshcmdSLEEP: .db "SLEEP", 0
|
fshcmdSLEEP: .db "SLEEP", 0
|
||||||
fshcmdSLEEPo: .db $16
|
fshcmdSLEEPo: .db $16
|
||||||
fshcmdSLEEPu: .db "Puts the calculator into sleep mode (APD)", 0
|
fshcmdSLEEPm: .db "Puts the calculator into sleep mode (APD)", 0
|
||||||
|
fshcmdSLEEPu: .db "SLEEP", 0
|
||||||
fshcmdSLEEPf:
|
fshcmdSLEEPf:
|
||||||
di
|
di
|
||||||
call _EnableAPD
|
call _EnableAPD
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
fshcmdVAR: .db "VAR", 0
|
||||||
|
fshcmdVARo: .db $11
|
||||||
|
fshcmdVARm: .db "Displays a value from FSH memory", 0
|
||||||
|
fshcmdVARu: .db "VAR <source address>", 0
|
||||||
|
fshcmdVARf:
|
||||||
|
fshcmdVARfArg0:
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
bit 1, (hl)
|
||||||
|
jr nz, fshcmdVARfExe
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdVARfArg0Get
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
|
fshcmdVARfArg0Get:
|
||||||
|
ld hl, fshcmdVARfDIndex
|
||||||
|
call printprompt
|
||||||
|
ld hl, fshcmdVARfInputBuffer
|
||||||
|
ld de, 3
|
||||||
|
call inputnumstr
|
||||||
|
call strtow
|
||||||
|
ld de, FshCmdArg0
|
||||||
|
ex de, hl
|
||||||
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
|
call _NewLine
|
||||||
|
fshcmdVARfExe:
|
||||||
|
ld hl, FshCmdArg0
|
||||||
|
ld de, 0
|
||||||
|
ld e, (hl)
|
||||||
|
inc hl
|
||||||
|
ld d, (hl)
|
||||||
|
call fshvarget
|
||||||
|
call ErrCatch
|
||||||
|
call _DispHL_s
|
||||||
|
call _NewLine
|
||||||
|
jp Fin
|
||||||
|
|
||||||
|
fshcmdVARfInputBuffer: .db $00, $00, $00, $00
|
||||||
|
fshcmdVARfDIndex: .db "Index= ", 0
|
||||||
|
|
@ -1,7 +1,15 @@
|
||||||
fshcmdVARS: .db "VARS", 0
|
fshcmdVARS: .db "VARS", 0
|
||||||
fshcmdVARSo: .db $12
|
fshcmdVARSo: .db $12
|
||||||
fshcmdVARSu: .db "Displays all Fsh Vars", 0
|
fshcmdVARSm: .db "Displays all Fsh Vars", 0
|
||||||
|
fshcmdVARSu: .db "VARS", 0
|
||||||
fshcmdVARSf:
|
fshcmdVARSf:
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
bit 0, (hl)
|
||||||
|
jr z, fshcmdVARSfExe
|
||||||
|
ld hl, ErrUsageo
|
||||||
|
call ErrSet
|
||||||
|
call ErrCatch
|
||||||
|
fshcmdVARSfExe:
|
||||||
ld b, 0
|
ld b, 0
|
||||||
ld c, 0
|
ld c, 0
|
||||||
ld de, 0
|
ld de, 0
|
||||||
|
|
|
||||||
|
|
@ -1,107 +0,0 @@
|
||||||
;; cpHLDE [Maths]
|
|
||||||
;; Compares HL to DE.
|
|
||||||
;; Output:
|
|
||||||
;; Same as z80 CP instruction.
|
|
||||||
cpHLDE:
|
|
||||||
or a
|
|
||||||
sbc hl, de
|
|
||||||
add hl,de
|
|
||||||
ret
|
|
||||||
;; cpHLBC [Maths]
|
|
||||||
;; Compares HL to BC.
|
|
||||||
;; Output:
|
|
||||||
;; Same as z80 CP instruction.
|
|
||||||
cpHLBC:
|
|
||||||
or a
|
|
||||||
sbc hl, bc
|
|
||||||
add hl,bc
|
|
||||||
ret
|
|
||||||
;; cpBCDE [Maths]
|
|
||||||
;; Compares DE to BC.
|
|
||||||
;; Output:
|
|
||||||
;; Same as z80 CP instruction.
|
|
||||||
cpBCDE:
|
|
||||||
push hl
|
|
||||||
ld h, b
|
|
||||||
ld l, c
|
|
||||||
or a
|
|
||||||
sbc hl, de
|
|
||||||
pop hl
|
|
||||||
ret
|
|
||||||
|
|
||||||
;; mulAbyB
|
|
||||||
;; Multiplys AxB
|
|
||||||
;; Inputs:
|
|
||||||
;; A: Multiplier
|
|
||||||
;; B: Multiplicand
|
|
||||||
;; Outputs:
|
|
||||||
;; A: Product of A and B.
|
|
||||||
mulAbyB:
|
|
||||||
push bc
|
|
||||||
ld c, a
|
|
||||||
mulAbyBLoop:
|
|
||||||
add a, c
|
|
||||||
djnz mulAbyBLoop
|
|
||||||
sub c
|
|
||||||
pop bc
|
|
||||||
ret
|
|
||||||
|
|
||||||
;; mulAbyHL
|
|
||||||
;; Multiplys AxHL
|
|
||||||
;; Inputs:
|
|
||||||
;; A: Multiplier
|
|
||||||
;; HL: Multiplicand
|
|
||||||
;; Outputs:
|
|
||||||
;; HL: Product of A and HL.
|
|
||||||
mulAbyHL:
|
|
||||||
push bc
|
|
||||||
push de
|
|
||||||
ld de, 0
|
|
||||||
ex de, hl
|
|
||||||
cp 0
|
|
||||||
jr z, mulAbyHLEnd
|
|
||||||
ld b, a
|
|
||||||
mulAbyHLLoop:
|
|
||||||
add hl, de
|
|
||||||
djnz mulAbyHLLoop
|
|
||||||
mulAbyHLEnd:
|
|
||||||
pop de
|
|
||||||
pop bc
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;; mul32By8 [Maths]
|
|
||||||
;; Performs an unsigned multiplication of DEHL and A.
|
|
||||||
;; Outputs:
|
|
||||||
;; DEHL: product of DEHL and A
|
|
||||||
mul32By8:
|
|
||||||
push bc \ push ix
|
|
||||||
ld ixl, 8
|
|
||||||
push de
|
|
||||||
push hl
|
|
||||||
ld hl, 0
|
|
||||||
ld d, h
|
|
||||||
ld e, l
|
|
||||||
mul32by8loop:
|
|
||||||
add hl, hl
|
|
||||||
rl e
|
|
||||||
rl d
|
|
||||||
rla
|
|
||||||
jr nc, mul32by8noAdd
|
|
||||||
pop bc
|
|
||||||
add hl, bc
|
|
||||||
ex (sp), hl
|
|
||||||
push hl
|
|
||||||
adc hl, de
|
|
||||||
pop de
|
|
||||||
ex de, hl
|
|
||||||
ex (sp), hl
|
|
||||||
push bc
|
|
||||||
mul32by8noAdd:
|
|
||||||
dec ixl
|
|
||||||
jr nz, mul32by8loop
|
|
||||||
pop bc
|
|
||||||
pop bc
|
|
||||||
pop ix \ pop bc
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
;STRINGS -------------------------
|
||||||
|
FshName: .db "Fsh SHell", 0
|
||||||
|
FshBy: .db "By pixiys", 0
|
||||||
|
FshSite: .db "stephenltoth.com/fsh-shell", 0
|
||||||
|
PS1: .db "FSH> ", 0
|
||||||
|
FshVVars: .db "64w", 0
|
||||||
|
FshVMajor: .db "0", 0
|
||||||
|
FshVMinor: .db "1", 0
|
||||||
|
FshVPatch: .db "0", 0
|
||||||
|
FshVBuild: .db "205", 0
|
||||||
|
FshVSeparator: .db ".", 0
|
||||||
|
FshMotd2nd: .db "Press 2nd for numbers", 0
|
||||||
|
FshMotdHelp: .db "Type 'HELP' for help", 0
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
.nolist
|
|
||||||
|
|
||||||
; Included for Assembler Compatibility
|
|
||||||
;------------------------------------
|
|
||||||
#define equ .equ
|
|
||||||
#define EQU .equ
|
|
||||||
#define end .end
|
|
||||||
#define END .end
|
|
||||||
|
|
||||||
#define FshVarsSize 128 ;256 bytes | 64 words
|
|
||||||
#define FshCmdSize 24 ;17 bytes | 8 chars | 1 null, 4 words (args) | 1 byte (err code) | 6 unused
|
|
||||||
#define FshCmdInptSize 8 ;8 bytes | 8 chars
|
|
||||||
#define FshPrgmSize 1024 ;1024 bytes | max size
|
|
||||||
|
|
||||||
RamVars equ 0D0EA1Fh ;saveSScreen | 21945 bytes
|
|
||||||
FshVars equ RamVars
|
|
||||||
FshCmd equ FshVars + FshVarsSize
|
|
||||||
FshPrgm equ FshCmd + FshCmdSize
|
|
||||||
|
|
||||||
FshCmdNull equ FshCmd + FshCmdInptSize
|
|
||||||
FshCmdOP equ FshCmdNull + 1
|
|
||||||
FshCmdArg0 equ FshCmdOP + 1
|
|
||||||
FshCmdArg1 equ FshCmdOP + 3
|
|
||||||
FshCmdArg2 equ FshCmdOP + 5
|
|
||||||
FshCmdArg3 equ FshCmdOP + 7
|
|
||||||
FshCmdErrCode equ FshCmdArg3 + 1
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
;;commandfill
|
||||||
|
;;Fills command mem with byte a
|
||||||
|
;;Inputs:
|
||||||
|
;; A: byte
|
||||||
|
commandfill:
|
||||||
|
push hl
|
||||||
|
push bc
|
||||||
|
push de
|
||||||
|
ld b, 0
|
||||||
|
ld de, 0
|
||||||
|
ld c, a
|
||||||
|
ld hl, FshCmd
|
||||||
|
commandfillLoop:
|
||||||
|
ld (hl), c
|
||||||
|
inc hl
|
||||||
|
inc b
|
||||||
|
inc de
|
||||||
|
ld a, b
|
||||||
|
cp FshCmdSize
|
||||||
|
jr c, commandfillLoop
|
||||||
|
pop de
|
||||||
|
pop bc
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
;;drawstatusbar
|
||||||
|
;;draws the FSH status bar
|
||||||
|
drawstatusbar:
|
||||||
|
;rgbto565(84, 84, 84)
|
||||||
|
ld hl, $52AA
|
||||||
|
ld a, 0
|
||||||
|
ld bc, 30
|
||||||
|
call drawbar
|
||||||
|
;rgbto565(0, 159, 209)
|
||||||
|
ld hl, $04FA
|
||||||
|
;ld hl, %1111100000000000
|
||||||
|
drawrectfilledM(0, 0, 2, 30)
|
||||||
|
call _DrawBatteryIndicator
|
||||||
|
;draw name
|
||||||
|
set fracDrawLFont, (iy + fontFlags)
|
||||||
|
ld a, 6
|
||||||
|
ld (penRow), a
|
||||||
|
ld a, 7
|
||||||
|
ld (penCol), a
|
||||||
|
ld hl, $52AA
|
||||||
|
ld (drawBGcolor), hl
|
||||||
|
ld hl, $ffff
|
||||||
|
ld (drawFGcolor), hl
|
||||||
|
ld hl, FshName
|
||||||
|
call _VPutS
|
||||||
|
ld hl, $ffff
|
||||||
|
ld (drawBGcolor), hl
|
||||||
|
ld hl, $0000
|
||||||
|
ld (drawFGcolor), hl
|
||||||
|
ret
|
||||||
|
|
@ -1,34 +1,47 @@
|
||||||
;;ErrCatch
|
;;ErrCatch
|
||||||
;;Checks err bit and jp to err route
|
;;Checks err bit and jp to err route
|
||||||
ErrCatch:
|
ErrCatch:
|
||||||
ld hl, FshFlags
|
pop bc
|
||||||
bit 1, (hl)
|
push hl
|
||||||
jp nz, ErrRoute
|
ld hl, FshFlags
|
||||||
jp Fin
|
bit 1, (hl)
|
||||||
|
pop hl
|
||||||
|
jp nz, ErrRoute
|
||||||
|
push bc
|
||||||
|
ret
|
||||||
|
|
||||||
;;ErrRoute
|
;;ErrRoute
|
||||||
;;Routes err codes.
|
;;Routes err codes.
|
||||||
ErrRoute:
|
ErrRoute:
|
||||||
|
|
||||||
ld hl, FshFlags
|
ld hl, FshFlags
|
||||||
res 1, (hl)
|
res 1, (hl)
|
||||||
|
|
||||||
ld hl, FshCmdErrCode
|
ld hl, FshCmdErrCode
|
||||||
|
|
||||||
ld de, ErrCmdNotFoundo
|
ld de, ErrCmdNotFoundo
|
||||||
call bytecmp
|
call bytecmp
|
||||||
jp z, ErrCmdNotFoundf
|
jp z, ErrCmdNotFoundf
|
||||||
|
|
||||||
ld de, ErrOutOfBoundso
|
ld de, ErrOutOfBoundso
|
||||||
call bytecmp
|
call bytecmp
|
||||||
jp z, ErrOutOfBoundsf
|
jp z, ErrOutOfBoundsf
|
||||||
|
|
||||||
|
ld de, ErrArgso
|
||||||
|
call bytecmp
|
||||||
|
jp z, ErrArgsf
|
||||||
|
|
||||||
|
ld de, ErrUsageo
|
||||||
|
call bytecmp
|
||||||
|
jp z, ErrUsagef
|
||||||
|
|
||||||
jp ErrDefault
|
jp ErrDefault
|
||||||
|
|
||||||
|
|
||||||
;;ErrSet
|
;;ErrSet
|
||||||
;;Sets all things relating to Err codes
|
;;Sets all things relating to Err codes
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: Err____o
|
;; HL: Err_____o
|
||||||
ErrSet:
|
ErrSet:
|
||||||
push hl
|
push hl
|
||||||
ld a, (hl)
|
ld a, (hl)
|
||||||
|
|
@ -39,10 +52,14 @@ ErrSet:
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;;ERR FUNCS
|
;;ERR FUNCS-------------------
|
||||||
|
|
||||||
ErrCmdNotFoundo: .db $01
|
ErrCmdNotFoundo: .db $01
|
||||||
ErrCmdNotFoundf:
|
ErrCmdNotFoundf:
|
||||||
|
ld hl, FshCmd
|
||||||
|
ld a, (hl)
|
||||||
|
cp $00
|
||||||
|
jp z, Fin
|
||||||
ld hl, ErrCmdNotFoundt
|
ld hl, ErrCmdNotFoundt
|
||||||
call _PutS
|
call _PutS
|
||||||
ld hl, FshCmd
|
ld hl, FshCmd
|
||||||
|
|
@ -59,6 +76,25 @@ ErrOutOfBoundsf:
|
||||||
jp Fin
|
jp Fin
|
||||||
ErrOutOfBoundst: .db "error: Out Of Bounds", 0
|
ErrOutOfBoundst: .db "error: Out Of Bounds", 0
|
||||||
|
|
||||||
|
ErrArgso: .db $03
|
||||||
|
ErrArgsf:
|
||||||
|
ld hl, ErrArgst
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
jp Fin
|
||||||
|
ErrArgst: .db "error: Invalid Arguments", 0
|
||||||
|
|
||||||
|
ErrUsageo: .db $04
|
||||||
|
ErrUsagef:
|
||||||
|
ld hl, ErrUsaget
|
||||||
|
call _PutS
|
||||||
|
ld hl, FshCmd
|
||||||
|
call manrouteu
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
jp Fin
|
||||||
|
ErrUsaget: .db "error: Usage: ", 0
|
||||||
|
|
||||||
ErrDefault:
|
ErrDefault:
|
||||||
ld hl, ErrDefaultt
|
ld hl, ErrDefaultt
|
||||||
call _PutS
|
call _PutS
|
||||||
|
|
@ -1,15 +1,14 @@
|
||||||
;;; fshvarset [Bytes]
|
;;fshvarset
|
||||||
;; Sets a Word in FshVars.
|
;;Sets a Word in FshVars.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: 16b
|
;; HL: 16b
|
||||||
;; DE: Destination Word Relitive to FshVars
|
;; DE: Destination Word Relitive to FshVars
|
||||||
fshvarset:
|
fshvarset:
|
||||||
push bc
|
push bc
|
||||||
ld bc, FshVarsSize / 2 - 1
|
ld bc, FshVarsSize / 2 - 1
|
||||||
call cpBCDE
|
call cpBCDE
|
||||||
pop bc
|
pop bc
|
||||||
jr c, fshvarsetOOBException
|
jr c, fshvarsetOOBException
|
||||||
|
|
||||||
push bc
|
push bc
|
||||||
push de
|
push de
|
||||||
push hl
|
push hl
|
||||||
|
|
@ -24,7 +23,6 @@ fshvarset:
|
||||||
pop de
|
pop de
|
||||||
pop bc
|
pop bc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
fshvarsetOOBException:
|
fshvarsetOOBException:
|
||||||
push hl
|
push hl
|
||||||
ld hl, ErrOutOfBoundso
|
ld hl, ErrOutOfBoundso
|
||||||
|
|
@ -32,19 +30,18 @@ fshvarsetOOBException:
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;;; fshvarget [Words]
|
;;fshvarget
|
||||||
;; Gets a Word in FshVars.
|
;;Gets a Word in FshVars.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; DE: Destination Word Relitive to FshVars
|
;; DE: Destination Word Relitive to FshVars
|
||||||
;; Outputs:
|
;;Outputs:
|
||||||
;; HL: Word in (DE)
|
;; HL: Word in (DE)
|
||||||
fshvarget:
|
fshvarget:
|
||||||
push bc
|
push bc
|
||||||
ld bc, FshVarsSize / 2 - 1
|
ld bc, FshVarsSize / 2 - 1
|
||||||
call cpBCDE
|
call cpBCDE
|
||||||
pop bc
|
pop bc
|
||||||
jr c, fshvargetOOBException
|
jr c, fshvargetOOBException
|
||||||
|
|
||||||
push bc
|
push bc
|
||||||
push de
|
push de
|
||||||
ld hl, 0
|
ld hl, 0
|
||||||
|
|
@ -59,19 +56,17 @@ fshvarget:
|
||||||
pop de
|
pop de
|
||||||
pop bc
|
pop bc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
fshvargetOOBException:
|
fshvargetOOBException:
|
||||||
push hl
|
push hl
|
||||||
ld hl, ErrOutOfBoundso
|
ld hl, ErrOutOfBoundso
|
||||||
call ErrSet
|
call ErrSet
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
;;fshvarcpy
|
||||||
; fshvarcpy [Bytes]
|
;;Copies a word.
|
||||||
;; Copies a word.
|
;;Inputs:
|
||||||
;; Inputs:
|
;; HL: Byte pointer
|
||||||
;; HL: Byte pointer
|
;; DE: Destination
|
||||||
;; DE: Destination
|
|
||||||
fshvarcpy:
|
fshvarcpy:
|
||||||
push bc
|
push bc
|
||||||
ld bc, FshVarsSize / 2 - 1
|
ld bc, FshVarsSize / 2 - 1
|
||||||
|
|
@ -83,7 +78,6 @@ fshvarcpy:
|
||||||
call cpHLBC
|
call cpHLBC
|
||||||
pop bc
|
pop bc
|
||||||
jr nc, fshvarcpyOOBException
|
jr nc, fshvarcpyOOBException
|
||||||
|
|
||||||
push de
|
push de
|
||||||
push hl
|
push hl
|
||||||
ld bc, FshVarsSize / 2
|
ld bc, FshVarsSize / 2
|
||||||
|
|
@ -112,8 +106,8 @@ fshvarcpyOOBException:
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; fshvarreset
|
;;fshvarreset
|
||||||
;; fills fshvars with word
|
;;Fills fshvars with $00
|
||||||
fshvarreset:
|
fshvarreset:
|
||||||
push hl
|
push hl
|
||||||
push bc
|
push bc
|
||||||
|
|
@ -0,0 +1,187 @@
|
||||||
|
;;fshparsecommand
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: FshCmd
|
||||||
|
;;b = buf row
|
||||||
|
;;c = char in row
|
||||||
|
;de = scratch
|
||||||
|
fshparsecommand:
|
||||||
|
push hl
|
||||||
|
push bc
|
||||||
|
push de
|
||||||
|
push hl
|
||||||
|
push hl
|
||||||
|
ld hl, fshparsecommandCmd
|
||||||
|
ld b, 45
|
||||||
|
ld a, $00
|
||||||
|
call memset
|
||||||
|
pop hl
|
||||||
|
|
||||||
|
ld bc, 0
|
||||||
|
ld de, 0
|
||||||
|
fshparsecommandLoop:
|
||||||
|
ld a, (hl)
|
||||||
|
fshparsecommandCheckSpace:
|
||||||
|
cp ' ' ;end of word
|
||||||
|
jr nz, fshparsecommandCheckEnd
|
||||||
|
ld a, $00
|
||||||
|
call fshparsecommandCopyChar
|
||||||
|
ld c, 0
|
||||||
|
inc b
|
||||||
|
inc hl
|
||||||
|
jr fshparsecommandLoop
|
||||||
|
|
||||||
|
fshparsecommandCheckEnd:
|
||||||
|
cp $00 ;end of string
|
||||||
|
jr z, fshparsecommandCheckArgStatus
|
||||||
|
|
||||||
|
fshparsecommandLoopEnd:
|
||||||
|
call fshparsecommandCopyChar
|
||||||
|
inc hl
|
||||||
|
inc c
|
||||||
|
|
||||||
|
ld a, c
|
||||||
|
cp FshCmdCmdSize
|
||||||
|
jr nz, fshparsecommandLoop
|
||||||
|
;inc hl
|
||||||
|
ld c, 0
|
||||||
|
inc b
|
||||||
|
ld a, b
|
||||||
|
cp 5
|
||||||
|
jr nz, fshparsecommandLoop
|
||||||
|
; ld bc, 0
|
||||||
|
|
||||||
|
fshparsecommandCheckArgStatus:
|
||||||
|
xor a
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
ld (hl), a
|
||||||
|
fshparsecommandCheckArg0:
|
||||||
|
ld hl, fshparsecommandArg0
|
||||||
|
ld a, (hl)
|
||||||
|
cp $00
|
||||||
|
jr z, fshparsecommandCheckArg1
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 0, (hl)
|
||||||
|
ld a, (hl)
|
||||||
|
ld hl, fshparsecommandArg0
|
||||||
|
ld a, (hl)
|
||||||
|
sub '0'
|
||||||
|
cp '9' - '0' + 1
|
||||||
|
jr nc, fshparsecommandCheckArg1
|
||||||
|
call strtow
|
||||||
|
ld de, fshparsecommandArg0
|
||||||
|
ex de, hl
|
||||||
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
|
inc (hl)
|
||||||
|
ld (hl), $00
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 1, (hl)
|
||||||
|
fshparsecommandCheckArg1:
|
||||||
|
ld hl, fshparsecommandArg1
|
||||||
|
ld a, (hl)
|
||||||
|
cp $00
|
||||||
|
jr z, fshparsecommandCheckArg2
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 2, (hl)
|
||||||
|
ld hl, fshparsecommandArg1
|
||||||
|
ld a, (hl)
|
||||||
|
sub '0'
|
||||||
|
cp '9' - '0' + 1
|
||||||
|
jr nc, fshparsecommandCheckArg2
|
||||||
|
call strtow
|
||||||
|
ld de, fshparsecommandArg1
|
||||||
|
ex de, hl
|
||||||
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
|
inc hl
|
||||||
|
ld (hl), $00
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 3, (hl)
|
||||||
|
fshparsecommandCheckArg2:
|
||||||
|
ld hl, fshparsecommandArg2
|
||||||
|
ld a, (hl)
|
||||||
|
cp $00
|
||||||
|
jr z, fshparsecommandCheckArg3
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 4, (hl)
|
||||||
|
ld hl, fshparsecommandArg2
|
||||||
|
ld a, (hl)
|
||||||
|
sub '0'
|
||||||
|
cp '9' - '0' + 1
|
||||||
|
jr nc, fshparsecommandCheckArg3
|
||||||
|
call strtow
|
||||||
|
ld de, fshparsecommandArg2
|
||||||
|
ex de, hl
|
||||||
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
|
inc hl
|
||||||
|
ld (hl), $00
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 5, (hl)
|
||||||
|
fshparsecommandCheckArg3:
|
||||||
|
ld hl, fshparsecommandArg3
|
||||||
|
ld a, (hl)
|
||||||
|
cp $00
|
||||||
|
jr z, fshparsecommandCopyBack
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 6, (hl)
|
||||||
|
ld hl, fshparsecommandArg3
|
||||||
|
ld a, (hl)
|
||||||
|
sub '0'
|
||||||
|
cp '9' - '0' + 1
|
||||||
|
jr nc, fshparsecommandCopyBack
|
||||||
|
call strtow
|
||||||
|
ld de, fshparsecommandArg3
|
||||||
|
ex de, hl
|
||||||
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
|
inc hl
|
||||||
|
ld (hl), $00
|
||||||
|
ld hl, FshCmdArgFlags
|
||||||
|
set 7, (hl)
|
||||||
|
fshparsecommandCopyBack:
|
||||||
|
pop hl
|
||||||
|
push bc
|
||||||
|
ex de, hl
|
||||||
|
ld hl, fshparsecommandCmd
|
||||||
|
ld bc, 45
|
||||||
|
ldir
|
||||||
|
pop bc
|
||||||
|
|
||||||
|
pop de
|
||||||
|
pop bc
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
fshparsecommandCmd: .db $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
fshparsecommandArg0: .db $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
fshparsecommandArg1: .db $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
fshparsecommandArg2: .db $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
fshparsecommandArg3: .db $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
fshparsecommandOverB: .db $00, $00, $00, $00, $00, $00
|
||||||
|
|
||||||
|
fshparsecommandCopyChar:
|
||||||
|
;Copy
|
||||||
|
push hl
|
||||||
|
push bc
|
||||||
|
ld hl, 0
|
||||||
|
ld h, b
|
||||||
|
ld l, 9
|
||||||
|
ld b, c
|
||||||
|
ld de, fshparsecommandCmd
|
||||||
|
call array2d
|
||||||
|
pop bc
|
||||||
|
pop hl
|
||||||
|
;push hl
|
||||||
|
; ld hl, fshparsecommandCmd+45+1
|
||||||
|
; call cpHLDE
|
||||||
|
;pop hl
|
||||||
|
;pop de
|
||||||
|
;ret c
|
||||||
|
;push de
|
||||||
|
ld (de), a ;ld buffer
|
||||||
|
ret
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
;;printfshnamelong
|
||||||
|
;;prints Name + Varsv + Version to screen
|
||||||
|
printfshnamelong:
|
||||||
|
push hl
|
||||||
|
ld hl, FshName
|
||||||
|
call _PutS
|
||||||
|
ld a, ' '
|
||||||
|
call _PutC
|
||||||
|
ld hl, FshVVars
|
||||||
|
call _PutS
|
||||||
|
ld a, ' '
|
||||||
|
call _PutC
|
||||||
|
ld a, 'v'
|
||||||
|
call _PutC
|
||||||
|
ld hl, FshVMajor
|
||||||
|
call _PutS
|
||||||
|
ld hl, FshVSeparator
|
||||||
|
call _PutS
|
||||||
|
ld hl, FshVMinor
|
||||||
|
call _PutS
|
||||||
|
ld hl, FshVSeparator
|
||||||
|
call _PutS
|
||||||
|
ld hl, FshVPatch
|
||||||
|
call _PutS
|
||||||
|
ld a, ' '
|
||||||
|
call _PutC
|
||||||
|
ld hl, FshVBuild
|
||||||
|
call _PutS
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;printmotd
|
||||||
|
;;prints the motd to screen
|
||||||
|
printmotd:
|
||||||
|
call printfshnamelong
|
||||||
|
call _NewLine
|
||||||
|
call _NewLine
|
||||||
|
ld hl, FshMotd2nd
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
ld hl, FshMotdHelp
|
||||||
|
call _PutS
|
||||||
|
call _NewLine
|
||||||
|
ret
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "includes/lib/fsh/Command.asm"
|
||||||
|
#include "includes/lib/fsh/Parse.asm"
|
||||||
|
#include "includes/lib/fsh/FshVar.asm"
|
||||||
|
#include "includes/lib/fsh/Err.asm"
|
||||||
|
#include "includes/lib/fsh/Print.asm"
|
||||||
|
#include "includes/lib/fsh/Draw.asm"
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
;;array2d
|
||||||
|
;;gets the address of 2d array
|
||||||
|
;;Inputs:
|
||||||
|
;; H: y
|
||||||
|
;; L: x width
|
||||||
|
;; B: x
|
||||||
|
;; DE: Array start
|
||||||
|
;;Outputs:
|
||||||
|
;; DE: Array loc address
|
||||||
|
array2d:
|
||||||
|
push hl
|
||||||
|
mlt hl
|
||||||
|
add hl, de
|
||||||
|
ld de, 0
|
||||||
|
ld e, b
|
||||||
|
add hl, de
|
||||||
|
ex de, hl
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
;;bytecmp
|
||||||
|
;;Determines if two bytes are equal.
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: Byte pointer
|
||||||
|
;; DE: Byte pointer
|
||||||
|
;;Outputs:
|
||||||
|
;; Z: Set if equal, reset if not equal
|
||||||
|
bytecmp:
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
ld a, (de)
|
||||||
|
or a
|
||||||
|
cp (hl)
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;bytecpy
|
||||||
|
;; Copies a byte.
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: Byte pointer
|
||||||
|
;; DE: Destination
|
||||||
|
bytecpy:
|
||||||
|
push de
|
||||||
|
push hl
|
||||||
|
ex de, hl
|
||||||
|
ld a, (de)
|
||||||
|
ld (hl), a
|
||||||
|
pop hl
|
||||||
|
pop de
|
||||||
|
ret
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
#include "includes/tables/CSC.asm"
|
#include "includes/tables/CSC.asm"
|
||||||
; chartoascii
|
;;chartoascii
|
||||||
;; Converts a char to "ascii"
|
;;Converts a char to "ascii"
|
||||||
;;Inputs:
|
;;Inputs:
|
||||||
;; A: char code (csc)
|
;; A: char code (csc)
|
||||||
;;Outputs:
|
;;Outputs:
|
||||||
;; A: ascii char
|
;; A: ascii char
|
||||||
chartoascii:
|
chartoascii:
|
||||||
push hl ; Convert scan code into character
|
push hl
|
||||||
ld hl, 0
|
ld hl, 0
|
||||||
ld h, 0
|
ld h, 0
|
||||||
ld l, a
|
ld l, a
|
||||||
|
|
@ -15,14 +15,15 @@ chartoascii:
|
||||||
ld a, (hl)
|
ld a, (hl)
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
; charnumtoascii
|
|
||||||
;; Converts a char to "ascii"
|
;;Charnumtoascii
|
||||||
|
;;Converts a char to "ascii"
|
||||||
;;Inputs:
|
;;Inputs:
|
||||||
;; A: char code (csc)
|
;; A: char code (csc)
|
||||||
;;Outputs:
|
;;Outputs:
|
||||||
;; A: ascii char
|
;; A: ascii char
|
||||||
charnumtoascii:
|
charnumtoascii:
|
||||||
push hl ; Convert scan code into character
|
push hl
|
||||||
ld hl, 0
|
ld hl, 0
|
||||||
ld h, 0
|
ld h, 0
|
||||||
ld l, a
|
ld l, a
|
||||||
|
|
@ -31,14 +32,15 @@ charnumtoascii:
|
||||||
ld a, (hl)
|
ld a, (hl)
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
; charnumsymtoascii
|
|
||||||
;; Converts a char to "ascii"
|
;;charnumsymtoascii
|
||||||
|
;;Converts a char to "ascii"
|
||||||
;;Inputs:
|
;;Inputs:
|
||||||
;; A: char code (csc)
|
;; A: char code (csc)
|
||||||
;;Outputs:
|
;;Outputs:
|
||||||
;; A: ascii char
|
;; A: ascii char
|
||||||
charnumsymtoascii:
|
charnumsymtoascii:
|
||||||
push hl ; Convert scan code into character
|
push hl
|
||||||
ld hl, 0
|
ld hl, 0
|
||||||
ld h, 0
|
ld h, 0
|
||||||
ld l, a
|
ld l, a
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
;TODO
|
|
||||||
;;cursorcharunderreset
|
;;cursorcharunderreset
|
||||||
;;Sets curUnder to 0
|
;;Sets curUnder to 0
|
||||||
cursorcurunderreset:
|
cursorcurunderreset:
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
;;drawpixel
|
||||||
|
;;Sets a pixel to specified color (565)
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: color
|
||||||
|
;; DE: vRam location
|
||||||
|
drawpixel:
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
ex de, hl
|
||||||
|
ld (hl), e
|
||||||
|
inc hl
|
||||||
|
ld (hl), d
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;drawpixelxy
|
||||||
|
;;Sets a pixel to specified color
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: color
|
||||||
|
;; DE: x
|
||||||
|
;; A: y
|
||||||
|
drawpixelxy
|
||||||
|
push de
|
||||||
|
push hl
|
||||||
|
ex de, hl
|
||||||
|
add hl, hl
|
||||||
|
push hl
|
||||||
|
ld hl, 640
|
||||||
|
call mulAbyHL
|
||||||
|
ex de, hl
|
||||||
|
pop hl
|
||||||
|
add hl, de
|
||||||
|
ld de, vRam
|
||||||
|
add hl, de
|
||||||
|
ex de, hl
|
||||||
|
pop hl
|
||||||
|
call drawpixel
|
||||||
|
pop de
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;drawrow
|
||||||
|
;;Draws a row on lcd
|
||||||
|
;;Inputs:
|
||||||
|
;; A: y
|
||||||
|
;; HL: color
|
||||||
|
drawrow:
|
||||||
|
push hl
|
||||||
|
push bc
|
||||||
|
push hl
|
||||||
|
ld hl, lcdHeight * 2
|
||||||
|
call mulAbyHL
|
||||||
|
ld de, vRam
|
||||||
|
add hl, de
|
||||||
|
ex de, hl
|
||||||
|
pop hl
|
||||||
|
ld bc, lcdWidth
|
||||||
|
drawrowLoop:
|
||||||
|
call drawpixel
|
||||||
|
inc de
|
||||||
|
inc de
|
||||||
|
dec bc
|
||||||
|
push hl
|
||||||
|
ld hl, 0
|
||||||
|
call cpHLBC
|
||||||
|
pop hl
|
||||||
|
jr nz, drawrowLoop
|
||||||
|
pop bc
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;drawbar
|
||||||
|
;;Loops drawing row
|
||||||
|
;;Inputs:
|
||||||
|
;; A: y
|
||||||
|
;; [B]C: height
|
||||||
|
;; HL: color
|
||||||
|
drawbar:
|
||||||
|
push bc
|
||||||
|
drawbarLoop:
|
||||||
|
call drawrow
|
||||||
|
dec bc
|
||||||
|
inc a
|
||||||
|
push hl
|
||||||
|
ld hl, 0
|
||||||
|
call cpHLBC
|
||||||
|
pop hl
|
||||||
|
jr nz, drawbarLoop
|
||||||
|
pop bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;drawrectfilled
|
||||||
|
;;Draws a rectangle from coordinates (Slow)
|
||||||
|
;;Inputs:
|
||||||
|
;; DE: x
|
||||||
|
;; C: y
|
||||||
|
;; HL: width
|
||||||
|
;; A: height
|
||||||
|
;; IXH+IXL: color
|
||||||
|
drawrectfilled:
|
||||||
|
add hl, de
|
||||||
|
add a, c
|
||||||
|
ld b, a
|
||||||
|
drawrectfilledLoopY:
|
||||||
|
push de
|
||||||
|
drawrectfilledLoopX:
|
||||||
|
push hl
|
||||||
|
push bc
|
||||||
|
ex de, hl
|
||||||
|
ld d, ixh
|
||||||
|
ld e, ixl
|
||||||
|
ex de, hl
|
||||||
|
ld a, c
|
||||||
|
call drawpixelxy
|
||||||
|
pop bc
|
||||||
|
pop hl
|
||||||
|
inc de
|
||||||
|
call cpHLDE
|
||||||
|
jr nz, drawrectfilledLoopX
|
||||||
|
pop de
|
||||||
|
inc c
|
||||||
|
ld a, b
|
||||||
|
cp c
|
||||||
|
jr nz, drawrectfilledLoopY
|
||||||
|
ret
|
||||||
|
|
@ -12,9 +12,8 @@ inputgetkey:
|
||||||
jr z, inputgetkey
|
jr z, inputgetkey
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;;inputstr
|
||||||
;;inputstr [Input, String]
|
;;Inputs string of length [Buffer Size] and puts it in (Destination)
|
||||||
;;
|
|
||||||
;;Inputs:
|
;;Inputs:
|
||||||
;; HL: Destination
|
;; HL: Destination
|
||||||
;; D[E]: Buffer Size
|
;; D[E]: Buffer Size
|
||||||
|
|
@ -29,12 +28,16 @@ inputstr:
|
||||||
ld hl, CurCol
|
ld hl, CurCol
|
||||||
ld de, inputstrCurColBuf
|
ld de, inputstrCurColBuf
|
||||||
call bytecpy
|
call bytecpy
|
||||||
|
ld hl, CurRow
|
||||||
|
ld de, inputstrCurRowBuf
|
||||||
|
call bytecpy
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
|
res Shift2nd, (IY + ShiftFlags)
|
||||||
call _CursorOn
|
call _CursorOn
|
||||||
|
|
||||||
xor a
|
xor a
|
||||||
ld b, a
|
ld b, a
|
||||||
inputstrKeyInput:
|
inputstrKeyInput:
|
||||||
call cursorcurunderreset
|
call cursorcurunderreset
|
||||||
|
|
@ -67,12 +70,25 @@ inputstrKeyInput:
|
||||||
call z, chartoascii
|
call z, chartoascii
|
||||||
call nz, charnumsymtoascii
|
call nz, charnumsymtoascii
|
||||||
|
|
||||||
|
cp $FF
|
||||||
|
jr z, inputstrKeyInput
|
||||||
|
|
||||||
|
res textScrolled, (iy+textFlags)
|
||||||
|
|
||||||
call _PutC
|
call _PutC
|
||||||
|
|
||||||
ld (hl), a
|
ld (hl), a
|
||||||
inc hl
|
inc hl
|
||||||
inc b
|
inc b
|
||||||
|
|
||||||
|
bit textScrolled, (iy+textFlags)
|
||||||
|
jr z, inputstrKeyInput
|
||||||
|
push hl
|
||||||
|
ld hl, inputstrCurRowBuf
|
||||||
|
ld a, (hl)
|
||||||
|
dec a
|
||||||
|
ld (hl), a
|
||||||
|
pop hl
|
||||||
jr inputstrKeyInput
|
jr inputstrKeyInput
|
||||||
inputstrKey2nd:
|
inputstrKey2nd:
|
||||||
push hl
|
push hl
|
||||||
|
|
@ -92,7 +108,6 @@ inputstrKeyDel:
|
||||||
|
|
||||||
push hl
|
push hl
|
||||||
ld hl, CurCol
|
ld hl, CurCol
|
||||||
ld a, (hl)
|
|
||||||
dec (hl)
|
dec (hl)
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
|
|
@ -108,16 +123,14 @@ inputstrKeyClear:
|
||||||
cp 0
|
cp 0
|
||||||
jp z, inputstrKeyInput
|
jp z, inputstrKeyInput
|
||||||
|
|
||||||
push hl
|
|
||||||
ld hl, CurRow
|
|
||||||
ld c, (hl)
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
push hl
|
push hl
|
||||||
push de
|
push de
|
||||||
ld hl, inputstrCurColBuf
|
ld hl, inputstrCurColBuf
|
||||||
ld de, CurCol
|
ld de, CurCol
|
||||||
call bytecpy
|
call bytecpy
|
||||||
|
ld hl, inputstrCurRowBuf
|
||||||
|
ld de, CurRow
|
||||||
|
call bytecpy
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
|
|
@ -126,17 +139,18 @@ inputstrKeyClear:
|
||||||
inputstrKeyClearLoop:
|
inputstrKeyClearLoop:
|
||||||
call _PutC
|
call _PutC
|
||||||
djnz inputstrKeyClearLoop
|
djnz inputstrKeyClearLoop
|
||||||
|
ld b, 0
|
||||||
|
|
||||||
push hl
|
push de
|
||||||
push de
|
push hl
|
||||||
ld hl, inputstrCurColBuf
|
ld hl, inputstrCurColBuf
|
||||||
ld de, CurCol
|
ld de, CurCol
|
||||||
call bytecpy
|
call bytecpy
|
||||||
pop de
|
ld hl, inputstrCurRowBuf
|
||||||
pop hl
|
ld de, CurRow
|
||||||
|
call bytecpy
|
||||||
ld hl, CurRow
|
pop hl
|
||||||
ld (hl), c
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
push hl
|
push hl
|
||||||
jp inputstrKeyInput
|
jp inputstrKeyInput
|
||||||
|
|
@ -148,15 +162,17 @@ inputstrKeyEnter:
|
||||||
call _PutMap
|
call _PutMap
|
||||||
pop hl
|
pop hl
|
||||||
pop de
|
pop de
|
||||||
|
res Shift2nd, (IY + ShiftFlags)
|
||||||
ret
|
ret
|
||||||
|
|
||||||
inputstrFlags: .db %00000000
|
inputstrFlags: .db %00000000
|
||||||
; 0: num Flag
|
; 0: num Flag
|
||||||
inputstrSizeBuf: .dw $0000
|
inputstrSizeBuf: .dw $0000
|
||||||
inputstrCurColBuf: .db $00
|
inputstrCurColBuf: .db $00
|
||||||
|
inputstrCurRowBuf: .db $00
|
||||||
|
|
||||||
;;inputcharstr [Input, String]
|
;;inputcharstr
|
||||||
;;
|
;;Inputs string of (only letters) of length [Buffer Size] and puts it in (Destination)
|
||||||
;;Inputs:
|
;;Inputs:
|
||||||
;; HL: Destination
|
;; HL: Destination
|
||||||
;; D[E]: Buffer Size
|
;; D[E]: Buffer Size
|
||||||
|
|
@ -165,11 +181,14 @@ inputstrCurColBuf: .db $00
|
||||||
inputcharstr:
|
inputcharstr:
|
||||||
push de
|
push de
|
||||||
push hl
|
push hl
|
||||||
ld (inputcharstrSizeBuf), de
|
ld (inputstrSizeBuf), de
|
||||||
push hl
|
push hl
|
||||||
push de
|
push de
|
||||||
ld hl, CurCol
|
ld hl, CurCol
|
||||||
ld de, inputcharstrCurColBuf
|
ld de, inputstrCurColBuf
|
||||||
|
call bytecpy
|
||||||
|
ld hl, CurRow
|
||||||
|
ld de, inputstrCurRowBuf
|
||||||
call bytecpy
|
call bytecpy
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
|
|
@ -178,7 +197,6 @@ inputcharstr:
|
||||||
|
|
||||||
xor a
|
xor a
|
||||||
ld b, a
|
ld b, a
|
||||||
|
|
||||||
inputcharstrKeyInput:
|
inputcharstrKeyInput:
|
||||||
call cursorcurunderreset
|
call cursorcurunderreset
|
||||||
call inputgetkey
|
call inputgetkey
|
||||||
|
|
@ -206,14 +224,26 @@ inputcharstrKeyInput:
|
||||||
|
|
||||||
call chartoascii
|
call chartoascii
|
||||||
|
|
||||||
|
cp $FF
|
||||||
|
jr z, inputcharstrKeyInput
|
||||||
|
|
||||||
|
res textScrolled, (iy+textFlags)
|
||||||
|
|
||||||
call _PutC
|
call _PutC
|
||||||
|
|
||||||
ld (hl), a
|
ld (hl), a
|
||||||
inc hl
|
inc hl
|
||||||
inc b
|
inc b
|
||||||
|
|
||||||
jr inputcharstrKeyInput
|
bit textScrolled, (iy+textFlags)
|
||||||
|
jr z, inputcharstrKeyInput
|
||||||
|
push hl
|
||||||
|
ld hl, inputcharstrCurRowBuf
|
||||||
|
ld a, (hl)
|
||||||
|
dec a
|
||||||
|
ld (hl), a
|
||||||
|
pop hl
|
||||||
|
jr inputcharstrKeyInput
|
||||||
inputcharstrKeyDel:
|
inputcharstrKeyDel:
|
||||||
ld a, b
|
ld a, b
|
||||||
cp 0
|
cp 0
|
||||||
|
|
@ -224,7 +254,6 @@ inputcharstrKeyDel:
|
||||||
|
|
||||||
push hl
|
push hl
|
||||||
ld hl, CurCol
|
ld hl, CurCol
|
||||||
ld a, (hl)
|
|
||||||
dec (hl)
|
dec (hl)
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
|
|
@ -250,6 +279,9 @@ inputcharstrKeyClear:
|
||||||
ld hl, inputcharstrCurColBuf
|
ld hl, inputcharstrCurColBuf
|
||||||
ld de, CurCol
|
ld de, CurCol
|
||||||
call bytecpy
|
call bytecpy
|
||||||
|
ld hl, inputcharstrCurRowBuf
|
||||||
|
ld de, CurRow
|
||||||
|
call bytecpy
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
|
|
@ -267,8 +299,16 @@ inputcharstrKeyClearLoop:
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
ld hl, CurRow
|
push de
|
||||||
ld (hl), c
|
push hl
|
||||||
|
ld hl, inputcharstrCurColBuf
|
||||||
|
ld de, CurCol
|
||||||
|
call bytecpy
|
||||||
|
ld hl, inputcharstrCurRowBuf
|
||||||
|
ld de, CurRow
|
||||||
|
call bytecpy
|
||||||
|
pop hl
|
||||||
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
push hl
|
push hl
|
||||||
jp inputcharstrKeyInput
|
jp inputcharstrKeyInput
|
||||||
|
|
@ -284,9 +324,10 @@ inputcharstrKeyEnter:
|
||||||
|
|
||||||
inputcharstrSizeBuf: .dw $0000
|
inputcharstrSizeBuf: .dw $0000
|
||||||
inputcharstrCurColBuf: .db $00
|
inputcharstrCurColBuf: .db $00
|
||||||
|
inputcharstrCurRowBuf: .db $00
|
||||||
|
|
||||||
;;inputnumstr [Input, String]
|
;;inputnumstr
|
||||||
;;
|
;;Inputs string of (only numbers) of length [Buffer Size] and puts it in (Destination)
|
||||||
;;Inputs:
|
;;Inputs:
|
||||||
;; HL: Destination
|
;; HL: Destination
|
||||||
;; D[E]: Buffer Size
|
;; D[E]: Buffer Size
|
||||||
|
|
@ -301,6 +342,9 @@ inputnumstr:
|
||||||
ld hl, CurCol
|
ld hl, CurCol
|
||||||
ld de, inputnumstrCurColBuf
|
ld de, inputnumstrCurColBuf
|
||||||
call bytecpy
|
call bytecpy
|
||||||
|
ld hl, CurRow
|
||||||
|
ld de, inputnumstrCurRowBuf
|
||||||
|
call bytecpy
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
|
|
@ -338,15 +382,24 @@ inputnumstrKeyInput:
|
||||||
cp $FF
|
cp $FF
|
||||||
jr z, inputnumstrKeyInput
|
jr z, inputnumstrKeyInput
|
||||||
|
|
||||||
|
res textScrolled, (iy+textFlags)
|
||||||
|
|
||||||
call _PutC
|
call _PutC
|
||||||
|
|
||||||
ld (hl), a
|
ld (hl), a
|
||||||
inc hl
|
inc hl
|
||||||
inc b
|
inc b
|
||||||
|
|
||||||
jr inputnumstrKeyInput
|
bit textScrolled, (iy+textFlags)
|
||||||
|
jr z, inputnumstrKeyInput
|
||||||
inputnumstrKeyDel:
|
push hl
|
||||||
|
ld hl, inputnumstrCurRowBuf
|
||||||
|
ld a, (hl)
|
||||||
|
dec a
|
||||||
|
ld (hl), a
|
||||||
|
pop hl
|
||||||
|
jr inputnumstrKeyInput
|
||||||
|
inputnumstrkeydel:
|
||||||
ld a, b
|
ld a, b
|
||||||
cp 0
|
cp 0
|
||||||
jp z, inputnumstrKeyInput
|
jp z, inputnumstrKeyInput
|
||||||
|
|
@ -355,9 +408,8 @@ inputnumstrKeyDel:
|
||||||
call _PutMap
|
call _PutMap
|
||||||
|
|
||||||
push hl
|
push hl
|
||||||
ld hl, CurCol
|
ld hl, CurCol
|
||||||
ld a, (hl)
|
dec (hl)
|
||||||
dec (hl)
|
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
ld a, ' '
|
ld a, ' '
|
||||||
|
|
@ -382,6 +434,9 @@ inputnumstrKeyClear:
|
||||||
ld hl, inputnumstrCurColBuf
|
ld hl, inputnumstrCurColBuf
|
||||||
ld de, CurCol
|
ld de, CurCol
|
||||||
call bytecpy
|
call bytecpy
|
||||||
|
ld hl, inputnumstrCurRowBuf
|
||||||
|
ld de, CurRow
|
||||||
|
call bytecpy
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
|
|
||||||
|
|
@ -391,16 +446,16 @@ inputnumstrKeyClearLoop:
|
||||||
call _PutC
|
call _PutC
|
||||||
djnz inputnumstrKeyClearLoop
|
djnz inputnumstrKeyClearLoop
|
||||||
|
|
||||||
push hl
|
push de
|
||||||
push de
|
push hl
|
||||||
ld hl, inputnumstrCurColBuf
|
ld hl, inputnumstrCurColBuf
|
||||||
ld de, CurCol
|
ld de, CurCol
|
||||||
call bytecpy
|
call bytecpy
|
||||||
pop de
|
ld hl, inputnumstrCurRowBuf
|
||||||
pop hl
|
ld de, CurRow
|
||||||
|
call bytecpy
|
||||||
ld hl, CurRow
|
pop hl
|
||||||
ld (hl), c
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
push hl
|
push hl
|
||||||
jp inputnumstrKeyInput
|
jp inputnumstrKeyInput
|
||||||
|
|
@ -416,3 +471,4 @@ inputnumstrKeyEnter:
|
||||||
|
|
||||||
inputnumstrSizeBuf: .dw $0000
|
inputnumstrSizeBuf: .dw $0000
|
||||||
inputnumstrCurColBuf: .db $00
|
inputnumstrCurColBuf: .db $00
|
||||||
|
inputnumstrCurRowBuf: .db $00
|
||||||
|
|
@ -0,0 +1,109 @@
|
||||||
|
;;cpHLDE
|
||||||
|
;;Compares HL to DE.
|
||||||
|
;;Output:
|
||||||
|
;; Same as z80 CP instruction.
|
||||||
|
cpHLDE:
|
||||||
|
or a
|
||||||
|
sbc hl, de
|
||||||
|
add hl,de
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;cpHLBC
|
||||||
|
;;Compares HL to BC.
|
||||||
|
;;Output:
|
||||||
|
;; Same as z80 CP instruction.
|
||||||
|
cpHLBC:
|
||||||
|
or a
|
||||||
|
sbc hl, bc
|
||||||
|
add hl,bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;cpBCDE
|
||||||
|
;;Compares DE to BC.
|
||||||
|
;;Output:
|
||||||
|
;; Same as z80 CP instruction.
|
||||||
|
cpBCDE:
|
||||||
|
push hl
|
||||||
|
ld h, b
|
||||||
|
ld l, c
|
||||||
|
or a
|
||||||
|
sbc hl, de
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;mulAbyB
|
||||||
|
;;Multiplys AxB
|
||||||
|
;;Inputs:
|
||||||
|
;; A: Multiplier
|
||||||
|
;; B: Multiplicand
|
||||||
|
;;Outputs:
|
||||||
|
;; A: Product of A and B.
|
||||||
|
mulAbyB:
|
||||||
|
push bc
|
||||||
|
ld c, a
|
||||||
|
mulAbyBLoop:
|
||||||
|
add a, c
|
||||||
|
djnz mulAbyBLoop
|
||||||
|
sub c
|
||||||
|
pop bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;mulAbyHL
|
||||||
|
;;Multiplys AxHL
|
||||||
|
;;Inputs:
|
||||||
|
;; A: Multiplier
|
||||||
|
;; HL: Multiplicand
|
||||||
|
;;Outputs:
|
||||||
|
;; HL: Product of A and HL.
|
||||||
|
mulAbyHL:
|
||||||
|
push bc
|
||||||
|
push de
|
||||||
|
ld de, 0
|
||||||
|
ex de, hl
|
||||||
|
cp 0
|
||||||
|
jr z, mulAbyHLEnd
|
||||||
|
ld b, a
|
||||||
|
mulAbyHLLoop:
|
||||||
|
add hl, de
|
||||||
|
djnz mulAbyHLLoop
|
||||||
|
mulAbyHLEnd:
|
||||||
|
pop de
|
||||||
|
pop bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
;;mul32By8
|
||||||
|
;;Performs an unsigned multiplication of DEHL and A.
|
||||||
|
;;Outputs:
|
||||||
|
;; DEHL: product of DEHL and A
|
||||||
|
mul32By8:
|
||||||
|
push bc \ push ix
|
||||||
|
ld ixl, 8
|
||||||
|
push de
|
||||||
|
push hl
|
||||||
|
ld hl, 0
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
mul32by8loop:
|
||||||
|
add hl, hl
|
||||||
|
rl e
|
||||||
|
rl d
|
||||||
|
rla
|
||||||
|
jr nc, mul32by8noAdd
|
||||||
|
pop bc
|
||||||
|
add hl, bc
|
||||||
|
ex (sp), hl
|
||||||
|
push hl
|
||||||
|
adc hl, de
|
||||||
|
pop de
|
||||||
|
ex de, hl
|
||||||
|
ex (sp), hl
|
||||||
|
push bc
|
||||||
|
mul32by8noAdd:
|
||||||
|
dec ixl
|
||||||
|
jr nz, mul32by8loop
|
||||||
|
pop bc
|
||||||
|
pop bc
|
||||||
|
pop ix \ pop bc
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
;;memset
|
||||||
|
;;Fills B amount of bytes from hl with a
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: start
|
||||||
|
;; B: how many bytes
|
||||||
|
;; A: Byte
|
||||||
|
memset:
|
||||||
|
push hl
|
||||||
|
push bc
|
||||||
|
memsetLoop:
|
||||||
|
ld (hl), a
|
||||||
|
inc hl
|
||||||
|
djnz memsetLoop
|
||||||
|
pop bc
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
@ -1,81 +1,60 @@
|
||||||
;; strlen [Strings]
|
;;strlen
|
||||||
;; Determines the length of a zero delimited string.
|
;;Determines the length of a zero delimited string.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: String pointer
|
;; HL: String pointer
|
||||||
;; Outputs:
|
;;Outputs:
|
||||||
;; BC: String length
|
;; BC: String length
|
||||||
strlen:
|
strlen:
|
||||||
push af
|
push af
|
||||||
push hl
|
push hl
|
||||||
xor a
|
xor a
|
||||||
ld b, a
|
ld b, a
|
||||||
ld c, a
|
ld c, a
|
||||||
cpir
|
cpir
|
||||||
; bc = -bc
|
; bc = -bc
|
||||||
xor a \ sub c \ ld c, a \ sbc a, a \ sub b \ ld b, a
|
xor a \ sub c \ ld c, a \ sbc a, a \ sub b \ ld b, a
|
||||||
dec bc
|
dec bc
|
||||||
pop hl
|
pop hl
|
||||||
pop af
|
pop af
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;; strcmp [Strings]
|
;;strcmp
|
||||||
;; Determines if two strings are equal, and checks alphabetical sort order.
|
;;Determines if two strings are equal, and checks alphabetical sort order.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: String pointer
|
;; HL: String pointer
|
||||||
;; DE: String pointer
|
;; DE: String pointer
|
||||||
;; Outputs:
|
;;Outputs:
|
||||||
;; Z: Set if equal, reset if not equal
|
;; Z: Set if equal, reset if not equal
|
||||||
;; C: Set if string HL is alphabetically earlier than string DE
|
;; C: Set if string HL is alphabetically earlier than string DE
|
||||||
strcmp:
|
strcmp:
|
||||||
push hl
|
push hl
|
||||||
push de
|
push de
|
||||||
strcmpLoop:
|
strcmpLoop:
|
||||||
ld a, (de)
|
ld a, (de)
|
||||||
or a
|
or a
|
||||||
jr z, strCmpEnd
|
jr z, strCmpEnd
|
||||||
cp (hl)
|
cp (hl)
|
||||||
jr nz, strcmpExit
|
jr nz, strcmpExit
|
||||||
inc hl
|
inc hl
|
||||||
inc de
|
inc de
|
||||||
jr strcmpLoop
|
jr strcmpLoop
|
||||||
strcmpEnd:
|
strcmpEnd:
|
||||||
ld a, (hl)
|
ld a, (hl)
|
||||||
or a
|
or a
|
||||||
strcmpExit:
|
strcmpExit:
|
||||||
ccf
|
ccf
|
||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;; strcmp_sort [Strings]
|
;;strcpy
|
||||||
;; Compares strings at ((HL)) and ((DE)). That is, calls [[indirect16HLDE]],
|
;;Copies a string.
|
||||||
;; then calls [[strcmp]].
|
;;Inputs:
|
||||||
;; Inputs:
|
;; HL: String pointer
|
||||||
;; HL: Pointer to string pointer
|
;; DE: Destination
|
||||||
;; DE: Pointer to string pointer
|
;;Notes:
|
||||||
;; Outputs:
|
;; This will trample into undefined territory if you try to copy a string into some
|
||||||
;; Z: Set if equal, reset if not equal
|
;;allocated memory it won't fit in.
|
||||||
;; C: Set if string (HL) is alphabetically earlier than string (DE)
|
|
||||||
;; Notes:
|
|
||||||
;; This routine is useful as the callback for the [[callbackSort]] routine.
|
|
||||||
;; It allows sorting a list of pointers to strings in alphabetical order.
|
|
||||||
;strcmp_sort:
|
|
||||||
; push hl
|
|
||||||
; push de
|
|
||||||
; call indirect16HLDE
|
|
||||||
; call strcmp
|
|
||||||
; pop de
|
|
||||||
; pop hl
|
|
||||||
; ret
|
|
||||||
|
|
||||||
;; strcpy [Strings]
|
|
||||||
;; Copies a string.
|
|
||||||
;; Inputs:
|
|
||||||
;; HL: String pointer
|
|
||||||
;; DE: Destination
|
|
||||||
;; Notes:
|
|
||||||
;; This will trample into undefined territory if you try to copy a string into some
|
|
||||||
;; allocated memory it won't fit in.
|
|
||||||
strcpy:
|
strcpy:
|
||||||
push de
|
push de
|
||||||
push hl
|
push hl
|
||||||
|
|
@ -90,34 +69,34 @@ _: pop hl
|
||||||
pop de
|
pop de
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;; strchr [Strings]
|
;;strchr
|
||||||
;; Returns a pointer on the first occurence of a character in a string.
|
;;Returns a pointer on the first occurence of a character in a string.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: Haystack
|
;; HL: Haystack
|
||||||
;; B: Needle
|
;; B: Needle
|
||||||
;; Outputs:
|
;;Outputs:
|
||||||
;; HL: Pointer to first occurence of character
|
;; HL: Pointer to first occurence of character
|
||||||
;; Z: Set if character found
|
;; Z: Set if character found
|
||||||
;; A: Destroyed
|
;; A: Destroyed
|
||||||
strchr:
|
strchr:
|
||||||
strchrLoop:
|
strchrLoop:
|
||||||
ld a, (hl)
|
ld a, (hl)
|
||||||
or a
|
or a
|
||||||
jr z, strchrNoCharFound
|
jr z, strchrNoCharFound
|
||||||
cp b
|
cp b
|
||||||
ret z
|
ret z
|
||||||
inc hl
|
inc hl
|
||||||
jr strchrLoop
|
jr strchrLoop
|
||||||
strchrNoCharFound:
|
strchrNoCharFound:
|
||||||
inc a
|
inc a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;; strtob
|
;;strtob
|
||||||
;; Converts a string to a byte
|
;;Converts a string to a byte
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: string pointer
|
;; HL: string pointer
|
||||||
;; Outputs:
|
;;Outputs:
|
||||||
;; A: byte
|
;; A: byte
|
||||||
strtob:
|
strtob:
|
||||||
push bc
|
push bc
|
||||||
push de
|
push de
|
||||||
|
|
@ -176,12 +155,12 @@ strtobExit:
|
||||||
pop bc
|
pop bc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;; strtow
|
;;strtow
|
||||||
;; Converts a string to a byte
|
;;Converts a string to a byte
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: string pointer
|
;; HL: string pointer
|
||||||
;; Outputs:
|
;;Outputs:
|
||||||
;; HL: byte
|
;; HL: byte
|
||||||
strtow:
|
strtow:
|
||||||
push bc
|
push bc
|
||||||
push de
|
push de
|
||||||
|
|
@ -211,6 +190,7 @@ strtowNumWhileLoop:
|
||||||
inc c
|
inc c
|
||||||
jr strtowNumWhileLoop
|
jr strtowNumWhileLoop
|
||||||
strtowConvert:
|
strtowConvert:
|
||||||
|
ld bc, 0
|
||||||
dec hl
|
dec hl
|
||||||
ld a, (hl)
|
ld a, (hl)
|
||||||
sub '0'
|
sub '0'
|
||||||
|
|
@ -278,12 +258,12 @@ strtowExit:
|
||||||
pop bc
|
pop bc
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;; toLower [Strings]
|
;;toLower [Strings]
|
||||||
;; Converts every alpha character of a string to lowercase.
|
;;Converts every alpha character of a string to lowercase.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: Pointer to string
|
;; HL: Pointer to string
|
||||||
;; Notes:
|
;;Notes:
|
||||||
;; This modifies the string in-place.
|
;; This modifies the string in-place.
|
||||||
;toLower:
|
;toLower:
|
||||||
; push af \ push hl
|
; push af \ push hl
|
||||||
; ld a, (hl)
|
; ld a, (hl)
|
||||||
|
|
@ -302,12 +282,12 @@ strtowExit:
|
||||||
; pop hl \ pop af
|
; pop hl \ pop af
|
||||||
; ret
|
; ret
|
||||||
|
|
||||||
;; toUpper [Strings]
|
;;toUpper [Strings]
|
||||||
;; Converts every alpha character of a string to uppercase.
|
;;Converts every alpha character of a string to uppercase.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: Pointer to string
|
;; HL: Pointer to string
|
||||||
;; Notes:
|
;;Notes:
|
||||||
;; This modifies the string in-place.
|
;; This modifies the string in-place.
|
||||||
;toUpper:
|
;toUpper:
|
||||||
; push af \ push hl
|
; push af \ push hl
|
||||||
; ld a, (hl)
|
; ld a, (hl)
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
;; wordcpy [Words]
|
;;wordcpy [Words]
|
||||||
;; Copies a word.
|
;;Copies a word.
|
||||||
;; Inputs:
|
;;Inputs:
|
||||||
;; HL: word pointer
|
;; HL: word pointer
|
||||||
;; DE: Destination
|
;; DE: Destination
|
||||||
wordcpy:
|
wordcpy:
|
||||||
push de
|
push de
|
||||||
push hl
|
push hl
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
#include "includes/lib/std/Math.asm"
|
||||||
|
#include "includes/lib/std/Byte.asm"
|
||||||
|
#include "includes/lib/std/Mem.asm"
|
||||||
|
#include "includes/lib/std/Char.asm"
|
||||||
|
#include "includes/lib/std/Cursor.asm"
|
||||||
|
#include "includes/lib/std/Print.asm"
|
||||||
|
#include "includes/lib/std/Draw.asm"
|
||||||
|
#include "includes/lib/std/Array.asm"
|
||||||
|
|
||||||
|
#include "includes/lib/std/String.asm"
|
||||||
|
|
||||||
|
#include "includes/lib/std/Input.asm"
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
;;decodecmdopt
|
||||||
|
;;compares cmdXs to command input and conditionally sets opt to optcode
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: cmd string input
|
||||||
|
;; DE: op code mem location
|
||||||
|
#macro decodecmdopt(cmdXs, cmdXo)
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
ld de, cmdXs
|
||||||
|
call strcmp
|
||||||
|
ld hl, cmdXo
|
||||||
|
pop de
|
||||||
|
call z, bytecpy
|
||||||
|
pop hl
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
#macro routeoptjp(cmdXo, cmdXf)
|
||||||
|
ld de, cmdXo
|
||||||
|
call bytecmp
|
||||||
|
jp z, cmdXf
|
||||||
|
#endmacro
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
#macro drawpixelxyM(x, y)
|
||||||
|
ld de, x
|
||||||
|
ld a, y
|
||||||
|
call drawpixelxy
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
#macro drawlineM(x1, y1, x2, y2)
|
||||||
|
;TODO
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
#macro drawrowM(y)
|
||||||
|
ld a, y
|
||||||
|
call drawrow
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
#macro drawbarM(y, height)
|
||||||
|
ld a, y
|
||||||
|
ld bc, height
|
||||||
|
call drawbar
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
#macro drawrectfilledM(x, y, width, height)
|
||||||
|
ex de, hl
|
||||||
|
ld ixl, e
|
||||||
|
ld ixh, d
|
||||||
|
ex de, hl
|
||||||
|
ld hl, width
|
||||||
|
ld de, x
|
||||||
|
ld bc, 0
|
||||||
|
ld c, y
|
||||||
|
ld a, height
|
||||||
|
call drawrectfilled
|
||||||
|
#endmacro
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
#include "includes/macros/misc.asm"
|
||||||
|
#include "includes/macros/pixel.asm"
|
||||||
|
#include "includes/macros/draw.asm"
|
||||||
|
#include "includes/macros/command.asm"
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
;;rgbto565
|
||||||
|
;;turns an rgb input into the 656 format that the lcd uses
|
||||||
|
;;Inputs:
|
||||||
|
;; r,g,b
|
||||||
|
;;Outputs:
|
||||||
|
;; HL: color
|
||||||
|
#macro rgbto565(red, green, blue)
|
||||||
|
ld hl, ((red / 255 * 31) << 11) | ((green / 255 * 63) << 5) | ((blue / 255 * 31))
|
||||||
|
#endmacro
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
;;pixel
|
||||||
|
;;Gets vRam location of coordinates
|
||||||
|
;;Inputs:
|
||||||
|
;; x: x axis
|
||||||
|
;; y: y axis
|
||||||
|
;;Outputs:
|
||||||
|
;; DE: vRam location
|
||||||
|
#macro pixel(x, y)
|
||||||
|
ld de, vRam + (y * 320 * 2) + (x * 2)
|
||||||
|
#endmacro
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
;;TODO: move module specific macros to diffrent file
|
||||||
|
;;manroute
|
||||||
|
;;routes command string to discription
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: Command String
|
||||||
|
;;Outputs:
|
||||||
|
;; HL: Command Discription String
|
||||||
|
manroute:
|
||||||
|
push de
|
||||||
|
#macro routestrjp(cmdXs, cmdXm)
|
||||||
|
ld de, cmdXs
|
||||||
|
call strcmp
|
||||||
|
ld de, cmdXm
|
||||||
|
jp z, manrouteReturn
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
call fshcmdmanroute
|
||||||
|
;Extention Point
|
||||||
|
|
||||||
|
ld hl, FshCmdErrCode
|
||||||
|
ld (hl), $01
|
||||||
|
ld de, $00
|
||||||
|
manrouteReturn:
|
||||||
|
ex de, hl
|
||||||
|
pop de
|
||||||
|
ret
|
||||||
|
|
||||||
|
;;manrouteu
|
||||||
|
;;routes command string to usage
|
||||||
|
;;Inputs:
|
||||||
|
;; HL: Command String
|
||||||
|
;;Outputs:
|
||||||
|
;; HL: Command Usage String
|
||||||
|
manrouteu:
|
||||||
|
push de
|
||||||
|
#macro routeustrjp(cmdXs, cmdXu)
|
||||||
|
ld de, cmdXs
|
||||||
|
call strcmp
|
||||||
|
ld de, cmdXu
|
||||||
|
jp z, manrouteuReturn
|
||||||
|
#endmacro
|
||||||
|
|
||||||
|
call fshcmdmanrouteu
|
||||||
|
;Extention Point
|
||||||
|
|
||||||
|
ld hl, FshCmdErrCode
|
||||||
|
ld (hl), $01
|
||||||
|
ld de, $00
|
||||||
|
manrouteuReturn:
|
||||||
|
ex de, hl
|
||||||
|
pop de
|
||||||
|
ret
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
.nolist
|
||||||
|
|
||||||
|
; Included for Assembler Compatibility
|
||||||
|
;------------------------------------
|
||||||
|
#define equ .equ
|
||||||
|
#define EQU .equ
|
||||||
|
#define end .end
|
||||||
|
#define END .end
|
||||||
|
|
||||||
|
#define FshVarsSize 128 ;256 bytes | 64 words
|
||||||
|
#define FshCmdSize 64 ;64 bytes | 44 chars , 5 qwords (CMD + args) , + 4 0's| 1 byte null | 2 byte optcode | 1 byte arg flags |1 byte (err code) | 6 unused
|
||||||
|
#define FshCmdInptSize 44
|
||||||
|
#define FshCmdCmdSize 8
|
||||||
|
#define FshPrgmSize 1024
|
||||||
|
|
||||||
|
RamVars equ 0D0EA1Fh ;saveSScreen | 21945 bytes
|
||||||
|
FshVars equ RamVars
|
||||||
|
FshCmd equ FshVars + FshVarsSize
|
||||||
|
FshPrgm equ FshCmd + FshCmdSize
|
||||||
|
|
||||||
|
FshCmdNull equ FshCmd + FshCmdInptSize
|
||||||
|
FshCmdOP equ FshCmdNull + 1
|
||||||
|
FshCmdArg0 equ FshCmd + 9
|
||||||
|
FshCmdArg1 equ FshCmdArg0 + 9
|
||||||
|
FshCmdArg2 equ FshCmdArg1 + 9
|
||||||
|
FshCmdArg3 equ FshCmdArg2 + 9
|
||||||
|
FshCmdArgFlags equ FshCmdArg3 + 10
|
||||||
|
FshCmdErrCode equ FshCmdArgFlags + 1
|
||||||
|
|
@ -481,7 +481,7 @@ _ClrLCDFull equ 0020808h
|
||||||
_ClrLCD equ 002080Ch
|
_ClrLCD equ 002080Ch
|
||||||
_ClrScrnFull equ 0020810h
|
_ClrScrnFull equ 0020810h
|
||||||
_ClrScrn equ 0020814h
|
_ClrScrn equ 0020814h
|
||||||
_ClrTxtShd equ 0020818h
|
_ClrTxtShdw equ 0020818h
|
||||||
_ClrWindow equ 002081Ch
|
_ClrWindow equ 002081Ch
|
||||||
_EraseEOL equ 0020820h
|
_EraseEOL equ 0020820h
|
||||||
_EraseEOW equ 0020824h
|
_EraseEOW equ 0020824h
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
charMapCSC:
|
charMapCSC:
|
||||||
.DB 0, "WRMH", 0, 0
|
.DB "\"WRMH", $FF, $FF
|
||||||
.DB Lquestion, Ltheta, "VQLG", 0, 0
|
.DB Lquestion, Ltheta, "VQLG", $FF, $FF
|
||||||
.DB ":ZUPKFC", 0
|
.DB ":ZUPKFC", $FF
|
||||||
.DB " YTOJEB",0
|
.DB " YTOJEB", $FF
|
||||||
.DB 0, "XSNIDA"
|
.DB $FF, "XSNIDA"
|
||||||
|
|
||||||
numsymMapCSC
|
numsymMapCSC
|
||||||
.DB "+-*/^", $FF, $FF
|
.DB "+-*/^", $FF, $FF
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
Loading…
Reference in New Issue