mirror of
https://github.com/romychs/Sprinter-FT.git
synced 2026-02-20 03:11:52 +03:00
Compare commits
No commits in common. "master" and "v1.0.1" have entirely different histories.
7981
Export/PCB_Sprinter-FT_v1.0.1.BOTTOM.pdf
Normal file
7981
Export/PCB_Sprinter-FT_v1.0.1.BOTTOM.pdf
Normal file
File diff suppressed because it is too large
Load Diff
10742
Export/PCB_Sprinter-FT_v1.0.1.pdf
Normal file
10742
Export/PCB_Sprinter-FT_v1.0.1.pdf
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
BIN
Export/Schematic_Sprinter-FT_v1.0.1.pdf
Normal file
BIN
Export/Schematic_Sprinter-FT_v1.0.1.pdf
Normal file
Binary file not shown.
5
Export/Schematic_Sprinter-FT_v1.0.1.svg
Normal file
5
Export/Schematic_Sprinter-FT_v1.0.1.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 646 KiB |
Binary file not shown.
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 757 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 487 KiB |
BIN
Export/render.png
Normal file
BIN
Export/render.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
BIN
Gerber/Sprinter-FT_v1.0.1.zip
Normal file
BIN
Gerber/Sprinter-FT_v1.0.1.zip
Normal file
Binary file not shown.
Binary file not shown.
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
[Файлы для производства](Export/Gerbers/Sprinter-FT_v1.0.0.zip)
|
[Файлы для производства](Export/Gerbers/Sprinter-FT_v1.0.0.zip)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Спринтер в Телеграм](https://t.me/zx_sprinter)
|
[Спринтер в Телеграм](https://t.me/zx_sprinter)
|
||||||
|
|
||||||
|
|||||||
1
Sources/PCB_Sprinter-FT-v1.0.1.json
Normal file
1
Sources/PCB_Sprinter-FT-v1.0.1.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
Sources/Schematic_Sprinter-FT-v1.0.1.json
Normal file
1
Sources/Schematic_Sprinter-FT-v1.0.1.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,4 +0,0 @@
|
|||||||
FT-Tester
|
|
||||||
=========
|
|
||||||
|
|
||||||
Test program for Sprinter-FT ISA-8 card.
|
|
||||||
@ -1,74 +0,0 @@
|
|||||||
; ======================================================
|
|
||||||
; Defines for DSS Estex for Sprinter computer
|
|
||||||
; By Roman Boykov. Copyright (c) 2024
|
|
||||||
; https://github.com/romychs
|
|
||||||
; ======================================================
|
|
||||||
|
|
||||||
IFNDEF _DSS_INC
|
|
||||||
DEFINE _DSS_INC
|
|
||||||
|
|
||||||
; DSS RST Entry
|
|
||||||
DSS EQU 0x10
|
|
||||||
|
|
||||||
; DSS Functions
|
|
||||||
DSS_CURDISK EQU 0x02
|
|
||||||
DSS_CREATE_FILE EQU 0x0B
|
|
||||||
DSS_OPEN_FILE EQU 0x11
|
|
||||||
DSS_CLOSE_FILE EQU 0x12
|
|
||||||
DSS_READ_FILE EQU 0x13
|
|
||||||
DSS_WRITE EQU 0x14
|
|
||||||
DSS_MOVE_FP_CP EQU 0x0115
|
|
||||||
DSS_FIND_FIRST EQU 0x0119
|
|
||||||
DSS_FIND_NEXT EQU 0x011A
|
|
||||||
DSS_MKDIR EQU 0x1B
|
|
||||||
DSS_CHDIR EQU 0x1D
|
|
||||||
DSS_CURDIR EQU 0x1E
|
|
||||||
DSS_SCANKEY EQU 0x31
|
|
||||||
DSS_ECHOKEY EQU 0x32
|
|
||||||
DSS_SETMEM EQU 0x38
|
|
||||||
DSS_GETMEM EQU 0x3D
|
|
||||||
DSS_FREEMEM EQU 0x3E
|
|
||||||
DSS_EXIT EQU 0x41
|
|
||||||
DSS_WAITKEY EQU 0x48
|
|
||||||
DSS_SETVMOD EQU 0x50
|
|
||||||
DSS_GETVMOD EQU 0x51
|
|
||||||
DSS_CLEAR EQU 0x56
|
|
||||||
DSS_PUTCHAR EQU 0x5B
|
|
||||||
DSS_PCHARS EQU 0x5C
|
|
||||||
|
|
||||||
|
|
||||||
DSS_VMOD_T40 EQU 0x02 ; text 40x32, 16 colors
|
|
||||||
DSS_VMOD_T80 EQU 0x03 ; text 80x32, 16 colors
|
|
||||||
DSS_VMOD_G320 EQU 0x81 ; graphics 320x256, 256 colors
|
|
||||||
DSS_VMOD_G640 EQU 0x82 ; graphics 640x256, 16 colors
|
|
||||||
|
|
||||||
|
|
||||||
; DSS Error codes
|
|
||||||
E_FILE_EXISTS EQU 7
|
|
||||||
E_FILE_NOT_FOUND EQU 3
|
|
||||||
|
|
||||||
; Keyboard Shift key status bits
|
|
||||||
KB_R_ALT EQU 0x01
|
|
||||||
KB_R_CTRL EQU 0x02
|
|
||||||
KB_L_ALT EQU 0x04
|
|
||||||
KB_L_CTRL EQU 0x08
|
|
||||||
KB_ALT EQU 0x10
|
|
||||||
KB_CTRL EQU 0x20
|
|
||||||
KB_R_SHIFT EQU 0x40
|
|
||||||
KB_L_SHIFT EQU 0x80
|
|
||||||
|
|
||||||
|
|
||||||
; File attributes
|
|
||||||
FA_READONLY EQU 0x01
|
|
||||||
FA_HIDDEN EQU 0x02
|
|
||||||
FA_SYSTEM EQU 0x04
|
|
||||||
FA_LABEL EQU 0x08
|
|
||||||
FA_DIRECTORY EQU 0x10
|
|
||||||
FA_ARCHIVE EQU 0x20
|
|
||||||
|
|
||||||
; File Access mode
|
|
||||||
FM_READ_WRITE EQU 0x00
|
|
||||||
FM_READ EQU 0x01
|
|
||||||
FM_WRITE EQU 0x02
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
316
Tester/ftlib.asm
316
Tester/ftlib.asm
@ -1,316 +0,0 @@
|
|||||||
; ======================================================
|
|
||||||
; Library for Sprinter-FT ISA Card
|
|
||||||
; By Roman Boykov. Copyright (c) 2025
|
|
||||||
; https://github.com/romychs
|
|
||||||
; License: BSD 3-Clause
|
|
||||||
; ======================================================
|
|
||||||
|
|
||||||
IFNDEF _FT_LIB
|
|
||||||
DEFINE _FT_LIB
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDE "isa.asm"
|
|
||||||
INCLUDE "util.asm"
|
|
||||||
INCLUDE "ftlib.inc"
|
|
||||||
|
|
||||||
MODULE FT
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Reset ESP module
|
|
||||||
; ------------------------------------------------------
|
|
||||||
|
|
||||||
FT_RESET
|
|
||||||
PUSH AF,HL
|
|
||||||
|
|
||||||
CALL ISA.ISA_OPEN
|
|
||||||
|
|
||||||
; TODO: FT Init code here
|
|
||||||
|
|
||||||
XOR A
|
|
||||||
LD (PORT_FT_CTRL),A
|
|
||||||
|
|
||||||
CALL ISA.ISA_CLOSE
|
|
||||||
|
|
||||||
; wait 2s for ESP firmware boot
|
|
||||||
LD HL,2000
|
|
||||||
CALL UTIL.DELAY
|
|
||||||
|
|
||||||
POP HL,AF
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Init FT videomode
|
|
||||||
; Inp: A - videomode
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_INIT
|
|
||||||
LD H, 0
|
|
||||||
LD L, A
|
|
||||||
CALL UTIL.MUL_10
|
|
||||||
LD IX, FT_MODE
|
|
||||||
ADD IX, BC ; IX -> Mode parameters
|
|
||||||
|
|
||||||
ft_cmd FT_CMD_PWRDOWN
|
|
||||||
ft_cmd FT_CMD_ACTIVE
|
|
||||||
ft_cmd FT_CMD_SLEEP
|
|
||||||
ft_cmd FT_CMD_CLKEXT
|
|
||||||
|
|
||||||
LD A, (IX + f_mul) ; ft_cmdp(FT_CMD_CLKSEL, mode->f_mul | 0x40);
|
|
||||||
AND 0x40
|
|
||||||
LD C, A
|
|
||||||
LD B, FT_CMD_CLKSEL
|
|
||||||
CALL FT_CMD_P
|
|
||||||
|
|
||||||
ft_cmd FT_CMD_ACTIVE
|
|
||||||
ft_cmd FT_CMD_RST_PULSE
|
|
||||||
|
|
||||||
; Wait for reset complete
|
|
||||||
; while ft_rreg8(FT_REG_ID) != FT_ID)
|
|
||||||
.IN_CMPL1
|
|
||||||
ft_rreg8 FT_REG_ID
|
|
||||||
CP FT_ID
|
|
||||||
JP NZ, .IN_CMPL1
|
|
||||||
; while (ft_rreg16(FT_REG_CPURESET) != 0);
|
|
||||||
.IN_CMPL2
|
|
||||||
ft_rreg16 FT_REG_CPURESET
|
|
||||||
LD A, B
|
|
||||||
OR C
|
|
||||||
JP NZ, .IN_CMPL2
|
|
||||||
|
|
||||||
; TODO: Init videomode
|
|
||||||
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Check ISA slots for Sprinter-FT card
|
|
||||||
; Out: CF if no card found;
|
|
||||||
; A = Slot number, 0 - ISA-1, 1 - ISA2
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_FIND
|
|
||||||
PUSH BC, HL
|
|
||||||
|
|
||||||
LD HL, ISA.ISA_SLOT
|
|
||||||
XOR A
|
|
||||||
LD (HL),A
|
|
||||||
LD B,2
|
|
||||||
|
|
||||||
.FT_CHK_SLOT:
|
|
||||||
CALL ISA.ISA_OPEN
|
|
||||||
LD A, (PORT_FT_CTRL)
|
|
||||||
CALL ISA.ISA_CLOSE
|
|
||||||
CP 0xFC
|
|
||||||
JR Z, .FT_FOUND
|
|
||||||
; HL -> ISA.ISA_SLOT
|
|
||||||
INC (HL)
|
|
||||||
DJNZ .FT_CHK_SLOT
|
|
||||||
SCF
|
|
||||||
.FT_FOUND
|
|
||||||
LD A, (HL)
|
|
||||||
POP HL, BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Activate FT chip. Sent ACTIVE command
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_ACTIVATE
|
|
||||||
XOR A
|
|
||||||
LD B, A
|
|
||||||
LD C, A
|
|
||||||
CALL FT_CMD_P
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Get FT chip info
|
|
||||||
; Out: A = 0x10..0x14 for FT810-814
|
|
||||||
; DE -> response buffer: 0x08, id=0x10..0x14, 0x01, 0x00
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_GET_CHIP_ID
|
|
||||||
;PUSH HL
|
|
||||||
CALL ISA.ISA_OPEN
|
|
||||||
LD HL, PORT_FT_DATA
|
|
||||||
LD BC, PORT_FT_CTRL
|
|
||||||
|
|
||||||
; #FT_CS="0" active
|
|
||||||
LD A, (BC)
|
|
||||||
OR FT_CS_ON
|
|
||||||
LD (BC), A
|
|
||||||
|
|
||||||
; Send cmd read addr 0xC0000
|
|
||||||
LD A, 0x0C
|
|
||||||
LD (HL), A ; addr3
|
|
||||||
XOR A
|
|
||||||
LD (HL), A ; addr2
|
|
||||||
NOP
|
|
||||||
LD (HL), A ; addr1
|
|
||||||
NOP
|
|
||||||
LD (HL), A ; dummy
|
|
||||||
|
|
||||||
; Get response (4 bytes)
|
|
||||||
LD DE, FT_BUFFER
|
|
||||||
|
|
||||||
LD A, (HL) ; dummy ZC
|
|
||||||
NOP
|
|
||||||
|
|
||||||
LD A, (HL)
|
|
||||||
LD (DE), A
|
|
||||||
INC DE
|
|
||||||
|
|
||||||
LD A, (HL)
|
|
||||||
LD (DE), A
|
|
||||||
;PUSH AF
|
|
||||||
INC DE
|
|
||||||
|
|
||||||
LD A, (HL)
|
|
||||||
LD (DE), A
|
|
||||||
INC DE
|
|
||||||
|
|
||||||
LD A, (HL)
|
|
||||||
LD (DE), A
|
|
||||||
INC DE
|
|
||||||
|
|
||||||
; #FT_CS="1" deactivate
|
|
||||||
LD A, (BC)
|
|
||||||
AND FT_CS_OFF
|
|
||||||
LD (BC), A
|
|
||||||
|
|
||||||
; close ISA and return
|
|
||||||
CALL ISA.ISA_CLOSE
|
|
||||||
;LD DE, FT_BUFFER
|
|
||||||
;POP AF
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Send command to FT
|
|
||||||
; Inp: A - cmd to send
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_CMD_P
|
|
||||||
PUSH BC
|
|
||||||
LD B, A
|
|
||||||
LD C, 0
|
|
||||||
CALL FT_CMD
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Send command to FT
|
|
||||||
; Inp: B - cmd code;
|
|
||||||
; C = cmd parameter
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_CMD
|
|
||||||
PUSH HL, DE
|
|
||||||
CALL START_SPI
|
|
||||||
; Send cmd
|
|
||||||
LD A, B ; code
|
|
||||||
LD (HL), A ;
|
|
||||||
LD A, C ; parameter
|
|
||||||
LD (HL), A ;
|
|
||||||
XOR A
|
|
||||||
LD (HL), A ; dummy 0
|
|
||||||
CALL STOP_SPI
|
|
||||||
POP DE, HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Read 8 bit FT register
|
|
||||||
; Inp: BC - Register
|
|
||||||
; Out: A - value
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_RREG8
|
|
||||||
PUSH HL, DE
|
|
||||||
CALL START_SPI
|
|
||||||
|
|
||||||
LD A, FT_RAM_REG >> 16
|
|
||||||
LD (HL), A
|
|
||||||
NOP
|
|
||||||
LD (HL), B
|
|
||||||
NOP
|
|
||||||
LD (HL), C
|
|
||||||
NOP
|
|
||||||
LD (HL), C ; dummy (FT812)
|
|
||||||
NOP
|
|
||||||
LD A, (HL) ; dummy (ZC)
|
|
||||||
NOP
|
|
||||||
LD B, (HL)
|
|
||||||
CALL STOP_SPI
|
|
||||||
LD A, B
|
|
||||||
POP DE, HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Read 16 bit FT register
|
|
||||||
; Inp: BC - Register
|
|
||||||
; Out: BC - value
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_RREG16
|
|
||||||
PUSH HL, DE
|
|
||||||
CALL START_SPI
|
|
||||||
|
|
||||||
LD A, FT_RAM_REG >> 16
|
|
||||||
LD (HL), A
|
|
||||||
NOP
|
|
||||||
LD (HL), B
|
|
||||||
NOP
|
|
||||||
LD (HL), C
|
|
||||||
NOP
|
|
||||||
LD (HL), C ; dummy FT
|
|
||||||
|
|
||||||
NOP
|
|
||||||
LD A, (HL) ; dummy (ZC)
|
|
||||||
NOP
|
|
||||||
LD B, (HL)
|
|
||||||
NOP
|
|
||||||
LD C, (HL)
|
|
||||||
|
|
||||||
CALL STOP_SPI
|
|
||||||
POP DE, HL
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Open ISA and apply FT_CS=0 (active)
|
|
||||||
; ------------------------------------------------------
|
|
||||||
START_SPI
|
|
||||||
CALL ISA.ISA_OPEN
|
|
||||||
LD HL, PORT_FT_DATA
|
|
||||||
LD DE, PORT_FT_CTRL
|
|
||||||
|
|
||||||
; #FT_CS="0" active
|
|
||||||
LD A, (DE)
|
|
||||||
OR FT_CS_ON
|
|
||||||
LD (DE), A
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Apply FT_CS=1 (passive) and close ISA
|
|
||||||
; ------------------------------------------------------
|
|
||||||
STOP_SPI
|
|
||||||
; #FT_CS="1" deactivate
|
|
||||||
LD A, (DE)
|
|
||||||
AND FT_CS_OFF
|
|
||||||
LD (DE), A
|
|
||||||
|
|
||||||
; close ISA and return
|
|
||||||
CALL ISA.ISA_CLOSE
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Read byte from FT (ISA will be opened)
|
|
||||||
; Inp: DE -> buffer to receive byte
|
|
||||||
; Out: A - received byte;
|
|
||||||
; DE = DE+1
|
|
||||||
; ------------------------------------------------------
|
|
||||||
FT_READ_BYTE
|
|
||||||
LD A, (PORT_FT_DATA)
|
|
||||||
LD (DE), A
|
|
||||||
INC DE
|
|
||||||
RET
|
|
||||||
|
|
||||||
FT_BUFFER DS FT_BUFFER_SIZE, 0
|
|
||||||
|
|
||||||
|
|
||||||
ENDMODULE
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
458
Tester/ftlib.inc
458
Tester/ftlib.inc
@ -1,458 +0,0 @@
|
|||||||
IFNDEF _FT_LIB_INC
|
|
||||||
DEFINE _FT_LIB_INC
|
|
||||||
|
|
||||||
|
|
||||||
FT_CTRL EQU 0x77
|
|
||||||
FT_DATA EQU 0x57
|
|
||||||
FT_BUFFER_SIZE EQU 128
|
|
||||||
|
|
||||||
FT_CS_ON EQU 0x04
|
|
||||||
FT_CS_OFF EQU 0xFB
|
|
||||||
|
|
||||||
PORT_FT_CTRL EQU ISA_BASE_A + FT_CTRL ; Memory address to read Strinter-FT Control port
|
|
||||||
PORT_FT_DATA EQU ISA_BASE_A + FT_DATA ; Memory address to read Strinter-FT Data port
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FT_MODE_640_480_57 EQU 0 ; 0: 640x480@57Hz (48MHz)
|
|
||||||
FT_MODE_640_480_74 EQU 1 ; 1: 640x480@74Hz (64MHz)
|
|
||||||
FT_MODE_640_480_76 EQU 2 ; 2: 640x480@76Hz (64MHz)
|
|
||||||
FT_MODE_800_600_60 EQU 3 ; 3: 800x600@60Hz (40MHz)
|
|
||||||
FT_MODE_800_600_60_80MHZ EQU 4 ; 4: 800x600@60Hz (80MHz)
|
|
||||||
FT_MODE_800_600_69 EQU 5 ; 5: 800x600@69Hz (48MHz)
|
|
||||||
FT_MODE_800_600_85 EQU 6 ; 6: 800x600@85Hz (56MHz)
|
|
||||||
FT_MODE_1024_768_59 EQU 7 ; 7: 1024x768@59Hz (64MHz)
|
|
||||||
FT_MODE_1024_768_67 EQU 8 ; 8: 1024x768@67Hz (72MHz)
|
|
||||||
FT_MODE_1024_768_76 EQU 9 ; 9: 1024x768@76Hz (80MHz)
|
|
||||||
FT_MODE_1280_1024_60_HALF EQU 10 ; 10: 1280/2x1024@60Hz (56MHz)
|
|
||||||
FT_MODE_1280_720_58 EQU 11 ; 11: 1280x720@58Hz (72MHz)
|
|
||||||
FT_MODE_1280_720_60 EQU 12 ; 12: 1280x720@60Hz (72MHz)
|
|
||||||
FT_MODE_800_600_48_7 EQU 13 ; 13: 800x600@48.7Hz (40MHz) - for ZX-Evo sync
|
|
||||||
FT_MODE_1024_768_48_7 EQU 14 ; 14: 1024x768@48.7Hz (64MHz) - for ZX-Evo sync
|
|
||||||
FT_MODE_MAX EQU 15
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Videomode parameters 10 bytes each
|
|
||||||
FT_MODE
|
|
||||||
; f_mul, f_div, h_fporch, h_sync, h_bporch, h_visible, v_fporch, v_sync, v_bporch, v_visible
|
|
||||||
DW 6, 2, 16, 96, 48, 640, 11, 2, 31, 480 ; 0: 640x480@57Hz (48MHz)
|
|
||||||
DW 8, 2, 24, 40, 128, 640, 9, 3, 28, 480 ; 1: 640x480@74Hz (64MHz)
|
|
||||||
DW 8, 2, 16, 96, 48, 640, 11, 2, 31, 480 ; 2: 640x480@76Hz (64MHz)
|
|
||||||
DW 5, 1, 40, 128, 88, 800, 1, 4, 23, 600 ; 3: 800x600@60Hz (40MHz)
|
|
||||||
DW 10, 2, 40, 128, 88, 800, 1, 4, 23, 600 ; 4: 800x600@60Hz (80MHz)
|
|
||||||
DW 6, 1, 56, 120, 64, 800, 37, 6, 23, 600 ; 5: 800x600@69Hz (48MHz)
|
|
||||||
DW 7, 1, 32, 64, 152, 800, 1, 3, 27, 600 ; 6: 800x600@85Hz (56MHz)
|
|
||||||
DW 8, 1, 24, 136, 160, 1024, 3, 6, 29, 768 ; 7: 1024x768@59Hz (64MHz)
|
|
||||||
DW 9, 1, 24, 136, 144, 1024, 3, 6, 29, 768 ; 8: 1024x768@67Hz (72MHz)
|
|
||||||
DW 10, 1, 16, 96, 176, 1024, 1, 3, 28, 768 ; 9: 1024x768@76Hz (80MHz)
|
|
||||||
DW 7, 1, 24, 56, 124, 640, 1, 3, 38, 1024 ; 10: 1280/2x1024@60Hz (56MHz)
|
|
||||||
DW 9, 1, 110, 40, 220, 1280, 5, 5, 20, 720 ; 11: 1280x720@58Hz (72MHz)
|
|
||||||
DW 9, 1, 93, 40, 187, 1280, 5, 5, 20, 720 ; 12: 1280x720@60Hz (72MHz)
|
|
||||||
DW 5, 1, 40, 128, 88, 800, 1, 4, 23, 748 ; 13: 800x600@48.7Hz (40MHz) - for ZX-Evo sync
|
|
||||||
DW 8, 1, 24, 136, 160, 1024, 3, 6, 29, 938 ; 14: 1024x768@48.7Hz (64MHz) - for ZX-Evo sync
|
|
||||||
; Offsets in FT_MODE table
|
|
||||||
f_mul EQU 0
|
|
||||||
f_div EQU 2
|
|
||||||
h_fporch EQU 4
|
|
||||||
h_sync EQU 6
|
|
||||||
h_bporch EQU 8
|
|
||||||
h_visible EQU 10
|
|
||||||
v_fporch EQU 12
|
|
||||||
v_sync EQU 14
|
|
||||||
v_bporch EQU 16
|
|
||||||
v_visible EQU 18
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Memory addresses
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_RAM_G EQU 0x000000 ; Main graphics RAM
|
|
||||||
FT_ROM_CHIPID EQU 0x0C0000 ; Chip ID and revision
|
|
||||||
FT_ROM_FONT EQU 0x1E0000 ; Fonts
|
|
||||||
FT_ROM_FONT_ADDR EQU 0x2FFFFC ; Font table pointer address
|
|
||||||
FT_RAM_DL EQU 0x300000 ; Display list RAM
|
|
||||||
FT_RAM_REG EQU 0x302000 ; Registers
|
|
||||||
FT_RAM_CMD EQU 0x308000 ; Coprocessor command buffer
|
|
||||||
FT_RAM_ERR_REPORT EQU 0x309800 ; Error message
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Commands
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_CMD_ACTIVE EQU 0x00 ; cc 00 00
|
|
||||||
FT_CMD_STANDBY EQU 0x41 ; cc 00 00
|
|
||||||
FT_CMD_SLEEP EQU 0x42 ; cc 00 00
|
|
||||||
FT_CMD_PWRDOWN EQU 0x43 ; cc 00 00
|
|
||||||
FT_CMD_CLKEXT EQU 0x44 ; cc 00 00
|
|
||||||
FT_CMD_CLKINT EQU 0x48 ; cc 00 00
|
|
||||||
FT_CMD_PDROMS EQU 0x49 ; cc xx 00
|
|
||||||
FT_CMD_CLKSEL EQU 0x61 ; cc xx 00 -> [5:0] - mul, [7:6] - PLL range (0 for mul=0..3, 1 for mul=4..5)
|
|
||||||
FT_CMD_RST_PULSE EQU 0x68 ; cc 00 00
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; ID
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_ID EQU 0x7C
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Registers
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_REG_ID EQU 0x302000
|
|
||||||
FT_REG_FRAMES EQU 0x302004
|
|
||||||
FT_REG_CLOCK EQU 0x302008
|
|
||||||
FT_REG_FREQUENCY EQU 0x30200C
|
|
||||||
FT_REG_RENDERMODE EQU 0x302010
|
|
||||||
FT_REG_SNAPY EQU 0x302014
|
|
||||||
FT_REG_SNAPSHOT EQU 0x302018
|
|
||||||
FT_REG_SNAPFORMAT EQU 0x30201C
|
|
||||||
FT_REG_CPURESET EQU 0x302020
|
|
||||||
FT_REG_TAP_CRC EQU 0x302024
|
|
||||||
FT_REG_TAP_MASK EQU 0x302028
|
|
||||||
FT_REG_HCYCLE EQU 0x30202C
|
|
||||||
FT_REG_HOFFSET EQU 0x302030
|
|
||||||
FT_REG_HSIZE EQU 0x302034
|
|
||||||
FT_REG_HSYNC0 EQU 0x302038
|
|
||||||
FT_REG_HSYNC1 EQU 0x30203C
|
|
||||||
FT_REG_VCYCLE EQU 0x302040
|
|
||||||
FT_REG_VOFFSET EQU 0x302044
|
|
||||||
FT_REG_VSIZE EQU 0x302048
|
|
||||||
FT_REG_VSYNC0 EQU 0x30204C
|
|
||||||
FT_REG_VSYNC1 EQU 0x302050
|
|
||||||
FT_REG_DLSWAP EQU 0x302054
|
|
||||||
FT_REG_ROTATE EQU 0x302058
|
|
||||||
FT_REG_OUTBITS EQU 0x30205C
|
|
||||||
FT_REG_DITHER EQU 0x302060
|
|
||||||
FT_REG_SWIZZLE EQU 0x302064
|
|
||||||
FT_REG_CSPREAD EQU 0x302068
|
|
||||||
FT_REG_PCLK_POL EQU 0x30206C
|
|
||||||
FT_REG_PCLK EQU 0x302070
|
|
||||||
FT_REG_TAG_X EQU 0x302074
|
|
||||||
FT_REG_TAG_Y EQU 0x302078
|
|
||||||
FT_REG_TAG EQU 0x30207C
|
|
||||||
FT_REG_VOL_PB EQU 0x302080
|
|
||||||
FT_REG_VOL_SOUND EQU 0x302084
|
|
||||||
FT_REG_SOUND EQU 0x302088
|
|
||||||
FT_REG_PLAY EQU 0x30208C
|
|
||||||
FT_REG_GPIO_DIR EQU 0x302090
|
|
||||||
FT_REG_GPIO EQU 0x302094
|
|
||||||
FT_REG_GPIOX_DIR EQU 0x302098
|
|
||||||
FT_REG_GPIOX EQU 0x30209C
|
|
||||||
FT_REG_INT_FLAGS EQU 0x3020A8
|
|
||||||
FT_REG_INT_EN EQU 0x3020AC
|
|
||||||
FT_REG_INT_MASK EQU 0x3020B0
|
|
||||||
FT_REG_PLAYBACK_START EQU 0x3020B4
|
|
||||||
FT_REG_PLAYBACK_LENGTH EQU 0x3020B8
|
|
||||||
FT_REG_PLAYBACK_READPTR EQU 0x3020BC
|
|
||||||
FT_REG_PLAYBACK_FREQ EQU 0x3020C0
|
|
||||||
FT_REG_PLAYBACK_FORMAT EQU 0x3020C4
|
|
||||||
FT_REG_PLAYBACK_LOOP EQU 0x3020C8
|
|
||||||
FT_REG_PLAYBACK_PLAY EQU 0x3020CC
|
|
||||||
FT_REG_PWM_HZ EQU 0x3020D0
|
|
||||||
FT_REG_PWM_DUTY EQU 0x3020D4
|
|
||||||
FT_REG_MACRO_0 EQU 0x3020D8
|
|
||||||
FT_REG_MACRO_1 EQU 0x3020DC
|
|
||||||
FT_REG_CMD_READ EQU 0x3020F8
|
|
||||||
FT_REG_CMD_WRITE EQU 0x3020FC
|
|
||||||
FT_REG_CMD_DL EQU 0x302100
|
|
||||||
FT_REG_TOUCH_MODE EQU 0x302104
|
|
||||||
FT_REG_TOUCH_ADC_MODE EQU 0x302108
|
|
||||||
FT_REG_TOUCH_CHARGE EQU 0x30210C
|
|
||||||
FT_REG_TOUCH_SETTLE EQU 0x302110
|
|
||||||
FT_REG_TOUCH_OVERSAMPLE EQU 0x302114
|
|
||||||
FT_REG_TOUCH_RZTHRESH EQU 0x302118
|
|
||||||
FT_REG_TOUCH_RAW_XY EQU 0x30211C
|
|
||||||
FT_REG_TOUCH_RZ EQU 0x302120
|
|
||||||
FT_REG_TOUCH_SCREEN_XY EQU 0x302124
|
|
||||||
FT_REG_TOUCH_TAG_XY EQU 0x302128
|
|
||||||
FT_REG_TOUCH_TAG EQU 0x30212C
|
|
||||||
FT_REG_TOUCH_TAG1_XY EQU 0x302130
|
|
||||||
FT_REG_TOUCH_TAG1 EQU 0x302134
|
|
||||||
FT_REG_TOUCH_TAG2_XY EQU 0x302138
|
|
||||||
FT_REG_TOUCH_TAG2 EQU 0x30213C
|
|
||||||
FT_REG_TOUCH_TAG3_XY EQU 0x302140
|
|
||||||
FT_REG_TOUCH_TAG3 EQU 0x302144
|
|
||||||
FT_REG_TOUCH_TAG4_XY EQU 0x302148
|
|
||||||
FT_REG_TOUCH_TAG4 EQU 0x30214C
|
|
||||||
FT_REG_TOUCH_TRANSFORM_A EQU 0x302150
|
|
||||||
FT_REG_TOUCH_TRANSFORM_B EQU 0x302154
|
|
||||||
FT_REG_TOUCH_TRANSFORM_C EQU 0x302158
|
|
||||||
FT_REG_TOUCH_TRANSFORM_D EQU 0x30215C
|
|
||||||
FT_REG_TOUCH_TRANSFORM_E EQU 0x302160
|
|
||||||
FT_REG_TOUCH_TRANSFORM_F EQU 0x302164
|
|
||||||
FT_REG_TOUCH_CONFIG EQU 0x302168
|
|
||||||
FT_REG_CTOUCH_TOUCH4_X EQU 0x30216C
|
|
||||||
FT_REG_BIST_EN EQU 0x302174
|
|
||||||
FT_REG_TRIM EQU 0x302180
|
|
||||||
FT_REG_ANA_COMP EQU 0x302184
|
|
||||||
FT_REG_SPI_WIDTH EQU 0x302188
|
|
||||||
FT_REG_TOUCH_DIRECT_XY EQU 0x30218C
|
|
||||||
FT_REG_TOUCH_DIRECT_Z1Z2 EQU 0x302190
|
|
||||||
FT_REG_DATESTAMP EQU 0x302564
|
|
||||||
FT_REG_CMDB_SPACE EQU 0x302574
|
|
||||||
FT_REG_CMDB_WRITE EQU 0x302578
|
|
||||||
FT_REG_ADAPTIVE_FRAMERATE EQU 0x30257C
|
|
||||||
FT_REG_PLAYBACK_PAUSE EQU 0x3025EC
|
|
||||||
FT_REG_FLASH_STATUS EQU 0x3025F0
|
|
||||||
REG_MEDIAFIFO_READ EQU 0x309014
|
|
||||||
REG_MEDIAFIFO_WRITE EQU 0x309018
|
|
||||||
FT_REG_FLASH_SIZE EQU 0x309024
|
|
||||||
|
|
||||||
FT_REG_TRACKER EQU 0x309000
|
|
||||||
FT_REG_TRACKER_1 EQU 0x309004
|
|
||||||
FT_REG_TRACKER_2 EQU 0x309008
|
|
||||||
FT_REG_TRACKER_3 EQU 0x30900C
|
|
||||||
FT_REG_TRACKER_4 EQU 0x309010
|
|
||||||
FT_REG_MEDIAFIFO_READ EQU 0x309014
|
|
||||||
FT_REG_MEDIAFIFO_WRITE EQU 0x309018
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Co-processor commands
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_CCMD_APPEND EQU 0xFFFFFF1E
|
|
||||||
FT_CCMD_BGCOLOR EQU 0xFFFFFF09
|
|
||||||
FT_CCMD_BITMAP_TRANSFORM EQU 0xFFFFFF21
|
|
||||||
FT_CCMD_BUTTON EQU 0xFFFFFF0D
|
|
||||||
FT_CCMD_CALIBRATE EQU 0xFFFFFF15
|
|
||||||
FT_CCMD_CLOCK EQU 0xFFFFFF14
|
|
||||||
FT_CCMD_COLDSTART EQU 0xFFFFFF32
|
|
||||||
FT_CCMD_CRC EQU 0xFFFFFF03
|
|
||||||
FT_CCMD_CSKETCH EQU 0xFFFFFF35
|
|
||||||
FT_CCMD_DIAL EQU 0xFFFFFF2D
|
|
||||||
FT_CCMD_DLSTART EQU 0xFFFFFF00
|
|
||||||
FT_CCMD_EXECUTE EQU 0xFFFFFF07
|
|
||||||
FT_CCMD_FGCOLOR EQU 0xFFFFFF0A
|
|
||||||
FT_CCMD_FLASHATTACH EQU 0xFFFFFF49
|
|
||||||
FT_CCMD_FLASHDETACH EQU 0xFFFFFF48
|
|
||||||
FT_CCMD_FLASHERASE EQU 0xFFFFFF44
|
|
||||||
FT_CCMD_FLASHFAST EQU 0xFFFFFF4A
|
|
||||||
FT_CCMD_FLASHRX EQU 0xFFFFFF4D
|
|
||||||
FT_CCMD_FLASHSOURCE EQU 0xFFFFFF4E
|
|
||||||
FT_CCMD_FLASHSPIDESEL EQU 0xFFFFFF4B
|
|
||||||
FT_CCMD_FLASHTX EQU 0xFFFFFF4C
|
|
||||||
FT_CCMD_FLASHUPDATE EQU 0xFFFFFF47
|
|
||||||
FT_CCMD_GAUGE EQU 0xFFFFFF13
|
|
||||||
FT_CCMD_GETMATRIX EQU 0xFFFFFF33
|
|
||||||
FT_CCMD_GETPOINT EQU 0xFFFFFF08
|
|
||||||
FT_CCMD_GETPROPS EQU 0xFFFFFF25
|
|
||||||
FT_CCMD_GETPTR EQU 0xFFFFFF23
|
|
||||||
FT_CCMD_GRADCOLOR EQU 0xFFFFFF34
|
|
||||||
FT_CCMD_GRADIENT EQU 0xFFFFFF0B
|
|
||||||
FT_CCMD_HAMMERAUX EQU 0xFFFFFF04
|
|
||||||
FT_CCMD_IDCT_DELETED EQU 0xFFFFFF06
|
|
||||||
FT_CCMD_INFLATE EQU 0xFFFFFF22
|
|
||||||
FT_CCMD_INTERRUPT EQU 0xFFFFFF02
|
|
||||||
FT_CCMD_INT_RAMSHARED EQU 0xFFFFFF3D
|
|
||||||
FT_CCMD_INT_SWLOADIMAGE EQU 0xFFFFFF3E
|
|
||||||
FT_CCMD_KEYS EQU 0xFFFFFF0E
|
|
||||||
FT_CCMD_LOADIDENTITY EQU 0xFFFFFF26
|
|
||||||
FT_CCMD_LOADIMAGE EQU 0xFFFFFF24
|
|
||||||
FT_CCMD_LOGO EQU 0xFFFFFF31
|
|
||||||
FT_CCMD_MARCH EQU 0xFFFFFF05
|
|
||||||
FT_CCMD_MEDIAFIFO EQU 0xFFFFFF39
|
|
||||||
FT_CCMD_MEMCPY EQU 0xFFFFFF1D
|
|
||||||
FT_CCMD_MEMCRC EQU 0xFFFFFF18
|
|
||||||
FT_CCMD_MEMSET EQU 0xFFFFFF1B
|
|
||||||
FT_CCMD_MEMWRITE EQU 0xFFFFFF1A
|
|
||||||
FT_CCMD_MEMZERO EQU 0xFFFFFF1C
|
|
||||||
FT_CCMD_NUMBER EQU 0xFFFFFF2E
|
|
||||||
FT_CCMD_PLAYVIDEO EQU 0xFFFFFF3A
|
|
||||||
FT_CCMD_PROGRESS EQU 0xFFFFFF0F
|
|
||||||
FT_CCMD_REGREAD EQU 0xFFFFFF19
|
|
||||||
FT_CCMD_ROMFONT EQU 0xFFFFFF3F
|
|
||||||
FT_CCMD_ROTATE EQU 0xFFFFFF29
|
|
||||||
FT_CCMD_SCALE EQU 0xFFFFFF28
|
|
||||||
FT_CCMD_SCREENSAVER EQU 0xFFFFFF2F
|
|
||||||
FT_CCMD_SCROLLBAR EQU 0xFFFFFF11
|
|
||||||
FT_CCMD_SETBASE EQU 0xFFFFFF38
|
|
||||||
FT_CCMD_SETBITMAP EQU 0xFFFFFF43
|
|
||||||
FT_CCMD_SETFONT EQU 0xFFFFFF2B
|
|
||||||
FT_CCMD_SETFONT2 EQU 0xFFFFFF3B
|
|
||||||
FT_CCMD_SETMATRIX EQU 0xFFFFFF2A
|
|
||||||
FT_CCMD_SETROTATE EQU 0xFFFFFF36
|
|
||||||
FT_CCMD_SETSCRATCH EQU 0xFFFFFF3C
|
|
||||||
FT_CCMD_SKETCH EQU 0xFFFFFF30
|
|
||||||
FT_CCMD_SLIDER EQU 0xFFFFFF10
|
|
||||||
FT_CCMD_SNAPSHOT EQU 0xFFFFFF1F
|
|
||||||
FT_CCMD_SNAPSHOT2 EQU 0xFFFFFF37
|
|
||||||
FT_CCMD_SPINNER EQU 0xFFFFFF16
|
|
||||||
FT_CCMD_STOP EQU 0xFFFFFF17
|
|
||||||
FT_CCMD_SWAP EQU 0xFFFFFF01
|
|
||||||
FT_CCMD_SYNC EQU 0xFFFFFF42
|
|
||||||
FT_CCMD_TEXT EQU 0xFFFFFF0C
|
|
||||||
FT_CCMD_TOGGLE EQU 0xFFFFFF12
|
|
||||||
FT_CCMD_TOUCH_TRANSFORM EQU 0xFFFFFF20
|
|
||||||
FT_CCMD_TRACK EQU 0xFFFFFF2C
|
|
||||||
FT_CCMD_TRANSLATE EQU 0xFFFFFF27
|
|
||||||
FT_CCMD_VIDEOFRAME EQU 0xFFFFFF41
|
|
||||||
FT_CCMD_VIDEOSTART EQU 0xFFFFFF40
|
|
||||||
|
|
||||||
; ubsigned long
|
|
||||||
FT_OPT_CENTER EQU 1536
|
|
||||||
FT_OPT_CENTERX EQU 512
|
|
||||||
FT_OPT_CENTERY EQU 1024
|
|
||||||
FT_OPT_FLAT EQU 256
|
|
||||||
FT_OPT_MONO EQU 1
|
|
||||||
FT_OPT_NOBACK EQU 4096
|
|
||||||
FT_OPT_NODL EQU 2
|
|
||||||
FT_OPT_NOHANDS EQU 49152
|
|
||||||
FT_OPT_NOHM EQU 16384
|
|
||||||
FT_OPT_NOPOINTER EQU 16384
|
|
||||||
FT_OPT_NOSECS EQU 32768
|
|
||||||
FT_OPT_NOTICKS EQU 8192
|
|
||||||
FT_OPT_RIGHTX EQU 2048
|
|
||||||
FT_OPT_SIGNED EQU 256
|
|
||||||
OPT_NOTEAR EQU 4
|
|
||||||
OPT_FULLSCREEN EQU 8
|
|
||||||
OPT_MEDIAFIFO EQU 16
|
|
||||||
OPT_SOUND EQU 32
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Primitives
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_BITMAPS EQU 1
|
|
||||||
FT_POINTS EQU 2
|
|
||||||
FT_LINES EQU 3
|
|
||||||
FT_LINE_STRIP EQU 4
|
|
||||||
FT_EDGE_STRIP_R EQU 5
|
|
||||||
FT_EDGE_STRIP_L EQU 6
|
|
||||||
FT_EDGE_STRIP_A EQU 7
|
|
||||||
FT_EDGE_STRIP_B EQU 8
|
|
||||||
FT_RECTS EQU 9
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Formats
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_ARGB1555 EQU 0
|
|
||||||
FT_L1 EQU 1
|
|
||||||
FT_L4 EQU 2
|
|
||||||
FT_L8 EQU 3
|
|
||||||
FT_RGB332 EQU 4
|
|
||||||
FT_ARGB2 EQU 5
|
|
||||||
FT_ARGB4 EQU 6
|
|
||||||
FT_RGB565 EQU 7
|
|
||||||
FT_TEXT8X8 EQU 9
|
|
||||||
FT_TEXTVGA EQU 10
|
|
||||||
FT_BARGRAPH EQU 11
|
|
||||||
FT_PALETTED565 EQU 14
|
|
||||||
FT_PALETTED4444 EQU 15
|
|
||||||
FT_PALETTED8 EQU 16
|
|
||||||
FT_L2 EQU 17
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Blend functions
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_ZERO EQU 0
|
|
||||||
FT_ONE EQU 1
|
|
||||||
FT_SRC_ALPHA EQU 2
|
|
||||||
FT_DST_ALPHA EQU 3
|
|
||||||
FT_ONE_MINUS_SRC_ALPHA EQU 4
|
|
||||||
FT_ONE_MINUS_DST_ALPHA EQU 5
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Stencil test functions
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_NEVER EQU 0
|
|
||||||
FT_LESS EQU 1
|
|
||||||
FT_LEQUAL EQU 2
|
|
||||||
FT_GREATER EQU 3
|
|
||||||
FT_GEQUAL EQU 4
|
|
||||||
FT_EQUAL EQU 5
|
|
||||||
FT_NOTEQUAL EQU 6
|
|
||||||
FT_ALWAYS EQU 7
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Stencil operations
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_KEEP EQU 1
|
|
||||||
FT_REPLACE EQU 2
|
|
||||||
FT_INCR EQU 3
|
|
||||||
FT_DECR EQU 4
|
|
||||||
FT_INVERT EQU 5
|
|
||||||
FT_INCR_WRAP EQU 6 ; undocumented???
|
|
||||||
FT_DECR_WRAP EQU 7 ; undocumented???
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Bitmap wrap mode
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_REPEAT EQU 1
|
|
||||||
FT_BORDER EQU 0
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Bitmap filtering mode
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_NEAREST EQU 0
|
|
||||||
FT_BILINEAR EQU 1
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; DL_SWAP modes
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_DLSWAP_DONE EQU 0
|
|
||||||
FT_DLSWAP_LINE EQU 1
|
|
||||||
FT_DLSWAP_FRAME EQU 2
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; INT sources
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_INT_SWAP EQU 1
|
|
||||||
FT_INT_TOUCH EQU 2
|
|
||||||
FT_INT_TAG EQU 4
|
|
||||||
FT_INT_SOUND EQU 8
|
|
||||||
FT_INT_PLAYBACK EQU 16
|
|
||||||
FT_INT_CMDEMPTY EQU 32
|
|
||||||
FT_INT_CMDFLAG EQU 64
|
|
||||||
FT_INT_CONVCOMPLETE EQU 128
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Playback formats
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_LINEAR_SAMPLES EQU 0
|
|
||||||
FT_ULAW_SAMPLES EQU 1
|
|
||||||
FT_ADPCM_SAMPLES EQU 2
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Touch ADC modes
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_ADC_SINGLE_ENDED EQU 0
|
|
||||||
FT_ADC_DIFFERENTIAL EQU 1
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Touch modes
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_TOUCHMODE_OFF EQU 0
|
|
||||||
FT_TOUCHMODE_ONESHOT EQU 1
|
|
||||||
FT_TOUCHMODE_FRAME EQU 2
|
|
||||||
FT_TOUCHMODE_CONTINUOUS EQU 3
|
|
||||||
|
|
||||||
; -------------------------------------------------------
|
|
||||||
; Constants
|
|
||||||
; -------------------------------------------------------
|
|
||||||
FT_DL_SIZE EQU 8192 ; 8KB Display List buffer size
|
|
||||||
FT_CMD_FIFO_SIZE EQU 4096 ; 4KB coprocessor Fifo size
|
|
||||||
FT_CMD_SIZE EQU 4 ; 4 byte per coprocessor command of EVE
|
|
||||||
FT_GPU_NUMCHAR_PERFONT EQU 128
|
|
||||||
FT_GPU_FONT_TABLE_SIZE EQU 148
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MACRO ft_cmd cmd
|
|
||||||
LD A, cmd
|
|
||||||
CALL @FT.FT_CMD
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
MACRO ft_rreg8 reg16
|
|
||||||
LD BC, reg16
|
|
||||||
CALL @FT.FT_RREG8
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
MACRO ft_rreg16 reg16
|
|
||||||
LD BC, reg16
|
|
||||||
CALL @FT.FT_RREG16
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
MACRO ft_cmdp cmd, par
|
|
||||||
LD B, cmd
|
|
||||||
LD C, par
|
|
||||||
CALL @FT.FT_CMDP
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
146
Tester/ftt.asm
146
Tester/ftt.asm
@ -1,146 +0,0 @@
|
|||||||
; ======================================================
|
|
||||||
; FT-Test to test Sprinter-FT
|
|
||||||
; FT812 Video card for Sprinter computer
|
|
||||||
; By Roman Boykov. Copyright (c) 2025
|
|
||||||
; https://github.com/romychs
|
|
||||||
; License: BSD 3-Clause
|
|
||||||
; ======================================================
|
|
||||||
|
|
||||||
; Set to 1 to turn debug ON with DeZog VSCode plugin
|
|
||||||
; Set to 0 to compile .EXE
|
|
||||||
DEBUG EQU 0
|
|
||||||
|
|
||||||
; Set to 1 to output TRACE messages
|
|
||||||
TRACE EQU 0
|
|
||||||
|
|
||||||
; Version of EXE file, 1 for DSS 1.70+
|
|
||||||
EXE_VERSION EQU 0
|
|
||||||
|
|
||||||
; Timeout to wait ESP response
|
|
||||||
DEFAULT_TIMEOUT EQU 2000
|
|
||||||
|
|
||||||
SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
|
|
||||||
|
|
||||||
DEVICE NOSLOT64K
|
|
||||||
|
|
||||||
INCLUDE "macro.inc"
|
|
||||||
INCLUDE "dss.inc"
|
|
||||||
INCLUDE "sprinter.inc"
|
|
||||||
|
|
||||||
MODULE MAIN
|
|
||||||
|
|
||||||
ORG 0x8080
|
|
||||||
; ------------------------------------------------------
|
|
||||||
EXE_HEADER
|
|
||||||
DB "EXE"
|
|
||||||
DB EXE_VERSION ; EXE Version
|
|
||||||
DW 0x0080 ; Code offset
|
|
||||||
DW 0
|
|
||||||
DW 0 ; Primary loader size
|
|
||||||
DW 0 ; Reserved
|
|
||||||
DW 0
|
|
||||||
DW 0
|
|
||||||
DW START ; Loading Address
|
|
||||||
DW START ; Entry Point
|
|
||||||
DW STACK_TOP ; Stack address
|
|
||||||
DS 106, 0 ; Reserved
|
|
||||||
|
|
||||||
ORG 0x8100
|
|
||||||
@STACK_TOP
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
START
|
|
||||||
|
|
||||||
IFDEF DEBUG
|
|
||||||
; LD IX,CMD_LINE1
|
|
||||||
LD SP, STACK_TOP
|
|
||||||
; JP MAIN_LOOP
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
// CALL @WCOMMON.INIT_VMODE
|
|
||||||
|
|
||||||
PRINTLN MSG_START
|
|
||||||
|
|
||||||
CALL ISA.ISA_RESET ; Reset ISA Devices
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Do Some
|
|
||||||
; ------------------------------------------------------
|
|
||||||
|
|
||||||
MAIN_LOOP
|
|
||||||
|
|
||||||
; Find FT
|
|
||||||
CALL FT.FT_FIND
|
|
||||||
LD HL, MSG_NO_FT
|
|
||||||
JR C, MSG_NF_OUT
|
|
||||||
; FT is Found
|
|
||||||
; A = ISA slot
|
|
||||||
ADD A, '1' ; 0x31
|
|
||||||
LD (MSG_SLOT_NO), A
|
|
||||||
PRINTLN MSG_IS_FT
|
|
||||||
|
|
||||||
; Activate
|
|
||||||
;CALL FT.FT_ACTIVATE
|
|
||||||
LD A, FT_MODE_800_600_60
|
|
||||||
CALL FT.FT_INIT
|
|
||||||
|
|
||||||
; Get FT chip info
|
|
||||||
PRINTLN MSG_GET_CHIP_ID
|
|
||||||
CALL FT.FT_GET_CHIP_ID
|
|
||||||
|
|
||||||
LD HL, FT.FT_BUFFER
|
|
||||||
LD DE, MSG_CTB
|
|
||||||
LD B, 4
|
|
||||||
.NXT_ID
|
|
||||||
LD C, (HL)
|
|
||||||
CALL UTIL.HEXB
|
|
||||||
INC HL
|
|
||||||
DJNZ .NXT_ID
|
|
||||||
PRINTLN MSG_CHIP_TYPE
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
OK_EXIT
|
|
||||||
LD B, 0
|
|
||||||
NOK_EXIT
|
|
||||||
DSS_EXEC DSS_EXIT
|
|
||||||
|
|
||||||
; Out message about FT slot
|
|
||||||
MSG_NF_OUT
|
|
||||||
PRINTLN_HL
|
|
||||||
LD B, 1
|
|
||||||
JR NOK_EXIT
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Custom messages
|
|
||||||
; ------------------------------------------------------
|
|
||||||
|
|
||||||
MSG_START
|
|
||||||
DB "Sprinter-FT tester by Sprinter Team. v1.0.b1, ", __DATE__, "\r\n", 0
|
|
||||||
|
|
||||||
MSG_NO_FT
|
|
||||||
DB "Sprinter-FT not found!", 0
|
|
||||||
|
|
||||||
MSG_GET_CHIP_ID
|
|
||||||
DB "Read Chip Identification Code", 0
|
|
||||||
MSG_IS_FT
|
|
||||||
DB "Sprinter-FT found at ISA-"
|
|
||||||
MSG_SLOT_NO
|
|
||||||
DB 0, 0
|
|
||||||
|
|
||||||
MSG_CHIP_TYPE
|
|
||||||
DB "Chip type bytes: 0x"
|
|
||||||
MSG_CTB
|
|
||||||
DS 9, 0
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Custom commands
|
|
||||||
; ------------------------------------------------------
|
|
||||||
|
|
||||||
ENDMODULE
|
|
||||||
|
|
||||||
INCLUDE "ftlib.asm"
|
|
||||||
INCLUDE "util.asm"
|
|
||||||
INCLUDE "isa.asm"
|
|
||||||
|
|
||||||
END MAIN.START
|
|
||||||
BIN
Tester/ftt.exe
BIN
Tester/ftt.exe
Binary file not shown.
@ -1,94 +0,0 @@
|
|||||||
; ======================================================
|
|
||||||
; ISA Library for Sprinter computer
|
|
||||||
; By Roman Boykov. Copyright (c) 2024
|
|
||||||
; https://github.com/romychs
|
|
||||||
; License: BSD 3-Clause
|
|
||||||
; ======================================================
|
|
||||||
|
|
||||||
IFNDEF _ISA
|
|
||||||
DEFINE _ISA
|
|
||||||
|
|
||||||
INCLUDE "sprinter.inc"
|
|
||||||
INCLUDE "util.asm"
|
|
||||||
|
|
||||||
PORT_ISA EQU 0x9FBD
|
|
||||||
PORT_SYSTEM EQU 0x1FFD
|
|
||||||
|
|
||||||
ISA_BASE_A EQU 0xC000 ; Базовый адрес портов ISA в памяти
|
|
||||||
|
|
||||||
; --- PORT_ISA bits
|
|
||||||
ISA_A14 EQU 0x01
|
|
||||||
ISA_A15 EQU 0x02
|
|
||||||
ISA_A16 EQU 0x04
|
|
||||||
ISA_A17 EQU 0x08
|
|
||||||
ISA_A18 EQU 0x10
|
|
||||||
ISA_A19 EQU 0x20
|
|
||||||
ISA_AEN EQU 0x40
|
|
||||||
ISA_RST EQU 0x80
|
|
||||||
NOP_FOR_DELAY EQU 5
|
|
||||||
|
|
||||||
MODULE ISA
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Reset ISA device
|
|
||||||
; ------------------------------------------------------
|
|
||||||
ISA_RESET
|
|
||||||
PUSH AF, BC
|
|
||||||
LD BC, PORT_ISA
|
|
||||||
LD A, ISA_RST | ISA_AEN ; RESET=1 AEN=1
|
|
||||||
OUT (C), A
|
|
||||||
DUP NOP_FOR_DELAY
|
|
||||||
NOP
|
|
||||||
EDUP
|
|
||||||
;CALL @UTIL.DELAY_100uS
|
|
||||||
XOR A
|
|
||||||
OUT (C), A ; RESET=0 AEN=0
|
|
||||||
;CALL @UTIL.DELAY_100uS
|
|
||||||
POP BC, AF
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Open access to ISA ports as memory
|
|
||||||
; Inp: A = 0 - ISA slot 0, 1 - ISA SLOT 1
|
|
||||||
; ------------------------------------------------------
|
|
||||||
ISA_OPEN
|
|
||||||
PUSH AF,BC
|
|
||||||
LD BC, PAGE3
|
|
||||||
IN A,(C)
|
|
||||||
LD (SAVE_MMU3), A
|
|
||||||
LD BC, PORT_SYSTEM
|
|
||||||
LD A, 0x11
|
|
||||||
OUT (C), A
|
|
||||||
ISA_SLOT EQU $+1
|
|
||||||
LD A, 0x00
|
|
||||||
SLA A
|
|
||||||
OR A, 0xD4 ; D4 - ISA1, D6 - ISA2
|
|
||||||
LD BC, PAGE3
|
|
||||||
OUT (C), A
|
|
||||||
LD BC, PORT_ISA
|
|
||||||
XOR A
|
|
||||||
OUT (C), A
|
|
||||||
POP BC,AF
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Close access to ISA ports
|
|
||||||
; ------------------------------------------------------
|
|
||||||
ISA_CLOSE
|
|
||||||
PUSH AF,BC
|
|
||||||
LD A,0x01
|
|
||||||
LD BC,PORT_SYSTEM
|
|
||||||
OUT (C),A
|
|
||||||
LD BC,PAGE3
|
|
||||||
LD A,(SAVE_MMU3)
|
|
||||||
OUT (C),A
|
|
||||||
POP BC,AF
|
|
||||||
RET
|
|
||||||
|
|
||||||
; To save memory page 3
|
|
||||||
SAVE_MMU3 DB 0
|
|
||||||
|
|
||||||
ENDMODULE
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
; ======================================================
|
|
||||||
; Macros for Sprinter-WiFi utilities
|
|
||||||
; By Roman Boykov. Copyright (c) 2024
|
|
||||||
; https://github.com/romychs
|
|
||||||
; License: BSD 3-Clause
|
|
||||||
; ======================================================
|
|
||||||
|
|
||||||
IFNDEF _MACRO
|
|
||||||
DEFINE _MACRO
|
|
||||||
|
|
||||||
; Transmit data|command via UART and check response
|
|
||||||
MACRO SEND_CMD data
|
|
||||||
LD HL, data
|
|
||||||
CALL @WIFI.UART_TX_CMD
|
|
||||||
CALL CHECK_ERROR
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
; Print data forn HL - pointer to ASCIIZ string to screen
|
|
||||||
MACRO PRINT_HL
|
|
||||||
LD C,DSS_PCHARS
|
|
||||||
RST DSS
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
; Print data forn HL - pointer to ASCIIZ string to screen, and <CR><LF>
|
|
||||||
MACRO PRINTLN_HL
|
|
||||||
PRINT_HL
|
|
||||||
LD HL, UTIL.LINE_END
|
|
||||||
PRINT_HL
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
; Print data ASCIIZ string to screen
|
|
||||||
MACRO PRINT data
|
|
||||||
LD HL,data
|
|
||||||
PRINT_HL
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
; Print data ASCIIZ string to screen and <CR><LF>
|
|
||||||
MACRO PRINTLN data
|
|
||||||
LD HL,data
|
|
||||||
PRINTLN_HL
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
; Print data ASCIIZ string to screen if TRACE enabled
|
|
||||||
MACRO TRACELN data
|
|
||||||
IFDEF TRACE
|
|
||||||
PUSH BC,DE
|
|
||||||
PRINTLN data
|
|
||||||
POP DE,BC
|
|
||||||
ENDIF
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
; Execute specified DSS function
|
|
||||||
MACRO DSS_EXEC func
|
|
||||||
IF func>255
|
|
||||||
LD BC,func
|
|
||||||
ELSE
|
|
||||||
LD C,func
|
|
||||||
ENDIF
|
|
||||||
RST DSS
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
; If current work mode is upload, go to label
|
|
||||||
MACRO IF_UPLOAD_GO lbl
|
|
||||||
LD A,(WORK_MODE)
|
|
||||||
;CP WM_UPLOAD
|
|
||||||
DEC A
|
|
||||||
JR Z,lbl
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
; ======================================================
|
|
||||||
; Defines for Sprinter computer hardware
|
|
||||||
; By Roman Boykov. Copyright (c) 2024
|
|
||||||
; https://github.com/romychs
|
|
||||||
; ======================================================
|
|
||||||
|
|
||||||
IFNDEF _SPRINTER
|
|
||||||
DEFINE _SPRINTER
|
|
||||||
|
|
||||||
; Memory pages
|
|
||||||
PAGE0_ADDR EQU 0x0000
|
|
||||||
PAGE1_ADDR EQU 0x4000
|
|
||||||
PAGE2_ADDR EQU 0x8000
|
|
||||||
PAGE3_ADDR EQU 0xC000
|
|
||||||
|
|
||||||
; Sprinter ports to switch mem pages
|
|
||||||
PAGE0 EQU 0x82
|
|
||||||
PAGE1 EQU 0xA2
|
|
||||||
PAGE2 EQU 0xC2
|
|
||||||
PAGE3 EQU 0xE2
|
|
||||||
|
|
||||||
; CTC Control register ports
|
|
||||||
CTC_CH0 EQU 0x10
|
|
||||||
CTC_CH1 EQU 0x11
|
|
||||||
CTC_CH2 EQU 0x12
|
|
||||||
CTC_CH3 EQU 0x13
|
|
||||||
|
|
||||||
CTC_CR_VEC EQU 0x01 ; 1 - Vector, 0 - Control
|
|
||||||
CTC_CR_SWR EQU 0x02 ; 1 - Software Reset, 0 - Continued operation
|
|
||||||
CTC_CR_TCF EQU 0x04 ; 1 - TYime const follows
|
|
||||||
CTC_CR_TTR EQU 0x08 ; 1 - Time trigger
|
|
||||||
CTC_CT_TRE EQU 0x10 ; 1 - Trigger Edge
|
|
||||||
CTC_CT_PRE EQU 0x20 ; 1 - 256 Prescaler, 0 - 16
|
|
||||||
CTC_CT_CTR EQU 0x40 ; 0 - Timer, 1 - Counter
|
|
||||||
CTC_CT_EI EQU 0x80 ; Interrupt 1 - enable, 0 - disable
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
425
Tester/util.asm
425
Tester/util.asm
@ -1,425 +0,0 @@
|
|||||||
; ======================================================
|
|
||||||
; Utility code for Sprinter-WiFi utilities
|
|
||||||
; By Roman Boykov. Copyright (c) 2024
|
|
||||||
; https://github.com/romychs
|
|
||||||
; License: BSD 3-Clause
|
|
||||||
; ======================================================
|
|
||||||
|
|
||||||
IFNDEF _UTIL
|
|
||||||
DEFINE _UTIL
|
|
||||||
|
|
||||||
MODULE UTIL
|
|
||||||
|
|
||||||
MAX_BUFF_SIZE EQU 2048
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Small delay
|
|
||||||
; Inp: HL - number of cycles, if HL=0, then 2000
|
|
||||||
; ------------------------------------------------------
|
|
||||||
DELAY
|
|
||||||
PUSH AF,BC,HL
|
|
||||||
|
|
||||||
LD A,H
|
|
||||||
OR L
|
|
||||||
JR NZ,.DELAY_NXT
|
|
||||||
LD HL,20
|
|
||||||
|
|
||||||
.DELAY_NXT
|
|
||||||
CALL .DELAY_1MS_INT
|
|
||||||
DEC HL
|
|
||||||
LD A,H
|
|
||||||
OR L
|
|
||||||
JP NZ,.DELAY_NXT
|
|
||||||
|
|
||||||
POP HL,BC,AF
|
|
||||||
RET
|
|
||||||
|
|
||||||
.DELAY_1MS_INT
|
|
||||||
LD BC,400
|
|
||||||
.SBD_NXT
|
|
||||||
DEC BC
|
|
||||||
LD A, B
|
|
||||||
OR C
|
|
||||||
JR NZ, .SBD_NXT
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Delay for about 1ms
|
|
||||||
; ------------------------------------------------------
|
|
||||||
DELAY_1MS
|
|
||||||
PUSH BC
|
|
||||||
CALL DELAY.DELAY_1MS_INT
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Delay for about 100us
|
|
||||||
; ------------------------------------------------------
|
|
||||||
DELAY_100uS
|
|
||||||
PUSH BC
|
|
||||||
LD BC,40
|
|
||||||
CALL DELAY.SBD_NXT
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Calc length of zero ended string
|
|
||||||
; Inp: HL - pointer to string;
|
|
||||||
; Out: BC - length of string
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED STRLEN
|
|
||||||
STRLEN
|
|
||||||
PUSH DE, HL, HL
|
|
||||||
LD BC, MAX_BUFF_SIZE
|
|
||||||
XOR A
|
|
||||||
CPIR
|
|
||||||
POP DE
|
|
||||||
SBC HL, DE ; length of zero ended string
|
|
||||||
LD BC, HL
|
|
||||||
LD A, B
|
|
||||||
OR C
|
|
||||||
JR Z, .STRL_NCOR
|
|
||||||
DEC BC
|
|
||||||
.STRL_NCOR
|
|
||||||
POP HL, DE
|
|
||||||
RET
|
|
||||||
;ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Compare strings
|
|
||||||
; Inp: HL, DE - pointers to asciiz strings to compare;
|
|
||||||
; Out: CF=0 - equal, CF=1 - not equal
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED STRCMP
|
|
||||||
STRCMP
|
|
||||||
PUSH DE,HL
|
|
||||||
.STC_NEXT
|
|
||||||
LD A, (DE)
|
|
||||||
CP (HL)
|
|
||||||
JR NZ,.STC_NE
|
|
||||||
AND A
|
|
||||||
JR Z,.STC_EQ
|
|
||||||
INC DE
|
|
||||||
INC HL
|
|
||||||
JR .STC_NEXT
|
|
||||||
.STC_NE
|
|
||||||
SCF
|
|
||||||
.STC_EQ
|
|
||||||
POP HL,DE
|
|
||||||
RET
|
|
||||||
;;ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Compare first BC chars for two zero-ended strings
|
|
||||||
; Inp: HL, DE - pointers to strings to compare;
|
|
||||||
; BC - Number of chars to compare;
|
|
||||||
; Out: ZF=0 - not equal, ZF=1 - equal
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;IFUSED STRNCMP
|
|
||||||
STRNCMP
|
|
||||||
PUSH HL,DE,BC
|
|
||||||
.STRN_NXT
|
|
||||||
LD A,(DE)
|
|
||||||
SUB (HL)
|
|
||||||
JR NZ,.STRN_NE
|
|
||||||
LD A,(DE)
|
|
||||||
OR A
|
|
||||||
JR Z,.STRN_NE
|
|
||||||
INC DE
|
|
||||||
INC HL
|
|
||||||
DEC BC
|
|
||||||
LD A,B
|
|
||||||
OR C
|
|
||||||
JP NZ,.STRN_NXT
|
|
||||||
.STRN_NE
|
|
||||||
POP BC,DE,HL
|
|
||||||
RET
|
|
||||||
;ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Checks whether a string (HL) starts with the strinf (DE)
|
|
||||||
; Inp: DE - points to start string;
|
|
||||||
; HL - points to string;
|
|
||||||
; Out: ZF=0 - not equal, ZF=1 - equal
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED STARTSWITH
|
|
||||||
STARTSWITH
|
|
||||||
PUSH HL,DE
|
|
||||||
.STRW_NXT
|
|
||||||
LD A,(DE)
|
|
||||||
OR A
|
|
||||||
JR Z,.STRW_END
|
|
||||||
LD A,(DE)
|
|
||||||
CP (HL)
|
|
||||||
JR NZ,.STRW_END
|
|
||||||
INC HL
|
|
||||||
INC DE
|
|
||||||
JR .STRW_NXT
|
|
||||||
.STRW_END
|
|
||||||
POP DE,HL
|
|
||||||
RET
|
|
||||||
;;ENDIF
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Skip spaces at start of zero ended string
|
|
||||||
; Inp: HL - pointer to string;
|
|
||||||
; Out: HL - points to first non space symbol
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED LTRIM
|
|
||||||
LTRIM
|
|
||||||
LD A, (HL)
|
|
||||||
OR A
|
|
||||||
RET Z
|
|
||||||
CP 0x21
|
|
||||||
RET P
|
|
||||||
INC HL
|
|
||||||
JR LTRIM
|
|
||||||
;;ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Convert string to number
|
|
||||||
; Inp: DE - ptr to zero ended string;
|
|
||||||
; Out: HL - Result
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED ATOU
|
|
||||||
ATOU
|
|
||||||
PUSH BC
|
|
||||||
LD HL,0x0000
|
|
||||||
.ATOU_L1
|
|
||||||
LD A,(DE)
|
|
||||||
AND A
|
|
||||||
JR Z, .ATOU_LE
|
|
||||||
SUB 0x30
|
|
||||||
CP 10
|
|
||||||
JR NC, .ATOU_LE
|
|
||||||
INC DE
|
|
||||||
LD B,H
|
|
||||||
LD C,L
|
|
||||||
ADD HL,HL
|
|
||||||
ADD HL,HL
|
|
||||||
ADD HL,BC
|
|
||||||
ADD HL,HL
|
|
||||||
ADD A,L
|
|
||||||
LD L,A
|
|
||||||
JR NC,.ATOU_L1
|
|
||||||
INC H
|
|
||||||
JP .ATOU_L1
|
|
||||||
.ATOU_LE
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
;;ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Convert 16 bit unsigned number to string
|
|
||||||
; Inp: HL - number;
|
|
||||||
; DE - ptr to buffer;
|
|
||||||
; Out: DE -> asciiz string representing a number
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED UTOA
|
|
||||||
UTOA:
|
|
||||||
PUSH BC, HL
|
|
||||||
XOR A
|
|
||||||
PUSH AF ; END MARKER A=0, Z
|
|
||||||
.UTOA_L1
|
|
||||||
CALL DIV_10
|
|
||||||
ADD '0'
|
|
||||||
PUSH AF ; DIGIT: A>0, NZ
|
|
||||||
LD A,H
|
|
||||||
OR L
|
|
||||||
JR NZ,.UTOA_L1
|
|
||||||
.UTOA_L2
|
|
||||||
POP AF
|
|
||||||
LD (DE),A
|
|
||||||
INC DE
|
|
||||||
JR NZ,.UTOA_L2
|
|
||||||
POP HL, BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Division by 10
|
|
||||||
; Inp: HL - number;
|
|
||||||
; Out: HL - quotient;
|
|
||||||
; A - remainder;
|
|
||||||
; ------------------------------------------------------
|
|
||||||
DIV_10:
|
|
||||||
PUSH BC
|
|
||||||
LD BC,0x0D0A
|
|
||||||
XOR A
|
|
||||||
ADD HL,HL
|
|
||||||
RLA
|
|
||||||
ADD HL,HL
|
|
||||||
RLA
|
|
||||||
ADD HL,HL
|
|
||||||
RLA
|
|
||||||
.DDL1
|
|
||||||
ADD HL,HL
|
|
||||||
RLA
|
|
||||||
CP C
|
|
||||||
JR C,.DDL2
|
|
||||||
SUB C
|
|
||||||
INC L
|
|
||||||
.DDL2
|
|
||||||
DJNZ .DDL1
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
;;ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Multiplication by 10
|
|
||||||
; Inp: HL - number;
|
|
||||||
; Out: BC - result;
|
|
||||||
; ------------------------------------------------------
|
|
||||||
MUL_10
|
|
||||||
ADD HL, HL
|
|
||||||
ADD HL, HL
|
|
||||||
LD B, H
|
|
||||||
LD C, L ; BC = HL*4
|
|
||||||
ADD HL, HL
|
|
||||||
ADD HL, HL ; HL*16
|
|
||||||
ADD HL, BC
|
|
||||||
LD B, H
|
|
||||||
LD C, L
|
|
||||||
RET
|
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; FAST_UTOA
|
|
||||||
; Inp: HL - number;
|
|
||||||
; DE - Buffer;
|
|
||||||
; CF is set to write leading zeroes;
|
|
||||||
; Out: DE - address of destination string
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED FAST_UTOA
|
|
||||||
FAST_UTOA
|
|
||||||
LD BC,0+256
|
|
||||||
PUSH BC
|
|
||||||
LD BC,-10+256
|
|
||||||
PUSH BC
|
|
||||||
INC H
|
|
||||||
DEC H
|
|
||||||
JR Z, .EIGHT_BIT
|
|
||||||
|
|
||||||
LD C,0xFF & (-100+256)
|
|
||||||
PUSH BC
|
|
||||||
|
|
||||||
LD BC,-1000+256
|
|
||||||
PUSH BC
|
|
||||||
|
|
||||||
LD BC,-10000
|
|
||||||
|
|
||||||
JR C,.LEADING_ZEROES
|
|
||||||
|
|
||||||
.NO_LEADING_ZEROES
|
|
||||||
|
|
||||||
CALL .DIVIDE
|
|
||||||
CP '0'
|
|
||||||
JR NZ,.WRITE
|
|
||||||
|
|
||||||
POP BC
|
|
||||||
DJNZ .NO_LEADING_ZEROES
|
|
||||||
|
|
||||||
JR .WRITE1S
|
|
||||||
|
|
||||||
.LEADING_ZEROES
|
|
||||||
CALL .DIVIDE
|
|
||||||
|
|
||||||
.WRITE
|
|
||||||
LD (DE),A
|
|
||||||
INC DE
|
|
||||||
|
|
||||||
POP BC
|
|
||||||
DJNZ .LEADING_ZEROES
|
|
||||||
|
|
||||||
.WRITE1S
|
|
||||||
LD A,L
|
|
||||||
ADD A,'0'
|
|
||||||
|
|
||||||
LD (DE),A
|
|
||||||
INC DE
|
|
||||||
RET
|
|
||||||
|
|
||||||
.DIVIDE
|
|
||||||
LD A,'0'-1
|
|
||||||
|
|
||||||
.DIVLOOP
|
|
||||||
INC A
|
|
||||||
ADD HL,BC
|
|
||||||
JR C, .DIVLOOP
|
|
||||||
|
|
||||||
SBC HL,BC
|
|
||||||
RET
|
|
||||||
|
|
||||||
.EIGHT_BIT
|
|
||||||
LD BC,-100
|
|
||||||
JR NC, .NO_LEADING_ZEROES
|
|
||||||
|
|
||||||
; write two leading zeroes to output string
|
|
||||||
LD A,'0'
|
|
||||||
LD (DE),A
|
|
||||||
INC DE
|
|
||||||
LD (DE),A
|
|
||||||
INC DE
|
|
||||||
|
|
||||||
JR .LEADING_ZEROES
|
|
||||||
;;ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Find char in string
|
|
||||||
; Inp: HL - ptr to zero endeds string;
|
|
||||||
; A - char to find;
|
|
||||||
; Outp: CF=0, HL points to char if found;
|
|
||||||
; CF=1 - Not found
|
|
||||||
; ------------------------------------------------------
|
|
||||||
;;IFUSED STRCHR
|
|
||||||
STRCHR
|
|
||||||
PUSH BC
|
|
||||||
.STCH_NEXT
|
|
||||||
LD C,A
|
|
||||||
LD A,(HL)
|
|
||||||
AND A
|
|
||||||
JR Z, .STCH_N_FOUND
|
|
||||||
CP C
|
|
||||||
JR Z, .STCH_FOUND
|
|
||||||
INC HL
|
|
||||||
JR .STCH_NEXT
|
|
||||||
.STCH_N_FOUND
|
|
||||||
SCF
|
|
||||||
.STCH_FOUND
|
|
||||||
POP BC
|
|
||||||
RET
|
|
||||||
;;ENDIF
|
|
||||||
|
|
||||||
; ------------------------------------------------------
|
|
||||||
; Convert Byte to hex
|
|
||||||
; Inp: C - byte to convert;
|
|
||||||
; DE -> buffer for string;
|
|
||||||
; Out: DE -> points after last char
|
|
||||||
; ------------------------------------------------------
|
|
||||||
HEXB
|
|
||||||
LD A,C
|
|
||||||
RRA
|
|
||||||
RRA
|
|
||||||
RRA
|
|
||||||
RRA
|
|
||||||
CALL .CONV_NIBLE
|
|
||||||
LD A,C
|
|
||||||
|
|
||||||
.CONV_NIBLE
|
|
||||||
AND 0x0f
|
|
||||||
ADD A,0x90
|
|
||||||
DAA
|
|
||||||
ADC A,0x40
|
|
||||||
DAA
|
|
||||||
LD (DE), A
|
|
||||||
INC DE
|
|
||||||
RET
|
|
||||||
|
|
||||||
LINE_END
|
|
||||||
DB "\r\n",0
|
|
||||||
|
|
||||||
ENDMODULE
|
|
||||||
|
|
||||||
ENDIF
|
|
||||||
Loading…
Reference in New Issue
Block a user