mirror of https://github.com/zxdos/zxuno.git
uGophy 0.8
* Extended memory check added * Music changer added
This commit is contained in:
parent
3c9bd57195
commit
4cc55a1692
|
|
@ -1,9 +1,6 @@
|
|||
all: ugoph.bin
|
||||
|
||||
player.bin: vtpl.asm
|
||||
sjasmplus vtpl.asm
|
||||
|
||||
ugoph.bin: *.asm player.bin
|
||||
ugoph.bin: *.asm
|
||||
sjasmplus main.asm
|
||||
|
||||
clean:
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@ FMODE_CREATE = #0E
|
|||
; Returns:
|
||||
; A - current drive
|
||||
getDefaultDrive:
|
||||
ld a, 0
|
||||
rst #8
|
||||
ld a, 0 : rst #8
|
||||
defb ESX_GETSETDRV
|
||||
ret
|
||||
|
||||
|
|
@ -25,11 +24,9 @@ getDefaultDrive:
|
|||
; Returns:
|
||||
; A - file stream id
|
||||
fopen:
|
||||
push bc
|
||||
push hl
|
||||
push bc : push hl
|
||||
call getDefaultDrive
|
||||
pop ix
|
||||
pop bc
|
||||
pop ix : pop bc
|
||||
rst #8
|
||||
defb ESX_FOPEN
|
||||
ret
|
||||
|
|
@ -46,8 +43,7 @@ fclose:
|
|||
; Returns
|
||||
; BC - length(how much was actually read)
|
||||
fread:
|
||||
push hl
|
||||
pop ix
|
||||
push hl : pop ix
|
||||
rst #8
|
||||
defb ESX_FREAD
|
||||
ret
|
||||
|
|
@ -58,8 +54,7 @@ fread:
|
|||
; Returns:
|
||||
; BC - actually written bytes
|
||||
fwrite:
|
||||
push hl
|
||||
pop ix
|
||||
push hl : pop ix
|
||||
rst #8
|
||||
defb ESX_FWRITE
|
||||
ret
|
||||
|
|
|
|||
|
|
@ -2,213 +2,125 @@
|
|||
; de - path
|
||||
; bc - port
|
||||
openPage:
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
push hl : push de : push bc
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
xor a : call changeBank
|
||||
|
||||
ex hl, de
|
||||
ex hl, de : ld de, hist : ld bc, 322 : ldir
|
||||
|
||||
ld de, hist
|
||||
ld bc, 322
|
||||
ldir
|
||||
ld hl, page_buffer : xor a : ld (hl), a : ld de, page_buffer + 1 : ld bc, #ffff - page_buffer - 1 : ldir
|
||||
|
||||
pop bc : pop de : pop hl
|
||||
|
||||
ld hl, page_buffer
|
||||
xor a
|
||||
ld (hl), a
|
||||
ld de, page_buffer + 1
|
||||
ld bc, #ffff - page_buffer - 1
|
||||
ldir
|
||||
pop bc
|
||||
pop de
|
||||
pop hl
|
||||
call makeRequest
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
xor a : call changeBank
|
||||
|
||||
ld hl, page_buffer
|
||||
call loadData
|
||||
xor a
|
||||
ld (show_offset), a
|
||||
ld a, 1
|
||||
ld (cursor_pos), a
|
||||
ld hl, page_buffer : call loadData
|
||||
|
||||
xor a : ld (show_offset), a
|
||||
inc a : ld (cursor_pos), a
|
||||
ret
|
||||
|
||||
; HL - domain stringZ
|
||||
; DE - path stringZ
|
||||
; BC - port stringZ
|
||||
makeRequest:
|
||||
push de
|
||||
push bc
|
||||
push HL
|
||||
push de : push bc : push hl
|
||||
|
||||
ld hl, downloading_msg
|
||||
call showTypePrint
|
||||
ld hl, downloading_msg : call showTypePrint
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
xor a : call changeBank
|
||||
|
||||
ld hl, cmd_open1 ; Open TCP connection
|
||||
call uartWriteStringZ
|
||||
pop hl
|
||||
call uartWriteStringZ
|
||||
ld hl, cmd_open2
|
||||
call uartWriteStringZ
|
||||
pop hl
|
||||
call uartWriteStringZ
|
||||
ld hl, cmd_open3
|
||||
call okErrCmd
|
||||
; Open TCP connection
|
||||
ld hl, cmd_open1 : call uartWriteStringZ
|
||||
pop hl : call uartWriteStringZ
|
||||
ld hl, cmd_open2 : call uartWriteStringZ
|
||||
pop hl : call uartWriteStringZ
|
||||
ld hl, cmd_open3 : call okErrCmd
|
||||
|
||||
pop hl
|
||||
cp 1
|
||||
jp nz, reqErr
|
||||
push hl
|
||||
pop hl : cp 1 : jp nz, reqErr : push hl
|
||||
|
||||
ld hl, cmd_send ; Send request
|
||||
call uartWriteStringZ
|
||||
pop hl
|
||||
push hl
|
||||
call getStringLength ; Calculate addr length
|
||||
push bc
|
||||
pop hl
|
||||
inc hl ; CR
|
||||
inc hl ; LF
|
||||
call B2D16 ; To string
|
||||
ld hl, B2DBUF
|
||||
call SkipWhitespace
|
||||
call uartWriteStringZ
|
||||
|
||||
ld hl, crlf
|
||||
call okErrCmd
|
||||
pop hl
|
||||
cp 1
|
||||
jp nz, reqErr
|
||||
push hl
|
||||
; Send request
|
||||
ld hl, cmd_send : call uartWriteStringZ
|
||||
pop hl : push hl
|
||||
call getStringLength
|
||||
push bc : pop hl : inc hl : inc hl : call B2D16
|
||||
|
||||
ld hl, B2DBUF : call SkipWhitespace : call uartWriteStringZ
|
||||
ld hl, crlf : call okErrCmd
|
||||
|
||||
pop hl : cp 1 : jp nz, reqErr : push hl
|
||||
wPrmt:
|
||||
call uartReadBlocking
|
||||
call pushRing
|
||||
ld hl, send_prompt
|
||||
call searchRing
|
||||
cp 1
|
||||
jr nz, wPrmt
|
||||
call uartReadBlocking : call pushRing
|
||||
ld hl, send_prompt : call searchRing : cp 1 : jr nz, wPrmt
|
||||
|
||||
pop hl
|
||||
call uartWriteStringZ
|
||||
pop hl : call uartWriteStringZ
|
||||
|
||||
ld hl, crlf
|
||||
call uartWriteStringZ
|
||||
ld a, 1
|
||||
ld (connectionOpen), a
|
||||
ld hl, crlf : call uartWriteStringZ : ld a, 1 : ld (connectionOpen), a
|
||||
ret
|
||||
|
||||
reqErr
|
||||
ld hl, connectionError
|
||||
call putStringZ
|
||||
xor a
|
||||
ld (connectionOpen), a
|
||||
ret
|
||||
reqErr:
|
||||
pop hl ; Now we won't back to same address
|
||||
|
||||
ld hl, connectionError : call showTypePrint : call wSec
|
||||
xor a : ld (connectionOpen), a
|
||||
|
||||
call initWifi ; Trying reset ESP and continue work
|
||||
jp historyBack ; Let's try back home on one URL :)
|
||||
|
||||
; Load data to ram via gopher
|
||||
; HL - data pointer
|
||||
; In data_recv downloaded volume
|
||||
loadData:
|
||||
ld (data_pointer), hl
|
||||
ld hl, 0
|
||||
ld (data_recv), hl
|
||||
ld (data_pointer), hl
|
||||
ld hl, 0 : ld (data_recv), hl
|
||||
lpLoop:
|
||||
call getPacket
|
||||
ld a, (connectionOpen)
|
||||
and a
|
||||
jp z, ldEnd
|
||||
ld bc, (bytes_avail)
|
||||
ld de, (data_pointer)
|
||||
ld hl, output_buffer
|
||||
ldir
|
||||
ld hl, (data_pointer)
|
||||
ld de, (bytes_avail)
|
||||
push de
|
||||
add hl, de
|
||||
ld (data_pointer), hl
|
||||
pop de
|
||||
ld hl, (data_recv)
|
||||
add hl, de
|
||||
ld (data_recv), hl
|
||||
|
||||
ld a, (connectionOpen) : and a : jp z, ldEnd
|
||||
|
||||
ld bc, (bytes_avail) : ld de, (data_pointer) : ld hl, output_buffer : ldir
|
||||
ld hl, (data_pointer) : ld de, (bytes_avail) : push de : add hl, de : ld (data_pointer), hl : pop de
|
||||
ld hl, (data_recv) : add hl, de : ld (data_recv), hl
|
||||
|
||||
jp lpLoop
|
||||
|
||||
ldEnd
|
||||
xor a
|
||||
ld (data_pointer), a
|
||||
xor a : ld (data_pointer), a
|
||||
ret
|
||||
|
||||
; Download file via gopher
|
||||
; HL - filename
|
||||
downloadData:
|
||||
ld b, FMODE_CREATE
|
||||
call fopen
|
||||
ld (fstream), a
|
||||
ld b, FMODE_CREATE : call fopen : ld (fstream), a
|
||||
dwnLp:
|
||||
call getPacket
|
||||
ld a, (connectionOpen)
|
||||
and a
|
||||
jp z, dwnEnd
|
||||
ld bc, (bytes_avail)
|
||||
ld hl, output_buffer
|
||||
ld a, (fstream)
|
||||
call fwrite
|
||||
ld a, (fstream)
|
||||
call fsync
|
||||
call getPacket : ld a, (connectionOpen) : and a : jp z, dwnEnd
|
||||
|
||||
ld bc, (bytes_avail) : ld hl, output_buffer : ld a, (fstream) : call fwrite
|
||||
|
||||
ld a, (fstream) : call fsync
|
||||
jp dwnLp
|
||||
dwnEnd:
|
||||
ld a, (fstream)
|
||||
call fclose
|
||||
ld a, (fstream) : call fclose
|
||||
ret
|
||||
|
||||
openURI:
|
||||
call cleanIBuff
|
||||
ld b, 19
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
call cleanIBuff
|
||||
|
||||
ld hl, cleanLine
|
||||
call printZ64
|
||||
|
||||
ld b, 19
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
|
||||
ld hl, hostTxt
|
||||
call printZ64
|
||||
ld b, 19: ld c, 0 :call gotoXY : ld hl, cleanLine : call printZ64
|
||||
ld b, 19: ld c, 0 : call gotoXY : ld hl, hostTxt : call printZ64
|
||||
|
||||
call input
|
||||
|
||||
ld a, (iBuff)
|
||||
or a
|
||||
jp z, backToPage
|
||||
ld a, (iBuff) : or a : jp z, backToPage
|
||||
|
||||
ld b, 19
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
ld b, 19 : ld c, 0 : call gotoXY : ld hl, cleanLine : call printZ64
|
||||
|
||||
ld hl, iBuff : ld de, d_host : ld bc, 65 : ldir
|
||||
|
||||
ld hl, d_host : ld de, d_path : ld bc, d_port : call openPage
|
||||
|
||||
ld hl, cleanLine
|
||||
call printZ64
|
||||
|
||||
ld hl, iBuff
|
||||
|
||||
ld a, (hl)
|
||||
and a
|
||||
ret z
|
||||
|
||||
ld de, d_host
|
||||
ld bc, 65
|
||||
ldir
|
||||
|
||||
ld hl, d_host
|
||||
ld de, d_path
|
||||
ld bc, d_port
|
||||
call openPage
|
||||
jp showPage
|
||||
|
||||
|
||||
|
|
@ -232,4 +144,5 @@ d_port db '70'
|
|||
hist ds 322
|
||||
connectionOpen db 0
|
||||
downloading_msg db 'Downloading...', 0
|
||||
connectionError db 'Cant open TCP connection', 0
|
||||
|
||||
connectionError db "Issue with making request - trying get back", 0
|
||||
|
|
|
|||
|
|
@ -2,99 +2,62 @@ CURKEY = 23560
|
|||
|
||||
; Returns in A key code or zero if key wans't pressed
|
||||
inkey:
|
||||
ld hl, CURKEY
|
||||
ld a, (hl)
|
||||
push af
|
||||
xor a
|
||||
ld (hl), a
|
||||
pop af
|
||||
ld hl, CURKEY : ld a, (hl)
|
||||
push af : xor a : ld (hl), a : pop af
|
||||
ret
|
||||
|
||||
findZero:
|
||||
ld a, (hl)
|
||||
or a
|
||||
ret z
|
||||
ld a, (hl) : or a : ret z
|
||||
inc hl
|
||||
jp findZero
|
||||
|
||||
input:
|
||||
ld b, 20
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
ld b, 20 : ld c, 0 : call gotoXY
|
||||
|
||||
ld hl, cleanLine
|
||||
call printZ64
|
||||
ld hl, iBuff
|
||||
call findZero
|
||||
ld hl, cleanLine : call printZ64
|
||||
|
||||
ld hl, iBuff : call findZero
|
||||
iLp:
|
||||
halt
|
||||
push hl
|
||||
ld b, 20
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
|
||||
ld b, 20 : ld c, 0: call gotoXY
|
||||
ld hl, iBuff : call printZ64
|
||||
|
||||
ld hl, iBuff
|
||||
call printZ64
|
||||
|
||||
ld a, '_'
|
||||
call putC
|
||||
ld a, ' '
|
||||
call putC
|
||||
ld a, '_' : call putC : ld a, ' ' : call putC
|
||||
|
||||
call inkey
|
||||
|
||||
cp 0
|
||||
jr z, iNth
|
||||
cp 0 : jr z, iNth
|
||||
cp 12 : jr z, iBS
|
||||
cp 13 : jr z, iRet
|
||||
|
||||
cp 12
|
||||
jr z, iBS
|
||||
|
||||
cp 13
|
||||
jr z, iRet
|
||||
|
||||
pop hl
|
||||
ld (hl), A
|
||||
push hl
|
||||
ld de, iBuff + 62
|
||||
sub hl, de
|
||||
ld a, h
|
||||
or l
|
||||
jr z, iCr
|
||||
pop hl
|
||||
inc hl
|
||||
pop hl : ld (hl), A : push hl
|
||||
|
||||
ld de, iBuff + 62 : sub hl, de : ld a, h : or l : jr z, iCr
|
||||
|
||||
pop hl : inc hl
|
||||
jr iLp
|
||||
iBS: pop hl
|
||||
push hl
|
||||
ld de, iBuff
|
||||
sub hl, de
|
||||
ld a, h
|
||||
or l
|
||||
pop hl
|
||||
jr z, iLp
|
||||
dec hl
|
||||
ld (hl), 0
|
||||
jr iLp
|
||||
iCr pop hl
|
||||
xor a
|
||||
ld (hl), a
|
||||
push hl
|
||||
iNth pop hl
|
||||
|
||||
iBS: pop hl : push hl
|
||||
ld de, iBuff : sub hl, de : ld a, h : or l
|
||||
pop hl :jr z, iLp
|
||||
|
||||
dec hl : ld (hl), 0
|
||||
jr iLp
|
||||
|
||||
iCr pop hl : xor a : ld (hl), a : push hl
|
||||
iNth pop hl: jr iLp
|
||||
|
||||
cleanIBuff:
|
||||
ld bc, 64
|
||||
ld hl, iBuff
|
||||
ld de, iBuff + 1
|
||||
ld (hl), 0
|
||||
ldir
|
||||
ret
|
||||
ld bc, 64 : ld hl, iBuff : ld de, iBuff + 1 : ld (hl), 0 : ldir
|
||||
ret
|
||||
|
||||
iRet:
|
||||
pop hl
|
||||
ld b, 20
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
|
||||
ld hl, cleanLine
|
||||
call printZ64
|
||||
|
||||
ld b, 20 : ld c, 0 : call gotoXY
|
||||
ld hl, cleanLine :call printZ64
|
||||
ret
|
||||
|
||||
iBuff defs 65
|
||||
|
|
@ -3,34 +3,40 @@
|
|||
Start:
|
||||
di
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
call checkHighMem : jp nz, noMem
|
||||
|
||||
xor a : out (#fe), a : call changeBank
|
||||
|
||||
ld sp, #5aff
|
||||
|
||||
ld de, #4000
|
||||
ld bc, eop - page_buffer
|
||||
ld hl, page_buffer
|
||||
ldir
|
||||
ld de, #4000 : ld bc, eop - player : ld hl, player : ldir
|
||||
|
||||
ei
|
||||
|
||||
call renderHeader
|
||||
ld hl, connecting_wifi
|
||||
call printZ64
|
||||
ld hl, connecting_wifi : call printZ64
|
||||
call initWifi
|
||||
|
||||
call wSec
|
||||
|
||||
ld de, path
|
||||
ld hl, server
|
||||
ld bc, port
|
||||
call openPage
|
||||
ld de, path : ld hl, server : ld bc, port : call openPage
|
||||
|
||||
jp showPage
|
||||
|
||||
noMem:
|
||||
ld hl, no128k
|
||||
nmLp:
|
||||
push hl
|
||||
ld a, (hl)
|
||||
and a : jr z, $
|
||||
rst #10
|
||||
pop hl
|
||||
inc hl
|
||||
jp nmLp
|
||||
|
||||
|
||||
wSec: ld b, 50
|
||||
wsLp halt
|
||||
djnz wsLp
|
||||
wsLp halt : djnz wsLp
|
||||
|
||||
include "tscreen.asm"
|
||||
include "keyboard.asm"
|
||||
|
|
@ -43,7 +49,8 @@ wsLp halt
|
|||
include "ring.asm"
|
||||
include "esxdos.asm"
|
||||
|
||||
connecting_wifi db 13, ' Connecting to WiFi', 13, 0
|
||||
|
||||
connecting_wifi db 13, 'Connecting to WiFi', 13, 0
|
||||
open_lbl db 'Opening connection to ', 0
|
||||
|
||||
path db '/ncmenu'
|
||||
|
|
@ -54,6 +61,16 @@ port db '70'
|
|||
defs 5
|
||||
db 0
|
||||
page_buffer equ $
|
||||
INCBIN "player.bin"
|
||||
display "PAGE buffer:", $
|
||||
no128k db 13, "You're started in 48k mode!", 13
|
||||
db "Current version require full", 13
|
||||
db "128K memory access", 13
|
||||
db "System halted!", 0
|
||||
player
|
||||
DISPLAY "Player starts:" , $
|
||||
include "vtpl.asm"
|
||||
DISPLAY "Player ends: ", $
|
||||
ENT
|
||||
eop equ $
|
||||
SAVEBIN "ugoph.bin", Start, $ - Start
|
||||
SAVETAP "ugoph.tap", Start
|
||||
|
|
@ -1,229 +1,127 @@
|
|||
showPage:
|
||||
xor a
|
||||
ld (show_offset), a
|
||||
ld a, 1
|
||||
ld (cursor_pos), a
|
||||
xor a : ld (show_offset), a
|
||||
inc a :ld (cursor_pos), a
|
||||
backToPage:
|
||||
call renderScreen
|
||||
call showCursor
|
||||
call renderScreen : call showCursor
|
||||
showLp:
|
||||
xor a
|
||||
call changeBank
|
||||
|
||||
xor a : call changeBank
|
||||
jp controls
|
||||
dup 5
|
||||
halt
|
||||
edup
|
||||
|
||||
jr showLp
|
||||
|
||||
controls:
|
||||
call inkey
|
||||
|
||||
cp 0
|
||||
jr z, showLp
|
||||
|
||||
cp 'q'
|
||||
jp z, pageCursorUp
|
||||
|
||||
cp 'a'
|
||||
jp z, pageCursorDown
|
||||
|
||||
cp 13
|
||||
jp z, selectItem
|
||||
|
||||
cp 'b'
|
||||
jp z, historyBack
|
||||
|
||||
cp 'o'
|
||||
jp z, pageScrollUp
|
||||
|
||||
cp 'p'
|
||||
jp z, pageScrollDn
|
||||
|
||||
cp 'n'
|
||||
jp z, openURI
|
||||
cp 0 : jr z, showLp
|
||||
cp 'q' : jp z, pageCursorUp
|
||||
cp 'a' : jp z, pageCursorDown
|
||||
cp 13 : jp z, selectItem
|
||||
cp 'b' : jp z, historyBack
|
||||
cp 'o' : jp z, pageScrollUp
|
||||
cp 'p' : jp z, pageScrollDn
|
||||
cp 'n' : jp z, openURI
|
||||
|
||||
jp showLp
|
||||
|
||||
historyBack:
|
||||
ld hl, server
|
||||
ld de, path
|
||||
ld bc, port
|
||||
call openPage
|
||||
ld hl, server : ld de, path : ld bc, port : call openPage
|
||||
jp showPage
|
||||
|
||||
pageCursorUp:
|
||||
ld a, (cursor_pos)
|
||||
ld a, (cursor_pos)
|
||||
dec a
|
||||
cp 0
|
||||
jp z, pageScrollUp
|
||||
cp 0 : jp z, pageScrollUp
|
||||
|
||||
push af
|
||||
call hideCursor
|
||||
pop af
|
||||
ld (cursor_pos), a
|
||||
call showCursor
|
||||
push af : call hideCursor : pop af : ld (cursor_pos), a : call showCursor
|
||||
jp showLp
|
||||
|
||||
pageCursorDown:
|
||||
ld a, (cursor_pos)
|
||||
inc a
|
||||
cp 21
|
||||
jp z, pageScrollDn
|
||||
cp 21 : jp z, pageScrollDn
|
||||
|
||||
push af
|
||||
call hideCursor
|
||||
pop af
|
||||
ld (cursor_pos), a
|
||||
call showCursor
|
||||
push af : call hideCursor : pop af : ld (cursor_pos), a : call showCursor
|
||||
jp showLp
|
||||
|
||||
pageScrollDn:
|
||||
ld hl, (show_offset)
|
||||
ld de, 20
|
||||
add hl, de
|
||||
ld (show_offset), hl
|
||||
ld a, 1
|
||||
ld (cursor_pos), a
|
||||
call renderScreen
|
||||
call showCursor
|
||||
jp showLp
|
||||
ld hl, (show_offset) : ld de, 20 : add hl, de : ld (show_offset), hl
|
||||
ld a, 1 : ld (cursor_pos), a
|
||||
|
||||
jp backToPage
|
||||
|
||||
pageScrollUp:
|
||||
ld a, (show_offset)
|
||||
and a
|
||||
jp z, showLp
|
||||
ld a, (show_offset) : and a : jp z, showLp
|
||||
ld hl, (show_offset) : ld de, 20 : sub hl, de : ld (show_offset), hl
|
||||
ld a, 20 : ld (cursor_pos), a
|
||||
|
||||
ld hl, (show_offset)
|
||||
ld de, 20
|
||||
sub hl, de
|
||||
ld (show_offset), hl
|
||||
|
||||
ld a, 20
|
||||
ld (cursor_pos), a
|
||||
jp backToPage
|
||||
|
||||
selectItem:
|
||||
ld a, (cursor_pos)
|
||||
dec a
|
||||
ld b, a
|
||||
ld a, (show_offset)
|
||||
add b
|
||||
ld b, a
|
||||
ld a, (cursor_pos) : dec a : ld b, a : ld a, (show_offset) : add b : ld b, a
|
||||
call findLine
|
||||
ld a, h
|
||||
cp l
|
||||
ret z
|
||||
|
||||
ld a, h : or l : jp z, showLp
|
||||
|
||||
ld a, (hl)
|
||||
|
||||
cp '1'
|
||||
jr z, downPg
|
||||
|
||||
cp '0'
|
||||
jr z, downPg
|
||||
|
||||
cp '9'
|
||||
jp z, downFl
|
||||
|
||||
cp '7'
|
||||
jr z, userInput
|
||||
cp '1' : jr z, downPg
|
||||
cp '0' : jr z, downPg
|
||||
cp '9' : jp z, downFl
|
||||
cp '7' : jr z, userInput
|
||||
|
||||
jp showLp
|
||||
|
||||
userInput:
|
||||
call cleanIBuff
|
||||
call input
|
||||
call cleanIBuff : call input
|
||||
|
||||
call extractInfo
|
||||
ld hl, file_buffer
|
||||
call findEnd
|
||||
ld a, 9
|
||||
ld (hl), a
|
||||
inc hl
|
||||
ex hl, de
|
||||
ld hl, iBuff
|
||||
ld bc, 64
|
||||
ldir
|
||||
call extractInfo
|
||||
ld hl, file_buffer : call findEnd : ld a, 9 : ld (hl), a : inc hl
|
||||
ex hl, de : ld hl, iBuff : ld bc, 64 : ldir
|
||||
|
||||
ld hl, hist
|
||||
ld de, path
|
||||
ld bc, 322
|
||||
ldir
|
||||
ld hl, hist : ld de, path : ld bc, 322 : ldir
|
||||
|
||||
ld hl, server_buffer
|
||||
ld de, file_buffer
|
||||
ld bc, port_buffer
|
||||
call openPage
|
||||
ld hl, server_buffer : ld de, file_buffer : ld bc, port_buffer : call openPage
|
||||
|
||||
jp showPage
|
||||
|
||||
downPg:
|
||||
push af
|
||||
call extractInfo
|
||||
|
||||
ld hl, hist
|
||||
ld de, path
|
||||
ld bc, 322
|
||||
ldir
|
||||
ld hl, hist : ld de, path : ld bc, 322 : ldir
|
||||
|
||||
ld hl, server_buffer
|
||||
ld de, file_buffer
|
||||
ld bc, port_buffer
|
||||
call openPage
|
||||
ld hl, server_buffer : ld de, file_buffer : ld bc, port_buffer : call openPage
|
||||
|
||||
pop af
|
||||
|
||||
cp '1'
|
||||
jp z,showPage
|
||||
|
||||
cp '0'
|
||||
jp z, showText
|
||||
cp '1' : jp z,showPage
|
||||
cp '0' : jp z, showText
|
||||
|
||||
jp showLp
|
||||
|
||||
downFl:
|
||||
call extractInfo
|
||||
call clearRing
|
||||
call cleanIBuff
|
||||
call extractInfo : call clearRing : call cleanIBuff
|
||||
|
||||
ld hl, file_buffer
|
||||
call findFnme
|
||||
jp isOpenable
|
||||
ld hl, file_buffer : call findFnme : jp isOpenable
|
||||
dfl:
|
||||
ld hl, file_buffer
|
||||
call findFnme
|
||||
ld hl, file_buffer : call findFnme
|
||||
ld de, iBuff : ld bc, 65 : ldir
|
||||
|
||||
ld de, iBuff
|
||||
ld bc, 65
|
||||
ldir
|
||||
|
||||
call input
|
||||
|
||||
ld hl, iBuff
|
||||
call showTypePrint
|
||||
ld hl, iBuff : call showTypePrint
|
||||
|
||||
ld hl, server_buffer
|
||||
ld de, file_buffer
|
||||
ld bc, port_buffer
|
||||
call makeRequest
|
||||
ld hl, server_buffer : ld de, file_buffer : ld bc, port_buffer : call makeRequest
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
xor a : call changeBank
|
||||
|
||||
ld hl, iBuff
|
||||
call downloadData
|
||||
ld hl, iBuff : call downloadData
|
||||
|
||||
call hideCursor
|
||||
call showCursor
|
||||
call hideCursor : call showCursor
|
||||
|
||||
jp showLp
|
||||
|
||||
isOpenable:
|
||||
ld a, (hl)
|
||||
and a
|
||||
jr z, checkFile
|
||||
push hl
|
||||
call pushRing
|
||||
pop hl
|
||||
ld a, (hl) : and a : jr z, checkFile
|
||||
push hl : call pushRing : pop hl
|
||||
inc hl
|
||||
jr isOpenable
|
||||
|
||||
|
|
@ -236,249 +134,154 @@ pt2Ext2 db ".PT2", 0
|
|||
|
||||
checkFile:
|
||||
;; Images
|
||||
ld hl, imgExt
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, loadImage
|
||||
|
||||
ld hl, imgExt2
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, loadImage
|
||||
ld hl, imgExt : call searchRing : cp 1 : jr z, loadImage
|
||||
ld hl, imgExt2 : call searchRing : cp 1 : jr z, loadImage
|
||||
;; Music
|
||||
xor a
|
||||
ld (#4000 + 10), a
|
||||
xor a: ld (#400A), a
|
||||
|
||||
ld hl, pt3Ext
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, playMusic
|
||||
ld hl, pt3Ext : call searchRing : cp 1: jr z, playMusic
|
||||
ld hl, pt3Ext2 : call searchRing : cp 1 : jr z, playMusic
|
||||
|
||||
ld hl, pt3Ext2
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, playMusic
|
||||
ld a, 2 : ld (#400A), a
|
||||
|
||||
ld a, 2
|
||||
ld (#4000 + 10), a
|
||||
|
||||
ld hl, pt2Ext2
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, playMusic
|
||||
|
||||
|
||||
ld hl, pt2Ext
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, playMusic
|
||||
ld hl, pt2Ext2 : call searchRing : cp 1 : jr z, playMusic
|
||||
ld hl, pt2Ext : call searchRing : cp 1 : jr z, playMusic
|
||||
|
||||
jp dfl
|
||||
loadImage:
|
||||
ld hl, server_buffer
|
||||
ld de, file_buffer
|
||||
ld bc, port_buffer
|
||||
call makeRequest
|
||||
ld hl, server_buffer : ld de, file_buffer : ld bc, port_buffer : call makeRequest
|
||||
|
||||
ld a, 7
|
||||
call changeBank
|
||||
|
||||
ld hl, #c000
|
||||
call loadData
|
||||
ld a, 7 : call changeBank
|
||||
ld hl, #c000 : call loadData
|
||||
|
||||
|
||||
ld c, #ff
|
||||
xor a
|
||||
out (c), a
|
||||
wKey: call inkey
|
||||
or a
|
||||
jr z, wKey
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
ld c, #ff : xor a : out (c), a
|
||||
wKey:
|
||||
call inkey : or a : jr z, wKey
|
||||
xor a : call changeBank
|
||||
jp backToPage
|
||||
|
||||
playMusic:
|
||||
ld hl, hist
|
||||
ld de, path
|
||||
ld bc, 322
|
||||
ldir
|
||||
ld hl, hist : ld de, path : ld bc, 322 : ldir
|
||||
|
||||
ld hl, (show_offset)
|
||||
push hl
|
||||
ld hl, (show_offset) : push hl
|
||||
|
||||
ld hl, server_buffer
|
||||
ld de, file_buffer
|
||||
ld bc, port_buffer
|
||||
call openPage
|
||||
ld hl, server_buffer : ld de, file_buffer : ld bc, port_buffer : call openPage
|
||||
|
||||
ld hl, playing
|
||||
call showTypePrint
|
||||
ld hl, playing : call showTypePrint
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
xor a : call changeBank
|
||||
|
||||
call setNoTurboMode
|
||||
|
||||
ld hl, page_buffer
|
||||
call #4003
|
||||
ld a, (#400A) : or 1 : ld (#400A), a
|
||||
ld hl, page_buffer : call #4003
|
||||
playLp:
|
||||
halt
|
||||
call #4005
|
||||
xor a
|
||||
in a, (#fe)
|
||||
cpl
|
||||
and 15
|
||||
jr z, playLp
|
||||
halt : call #4005
|
||||
xor a : in a, (#fe) : cpl : and 15 : jp nz, stopPlay
|
||||
ld a, (#400A) : rla : jr nc, playLp
|
||||
songEnded:
|
||||
call #4008
|
||||
call setTurbo4Mode
|
||||
ld hl, server : ld de, path : ld bc, port : call openPage
|
||||
|
||||
pop hl : ld (show_offset), hl
|
||||
ld a, (cursor_pos) : inc a : cp 21 : jr z, playNxtPg : ld (cursor_pos), a
|
||||
|
||||
jr playContinue
|
||||
playNxtPg:
|
||||
ld hl, (show_offset) : ld de, 20 : add hl, de : ld (show_offset), hl : ld a, 1 : ld (cursor_pos), a
|
||||
playContinue:
|
||||
call renderScreen : call showCursor
|
||||
jp selectItem
|
||||
|
||||
stopPlay:
|
||||
call #4008
|
||||
call setTurbo4Mode
|
||||
|
||||
ld hl, server
|
||||
ld de, path
|
||||
ld bc, port
|
||||
call openPage
|
||||
|
||||
pop hl
|
||||
ld (show_offset), hl
|
||||
ld hl, server : ld de, path : ld bc, port : call openPage
|
||||
pop hl : ld (show_offset), hl
|
||||
|
||||
jp backToPage
|
||||
|
||||
findFnme:
|
||||
push hl
|
||||
pop de
|
||||
push hl : pop de
|
||||
ffnmlp:
|
||||
ld a, (hl)
|
||||
|
||||
cp 0
|
||||
jr z, ffnmend
|
||||
|
||||
cp '/'
|
||||
jr z, fslsh
|
||||
|
||||
cp 0 : jr z, ffnmend
|
||||
cp '/' : jr z, fslsh
|
||||
inc hl
|
||||
jp ffnmlp
|
||||
fslsh:
|
||||
inc hl
|
||||
push hl
|
||||
pop de
|
||||
inc hl : push hl : pop de
|
||||
jp ffnmlp
|
||||
ffnmend:
|
||||
push de
|
||||
pop hl
|
||||
push de : pop hl
|
||||
ret
|
||||
|
||||
showType:
|
||||
ld a, (cursor_pos)
|
||||
dec a
|
||||
ld b, a
|
||||
ld a, (show_offset)
|
||||
add b
|
||||
ld b, a
|
||||
ld a, (cursor_pos) : dec a : ld b, a : ld a, (show_offset) : add b : ld b, a
|
||||
|
||||
call findLine
|
||||
ld a, h
|
||||
cp l
|
||||
jr z, showTypeUnknown
|
||||
|
||||
ld a, h : or l : jr z, showTypeUnknown
|
||||
|
||||
ld a, (hl)
|
||||
|
||||
cp 'i'
|
||||
jr z, showTypeInfo
|
||||
|
||||
cp '9'
|
||||
jr z, showTypeDown
|
||||
|
||||
cp '1'
|
||||
jr z, showTypePage
|
||||
|
||||
cp '0'
|
||||
jr z, showTypeText
|
||||
|
||||
cp '7'
|
||||
jr z, showTypeInput
|
||||
cp 'i' : jr z, showTypeInfo
|
||||
cp '9' : jr z, showTypeDown
|
||||
cp '1' : jr z, showTypePage
|
||||
cp '0' : jr z, showTypeText
|
||||
cp '7' : jr z, showTypeInput
|
||||
|
||||
jr showTypeUnknown
|
||||
|
||||
showTypeInput:
|
||||
ld hl, type_inpt
|
||||
call showTypePrint
|
||||
call showURI
|
||||
ld hl, type_inpt : call showTypePrint : call showURI
|
||||
ret
|
||||
|
||||
showTypeText:
|
||||
ld hl, type_text
|
||||
call showTypePrint
|
||||
call showURI
|
||||
ld hl, type_text : call showTypePrint : call showURI
|
||||
ret
|
||||
|
||||
showTypeInfo:
|
||||
ld hl, type_info
|
||||
jp showTypePrint
|
||||
ld hl, type_info : jp showTypePrint
|
||||
|
||||
showTypePage:
|
||||
ld hl, type_page
|
||||
call showTypePrint
|
||||
call showURI
|
||||
ld hl, type_page : call showTypePrint : call showURI
|
||||
ret
|
||||
|
||||
showTypeDown:
|
||||
ld hl, type_down
|
||||
call showTypePrint
|
||||
call showURI
|
||||
ld hl, type_down : call showTypePrint : call showURI
|
||||
ret
|
||||
|
||||
showURI:
|
||||
call extractInfo
|
||||
ld hl, server_buffer
|
||||
call printZ64
|
||||
|
||||
ld hl, file_buffer
|
||||
call printZ64
|
||||
call extractInfo : ld hl, server_buffer : call printZ64
|
||||
ld hl, file_buffer : call printZ64
|
||||
ret
|
||||
|
||||
showTypeUnknown:
|
||||
ld hl, type_unkn
|
||||
jp showTypePrint
|
||||
ld hl, type_unkn : jp showTypePrint
|
||||
|
||||
showTypePrint:
|
||||
push hl
|
||||
|
||||
ld b, 21
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
ld hl, cleanLine
|
||||
call printZ64
|
||||
|
||||
ld b, 21
|
||||
ld c, 0
|
||||
call gotoXY
|
||||
pop hl
|
||||
call printZ64
|
||||
ret
|
||||
ld b, 21 : ld c, 0 : call gotoXY : ld hl, cleanLine : call printZ64
|
||||
ld b, 21 : ld c, 0 : call gotoXY : pop hl : jp printZ64
|
||||
|
||||
renderHeader:
|
||||
call clearScreen
|
||||
ld bc, 0
|
||||
call gotoXY
|
||||
|
||||
ld hl, head
|
||||
call printZ64
|
||||
|
||||
ld d, 0
|
||||
call inverseLine
|
||||
|
||||
call clearScreen : ld bc, 0 : call gotoXY
|
||||
ld hl, head : call printZ64
|
||||
ld d, 0 : call inverseLine
|
||||
ret
|
||||
|
||||
renderScreen:
|
||||
call renderHeader
|
||||
call renderHeader
|
||||
ld b, 20
|
||||
renderLp:
|
||||
push bc
|
||||
ld a, 20
|
||||
sub b
|
||||
ld b, a
|
||||
ld a, (show_offset)
|
||||
add b
|
||||
ld b, a
|
||||
ld a, 20 : sub b : ld b, a : ld a, (show_offset) : add b : ld b, a
|
||||
call renderLine
|
||||
pop bc
|
||||
djnz renderLp
|
||||
|
|
@ -487,17 +290,10 @@ renderLp:
|
|||
; b - line number
|
||||
renderLine:
|
||||
call findLine
|
||||
|
||||
ld a, h
|
||||
or l
|
||||
ret z
|
||||
|
||||
ld a, (hl)
|
||||
and a
|
||||
ret z
|
||||
ld a, h: or l: ret z
|
||||
ld a, (hl) : and a : ret z
|
||||
inc hl
|
||||
call printT64
|
||||
call mvCR
|
||||
call printT64 : call mvCR
|
||||
ret
|
||||
|
||||
; B - line number
|
||||
|
|
@ -505,85 +301,61 @@ renderLine:
|
|||
findLine:
|
||||
ld hl, page_buffer
|
||||
fndLnLp:
|
||||
ld a, b
|
||||
and a
|
||||
ret z
|
||||
ld a, b : and a : ret z
|
||||
|
||||
ld a, (hl)
|
||||
|
||||
; Buffer ends?
|
||||
and a : jr z, fndEnd
|
||||
|
||||
and a ; Buffer ends?
|
||||
jr z, fndEnd
|
||||
; New line?
|
||||
cp 10 : jr z, fndLnNL
|
||||
|
||||
cp 10 ; New line?
|
||||
jr z, fndLnNL
|
||||
inc hl
|
||||
jp fndLnLp
|
||||
|
||||
fndLnNL:
|
||||
dec b
|
||||
inc hl
|
||||
jp fndLnLp
|
||||
dec b : inc hl : jp fndLnLp
|
||||
fndEnd:
|
||||
ld hl, 0
|
||||
ret
|
||||
ld hl, 0 : ret
|
||||
|
||||
extractInfo:
|
||||
ld a, (cursor_pos)
|
||||
dec a
|
||||
ld b, a
|
||||
ld a, (show_offset)
|
||||
add b
|
||||
ld b, a
|
||||
call findLine
|
||||
ld a, h
|
||||
cp l
|
||||
ret z
|
||||
ld a, (cursor_pos) : dec a : ld b, a : ld a, (show_offset) : add b : ld b, a
|
||||
|
||||
call findNextBlock
|
||||
inc hl
|
||||
ld de, file_buffer
|
||||
call extractCol
|
||||
inc hl
|
||||
ld de, server_buffer
|
||||
call extractCol
|
||||
inc hl
|
||||
ld de, port_buffer
|
||||
call extractCol
|
||||
call findLine
|
||||
|
||||
ld a, h : or l : ret z
|
||||
|
||||
call findNextBlock
|
||||
|
||||
inc hl : ld de, file_buffer : call extractCol
|
||||
inc hl : ld de, server_buffer : call extractCol
|
||||
inc hl : ld de, port_buffer : call extractCol
|
||||
ret
|
||||
|
||||
extractCol:
|
||||
ld a, (hl)
|
||||
|
||||
cp 0
|
||||
jr z, endExtract
|
||||
|
||||
cp 09
|
||||
jr z, endExtract
|
||||
|
||||
cp 13
|
||||
jr z, endExtract
|
||||
|
||||
ld (de), a
|
||||
inc de
|
||||
inc hl
|
||||
cp 0 : jr z, endExtract
|
||||
cp 09 : jr z, endExtract
|
||||
cp 13 : jr z, endExtract
|
||||
|
||||
ld (de), a : inc de : inc hl
|
||||
jr extractCol
|
||||
|
||||
endExtract:
|
||||
xor a
|
||||
ld (de), a
|
||||
xor a : ld (de), a
|
||||
ret
|
||||
|
||||
findNextBlock:
|
||||
ld a, (hl)
|
||||
|
||||
cp 09 ; TAB
|
||||
ret z
|
||||
|
||||
cp 13 ; New line
|
||||
ret z
|
||||
|
||||
cp 0 ; End buffer
|
||||
ret z
|
||||
; TAB
|
||||
cp 09 : ret z
|
||||
; New line
|
||||
cp 13 : ret z
|
||||
; End of buffer
|
||||
cp 0 : ret z
|
||||
|
||||
inc hl
|
||||
jp findNextBlock
|
||||
|
|
@ -591,7 +363,7 @@ findNextBlock:
|
|||
show_offset db 0
|
||||
cursor_pos db 1
|
||||
|
||||
head db " UGophy - ZX-UNO Gopher client v. 0.7c (c) Alexander Sharikhin", 13,0
|
||||
head db " UGophy - ZX-UNO Gopher client v. 0.8 (c) Alexander Sharikhin", 13,0
|
||||
|
||||
cleanLine db " ",0
|
||||
playing db "Playing... Hold <SPACE> to stop!", 0
|
||||
|
|
|
|||
|
|
@ -1,67 +1,38 @@
|
|||
; Pushes A to ring buffer
|
||||
pushRing
|
||||
push af
|
||||
ld b, 32
|
||||
ld hl, ring_buffer + 1
|
||||
ld de, ring_buffer
|
||||
ld b, 32 : ld hl, ring_buffer + 1 : ld de, ring_buffer
|
||||
ringL
|
||||
ld a, (hl)
|
||||
ld (de), a
|
||||
inc hl
|
||||
inc de
|
||||
djnz ringL
|
||||
ld a, (hl) : ld (de), a : inc hl : inc de : djnz ringL
|
||||
pop af
|
||||
ld hl, ring_buffer + 31
|
||||
ld (hl), a
|
||||
ld hl, ring_buffer + 31 : ld (hl), a
|
||||
ret
|
||||
|
||||
; HL - Compare string(null terminated)
|
||||
; A - 0 NOT Found
|
||||
; 1 Found
|
||||
searchRing:
|
||||
ld b, 0
|
||||
push hl
|
||||
ld b, 0 : push hl
|
||||
serlp:
|
||||
ld a, (hl)
|
||||
inc hl
|
||||
inc b
|
||||
and a
|
||||
jp nz, serlp
|
||||
dec b
|
||||
pop hl
|
||||
push bc
|
||||
push hl
|
||||
ld a, (hl) : inc hl : inc b : and a : jp nz, serlp
|
||||
dec b : pop hl : push bc : push hl
|
||||
SRWork:
|
||||
pop hl
|
||||
pop hl
|
||||
ld de, ring_buffer + 32
|
||||
srcLp
|
||||
dec de
|
||||
djnz srcLp
|
||||
dec de : djnz srcLp
|
||||
pop bc
|
||||
ringCmpLp
|
||||
push bc
|
||||
push af
|
||||
ld a, (de)
|
||||
ld b, a
|
||||
pop af
|
||||
ld a, (hl)
|
||||
cp b
|
||||
pop bc
|
||||
ld a, 0
|
||||
ret nz
|
||||
inc de
|
||||
inc hl
|
||||
push bc : push af
|
||||
ld a, (de) : ld b, a
|
||||
pop af : ld a, (hl) : cp b : pop bc : ld a, 0 : ret nz
|
||||
inc de : inc hl
|
||||
djnz ringCmpLp
|
||||
ld a, 1
|
||||
ret
|
||||
|
||||
clearRing:
|
||||
xor a
|
||||
ld hl, ring_buffer
|
||||
ld de, ring_buffer + 1
|
||||
ld bc, 32
|
||||
ld (hl), a
|
||||
ldir
|
||||
xor a : ld hl, ring_buffer : ld de, ring_buffer + 1 : ld bc, 32 : ld (hl), a : ldir
|
||||
ret
|
||||
|
||||
ring_buffer dup 33
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
showText:
|
||||
xor a
|
||||
ld (show_offset), a
|
||||
xor a : ld (show_offset), a
|
||||
call renderTextScreen
|
||||
showTxLp:
|
||||
call txControls
|
||||
|
||||
xor a
|
||||
call changeBank
|
||||
xor a : call changeBank
|
||||
|
||||
dup 5
|
||||
halt
|
||||
|
|
@ -16,37 +14,27 @@ showTxLp:
|
|||
txControls:
|
||||
call inkey
|
||||
|
||||
and a
|
||||
ret z
|
||||
and a : ret z
|
||||
|
||||
cp 'q'
|
||||
jp z, txUp
|
||||
|
||||
cp 'a'
|
||||
jp z, txDn
|
||||
|
||||
cp 'b'
|
||||
jp z, historyBack
|
||||
|
||||
cp 'o'
|
||||
jp z, openURI
|
||||
cp 'q' : jp z, txUp
|
||||
cp 'a' : jp z, txDn
|
||||
cp 'b' : jp z, historyBack
|
||||
cp 'n' : jp z, openURI
|
||||
|
||||
ret
|
||||
|
||||
txUp:
|
||||
ld a, (show_offset)
|
||||
and a
|
||||
ret z
|
||||
and a : ret z
|
||||
|
||||
sub 20
|
||||
ld (show_offset), a
|
||||
sub 20 : ld (show_offset), a
|
||||
call renderTextScreen
|
||||
ret
|
||||
|
||||
txDn:
|
||||
ld a, (show_offset)
|
||||
add 20
|
||||
ld (show_offset), a
|
||||
ld a, (show_offset)
|
||||
add 20 : ld (show_offset), a
|
||||
|
||||
call renderTextScreen
|
||||
ret
|
||||
|
||||
|
|
@ -55,13 +43,10 @@ renderTextScreen:
|
|||
ld b, 20
|
||||
txRenderLp:
|
||||
push bc
|
||||
ld a, 20
|
||||
sub b
|
||||
ld b, a
|
||||
ld a, (show_offset)
|
||||
add b
|
||||
ld b, a
|
||||
|
||||
ld a, 20 : sub b : ld b, a : ld a, (show_offset) : add b : ld b, a
|
||||
call renderTextLine
|
||||
|
||||
pop bc
|
||||
djnz txRenderLp
|
||||
ret
|
||||
|
|
@ -70,13 +55,9 @@ txRenderLp:
|
|||
renderTextLine:
|
||||
call findLine
|
||||
|
||||
ld a, h
|
||||
or l
|
||||
ret z
|
||||
ld a, h : or l : ret z
|
||||
ld a, (hl) : and a : ret z
|
||||
|
||||
ld a, (hl)
|
||||
and a
|
||||
ret z
|
||||
call printL64
|
||||
call mvCR
|
||||
ret
|
||||
|
|
|
|||
|
|
@ -7,29 +7,16 @@ UART_BYTE_SENDING = #40
|
|||
; Cleaning all flags by reading UART regs
|
||||
; Wastes AF and BC
|
||||
uartBegin:
|
||||
ld bc, ZXUNO_ADDR
|
||||
ld a, UART_STAT_REG
|
||||
out (c), a
|
||||
|
||||
ld bc, ZXUNO_REG
|
||||
in A, (c)
|
||||
|
||||
ld bc, ZXUNO_ADDR
|
||||
ld a, UART_DATA_REG
|
||||
out (c), a
|
||||
|
||||
ld bc, ZXUNO_REG
|
||||
in A, (c)
|
||||
ld bc, ZXUNO_ADDR : ld a, UART_STAT_REG : out (c), a
|
||||
ld bc, ZXUNO_REG : in A, (c)
|
||||
ld bc, ZXUNO_ADDR : ld a, UART_DATA_REG : out (c), a
|
||||
ld bc, ZXUNO_REG : in A, (c)
|
||||
ret
|
||||
|
||||
; Blocking read one byte
|
||||
uartReadBlocking:
|
||||
call uartRead
|
||||
push af
|
||||
ld a, 1
|
||||
cp b
|
||||
jr z, urb
|
||||
pop af
|
||||
push af : ld a, 1 : cp b : jr z, urb : pop af
|
||||
ret nz
|
||||
jp uartReadBlocking
|
||||
urb:
|
||||
|
|
@ -41,72 +28,45 @@ urb:
|
|||
; BC will be wasted
|
||||
uartWriteByte:
|
||||
push af
|
||||
ld bc, ZXUNO_ADDR
|
||||
ld a, UART_STAT_REG
|
||||
out (c), a
|
||||
|
||||
ld bc, ZXUNO_ADDR : ld a, UART_STAT_REG : out (c), a
|
||||
waitWriteReady:
|
||||
ld bc, ZXUNO_REG
|
||||
in A, (c)
|
||||
and UART_BYTE_RECIVED
|
||||
ld bc, ZXUNO_REG : in A, (c) : and UART_BYTE_RECIVED
|
||||
jr nz, is_recvF
|
||||
checkSent:
|
||||
ld bc, ZXUNO_REG
|
||||
in A, (c)
|
||||
and UART_BYTE_SENDING
|
||||
ld bc, ZXUNO_REG : in A, (c) : and UART_BYTE_SENDING
|
||||
jr nz, checkSent
|
||||
|
||||
ld bc, ZXUNO_ADDR
|
||||
ld a, UART_DATA_REG
|
||||
out (c), a
|
||||
ld bc, ZXUNO_REG
|
||||
pop af
|
||||
out (c), a
|
||||
ld bc, ZXUNO_ADDR : ld a, UART_DATA_REG : out (c), a
|
||||
|
||||
ld bc, ZXUNO_REG : pop af : out (c), a
|
||||
ret
|
||||
is_recvF:
|
||||
push af
|
||||
push hl
|
||||
ld hl, is_recv
|
||||
ld a, 1
|
||||
ld (hl), a
|
||||
pop hl
|
||||
pop af
|
||||
push af : push hl
|
||||
|
||||
ld hl, is_recv : ld a, 1 : ld (hl), a
|
||||
|
||||
pop hl : pop af
|
||||
jr checkSent
|
||||
|
||||
; Is data avail in UART
|
||||
; NZ - Data Presents
|
||||
; Z - Data absent
|
||||
uartAvail:
|
||||
ld a, (is_recv)
|
||||
and 1
|
||||
ret nz
|
||||
|
||||
ld a, (poked_byte)
|
||||
and 1
|
||||
ret nz
|
||||
ld a, (is_recv) : and 1 : ret nz
|
||||
ld a, (poked_byte) : and 1 : ret nz
|
||||
|
||||
call uartRead
|
||||
|
||||
push af : ld a, b : and 1 : jr z, noneData : pop af
|
||||
|
||||
push af
|
||||
ld a, b
|
||||
and 1
|
||||
jr z, noneData
|
||||
pop af
|
||||
push af
|
||||
ld hl, byte_buff
|
||||
ld (hl), a
|
||||
ld hl, poked_byte
|
||||
ld a, 1
|
||||
ld (hl), a
|
||||
ld hl, byte_buff : ld (hl), a : ld hl, poked_byte : ld a, 1 : ld (hl), a
|
||||
pop af
|
||||
ld b, a
|
||||
ld a, 1
|
||||
or a
|
||||
ld a, b
|
||||
|
||||
ld b, a : ld a, 1 : or a : ld a, b
|
||||
ret
|
||||
noneData:
|
||||
pop bc
|
||||
xor a
|
||||
pop bc : xor a
|
||||
ret
|
||||
|
||||
; Read byte from UART
|
||||
|
|
@ -115,63 +75,38 @@ noneData:
|
|||
; 1 - Was read
|
||||
; 0 - Nothing to read
|
||||
uartRead:
|
||||
ld a, (poked_byte)
|
||||
and 1
|
||||
jr nz, retBuff
|
||||
ld a, (poked_byte) : and 1 : jr nz, retBuff
|
||||
|
||||
ld a, (is_recv)
|
||||
and 1
|
||||
jr nz, recvRet
|
||||
ld a, (is_recv) : and 1 : jr nz, recvRet
|
||||
|
||||
ld bc, ZXUNO_ADDR
|
||||
ld a, UART_STAT_REG
|
||||
out (c), a
|
||||
|
||||
ld bc, ZXUNO_REG
|
||||
in a, (c)
|
||||
and UART_BYTE_RECIVED
|
||||
ld bc, ZXUNO_ADDR : ld a, UART_STAT_REG : out (c), a
|
||||
ld bc, ZXUNO_REG : in a, (c) : and UART_BYTE_RECIVED
|
||||
jr nz, retReadByte
|
||||
|
||||
ld b, 0
|
||||
ret
|
||||
|
||||
retReadByte:
|
||||
ld a, 0
|
||||
ld (poked_byte), a
|
||||
ld (is_recv), a
|
||||
xor a : ld (poked_byte), a : ld (is_recv), a
|
||||
|
||||
ld bc, ZXUNO_ADDR
|
||||
ld a, UART_DATA_REG
|
||||
out (c), a
|
||||
|
||||
ld bc, ZXUNO_REG
|
||||
in a, (c)
|
||||
ld bc, ZXUNO_ADDR : ld a, UART_DATA_REG : out (c), a
|
||||
ld bc, ZXUNO_REG : in a, (c)
|
||||
|
||||
ld b, 1
|
||||
ret
|
||||
|
||||
recvRet:
|
||||
ld bc, ZXUNO_ADDR
|
||||
ld a, UART_DATA_REG
|
||||
out (c),a
|
||||
ld bc, ZXUNO_ADDR : ld a, UART_DATA_REG : out (c),a
|
||||
|
||||
ld bc, ZXUNO_REG
|
||||
in a, (c)
|
||||
|
||||
ld hl, is_recv
|
||||
ld (hl), 0
|
||||
|
||||
ld hl, poked_byte
|
||||
ld (hl), 0
|
||||
ld bc, ZXUNO_REG : in a, (c)
|
||||
ld hl, is_recv : ld (hl), 0
|
||||
ld hl, poked_byte : ld (hl), 0
|
||||
|
||||
ld b, 1
|
||||
ret
|
||||
|
||||
retBuff
|
||||
ld a, 0
|
||||
ld (poked_byte), a
|
||||
|
||||
ld a, (byte_buff)
|
||||
ld a, 0 : ld (poked_byte), a : ld a, (byte_buff)
|
||||
ld b, 1
|
||||
ret
|
||||
|
||||
|
|
|
|||
|
|
@ -2,56 +2,45 @@ SCANDBLCTRL_REG = #0B
|
|||
ZXUNO_ADDR = #FC3B
|
||||
ZXUNO_REG = #FD3B
|
||||
|
||||
; This routine checks availability of extended(128K) memory.
|
||||
; Output:
|
||||
; Flag: Z - High memory available
|
||||
checkHighMem:
|
||||
xor a : call changeBank: ld hl, #c000 : xor a :ld (hl), a ; Let's write in zero page zero value
|
||||
inc a : call changeBank : ld a, 13 : ld (hl), a ; In other page - any other value. Let's write luck 13
|
||||
xor a : call changeBank : ld a, (hl) : and a ; When we back to zero page - still there zero?!
|
||||
ret
|
||||
|
||||
; A - memory bank
|
||||
changeBank:
|
||||
ld bc, #7ffd
|
||||
or #18
|
||||
out (c), a
|
||||
ld bc, #7ffd : or #18 : out (c), a
|
||||
ret
|
||||
|
||||
setNoTurboMode:
|
||||
push af
|
||||
push bc
|
||||
push af : push bc
|
||||
|
||||
ld a, SCANDBLCTRL_REG
|
||||
ld bc, ZXUNO_ADDR
|
||||
out (c), a
|
||||
|
||||
ld bc, ZXUNO_REG
|
||||
in a, (c)
|
||||
and #3f
|
||||
out (c), a
|
||||
ld a, SCANDBLCTRL_REG : ld bc, ZXUNO_ADDR : out (c), a
|
||||
ld bc, ZXUNO_REG : in a, (c) : and #3f : out (c), a ; And #3F - keep scandoubler settings
|
||||
|
||||
pop bc
|
||||
pop af
|
||||
pop bc : pop af
|
||||
ret
|
||||
|
||||
setTurbo4Mode:
|
||||
push af
|
||||
push bc
|
||||
ld a, SCANDBLCTRL_REG
|
||||
ld bc, ZXUNO_ADDR
|
||||
out (c), a
|
||||
push af : push bc
|
||||
|
||||
ld bc, ZXUNO_REG
|
||||
in a, (c)
|
||||
and #3f
|
||||
or #80
|
||||
out (c), a
|
||||
ld a, SCANDBLCTRL_REG : ld bc, ZXUNO_ADDR : out (c), a
|
||||
ld bc, ZXUNO_REG : in a, (c) : and #3f : or #80 : out (c), a
|
||||
|
||||
pop bc
|
||||
pop af
|
||||
pop bc : pop af
|
||||
ret
|
||||
|
||||
; Pushes to UART zero-terminated string
|
||||
; HL - string poiner
|
||||
uartWriteStringZ:
|
||||
ld a, (hl)
|
||||
and a
|
||||
ret z
|
||||
push hl
|
||||
call uartWriteByte
|
||||
pop hl
|
||||
ld a, (hl) : and a : ret z
|
||||
|
||||
push hl : call uartWriteByte : pop hl
|
||||
|
||||
inc hl
|
||||
jp uartWriteStringZ
|
||||
|
||||
|
|
@ -59,54 +48,40 @@ uartWriteStringZ:
|
|||
; HL - string pointer
|
||||
putStringZ:
|
||||
printZ64:
|
||||
ld a,(hl)
|
||||
and a
|
||||
ret z
|
||||
push hl
|
||||
call putC
|
||||
pop hl
|
||||
ld a,(hl) : and a : ret z
|
||||
|
||||
push hl : call putC : pop hl
|
||||
|
||||
inc hl
|
||||
jr printZ64
|
||||
|
||||
printT64:
|
||||
ld b, 63
|
||||
ptlp:
|
||||
ld a, 0
|
||||
or b
|
||||
ret z
|
||||
ld a, (hl)
|
||||
ld a, 0 : or b : ret z
|
||||
|
||||
and a
|
||||
ret z
|
||||
ld a, (hl)
|
||||
|
||||
cp 09
|
||||
ret z
|
||||
and a : ret z
|
||||
cp 09 : ret z
|
||||
|
||||
push bc
|
||||
push hl
|
||||
call putC
|
||||
pop hl
|
||||
inc hl
|
||||
pop bc
|
||||
dec b
|
||||
push bc
|
||||
|
||||
push hl : call putC : pop hl
|
||||
|
||||
inc hl : pop bc : dec b
|
||||
jr ptlp
|
||||
|
||||
printL64:
|
||||
ld a, (hl)
|
||||
|
||||
and a
|
||||
ret z
|
||||
|
||||
cp #0A
|
||||
ret z
|
||||
and a : ret z
|
||||
cp #0A : ret z
|
||||
cp #0D : ret z
|
||||
|
||||
cp #0D
|
||||
ret z
|
||||
|
||||
push hl
|
||||
call putC
|
||||
pop hl
|
||||
inc hl
|
||||
push hl : call putC : pop hl
|
||||
|
||||
inc hl
|
||||
jr printL64
|
||||
|
||||
; HL - string
|
||||
|
|
@ -114,24 +89,24 @@ printL64:
|
|||
getStringLength:
|
||||
ld bc, 0
|
||||
strLnLp
|
||||
ld a, (hl)
|
||||
and a
|
||||
ret z
|
||||
inc bc
|
||||
ld a, (hl) : and a : ret z
|
||||
inc bc
|
||||
inc hl
|
||||
jr strLnLp
|
||||
|
||||
SkipWhitespace:
|
||||
ld a, (hl)
|
||||
cp ' '
|
||||
ret nz
|
||||
inc hl
|
||||
ld a, (hl)
|
||||
|
||||
cp ' ' : ret nz
|
||||
|
||||
inc hl
|
||||
jr SkipWhitespace
|
||||
|
||||
findEnd:
|
||||
ld a,(hl)
|
||||
and a
|
||||
ret z
|
||||
|
||||
and a : ret z
|
||||
|
||||
inc hl
|
||||
jr findEnd
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,68 +1,39 @@
|
|||
; Initialize WiFi chip and connect to WiFi
|
||||
initWifi:
|
||||
call setNoTurboMode
|
||||
call loadWiFiConfig
|
||||
call uartBegin
|
||||
ld hl, cmd_plus
|
||||
call uartWriteStringZ
|
||||
call setNoTurboMode : call loadWiFiConfig : call uartBegin
|
||||
|
||||
ld hl, cmd_plus : call uartWriteStringZ
|
||||
ld b,#ff
|
||||
wlp:
|
||||
push bc
|
||||
ld b, #ff
|
||||
djnz $
|
||||
pop bc
|
||||
djnz wlp
|
||||
push bc : ld b, #ff : djnz $ : pop bc : djnz wlp
|
||||
|
||||
ld hl, cmd_rst
|
||||
call uartWriteStringZ
|
||||
ld hl, cmd_rst : call uartWriteStringZ
|
||||
rstLp:
|
||||
call uartReadBlocking
|
||||
call pushRing
|
||||
ld hl, response_rdy
|
||||
call searchRing
|
||||
cp 1
|
||||
jr nz, rstLp
|
||||
call uartReadBlocking : call pushRing
|
||||
|
||||
ld hl, cmd_at ; Disable ECHO. BTW Basic UART test
|
||||
call okErrCmd
|
||||
and 1
|
||||
jr z, errInit
|
||||
ld hl, response_rdy : call searchRing : cp 1 : jr nz, rstLp
|
||||
; Disable ECHO. BTW Basic UART test
|
||||
|
||||
|
||||
ld hl, cmd_at : call okErrCmd : and 1 : jr z, errInit
|
||||
; Lets disconnect from last AP
|
||||
ld hl, cmd_cwqap : call okErrCmd : and 1 : jr z, errInit
|
||||
; Single connection mode
|
||||
ld hl, cmd_cmux : call okErrCmd : and 1 : jr z, errInit
|
||||
; FTP enables this info? We doesn't need it :-)
|
||||
ld hl, cmd_inf_off : call okErrCmd : and 1 : jr z, errInit
|
||||
|
||||
; Access Point connection
|
||||
ld hl, cmd_cwjap1 : call uartWriteStringZ : ld hl, ssid : call uartWriteStringZ : ld hl, cmd_cwjap2 : call uartWriteStringZ
|
||||
ld hl, pass :call uartWriteStringZ : ld hl, cmd_cwjap3 : call okErrCmd
|
||||
|
||||
and 1 :jr z, errInit
|
||||
|
||||
ld hl, cmd_cwqap ; Lets disconnect from last AP
|
||||
call okErrCmd
|
||||
and 1
|
||||
jr z, errInit
|
||||
|
||||
ld hl, cmd_cmux ; Single connection mode
|
||||
call okErrCmd
|
||||
and 1
|
||||
jr z, errInit
|
||||
|
||||
ld hl, cmd_inf_off ; FTP enables this info? We doesn't need it :-)
|
||||
call okErrCmd
|
||||
and 1
|
||||
jr z, errInit
|
||||
|
||||
ld hl, cmd_cwjap1 ; Access Point connection
|
||||
call uartWriteStringZ
|
||||
ld hl, ssid
|
||||
call uartWriteStringZ
|
||||
ld hl, cmd_cwjap2
|
||||
call uartWriteStringZ
|
||||
ld hl, pass
|
||||
call uartWriteStringZ
|
||||
ld hl, cmd_cwjap3
|
||||
call okErrCmd
|
||||
and 1
|
||||
jr z, errInit
|
||||
|
||||
ld hl, log_ok
|
||||
call putStringZ
|
||||
ld hl, log_ok : call putStringZ
|
||||
call setTurbo4Mode
|
||||
ret
|
||||
errInit
|
||||
ld hl, log_err
|
||||
call putStringZ
|
||||
ld hl, log_err : call putStringZ
|
||||
jr $
|
||||
|
||||
|
||||
|
|
@ -74,25 +45,12 @@ errInit
|
|||
okErrCmd:
|
||||
call uartWriteStringZ
|
||||
okErrCmdLp:
|
||||
call uartReadBlocking
|
||||
call pushRing
|
||||
call uartReadBlocking : call pushRing
|
||||
|
||||
ld hl, response_ok
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, okErrOk
|
||||
ld hl, response_ok : call searchRing : cp 1 : jr z, okErrOk
|
||||
ld hl, response_err : call searchRing : cp 1 : jr z, okErrErr
|
||||
ld hl, response_fail : call searchRing : cp 1 : jr z, okErrErr
|
||||
|
||||
ld hl, response_err
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, okErrErr
|
||||
|
||||
ld hl, response_fail
|
||||
call searchRing
|
||||
cp 1
|
||||
jr z, okErrErr
|
||||
|
||||
|
||||
jp okErrCmdLp
|
||||
okErrOk
|
||||
ld a, 1
|
||||
|
|
@ -107,59 +65,34 @@ okErrErr
|
|||
;
|
||||
; If connection was closed it calls 'closed_callback'
|
||||
getPacket
|
||||
call uartReadBlocking
|
||||
call pushRing
|
||||
call uartReadBlocking : call pushRing
|
||||
|
||||
ld hl, closed
|
||||
call searchRing
|
||||
cp 1
|
||||
jp z, closed_callback
|
||||
ld hl, closed : call searchRing : cp 1 : jp z, closed_callback
|
||||
ld hl, ipd : call searchRing : cp 1 : jr nz, getPacket
|
||||
|
||||
ld hl, ipd
|
||||
call searchRing
|
||||
cp 1
|
||||
jr nz, getPacket
|
||||
|
||||
call count_ipd_lenght
|
||||
ld (bytes_avail), hl
|
||||
push hl
|
||||
pop bc
|
||||
ld hl, output_buffer
|
||||
call count_ipd_lenght : ld (bytes_avail), hl
|
||||
push hl : pop bc
|
||||
|
||||
ld hl, output_buffer
|
||||
readp:
|
||||
push bc
|
||||
push hl
|
||||
push bc : push hl
|
||||
call uartReadBlocking
|
||||
pop hl
|
||||
ld (hl), a
|
||||
ld (hl), a
|
||||
pop bc
|
||||
dec bc
|
||||
inc hl
|
||||
ld a, b
|
||||
or c
|
||||
jr nz, readp
|
||||
ld hl, (bytes_avail)
|
||||
|
||||
dec bc : inc hl
|
||||
|
||||
ld a, b : or c : jr nz, readp
|
||||
|
||||
ld hl, (bytes_avail)
|
||||
ret
|
||||
|
||||
count_ipd_lenght
|
||||
ld hl,0 ; count lenght
|
||||
cil1 push hl
|
||||
call uartReadBlocking
|
||||
push af
|
||||
call pushRing
|
||||
pop af
|
||||
pop hl
|
||||
cp ':'
|
||||
ret z
|
||||
sub 0x30
|
||||
ld c,l
|
||||
ld b,h
|
||||
add hl,hl
|
||||
add hl,hl
|
||||
add hl,bc
|
||||
add hl,hl
|
||||
ld c,a
|
||||
ld b,0
|
||||
add hl,bc
|
||||
cil1 push hl : call uartReadBlocking : push af : call pushRing : pop af : pop hl
|
||||
cp ':' : ret z
|
||||
sub 0x30 : ld c,l : ld b,h : add hl,hl : add hl,hl : add hl,bc : add hl,hl : ld c,a : ld b,0 : add hl,bc
|
||||
jr cil1
|
||||
|
||||
; HL - z-string to hostname or ip
|
||||
|
|
@ -167,36 +100,26 @@ cil1 push hl
|
|||
startTcp:
|
||||
push de
|
||||
push hl
|
||||
ld hl, cmd_open1
|
||||
call uartWriteStringZ
|
||||
pop hl
|
||||
call uartWriteStringZ
|
||||
ld hl, cmd_open2
|
||||
call uartWriteStringZ
|
||||
pop de
|
||||
call uartWriteStringZ
|
||||
ld hl, cmd_open3
|
||||
call okErrCmd
|
||||
ld hl, cmd_open1 : call uartWriteStringZ
|
||||
pop hl : call uartWriteStringZ
|
||||
ld hl, cmd_open2 : call uartWriteStringZ
|
||||
pop de : call uartWriteStringZ
|
||||
ld hl, cmd_open3 : call okErrCmd
|
||||
ret
|
||||
|
||||
; Returns:
|
||||
; A: 1 - Success
|
||||
; 0 - Failed
|
||||
sendByte:
|
||||
push af
|
||||
ld hl, cmd_send_b
|
||||
call okErrCmd
|
||||
cp 1
|
||||
jr nz, sbErr
|
||||
push af
|
||||
ld hl, cmd_send_b : call okErrCmd
|
||||
cp 1 : jr nz, sbErr
|
||||
sbLp
|
||||
call uartReadBlocking
|
||||
ld hl, send_prompt
|
||||
call searchRing
|
||||
cp 1
|
||||
jr nz, sbLp
|
||||
call uartReadBlocking
|
||||
ld hl, send_prompt : call searchRing : cp 1 : jr nz, sbLp
|
||||
pop af
|
||||
ld (sbyte_buff), a
|
||||
call okErrCmd
|
||||
|
||||
ld (sbyte_buff), a : call okErrCmd
|
||||
ret
|
||||
sbErr:
|
||||
pop af
|
||||
|
|
@ -204,18 +127,11 @@ sbErr:
|
|||
ret
|
||||
|
||||
loadWiFiConfig:
|
||||
ld b, FMODE_READ
|
||||
ld hl, conf_file
|
||||
call fopen
|
||||
|
||||
push af
|
||||
ld hl, ssid
|
||||
ld bc, 160
|
||||
call fread
|
||||
pop af
|
||||
|
||||
ld b, FMODE_READ : ld hl, conf_file : call fopen
|
||||
push af : ld hl, ssid : ld bc, 160 : call fread : pop af
|
||||
call fclose
|
||||
ret
|
||||
|
||||
cmd_plus defb "+++", 0
|
||||
cmd_rst defb "AT+RST",13, 10, 0
|
||||
cmd_at defb "ATE0", 13, 10, 0 ; Disable echo - less to parse
|
||||
|
|
|
|||
Loading…
Reference in New Issue