Compare commits

...

5 commits

Author SHA1 Message Date
Michael Steil
53b88311d0 cleanup 2022-02-18 00:14:51 +01:00
Michael Steil
e7430d3c3b added wic64 source from "telnet demo.asm"
added telnet demo.asm

removed some code

cleanup

cleanup

code works inside ccgms

split code wip

hooks

wip

wip

wip

wip

wip

wip

wip

wip

wip

wip

hack!

simplify

wip

wip

wip

wip

wip

wip

wip

progress!

works...
2022-02-18 00:11:40 +01:00
Michael Steil
3b3aeb239b moved dropdtr code into the respective drivers 2022-02-17 23:42:42 +01:00
Michael Steil
e730a711b1 removed IBSOUT/IGETIN hooks 2022-02-17 23:42:42 +01:00
Michael Steil
b25a0a6561 changed modem access from BSOUT/GETIN to modput/modget 2022-02-17 23:42:36 +01:00
20 changed files with 490 additions and 280 deletions

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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 :-

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
;

View file

@ -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

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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
View 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

View file

@ -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

View file

@ -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

View file

@ -34,6 +34,7 @@ int
main(int argc, char **argv) {
while (!feof(stdin)) {
int c = _inbyte(0);
_outbyte(c);
}
}