Compare commits
38 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcdcbc4870 | ||
|
|
82b019a701 | ||
|
|
db7b3e9cb4 | ||
|
|
24b2f6a403 | ||
|
|
b254c5389b | ||
|
|
bcd24dbe70 | ||
|
|
dc542670ee | ||
|
|
2b2dcc271b | ||
|
|
a6f0632c86 | ||
|
|
5f46a419dc | ||
|
|
b2d80657ea | ||
|
|
362b0637ee | ||
|
|
b90771f77e | ||
|
|
f1aa6d2cee | ||
|
|
828fa4988a | ||
|
|
8d3b6d0b61 | ||
|
|
338612c919 | ||
|
|
d5bfa7728d | ||
|
|
58c7d0e30b | ||
|
|
c8d3a30266 | ||
|
|
e50a609915 | ||
|
|
578cfb2811 | ||
|
|
1d9785c718 | ||
|
|
916061437b | ||
|
|
ad6285f6ee | ||
|
|
d7e388f061 | ||
|
|
5da15f9a84 | ||
|
|
ba5977510e | ||
|
|
f865018664 | ||
|
|
9c890aec42 | ||
|
|
7860d13eea | ||
|
|
ddd13d7482 | ||
|
|
b482578d6f | ||
|
|
b89805bd96 | ||
|
|
5e4673b914 | ||
|
|
e60ccda70d | ||
|
|
e767b88fa8 | ||
|
|
fb9beb6958 |
23 changed files with 506 additions and 352 deletions
2
Makefile
2
Makefile
|
|
@ -11,7 +11,7 @@ run: all
|
|||
x64sc +cart -acia1 -acia1base 0xDE00 -acia1irq 1 -acia1mode 1 -myaciadev 0 -rsdev1 localhost:25232 -rsdev1baud 9600 build/disk.d64
|
||||
|
||||
usb: all
|
||||
cp build/ccgmsterm.prg /Volumes/C64/; diskutil unmountDisk force /Volumes/C64
|
||||
cp build/ccgmsterm.prg /Volumes/C64/ && diskutil unmountDisk force /Volumes/C64
|
||||
|
||||
clean:
|
||||
rm -rf build
|
||||
|
|
|
|||
|
|
@ -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,10 @@ 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_WIC64
|
||||
; .byte MODEM_TYPE_SWIFTLINK_DE
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Phone book
|
||||
|
|
@ -87,7 +90,7 @@ macmm4:
|
|||
;----------------------------------------------------------------------
|
||||
; file transmission protocol
|
||||
protoc:
|
||||
.byte PROTOCOL_PUNTER
|
||||
.byte PROTOCOL_XMODEM
|
||||
|
||||
; current theme; see theme.s
|
||||
theme:
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ half_duplex = $12
|
|||
zpoutstr = $22 ; 2 bytes
|
||||
sndtim = $24 ; 2 bytes, UP9600
|
||||
rcvtim = $26 ; 2 bytes, UP9600
|
||||
zpcmd = $26 ; 2 bytes, WiC64
|
||||
tmp9e = $9e
|
||||
tmp9f = $9f
|
||||
inbits = $a8
|
||||
|
|
@ -161,7 +162,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
|
||||
|
||||
|
|
@ -206,9 +206,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
|
||||
|
|
|
|||
14
src/dir.s
14
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,17 +130,15 @@ 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
|
||||
lda rtail
|
||||
cmp rhead ; [XXX isn't this what clear232 does?]
|
||||
: jsr modget
|
||||
lda RIDBE
|
||||
cmp RIDBS ; [XXX isn't this what clear232 does?]
|
||||
bne :-
|
||||
|
||||
@skip:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
22
src/init.s
22
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]
|
||||
|
||||
|
|
@ -153,7 +149,7 @@ init
|
|||
;sta allcap ; upper/lower
|
||||
sta buffer_open
|
||||
sta half_duplex ; full duplex
|
||||
jsr $e544 ; clear screen
|
||||
; jsr $e544 ; clear screen
|
||||
lda config_file_loaded; already loaded config file?
|
||||
bne @noload
|
||||
lda drive_present
|
||||
|
|
|
|||
|
|
@ -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
|
||||
;
|
||||
|
|
|
|||
149
src/rs232.s
149
src/rs232.s
|
|
@ -3,80 +3,72 @@
|
|||
; 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:
|
||||
ldx #MODEM_TYPE_SWIFTLINK_DE
|
||||
lda modem_type
|
||||
beq @2 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @1
|
||||
cmp #MODEM_TYPE_SWIFTLINK_DE
|
||||
beq @3
|
||||
cmp #MODEM_TYPE_SWIFTLINK_DF
|
||||
beq @4
|
||||
cmp #MODEM_TYPE_SWIFTLINK_D7
|
||||
beq @5
|
||||
rts
|
||||
@1: jmp up9600_setup
|
||||
@2: jmp rsuser_setup
|
||||
@3: lda #$de
|
||||
jmp @6
|
||||
@4: lda #$df
|
||||
jmp @6
|
||||
@5: lda #$d7
|
||||
; set Swiftlink address by modifying all access code
|
||||
; [XXX this should be moved to the Swiftlink code]
|
||||
@6: sta sm1+2
|
||||
sta sm2+2
|
||||
sta sm3+2
|
||||
sta sm4+2
|
||||
sta sm5+2
|
||||
sta sm6+2
|
||||
sta sm7+2
|
||||
sta sm8+2
|
||||
sta sm9+2
|
||||
sta sm10+2
|
||||
sta sm11+2
|
||||
sta sm12+2
|
||||
sta sm13+2
|
||||
sta sm14+2
|
||||
sta sm15+2
|
||||
sta sm16+2
|
||||
sta sm17+2
|
||||
sta sm18+2
|
||||
sta sm19+2
|
||||
sta sm20+2
|
||||
sta sm21+2
|
||||
sta sm22+2
|
||||
sta sm23+2
|
||||
sta sm24+2
|
||||
sta sm25+2
|
||||
jmp sw_setup
|
||||
bcc :+
|
||||
txa
|
||||
: asl
|
||||
tax
|
||||
lda modem_drivers,x
|
||||
sta tmp02
|
||||
lda modem_drivers+1,x
|
||||
sta tmp02+1
|
||||
ldx #1
|
||||
ldy #0
|
||||
: lda (tmp02),y
|
||||
sta rs232_funcs,x
|
||||
iny
|
||||
inx
|
||||
lda (tmp02),y
|
||||
sta rs232_funcs,x
|
||||
iny
|
||||
inx
|
||||
inx
|
||||
cpy #2*6
|
||||
bne :-
|
||||
|
||||
rs232_funcs:
|
||||
; setup
|
||||
jmp $ffff
|
||||
func_enable:
|
||||
jmp $ffff
|
||||
func_disable:
|
||||
jmp $ffff
|
||||
func_getxfer:
|
||||
jmp $ffff
|
||||
func_putxfer:
|
||||
jmp $ffff
|
||||
func_dropdtr:
|
||||
jmp $ffff
|
||||
|
||||
.res 6*2
|
||||
|
||||
modem_drivers:
|
||||
.word rsuser_funcs ; MODEM_TYPE_USERPORT
|
||||
.word up9600_funcs ; MODEM_TYPE_UP9600
|
||||
.word wic64_funcs ; MODEM_TYPE_WIC64
|
||||
.word sw_funcs ; MODEM_TYPE_SWIFTLINK_DE, ...
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; RS232 driver dispatch: enable transfer
|
||||
; Dispatch: Enable transfer
|
||||
enablexfer:
|
||||
pha
|
||||
txa
|
||||
pha
|
||||
tya
|
||||
pha
|
||||
lda modem_type
|
||||
beq @1 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @2
|
||||
jsr sw_enable
|
||||
jmp xferout
|
||||
@1: jsr rsuser_enable
|
||||
jmp xferout
|
||||
@2: jsr up9600_enable
|
||||
jsr func_enable
|
||||
jmp xferout
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; RS232 driver dispatch: disable transfer
|
||||
; Dispatch: Disable transfer
|
||||
disablexfer:
|
||||
disablemodem:
|
||||
pha
|
||||
|
|
@ -84,16 +76,7 @@ disablemodem:
|
|||
pha
|
||||
tya
|
||||
pha
|
||||
lda modem_type
|
||||
beq @2 ; MODEM_TYPE_USERPORT
|
||||
cmp #MODEM_TYPE_UP9600
|
||||
beq @1
|
||||
jsr sw_disable
|
||||
jmp xferout
|
||||
@1: jsr up9600_disable
|
||||
jmp xferout
|
||||
@2: jsr rsuser_disable
|
||||
jmp xferout ; [XXX redundant]
|
||||
jsr func_disable
|
||||
xferout:
|
||||
pla
|
||||
tay
|
||||
|
|
@ -103,13 +86,27 @@ 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
|
||||
jsr func_getxfer
|
||||
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
|
||||
pla
|
||||
jmp func_putxfer
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Dispatch: Hang up
|
||||
dropdtr = func_dropdtr
|
||||
|
|
|
|||
|
|
@ -25,6 +25,15 @@ sw_cmd = swift+2
|
|||
sw_ctrl = swift+3
|
||||
sw_baud = swift+7
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
sw_funcs:
|
||||
.word sw_setup
|
||||
.word sw_enable
|
||||
.word sw_disable
|
||||
.word sw_getxfer
|
||||
.word sw_putxfer
|
||||
.word sw_dropdtr
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new NMI handler
|
||||
nmisw:
|
||||
|
|
@ -101,6 +110,43 @@ sm15 sta sw_cmd
|
|||
|
||||
;----------------------------------------------------------------------
|
||||
sw_setup:
|
||||
; set SwiftLink address by modifying all access code
|
||||
lda modem_type
|
||||
cmp #MODEM_TYPE_SWIFTLINK_DE
|
||||
beq @de
|
||||
cmp #MODEM_TYPE_SWIFTLINK_DF
|
||||
beq @df
|
||||
lda #$d7 ; else MODEM_TYPE_SWIFTLINK_D7
|
||||
bne @cont
|
||||
@de: lda #$de
|
||||
bne @cont
|
||||
@df: lda #$df
|
||||
@cont: sta sm1+2
|
||||
sta sm2+2
|
||||
sta sm3+2
|
||||
sta sm4+2
|
||||
sta sm5+2
|
||||
sta sm6+2
|
||||
sta sm7+2
|
||||
sta sm8+2
|
||||
sta sm9+2
|
||||
sta sm10+2
|
||||
sta sm11+2
|
||||
sta sm12+2
|
||||
sta sm13+2
|
||||
sta sm14+2
|
||||
sta sm15+2
|
||||
sta sm16+2
|
||||
sta sm17+2
|
||||
sta sm18+2
|
||||
sta sm19+2
|
||||
sta sm20+2
|
||||
sta sm21+2
|
||||
sta sm22+2
|
||||
sta sm23+2
|
||||
sta sm24+2
|
||||
sta sm25+2
|
||||
|
||||
sei
|
||||
; .------------------------- parity control,
|
||||
; :.------------------------ bits 5-7
|
||||
|
|
@ -137,16 +183,6 @@ sm18 lda sw_ctrl
|
|||
ora swbaud,x
|
||||
sm19 sta sw_ctrl
|
||||
|
||||
lda #<swiftlink_bsout
|
||||
ldx #>swiftlink_bsout
|
||||
sta $0326 ; IBSOUT
|
||||
stx $0327
|
||||
|
||||
lda #<swiftlink_getin
|
||||
ldx #>swiftlink_getin
|
||||
sta $032a ; IGETIN
|
||||
stx $032b
|
||||
|
||||
lda #<nmisw
|
||||
ldx #>nmisw
|
||||
sta $0318 ; NMINV
|
||||
|
|
@ -157,16 +193,7 @@ sm19 sta sw_ctrl
|
|||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new BSOUT
|
||||
swiftlink_bsout:
|
||||
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 +212,7 @@ sm22 sta sw_cmd
|
|||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; Hang up
|
||||
sw_dropdtr:
|
||||
sm23 lda sw_cmd
|
||||
and #%11111110
|
||||
|
|
@ -197,20 +225,6 @@ sm24 sta sw_cmd
|
|||
sm25 sta sw_cmd
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new GETIN
|
||||
swiftlink_getin:
|
||||
lda DFLTN
|
||||
cmp #2 ; see if default input is modem
|
||||
jne 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:
|
||||
|
|
|
|||
|
|
@ -17,6 +17,15 @@
|
|||
RTS_MIN = 50 ; enable Request To Send when buffer reaches this
|
||||
RTS_MAX = 200 ; disable Request To Send when buffer reaches this
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
up9600_funcs:
|
||||
.word up9600_setup
|
||||
.word up9600_enable
|
||||
.word up9600_disable
|
||||
.word up9600_getxfer
|
||||
.word up9600_putxfer
|
||||
.word up9600_dropdtr
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
up9600_nmi:
|
||||
bit $dd0d ; check bit 7 (startbit ?)
|
||||
|
|
@ -84,16 +93,6 @@ up9600_setup:
|
|||
|
||||
jsr setbaudup
|
||||
|
||||
lda #<up9600_bsout
|
||||
ldx #>up9600_bsout
|
||||
sta $0326
|
||||
stx $0327
|
||||
|
||||
lda #<up9600_getin
|
||||
ldx #>up9600_getin
|
||||
sta $032a
|
||||
stx $032b
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; enable serial interface (IRQ+NMI)
|
||||
up9600_enable:
|
||||
|
|
@ -216,24 +215,8 @@ setbaudup:
|
|||
sta rcvtim
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new GETIN
|
||||
up9600_getin:
|
||||
lda DFLTN
|
||||
cmp #2 ; see if default input is modem
|
||||
jne 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
|
||||
; protocols (xmodem, punter etc)
|
||||
up9600_getxfer:
|
||||
ldx rhead
|
||||
cpx rtail
|
||||
|
|
@ -255,16 +238,7 @@ up9600_getxfer:
|
|||
@skip: rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new BSOUT
|
||||
up9600_bsout:
|
||||
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
|
||||
|
|
@ -324,3 +298,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
|
||||
|
|
|
|||
|
|
@ -13,6 +13,15 @@
|
|||
; rsuser_disable
|
||||
; rsuser_getxfer
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
rsuser_funcs:
|
||||
.word rsuser_setup
|
||||
.word rsuser_enable
|
||||
.word rsuser_disable
|
||||
.word rsuser_getxfer
|
||||
.word rsuser_putxfer
|
||||
.word rsuser_dropdtr
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
rsuser_setup:
|
||||
sei
|
||||
|
|
@ -24,16 +33,6 @@ rsuser_setup:
|
|||
sta $0318 ; NMINV
|
||||
sty $0319
|
||||
|
||||
lda #<rsuser_bsout
|
||||
ldx #>rsuser_bsout
|
||||
sta $0326 ; IBSOUT
|
||||
stx $0327
|
||||
|
||||
lda #<rsuser_getin
|
||||
ldx #>rsuser_getin
|
||||
sta $032a ; IGETIN
|
||||
stx $032b
|
||||
|
||||
cli
|
||||
|
||||
jmp clear232
|
||||
|
|
@ -54,23 +53,10 @@ isbyte:
|
|||
lastring: ; [XXX unused]
|
||||
.byte 0
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new GETIN
|
||||
rsuser_getin:
|
||||
lda DFLTN
|
||||
cmp #2 ; see if default input is modem
|
||||
jne ogetin ; nope, go back to original
|
||||
|
||||
jsr rsuser_getxfer
|
||||
bcs :+ ; if no character, then return 0 in a
|
||||
rts
|
||||
: clc
|
||||
lda #0
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; get byte from serial interface
|
||||
rsuser_getxfer:
|
||||
jsr $F04F ; XXX necessary for User Port driver
|
||||
ldx rhead
|
||||
cpx rtail
|
||||
beq :+ ; skip (empty buffer, return with carry set)
|
||||
|
|
@ -189,13 +175,10 @@ endbyte lda #0
|
|||
jmp rsuser_disable
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; new BSOUT
|
||||
rsuser_bsout:
|
||||
pha
|
||||
lda DFLTO
|
||||
cmp #2
|
||||
bne notmod
|
||||
pla
|
||||
rsuser_putxfer:
|
||||
; pha
|
||||
; jsr $EFE3 ; XXX maybe necessary for User Port driver
|
||||
; pla
|
||||
sta rsotm
|
||||
stx rsotx
|
||||
sty rsoty
|
||||
|
|
@ -233,8 +216,6 @@ ret1 clc
|
|||
ldy rsoty
|
||||
lda rsotm
|
||||
rts
|
||||
notmod pla
|
||||
jmp oldout
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; disable rs232 input
|
||||
|
|
@ -290,3 +271,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
|
||||
|
|
|
|||
|
|
@ -114,7 +114,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 +179,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 +233,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
|
||||
|
|
|
|||
242
src/wic64.s
Normal file
242
src/wic64.s
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
; CCGMS Terminal
|
||||
;
|
||||
; Copyright (c) 2022, Michael Steil. All rights reserved.
|
||||
; This project is licensed under the BSD 2-Clause License.
|
||||
;
|
||||
; WiC64 Driver
|
||||
; based on "Simple Telnet Demo" source by KiWi, 2-clause BSD
|
||||
;
|
||||
|
||||
BYTES_PER_TCP_GET = 128 ; max 255
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
wic64_funcs:
|
||||
.word wic64_setup
|
||||
.word wic64_enable
|
||||
.word wic64_disable
|
||||
.word wic64_getxfer
|
||||
.word wic64_putxfer
|
||||
.word wic64_dropdtr
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
wic64_setup:
|
||||
lda once
|
||||
beq :+
|
||||
rts
|
||||
: inc once
|
||||
|
||||
lda #0
|
||||
sta rhead
|
||||
sta rtail
|
||||
|
||||
; set DDR PA2 to output (data direction indicator for device)
|
||||
lda $dd02
|
||||
ora #$04
|
||||
sta $dd02
|
||||
|
||||
; XXX for now, connect to fixed server immediately
|
||||
|
||||
; count string length
|
||||
ldy #0
|
||||
: lda server_address,y
|
||||
iny
|
||||
and #$ff
|
||||
bne :-
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
sty cmd_tcp_connect_len
|
||||
|
||||
lda #<cmd_tcp_connect
|
||||
sta zpcmd
|
||||
lda #>cmd_tcp_connect
|
||||
sta zpcmd+1
|
||||
lda #4
|
||||
jsr sendcommand2
|
||||
|
||||
ldy #0
|
||||
: lda server_address,y
|
||||
beq :+
|
||||
jsr write_byte
|
||||
iny
|
||||
bne :-
|
||||
:
|
||||
|
||||
jsr read_status
|
||||
bcs BADBADBAD1 ; Could not connect
|
||||
|
||||
rts
|
||||
|
||||
BADBADBAD1:
|
||||
inc $d021
|
||||
jmp BADBADBAD1
|
||||
BADBADBAD2:
|
||||
inc $d020
|
||||
jmp BADBADBAD2
|
||||
BADBADBAD3:
|
||||
inc $0400
|
||||
jmp BADBADBAD3
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
wic64_getxfer:
|
||||
stx @save_x
|
||||
sty @save_y
|
||||
|
||||
; is there data in the buffer?
|
||||
lda rhead
|
||||
cmp rtail
|
||||
bne @skip
|
||||
|
||||
; ask for more data
|
||||
ldx #<cmd_tcp_get
|
||||
ldy #>cmd_tcp_get
|
||||
jsr sendcommand
|
||||
lda #0
|
||||
sta rhead
|
||||
jsr get_reply_size
|
||||
sta rtail ; length lo (hi is assumed 0)
|
||||
sec
|
||||
beq @end ; no data, return with C=1
|
||||
ldx #0
|
||||
: jsr read_byte ; read data into buffer
|
||||
sta ribuf,x
|
||||
inx
|
||||
cpx rtail
|
||||
bne :-
|
||||
|
||||
@skip:
|
||||
ldx rhead
|
||||
lda ribuf,x ; get byte from buffer
|
||||
inx
|
||||
stx rhead
|
||||
|
||||
clc
|
||||
@end:
|
||||
@save_x=*+1
|
||||
ldx #$ff
|
||||
@save_y=*+1
|
||||
ldy #$ff
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
wic64_putxfer:
|
||||
stx @save_x
|
||||
sty @save_y
|
||||
sta cmd_tcp_put_payload
|
||||
ldx #<cmd_tcp_put
|
||||
ldy #>cmd_tcp_put
|
||||
jsr sendcommand
|
||||
jsr read_status
|
||||
bcs BADBADBAD2
|
||||
lda cmd_tcp_put_payload
|
||||
@save_x=*+1
|
||||
ldx #$ff
|
||||
@save_y=*+1
|
||||
ldy #$ff
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
sendcommand:
|
||||
stx zpcmd
|
||||
sty zpcmd+1
|
||||
|
||||
ldy #1
|
||||
lda (zpcmd),y ; length of command
|
||||
sendcommand2:
|
||||
sta @len
|
||||
|
||||
lda #$ff ; DDR PB input
|
||||
sta $dd03
|
||||
lda $dd00
|
||||
ora #$04 ; PA2 := HIGH -> put device into receiving move
|
||||
sta $dd00
|
||||
|
||||
ldy #0
|
||||
: lda (zpcmd),y
|
||||
jsr write_byte
|
||||
iny
|
||||
@len=*+1
|
||||
cpy #$ff
|
||||
bne :-
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
get_reply_size:
|
||||
lda #$00 ; DDR PB input
|
||||
sta $dd03
|
||||
lda $dd00
|
||||
and #$ff-4 ; PA2 := LOW -> put device into sending mode
|
||||
sta $dd00
|
||||
jsr read_byte ; dummy byte
|
||||
jsr read_byte ; data size HI
|
||||
tax
|
||||
jmp read_byte ; data size LO
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
read_status:
|
||||
; Any command that returns a status will send one of these strings
|
||||
; * OK: 1, 0, "0"
|
||||
; * ERROR: 2, 0, "!E"
|
||||
; (The first two bytes being the length of the string.)
|
||||
; We decide on the first character ('0' or not), which one it is.
|
||||
jsr get_reply_size
|
||||
jsr read_byte
|
||||
cmp #'0'
|
||||
bne :+
|
||||
clc
|
||||
rts
|
||||
: jsr read_byte
|
||||
sec
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
write_byte:
|
||||
sta $dd01 ; write data
|
||||
lda #$10
|
||||
: bit $dd0d ; wait for the device to accept the byte
|
||||
beq :-
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
read_byte:
|
||||
lda #$10 ; wait for device to have a byte ready
|
||||
: bit $dd0d
|
||||
beq :-
|
||||
lda $dd01
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
wic64_enable:
|
||||
wic64_disable:
|
||||
wic64_dropdtr:
|
||||
rts
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
cmd_tcp_get:
|
||||
.byte 'W'
|
||||
.word 6
|
||||
.byte 34
|
||||
.word BYTES_PER_TCP_GET
|
||||
|
||||
cmd_tcp_put:
|
||||
.byte 'W'
|
||||
.word 5
|
||||
.byte 35
|
||||
cmd_tcp_put_payload:
|
||||
.byte $00 ; <- will be overwritten
|
||||
|
||||
cmd_tcp_connect:
|
||||
.byte 'W'
|
||||
cmd_tcp_connect_len:
|
||||
.word $00 ; <- will be overwritten
|
||||
.byte 33
|
||||
|
||||
server_address:
|
||||
.byte 0
|
||||
.byte "192.168.176.104:25232",0
|
||||
; .byte "raveolution.hopto.org:64128",0
|
||||
; .byte "lu8fjh-c64.ddns.net:6400",0
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
once:
|
||||
.byte 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
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ int
|
|||
main(int argc, char **argv) {
|
||||
while (!feof(stdin)) {
|
||||
int c = _inbyte(0);
|
||||
|
||||
_outbyte(c);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
BIN
test/slowout
BIN
test/slowout
Binary file not shown.
|
|
@ -9,7 +9,7 @@ main(int argc, char **argv) {
|
|||
char c = 'A';
|
||||
for (;;) {
|
||||
_outbyte(c);
|
||||
sleep(1);
|
||||
usleep(100000);
|
||||
c++;
|
||||
if (c == 'Z' + 1) {
|
||||
c = 'A';
|
||||
|
|
|
|||
Loading…
Reference in a new issue