Compare commits
5 commits
main
...
wic64-reba
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53b88311d0 | ||
|
|
e7430d3c3b | ||
|
|
3b3aeb239b | ||
|
|
e730a711b1 | ||
|
|
b25a0a6561 |
20 changed files with 490 additions and 280 deletions
|
|
@ -72,7 +72,6 @@ easyflash_support:
|
|||
.include "rs232.s"
|
||||
.include "reu.s"
|
||||
.include "theme.s"
|
||||
.include "easyflash.s"
|
||||
|
||||
.segment "S5100"
|
||||
|
||||
|
|
@ -80,6 +79,8 @@ easyflash_support:
|
|||
|
||||
.segment "S5C00"
|
||||
|
||||
.include "easyflash.s"
|
||||
.include "instr.s"
|
||||
.include "wic64.s"
|
||||
|
||||
endprg .byte 0
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
config_data:
|
||||
|
||||
baud_rate:
|
||||
.byte BAUD_2400
|
||||
.byte BAUD_9600
|
||||
|
||||
; indicates whether dialing should use ATD, followed by a quote
|
||||
firmware_zimmers:
|
||||
|
|
@ -22,7 +22,9 @@ mopo2:
|
|||
.byte $20 ; unused, but needs to stay for bin compat
|
||||
|
||||
modem_type:
|
||||
.byte MODEM_TYPE_USERPORT
|
||||
; .byte MODEM_TYPE_USERPORT
|
||||
; .byte MODEM_TYPE_UP9600
|
||||
.byte MODEM_TYPE_SWIFTLINK_DE
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Phone book
|
||||
|
|
@ -87,7 +89,7 @@ macmm4:
|
|||
;----------------------------------------------------------------------
|
||||
; file transmission protocol
|
||||
protoc:
|
||||
.byte PROTOCOL_PUNTER
|
||||
.byte PROTOCOL_XMODEM
|
||||
|
||||
; current theme; see theme.s
|
||||
theme:
|
||||
|
|
|
|||
|
|
@ -151,7 +151,6 @@ COLTAB = $e8da ; PETSCII codes for the colors 0-15
|
|||
; logical file numbers
|
||||
LFN_FILE = 2 ; for upload/download
|
||||
LFN_PRINTER = 4 ; printing buffers
|
||||
LFN_MODEM = 5
|
||||
LFN_DIR = 13
|
||||
LFN_DISK_CMD = 15
|
||||
|
||||
|
|
@ -196,9 +195,10 @@ CURSOR = '_' ; cursor, ASCII "_"
|
|||
|
||||
MODEM_TYPE_USERPORT = 0
|
||||
MODEM_TYPE_UP9600 = 1
|
||||
MODEM_TYPE_SWIFTLINK_DE = 2
|
||||
MODEM_TYPE_SWIFTLINK_DF = 3
|
||||
MODEM_TYPE_SWIFTLINK_D7 = 4
|
||||
MODEM_TYPE_WIC64 = 2
|
||||
MODEM_TYPE_SWIFTLINK_DE = 3
|
||||
MODEM_TYPE_SWIFTLINK_DF = 4
|
||||
MODEM_TYPE_SWIFTLINK_D7 = 5
|
||||
|
||||
BAUD_300 = 0
|
||||
BAUD_1200 = 1
|
||||
|
|
|
|||
10
src/dir.s
10
src/dir.s
|
|
@ -105,8 +105,6 @@ dir_once_per_line:
|
|||
jsr chrout ; position cursor over last printed line
|
||||
lda #3
|
||||
sta DFLTN ; input from screen
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
ldy #0
|
||||
@loop:
|
||||
; eat all bytes from the modem
|
||||
|
|
@ -120,7 +118,7 @@ dir_once_per_line:
|
|||
jsr disablexfer
|
||||
jsr getin ; input from screen
|
||||
jsr enablexfer
|
||||
jsr chrout ; send to modem
|
||||
jsr modput
|
||||
tya
|
||||
pha
|
||||
lda #21
|
||||
|
|
@ -132,15 +130,13 @@ dir_once_per_line:
|
|||
cpy #27 ; max with (will send extra spaces at the end)
|
||||
bcc @loop
|
||||
lda #CR
|
||||
jsr chrout ; send to modem
|
||||
jsr modput
|
||||
jsr clrchn
|
||||
lda #CR
|
||||
jsr chrout ; screen
|
||||
|
||||
; eat all bytes in the RS232 buffer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkin
|
||||
: jsr getin
|
||||
: jsr modget
|
||||
lda RIDBE
|
||||
cmp RIDBS
|
||||
bne :-
|
||||
|
|
|
|||
|
|
@ -62,13 +62,11 @@ dskout:
|
|||
jsr clear232
|
||||
jsr enablexfer
|
||||
jsr clear232
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
pla
|
||||
ldx ascii_mode
|
||||
beq :+
|
||||
jsr petscii_to_ascii
|
||||
: jsr chrout
|
||||
: jsr modput
|
||||
|
||||
; eat echo from modem
|
||||
; (this timeout failsafe makes sure the byte is received back from modem
|
||||
|
|
|
|||
20
src/init.s
20
src/init.s
|
|
@ -41,7 +41,7 @@ start
|
|||
|
||||
; editor/screen setup
|
||||
lda #1
|
||||
sta BLNSW ; enable cursor blinking
|
||||
sta BLNSW ; disable cursor blinking
|
||||
lda #BCOLOR
|
||||
sta backgr
|
||||
sta border
|
||||
|
|
@ -114,17 +114,13 @@ rsopen:
|
|||
jsr up9600_disable
|
||||
jsr enablemodem
|
||||
jsr clall
|
||||
lda #LFN_MODEM
|
||||
ldx #DEV_MODEM
|
||||
ldy #SA_MODEM
|
||||
jsr setlfs
|
||||
lda aciaemu_filename_len
|
||||
ldx #<aciaemu_filename
|
||||
ldy #>aciaemu_filename
|
||||
jsr setnam
|
||||
jsr open
|
||||
lda #>ribuf ; move rs232 buffers
|
||||
sta RIBUF+1 ; for the userport 300-2400 modem nmi handling
|
||||
|
||||
; jsr $F483 ; XXX maybe necessary for User Port driver
|
||||
|
||||
lda #<ribuf ; move rs232 buffers
|
||||
sta RIBUF ; for the userport 300-2400 modem nmi handling
|
||||
lda #>ribuf
|
||||
sta RIBUF+1
|
||||
jsr disablemodem
|
||||
rts ; [XXX jmp]
|
||||
|
||||
|
|
|
|||
|
|
@ -64,15 +64,12 @@ prtmc0
|
|||
bne @mc2 ; -> don't send
|
||||
|
||||
; send character
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
pla
|
||||
pha
|
||||
ldx ascii_mode
|
||||
beq :+
|
||||
jsr petscii_to_ascii
|
||||
: jsr chrout ; send character to modem
|
||||
jsr clrchn
|
||||
: jsr modput
|
||||
lda #$100-3
|
||||
sta JIFFIES
|
||||
: lda JIFFIES
|
||||
|
|
@ -83,9 +80,7 @@ prtmc0
|
|||
bne :- ; wait 50 msec [XXX combine]
|
||||
|
||||
; get echo
|
||||
ldx #LFN_MODEM
|
||||
jsr chkin
|
||||
jsr getin
|
||||
jsr modget
|
||||
cmp #0
|
||||
bne @mci
|
||||
ldx half_duplex
|
||||
|
|
|
|||
52
src/misc.s
52
src/misc.s
|
|
@ -51,55 +51,3 @@ toggle_cursor: ; [XXX unused]
|
|||
eor #1
|
||||
sta cursor_flag
|
||||
jmp term_mainloop
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; hang up phone
|
||||
hangup:
|
||||
ldx SHFLAG
|
||||
cpx #SHFLAG_CBM
|
||||
bne :+ ; not C= Stop
|
||||
jsr cursor_off
|
||||
lda #<txt_disconnecting
|
||||
ldy #>txt_disconnecting
|
||||
jsr outstr
|
||||
lda modem_type
|
||||
beq droprs ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq dropup
|
||||
jmp dropswift
|
||||
: jmp term_mainloop
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Drop: Userport
|
||||
droprs:
|
||||
lda #%00000100
|
||||
sta $dd03
|
||||
lda #0
|
||||
sta cia2pb
|
||||
ldx #$100-30
|
||||
stx JIFFIES
|
||||
: bit JIFFIES
|
||||
bmi :-
|
||||
lda #4
|
||||
sta cia2pb
|
||||
jmp term_mainloop
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Drop: UP9600
|
||||
dropup lda #%00000100
|
||||
sta cia2ddrb
|
||||
lda #%00000010
|
||||
sta cia2pb
|
||||
ldx #$100-30
|
||||
stx JIFFIES
|
||||
: bit JIFFIES
|
||||
bmi :-
|
||||
lda #%00000010
|
||||
sta cia2ddrb
|
||||
jmp term_mainloop
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Drop: Swiftlink
|
||||
dropswift:
|
||||
jsr sw_dropdtr
|
||||
jmp term_mainloop
|
||||
|
|
|
|||
|
|
@ -110,16 +110,16 @@ mlsgo
|
|||
jsr mlshdr
|
||||
ldy #0
|
||||
mlsgo1 lda inpbuf,y
|
||||
jsr chrout ; modem
|
||||
jsr modput
|
||||
iny
|
||||
cpy max
|
||||
bne mlsgo1
|
||||
lda inpbuf,y
|
||||
jsr chrout ; modem
|
||||
jsr modput
|
||||
lda inpbuf+1,y
|
||||
jsr chrout ; modem
|
||||
jsr modput
|
||||
lda #CR
|
||||
jsr chrout ; modem
|
||||
jsr modput
|
||||
jsr clrchn
|
||||
jsr uplmen ; disk setup
|
||||
ldx SHFLAG
|
||||
|
|
@ -141,11 +141,11 @@ mlss5
|
|||
jsr mlshdr
|
||||
ldx #16
|
||||
lda #4 ; ctrl-d
|
||||
: jsr chrout ; modem
|
||||
: jsr modput
|
||||
dex
|
||||
bne :-
|
||||
lda #CR
|
||||
jsr chrout ; modem
|
||||
jsr modput
|
||||
mlssab jsr clrchn
|
||||
jsr text_color_restore
|
||||
jsr gong
|
||||
|
|
@ -156,11 +156,9 @@ mlssab jsr clrchn
|
|||
mlshdr:
|
||||
jsr clear232
|
||||
jsr enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
ldx #16
|
||||
lda #9 ; ctrl-i
|
||||
: jsr chrout ; modem
|
||||
: jsr modput
|
||||
dex
|
||||
bne :-
|
||||
rts
|
||||
|
|
@ -208,16 +206,14 @@ mlrwat
|
|||
ldx SHFLAG
|
||||
cpx #SHFLAG_CBM
|
||||
beq mulab2
|
||||
ldx #LFN_MODEM
|
||||
jsr chkin
|
||||
jsr getin ; modem
|
||||
jsr modget
|
||||
cmp #9 ; ctrl-i
|
||||
bne mlrwat
|
||||
mlrwt2
|
||||
ldx SHFLAG
|
||||
cpx #SHFLAG_CBM
|
||||
beq mulab2
|
||||
jsr getin ; modem
|
||||
jsr modget
|
||||
cmp #0
|
||||
beq mlrwt2
|
||||
cmp #9 ; ctrl-i
|
||||
|
|
@ -227,9 +223,7 @@ mlrflp
|
|||
ldx SHFLAG
|
||||
cpx #SHFLAG_CBM
|
||||
beq mulab2
|
||||
ldx #LFN_MODEM
|
||||
jsr chkin
|
||||
jsr getin ; modem
|
||||
jsr modget
|
||||
cmp #0
|
||||
beq mlrflp
|
||||
mlrfl1
|
||||
|
|
|
|||
|
|
@ -1189,11 +1189,9 @@ dial:
|
|||
; hayes dial
|
||||
jsr clear232
|
||||
jsr enablemodem
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
lda #<txt_atv1 ; send word result codes (as opposed to numeric)
|
||||
ldy #>txt_atv1
|
||||
jsr outmod
|
||||
jsr strmod_delay
|
||||
lda firmware_zimmers
|
||||
bne @1
|
||||
lda #<txt_atd
|
||||
|
|
@ -1201,7 +1199,7 @@ dial:
|
|||
jmp @2
|
||||
@1: lda #<txt_atd_zimmers
|
||||
ldy #>txt_atd_zimmers
|
||||
@2: jsr outstr
|
||||
@2: jsr strmod
|
||||
ldx #0
|
||||
@loop: stx numptr
|
||||
ldx numptr
|
||||
|
|
@ -1209,12 +1207,11 @@ dial:
|
|||
sta $d800+23*40+7,x
|
||||
ldx numptr
|
||||
lda numbuf,x
|
||||
jsr chrout ; to modem
|
||||
jsr modput
|
||||
ldx numptr
|
||||
inx
|
||||
cmp #CR ; CR-terminated
|
||||
bne @loop
|
||||
jsr clrchn
|
||||
jmp haybus
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
|
|
@ -1249,15 +1246,12 @@ hayes_connected:
|
|||
flush_modem:
|
||||
lda #$100-24
|
||||
sta JIFFIES
|
||||
ldx #LFN_MODEM
|
||||
jsr chkin
|
||||
: jsr getin
|
||||
: jsr modget
|
||||
cmp #CR
|
||||
beq :+
|
||||
lda JIFFIES
|
||||
bne :-
|
||||
: jsr clrchn ; [XXX jmp]
|
||||
rts
|
||||
: rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
hayes_userabort:
|
||||
|
|
@ -1280,9 +1274,21 @@ hayes_redial:
|
|||
jmp dalfin ; back to phbook
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; send string to modem and wait a bit
|
||||
outmod:
|
||||
jsr outstr
|
||||
; send string to modem
|
||||
strmod:
|
||||
sty zpoutstr+1
|
||||
sta zpoutstr
|
||||
ldy #0
|
||||
@loop: lda (zpoutstr),y
|
||||
beq @rts
|
||||
jsr modput
|
||||
iny
|
||||
bne @loop
|
||||
@rts: rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
strmod_delay:
|
||||
jsr strmod
|
||||
lda #$100-32
|
||||
sta JIFFIES
|
||||
: lda JIFFIES
|
||||
|
|
@ -1487,9 +1493,7 @@ hmodget:
|
|||
ldx waittemp ; so it doesn't lock up
|
||||
cpx #144 ; maybe change for various baud rates
|
||||
beq :+
|
||||
ldx #LFN_MODEM
|
||||
jsr chkin
|
||||
jsr getin
|
||||
jsr modget
|
||||
beq hmodget
|
||||
: ldx #0
|
||||
stx waittemp
|
||||
|
|
|
|||
11
src/punter.s
11
src/punter.s
|
|
@ -195,16 +195,14 @@ dorts pha
|
|||
sendcode
|
||||
jsr clear232
|
||||
jsr enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
ldx #0
|
||||
sn1 lda codes,y
|
||||
jsr chrout
|
||||
jsr modput
|
||||
iny
|
||||
inx
|
||||
cpx #$03
|
||||
bne sn1
|
||||
jmp clrchn
|
||||
rts
|
||||
;
|
||||
;do handshaking for reception end
|
||||
;
|
||||
|
|
@ -320,15 +318,12 @@ tx10 lda #':'
|
|||
jsr altbuf
|
||||
jsr clear232
|
||||
jsr enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
ldy #0
|
||||
tx6 lda (pntb),y ;transmit alternate buffer
|
||||
jsr chrout
|
||||
jsr modput
|
||||
iny
|
||||
cpy bufcount
|
||||
bne tx6
|
||||
jsr clrchn
|
||||
lda #0
|
||||
rts
|
||||
;
|
||||
|
|
|
|||
77
src/rs232.s
77
src/rs232.s
|
|
@ -3,16 +3,18 @@
|
|||
; Copyright (c) 2016,2020, Craig Smith, alwyz. All rights reserved.
|
||||
; This project is licensed under the BSD 3-Clause License.
|
||||
;
|
||||
; Generic RS232 Code
|
||||
; RS232 Driver Dispatch
|
||||
;
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; RS232 driver dispatch: enable modem
|
||||
enablemodem
|
||||
; Dispatch: Enable modem
|
||||
enablemodem:
|
||||
lda modem_type
|
||||
beq @2 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @1
|
||||
cmp #MODEM_TYPE_WIC64
|
||||
beq @0
|
||||
cmp #MODEM_TYPE_SWIFTLINK_DE
|
||||
beq @3
|
||||
cmp #MODEM_TYPE_SWIFTLINK_DF
|
||||
|
|
@ -20,6 +22,7 @@ enablemodem
|
|||
cmp #MODEM_TYPE_SWIFTLINK_D7
|
||||
beq @5
|
||||
rts
|
||||
@0: jmp wic64_setup
|
||||
@1: jmp up9600_setup
|
||||
@2: jmp rsuser_setup
|
||||
@3: lda #$de
|
||||
|
|
@ -57,7 +60,7 @@ enablemodem
|
|||
jmp sw_setup
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; RS232 driver dispatch: enable transfer
|
||||
; Dispatch: Enable transfer
|
||||
enablexfer:
|
||||
pha
|
||||
txa
|
||||
|
|
@ -68,15 +71,19 @@ enablexfer:
|
|||
beq @1 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @2
|
||||
cmp #MODEM_TYPE_WIC64
|
||||
beq @3
|
||||
jsr sw_enable
|
||||
jmp xferout
|
||||
@1: jsr rsuser_enable
|
||||
jmp xferout
|
||||
@2: jsr up9600_enable
|
||||
jmp xferout
|
||||
@3: jsr wic64_enable
|
||||
jmp xferout
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; RS232 driver dispatch: disable transfer
|
||||
; Dispatch: Disable transfer
|
||||
disablexfer:
|
||||
disablemodem:
|
||||
pha
|
||||
|
|
@ -88,12 +95,15 @@ disablemodem:
|
|||
beq @2 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @1
|
||||
cmp #MODEM_TYPE_WIC64
|
||||
beq @3
|
||||
jsr sw_disable
|
||||
jmp xferout
|
||||
@1: jsr up9600_disable
|
||||
jmp xferout
|
||||
@2: jsr rsuser_disable
|
||||
jmp xferout ; [XXX redundant]
|
||||
jmp xferout
|
||||
@3: jsr wic64_disable
|
||||
xferout:
|
||||
pla
|
||||
tay
|
||||
|
|
@ -103,13 +113,60 @@ xferout:
|
|||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; RS232 driver dispatch: get byte from modem
|
||||
; Dispatch: Get byte from modem
|
||||
modget:
|
||||
lda modem_type
|
||||
beq @2 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @1
|
||||
jmp sw_getxfer ; swiftlink
|
||||
@1: jmp up9600_getxfer ; up9600
|
||||
@2: jmp rsuser_getxfer ; regular
|
||||
cmp #MODEM_TYPE_WIC64
|
||||
beq @3
|
||||
jsr sw_getxfer ; swiftlink
|
||||
jmp @cont
|
||||
@3: jsr wic64_getxfer ; wic64
|
||||
jmp @cont
|
||||
@1: jsr up9600_getxfer ; up9600
|
||||
jmp @cont
|
||||
@2: jsr $F04F ; XXX necessary for User Port driver
|
||||
jsr rsuser_getxfer ; regular
|
||||
@cont: pha
|
||||
php
|
||||
lda #0
|
||||
rol
|
||||
sta status ; some callers want STATUS set
|
||||
plp ; others want C set on error/no data
|
||||
pla
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Dispatch: Send byte to modem
|
||||
modput:
|
||||
pha
|
||||
lda #0
|
||||
sta status
|
||||
lda modem_type
|
||||
beq @2 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @1
|
||||
cmp #MODEM_TYPE_WIC64
|
||||
beq @3
|
||||
pla
|
||||
jmp sw_putxfer ; swiftlink
|
||||
@3: pla
|
||||
jmp wic64_putxfer ; wic64
|
||||
@1: pla
|
||||
jmp up9600_putxfer ; up9600
|
||||
@2: ;jsr $EFE3 ; XXX maybe necessary for User Port driver
|
||||
pla
|
||||
jmp rsuser_putxfer ; regular
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Dispatch: Hang up
|
||||
dropdtr:
|
||||
lda modem_type
|
||||
jeq rsuser_dropdtr ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
jeq up9600_dropdtr
|
||||
cmp #MODEM_TYPE_WIC64
|
||||
jeq wic64_dropdtr
|
||||
jmp sw_dropdtr
|
||||
|
|
|
|||
|
|
@ -137,16 +137,6 @@ sm18 lda sw_ctrl
|
|||
ora swbaud,x
|
||||
sm19 sta sw_ctrl
|
||||
|
||||
lda #<newout
|
||||
ldx #>newout
|
||||
sta $0326 ; IBSOUT
|
||||
stx $0327
|
||||
|
||||
lda #<newin
|
||||
ldx #>newin
|
||||
sta $032a ; IGETIN
|
||||
stx $032b
|
||||
|
||||
lda #<nmisw
|
||||
ldx #>nmisw
|
||||
sta $0318 ; NMINV
|
||||
|
|
@ -157,16 +147,7 @@ sm19 sta sw_ctrl
|
|||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new BSOUT
|
||||
newout:
|
||||
pha ; dupliciaton of original kernal routines
|
||||
lda DFLTO ; test dfault output device for
|
||||
cmp #2 ; screen, and...
|
||||
beq :+
|
||||
pla ; if so, go back to original rom routines
|
||||
jmp oldout
|
||||
: pla
|
||||
|
||||
sw_putxfer:
|
||||
sta rsotm
|
||||
stx rsotx
|
||||
sty rsoty
|
||||
|
|
@ -185,6 +166,7 @@ sm22 sta sw_cmd
|
|||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Hang up
|
||||
sw_dropdtr:
|
||||
sm23 lda sw_cmd
|
||||
and #%11111110
|
||||
|
|
@ -197,20 +179,6 @@ wait30 bit JIFFIES
|
|||
sm25 sta sw_cmd
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new GETIN
|
||||
newin lda DFLTN
|
||||
cmp #2 ; see if default input is modem
|
||||
beq :+
|
||||
jmp ogetin ; nope, go back to original
|
||||
|
||||
: jsr sw_getxfer
|
||||
bcs :+ ; if no character, then return 0 in a
|
||||
rts
|
||||
: clc
|
||||
lda #0
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; get byte from serial interface
|
||||
sw_getxfer:
|
||||
|
|
|
|||
|
|
@ -83,16 +83,6 @@ up9600_setup:
|
|||
|
||||
jsr setbaudup
|
||||
|
||||
lda #<newoutup
|
||||
ldx #>newoutup
|
||||
sta $0326
|
||||
stx $0327
|
||||
|
||||
lda #<newinup
|
||||
ldx #>newinup
|
||||
sta $032a
|
||||
stx $032b
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; enable serial interface (IRQ+NMI)
|
||||
up9600_enable:
|
||||
|
|
@ -206,21 +196,6 @@ setbaudup:
|
|||
bne @loop
|
||||
@skip: rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new GETIN
|
||||
newinup:
|
||||
lda DFLTN
|
||||
cmp #2 ; see if default input is modem
|
||||
beq :+
|
||||
jmp ogetin ; nope, go back to original
|
||||
|
||||
: jsr up9600_getxfer
|
||||
bcs :+ ; if no character, then return 0 in a
|
||||
rts
|
||||
: clc
|
||||
lda #0
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; get byte from serial interface
|
||||
; refer to this routine only if you wanna use it for
|
||||
|
|
@ -246,16 +221,7 @@ up9600_getxfer:
|
|||
@1 rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new BSOUT
|
||||
newoutup:
|
||||
pha ;dupliciaton of original kernal routines
|
||||
lda DFLTO ;test dfault output device for
|
||||
cmp #2 ;screen, and...
|
||||
beq :+
|
||||
pla ;if so, go back to original rom routines
|
||||
jmp oldout
|
||||
:
|
||||
pla
|
||||
up9600_putxfer:
|
||||
sta rsotm
|
||||
stx rsotx
|
||||
sty rsoty
|
||||
|
|
@ -315,3 +281,18 @@ up9600_disable:
|
|||
sta $0315 ; irq
|
||||
cli
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Hang up
|
||||
up9600_dropdtr:
|
||||
lda #%00000100
|
||||
sta cia2ddrb
|
||||
lda #%00000010
|
||||
sta cia2pb
|
||||
ldx #$100-30
|
||||
stx JIFFIES
|
||||
: bit JIFFIES
|
||||
bmi :-
|
||||
lda #%00000010
|
||||
sta cia2ddrb
|
||||
rts
|
||||
|
|
|
|||
|
|
@ -33,16 +33,6 @@ rsuser_setup:
|
|||
sta $0318 ; NMINV
|
||||
sty $0319
|
||||
|
||||
lda #<rsout
|
||||
ldx #>rsout
|
||||
sta $0326 ; IBSOUT
|
||||
stx $0327
|
||||
|
||||
lda #<rsget
|
||||
ldx #>rsget
|
||||
sta $032a ; IGETIN
|
||||
stx $032b
|
||||
|
||||
cli
|
||||
|
||||
jmp clear232
|
||||
|
|
@ -63,21 +53,6 @@ isbyte:
|
|||
lastring: ; [XXX unused]
|
||||
.byte 0
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new GETIN
|
||||
rsget:
|
||||
lda DFLTN
|
||||
cmp #2 ; see if default input is modem
|
||||
beq jbgetrs
|
||||
jmp ogetin ; nope, go back to original
|
||||
|
||||
jbgetrs jsr rsuser_getxfer
|
||||
bcs :+ ; if no character, then return 0 in a
|
||||
rts
|
||||
: clc
|
||||
lda #0
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; get byte from serial interface
|
||||
rsuser_getxfer:
|
||||
|
|
@ -199,12 +174,7 @@ endbyte lda #0
|
|||
jmp rsuser_disable
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new BSOUT
|
||||
rsout pha
|
||||
lda DFLTO
|
||||
cmp #2
|
||||
bne notmod
|
||||
pla
|
||||
rsuser_putxfer:
|
||||
sta rsotm
|
||||
stx rsotx
|
||||
sty rsoty
|
||||
|
|
@ -242,8 +212,6 @@ ret1 clc
|
|||
ldy rsoty
|
||||
lda rsotm
|
||||
rts
|
||||
notmod pla
|
||||
jmp oldout
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; disable rs232 input
|
||||
|
|
@ -298,3 +266,18 @@ rsuser_setbaud:
|
|||
lda bdloc+13,y
|
||||
sta fullhi
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Hang up
|
||||
rsuser_dropdtr:
|
||||
lda #%00000100
|
||||
sta $dd03
|
||||
lda #0
|
||||
sta cia2pb
|
||||
ldx #$100-30
|
||||
stx JIFFIES
|
||||
: bit JIFFIES
|
||||
bmi :-
|
||||
lda #4
|
||||
sta cia2pb
|
||||
rts
|
||||
|
|
|
|||
|
|
@ -17,6 +17,20 @@ term_entry:
|
|||
jsr print_banner; title screen/CCGMS!
|
||||
jsr print_instr ; display commands f1 etc to terminal ready
|
||||
|
||||
jsr wic64_connect
|
||||
|
||||
;:
|
||||
; ldx #0
|
||||
;@1: dex
|
||||
; bne @1
|
||||
|
||||
; jsr wic64_getxfer
|
||||
; jsr $ffd2
|
||||
; jsr $ffe4
|
||||
; beq :-
|
||||
; jsr wic64_send
|
||||
; jmp :-
|
||||
|
||||
; enter here to just return into terminal mode
|
||||
term_mainloop:
|
||||
lda supercpu
|
||||
|
|
@ -114,7 +128,15 @@ term_mainloop:
|
|||
; shift-stop: hang up
|
||||
cmp #$83
|
||||
bne @no4
|
||||
jmp hangup
|
||||
ldx SHFLAG
|
||||
cpx #SHFLAG_CBM
|
||||
bne :+ ; not C= Stop
|
||||
jsr cursor_off
|
||||
lda #<txt_disconnecting
|
||||
ldy #>txt_disconnecting
|
||||
jsr outstr
|
||||
jsr dropdtr
|
||||
: jmp term_mainloop
|
||||
@no4:
|
||||
|
||||
; f1..f8: functions
|
||||
|
|
@ -171,11 +193,7 @@ term_mainloop:
|
|||
:
|
||||
|
||||
; send to modem
|
||||
pha
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
pla
|
||||
jsr chrout
|
||||
jsr modput
|
||||
|
||||
; convert back to PETSCII
|
||||
ldx ascii_mode
|
||||
|
|
@ -229,16 +247,11 @@ term_mainloop:
|
|||
:
|
||||
|
||||
; modem input
|
||||
ldx #LFN_MODEM
|
||||
jsr chkin ; get the byte from the modem
|
||||
jsr getin
|
||||
@xxxx: jsr modget
|
||||
cmp #0
|
||||
beq @loop2b ; = @loop2
|
||||
ldx status
|
||||
bne @loop2b ; = @loop2
|
||||
pha
|
||||
jsr clrchn
|
||||
pla
|
||||
|
||||
; ASCII conversion
|
||||
ldx ascii_mode
|
||||
|
|
|
|||
293
src/wic64.s
Normal file
293
src/wic64.s
Normal file
|
|
@ -0,0 +1,293 @@
|
|||
;
|
||||
; C64 to NODEMCU V1 - Simple Telnet Demo
|
||||
;
|
||||
; This part of WiC64 was written 2020-2022 by KiWi
|
||||
;
|
||||
; 2-clause BSD
|
||||
|
||||
zp=$40
|
||||
|
||||
wic64_connect:
|
||||
lda #0
|
||||
sta bytes_in_buffer
|
||||
sta bytes_in_buffer+1
|
||||
|
||||
lda #<commandserver
|
||||
sta zp
|
||||
lda #>commandserver
|
||||
sta zp+1
|
||||
jsr fixsting
|
||||
jsr sendcommand
|
||||
|
||||
jsr read_status
|
||||
bcs BADBADBAD ; Could not connect
|
||||
rts
|
||||
|
||||
BADBADBAD:
|
||||
inc $d021
|
||||
jmp BADBADBAD
|
||||
|
||||
wic64_send:
|
||||
sta commandputbyte+4
|
||||
lda #<commandputbyte
|
||||
sta zp
|
||||
lda #>commandputbyte
|
||||
sta zp+1
|
||||
jsr sendcommand
|
||||
jsr read_status
|
||||
bcs BADBADBAD
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
fixsting:
|
||||
ldy #4
|
||||
countstring:
|
||||
iny
|
||||
lda (zp),y
|
||||
bne countstring
|
||||
tya
|
||||
ldy #1
|
||||
sta (zp),y
|
||||
rts
|
||||
|
||||
txt_sendcmd:
|
||||
.byte "CMD: ",0
|
||||
txt_length:
|
||||
.byte "LEN: ",0
|
||||
txt_bufferx:
|
||||
.byte "BUF: ",0
|
||||
txt_char:
|
||||
.byte "CHR: ",0
|
||||
|
||||
sendcommand:
|
||||
; lda #<txt_sendcmd
|
||||
; ldy #>txt_sendcmd
|
||||
; jsr $ab1e
|
||||
; ldy #3
|
||||
; lda (zp),y
|
||||
; tax
|
||||
; lda #0
|
||||
; jsr $bdcd
|
||||
; lda #CR
|
||||
; jsr $ffd2
|
||||
|
||||
lda $dd02
|
||||
ora #$04
|
||||
sta $dd02 ; Datenrichtung Port A PA2 auf Ausgang
|
||||
lda #$ff ; Datenrichtung Port B Ausgang
|
||||
sta $dd03
|
||||
lda $dd00
|
||||
ora #$04 ; PA2 auf HIGH = ESP im Empfangsmodus
|
||||
sta $dd00
|
||||
|
||||
ldy #$01
|
||||
lda (zp),y ; Länge des Kommandos holen
|
||||
sec
|
||||
sbc #$01
|
||||
sta stringexit ; Als Exit speichern
|
||||
|
||||
ldy #$ff
|
||||
string_next:
|
||||
iny
|
||||
lda (zp),y
|
||||
jsr write_byte
|
||||
stringexit=*+1
|
||||
cpy #$00 ; Selbstmodifizierender Code - Hier wird die länge des Kommandos eingetragen -> Siehe Ende von send_string
|
||||
bne string_next
|
||||
rts
|
||||
|
||||
getanswer_data:
|
||||
lda #$00 ; Datenrichtung Port B Eingang
|
||||
sta $dd03
|
||||
lda $dd00
|
||||
and #$ff-4 ; PA2 auf LOW = ESP im Sendemodus
|
||||
sta $dd00
|
||||
jsr read_byte ; dummy byte
|
||||
jsr read_byte ; data size HI
|
||||
sta bytes_in_buffer+1
|
||||
sta $0401
|
||||
jsr read_byte ; data size LO
|
||||
sta bytes_in_buffer
|
||||
sta $0400
|
||||
|
||||
lda #<txt_length
|
||||
; ldy #>txt_length
|
||||
; jsr $ab1e
|
||||
; lda bytes_in_buffer+1
|
||||
; ldx bytes_in_buffer
|
||||
; jsr $bdcd
|
||||
; lda #CR
|
||||
; jsr $ffd2
|
||||
|
||||
;: inc $d020
|
||||
; jmp :-
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
read_status:
|
||||
lda #$00
|
||||
sta $dd03
|
||||
lda $dd00
|
||||
and #251
|
||||
sta $dd00
|
||||
jsr read_byte ; dummy
|
||||
jsr read_byte ; data size HI
|
||||
jsr read_byte ; data size LO
|
||||
pha
|
||||
jsr read_byte ; '0' or '!'
|
||||
pla
|
||||
cmp #1
|
||||
bne :+
|
||||
clc ; ok
|
||||
rts
|
||||
: jsr read_byte ; 'E'
|
||||
sec ; error
|
||||
rts
|
||||
|
||||
|
||||
|
||||
write_byte:
|
||||
sta $dd01 ; Bit 0..7: Userport Daten PB 0-7 schreiben
|
||||
: lda $dd0d
|
||||
and #$10 ; Warten auf NMI FLAG2 = Byte wurde gelesen vom ESP
|
||||
beq :-
|
||||
rts
|
||||
|
||||
read_byte:
|
||||
lda $dd0d
|
||||
and #$10 ; Warten auf NMI FLAG2 = Byte wurde gelesen vom ESP
|
||||
beq read_byte
|
||||
lda $dd01
|
||||
rts
|
||||
|
||||
commandget:
|
||||
.byte 'W',$04,$00,34
|
||||
commandputbyte:
|
||||
.byte 'W',$05,$00,35,$00
|
||||
commandserver:
|
||||
.byte 'W',$00,$00,33
|
||||
; .byte "192.168.177.171:25232",0
|
||||
.byte "raveolution.hopto.org:64128",0
|
||||
|
||||
|
||||
wic64_getxfer:
|
||||
php
|
||||
sei
|
||||
stx @save_x
|
||||
sty @save_y
|
||||
|
||||
lda #0
|
||||
sta status
|
||||
|
||||
; lda #<txt_bufferx
|
||||
; ldy #>txt_bufferx
|
||||
; jsr $ab1e
|
||||
; lda bytes_in_buffer+1
|
||||
; ldx bytes_in_buffer
|
||||
; jsr $bdcd
|
||||
; lda #CR
|
||||
; jsr $ffd2
|
||||
|
||||
lda bytes_in_buffer
|
||||
ora bytes_in_buffer+1
|
||||
bne @skip_command
|
||||
|
||||
lda #<commandget
|
||||
sta zp
|
||||
lda #>commandget
|
||||
sta zp+1
|
||||
jsr sendcommand
|
||||
inc $d020
|
||||
jsr getanswer_data
|
||||
cmp #2
|
||||
jeq BADBADBAD
|
||||
|
||||
lda bytes_in_buffer
|
||||
ora bytes_in_buffer+1
|
||||
bne @skip_command
|
||||
|
||||
lda #0 ; no data
|
||||
beq @end
|
||||
|
||||
@skip_command:
|
||||
lda bytes_in_buffer
|
||||
bne :+
|
||||
dec bytes_in_buffer+1
|
||||
: dec bytes_in_buffer
|
||||
jsr read_byte
|
||||
|
||||
; pha
|
||||
; lda #<txt_char
|
||||
; ldy #>txt_char
|
||||
; jsr $ab1e
|
||||
; pla
|
||||
; pha
|
||||
; tax
|
||||
; lda #0
|
||||
; jsr $bdcd
|
||||
; pla
|
||||
|
||||
@end:
|
||||
@save_x=*+1
|
||||
ldx #$ff
|
||||
@save_y=*+1
|
||||
ldy #$ff
|
||||
plp
|
||||
rts
|
||||
|
||||
wic64_setup:
|
||||
lda #<wic64_outup
|
||||
ldx #>wic64_outup
|
||||
sta $0326
|
||||
stx $0327
|
||||
lda #<wic64_inup
|
||||
ldx #>wic64_inup
|
||||
sta $032a
|
||||
stx $032b
|
||||
wic64_enable:
|
||||
rts
|
||||
|
||||
wic64_disable:
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new BSOUT
|
||||
wic64_outup:
|
||||
pha ;dupliciaton of original kernal routines
|
||||
lda DFLTO ;test dfault output device for
|
||||
cmp #2 ;screen, and...
|
||||
beq :+
|
||||
pla ;if so, go back to original rom routines
|
||||
jmp oldout
|
||||
:
|
||||
|
||||
rts
|
||||
|
||||
wic64_putxfer:
|
||||
rts
|
||||
wic64_dropdtr:
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new GETIN
|
||||
wic64_inup:
|
||||
lda DFLTN
|
||||
cmp #2 ; see if default input is modem
|
||||
beq :+
|
||||
jmp ogetin ; nope, go back to original
|
||||
|
||||
:
|
||||
; inc $d021
|
||||
jsr wic64_getxfer
|
||||
clc
|
||||
rts
|
||||
|
||||
bytes_in_buffer:
|
||||
.word 0
|
||||
|
|
@ -489,10 +489,6 @@ send:
|
|||
tay
|
||||
jsr setlfs
|
||||
jsr open
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout ; [XXX unused because of commented out lines below]
|
||||
;lda #15
|
||||
;jsr chrout
|
||||
jsr dskout
|
||||
lda #LFN_FILE
|
||||
jsr close
|
||||
|
|
|
|||
33
src/xmodem.s
33
src/xmodem.s
|
|
@ -41,7 +41,6 @@ xmobuf = $fd ; zero page pointer to access the buffer
|
|||
; uses the following KERNAL calls:
|
||||
; chkin
|
||||
; chkout
|
||||
; chrout
|
||||
; close
|
||||
; clrchn
|
||||
; getin
|
||||
|
|
@ -179,8 +178,6 @@ xmodem_send:
|
|||
@send_again:
|
||||
jsr clear_buffers
|
||||
jsr enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
|
||||
; send block header
|
||||
lda #SOH
|
||||
|
|
@ -188,18 +185,18 @@ xmodem_send:
|
|||
cpx #PROTOCOL_XMODEM_1K
|
||||
bne :+
|
||||
lda #STX_
|
||||
: jsr chrout ; 0: SOH/STX (128/1K)
|
||||
: jsr modput ; 0: SOH/STX (128/1K)
|
||||
lda xmoblk
|
||||
jsr chrout ; 1: block index
|
||||
jsr modput ; 1: block index
|
||||
eor #$ff
|
||||
jsr chrout ; 2: block index ^ $FF
|
||||
jsr modput ; 2: block index ^ $FF
|
||||
|
||||
jsr setup_buffer
|
||||
|
||||
ldx pagectr
|
||||
ldy #0
|
||||
: lda (xmobuf),y
|
||||
jsr chrout
|
||||
jsr modput
|
||||
iny
|
||||
cpy firstpagebytes
|
||||
bne :-
|
||||
|
|
@ -213,13 +210,13 @@ xmodem_send:
|
|||
|
||||
; send CRC
|
||||
lda crcz+1
|
||||
jsr chrout
|
||||
jsr modput
|
||||
lda crcz
|
||||
jmp @send_crc_cont
|
||||
@ncrc:
|
||||
lda xmochk
|
||||
@send_crc_cont:
|
||||
jsr chrout
|
||||
jsr modput
|
||||
|
||||
jsr clrchn
|
||||
jsr clear_input_buffer
|
||||
|
|
@ -258,10 +255,8 @@ xmodem_send:
|
|||
; send EOT
|
||||
@sne1:
|
||||
jsr enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
lda #EOT
|
||||
jsr chrout ; send EOT
|
||||
jsr modput ; send EOT
|
||||
lda #3 ; timeout
|
||||
jsr modem_get
|
||||
bne :+
|
||||
|
|
@ -452,7 +447,7 @@ xmcmab lda #STAT_USER_ABORTED
|
|||
ldx xmostk
|
||||
txs
|
||||
|
||||
: jsr clear_buffers
|
||||
jsr clear_buffers
|
||||
|
||||
lda xmstat
|
||||
cmp #STAT_SYNC_LOST
|
||||
|
|
@ -460,12 +455,10 @@ xmcmab lda #STAT_USER_ABORTED
|
|||
|
||||
; send CAN if STAT_SYNC_LOST and STAT_USER_ABORTED
|
||||
jsr _enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
|
||||
ldy #8
|
||||
lda #CAN
|
||||
: jsr chrout
|
||||
: jsr modput
|
||||
dey
|
||||
bpl :- ; 9x CAN
|
||||
|
||||
|
|
@ -511,12 +504,10 @@ xmodem_receive:
|
|||
@retry2:
|
||||
jsr clear232
|
||||
jsr enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
|
||||
@receive_nak_code = *+1
|
||||
lda #NAK
|
||||
jsr chrout
|
||||
jsr modput
|
||||
jsr clrchn
|
||||
|
||||
; block loop
|
||||
|
|
@ -661,10 +652,8 @@ xmodem_receive:
|
|||
|
||||
; send ACK
|
||||
jsr enablexfer
|
||||
ldx #LFN_MODEM
|
||||
jsr chkout
|
||||
lda #ACK
|
||||
jsr chrout
|
||||
jsr modput
|
||||
jsr clrchn
|
||||
|
||||
lda #0
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ int
|
|||
main(int argc, char **argv) {
|
||||
while (!feof(stdin)) {
|
||||
int c = _inbyte(0);
|
||||
|
||||
_outbyte(c);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue