---------------------------------------
         *= $CBEA
;---------------------------------------
DDR      = $DD03
D        = $DD01
TEMPA    = $A5
ADDR     = $9E
NUMBYTES = $10
ATEMP    = $AE
XTEMP    = $B2
YTEMP    = $B3
TEMP1    = $AA
DEVNUM   = $A7
TRIES    = $A8
;---------------------------------------
INITIALIZE
         JSR SETVECT

         LDY #$06
         STY $D021
         LDX #$00
         STX $D020
         STX $B7   ;
         STX $39   ;CURRENT FILENAME
         STX $3A   ;

         STX $C6   ;KEY BUFFER

         DEX
         STX $B9   ; SEC ADDRESS

         INY        ;6+1=7
         STY DEVNUM ;SET 64NET DEVICE

         LDA #<INITMESS
         LDY #>INITMESS
         JSR $AB1E

         JSR $A642  ;NEW

         JSR $EEB3

        ;CHECK FOR AR
         LDA $DF09
         CMP #$78
         BNE BOOTCHECK
        ;AR DETECTED
         LDA #<ARMESS
         LDY #>ARMESS
         JSR $AB1E
         JMP BOOTCHECK

ARMESS   .TEXT "–"
         .TEXT "WARNING:ž"
         .TEXT " SOME FEATURES"
         .TEXT " WILL NOT FUNCTION"
         .TEXT " CORRECTLY WITH THE "
         .TEXT "DATEL "
         .TEXT "ACTION REPLAY!"
         .BYTE $00
BOOTCHECK
         LDA 145       ;C= TO AVOID
         AND #$20      ;BOOT
         BEQ DONEIT

         LDY #$42     ;B FOR BOOT
         JSR COMMON

DONEIT   CLC
         JMP $A474

INITMESS
         .TEXT "“
 NETWORK MOUNTED    "
         .TEXT "64NET"
         .TEXT " V1.67.00 BETA"
         .TEXT " (C)COPYRIGHT PAUL "
         .TEXT "GARDNER-STEPHEN 1994"
         .BYTE $00
;---------------------------------------
CHECKDEVNUM
         ;IS THE CURRENT DEVICE 64NET?
         LDA $BA
         CMP #$01
         BEQ CDN
         CMP $A7
CDN      RTS
;---------------------------------------
LOAD     PHA
         JSR CHECKDEVNUM
         BEQ OKLOAD
         PLA
         JMP $F4A5
OKLOAD   STY YTEMP
         LDY #"L"
         PLA
         JMP COMMON

SAVE
         PHA
         JSR CHECKDEVNUM
         BEQ OKSAVE
         PLA
         JMP $F5ED
OKSAVE   STY YTEMP
         PLA
         LDY #"S"
         JMP COMMON

OPEN     STA $B4
         STX $B5
         STY $B6
         JSR CHECKDEVNUM
         BEQ OKOPEN
         LDA $B4
         LDX $B5
         LDY $B6
         JMP $F34A
OKOPEN
         LDA $B4
         STA $B7
         LDY #"O"
         JMP COMMON

PRINT    PHA
         LDA $9A
         CMP $A7
         BEQ OKPRINT
         PLA
         JMP $F1CA
OKPRINT
         LDA #"W"
         JSR SENDCHAR
         PLA
         JSR SENDCHAR
         CLC
         RTS

GETIN
         LDA $99
         CMP DEVNUM
         BEQ REALITY
OKGETIN  JMP $F13E

CHRIN    LDA $99
         CMP DEVNUM
         BNE OKCHRIN
REALITY
         LDA #"R"
         JSR SENDSYNCCHAR
         LDA #42
         JSR SENDCHAR
         JSR FASTGETCHAR
         PHA
         JSR FASTGETCHAR
         STA $90
         PLA
         CLC
         RTS
OKCHRIN  JMP $F157


CHKIN
         JSR FILEDEV
         CMP DEVNUM
         BNE OKCHKIN
         LDA #"D"
         JSR SENDCHAR
         TXA
         JSR SENDCHAR
         LDA DEVNUM
         STA $99
         CLC
         RTS
OKCHKIN
         JMP $F20E

CHKOUT   TXA
         JSR FILEDEV
         CMP DEVNUM
         BNE OKCHKOUT
         LDA #"A"
         JSR SENDCHAR
         TXA
         JSR SENDCHAR
         LDA DEVNUM
         STA $9A
         CLC
         RTS
OKCHKOUT JMP $F250

CLOSE    TAX
         PHA
         JSR FILEDEV
         CMP DEVNUM
         BNE OKCLOSE
         LDA #"C"
         JSR SENDCHAR
         PLA
         PHA
         JSR SENDCHAR

OKCLOSE  PLA
         JMP $F291


;---------------------------------------
FILEDEV
         ;FILENUM IN A

         TXA
         STX $B4

         LDX #$09
FDL1     CMP $0259,X
         BEQ YUP
         DEX
         BPL FDL1
         LDX $B4
         SEC
         RTS
YUP
         LDA $0263,X

         LDX $B4
         CLC
         RTS
;---------------------------------------
COMMON
         STX XTEMP
         JSR SETUP
         JSR SYNC
         TYA
         JSR SENDCHAR
         LDA $B7
         JSR SENDCHAR
         LDA $B7
         CMP #$00
         BEQ NONAME
         LDY #$00
LL2      LDA ($BB),Y
         JSR SENDCHAR
         INY
         CPY $B7
         BNE LL2
NONAME
         LDA $B9
         JSR SENDCHAR

;---------------------------------------

LOOP
         JSR FASTGETCHAR
         CMP #$FF
         BEQ TRANSFER
         CMP #$FE
         BEQ DONE
         CMP #$FD
         BEQ ASCIIZ
         CMP #$F9
         BEQ READKEYBOARD
         CMP #$F8
         BEQ JSRSOMEWHERE
         JMP LOOP
DONE
         JSR FASTGETCHAR
         CMP #$00
         CLC
         BEQ BYEBYE
         SEC
BYEBYE
         LDX XTEMP
         LDY YTEMP
         RTS

;---------------------------------------
ASCIIZ
         JSR FASTGETCHAR
         CMP #$00
         BEQ LOOP
         JSR $FFD2
         JMP ASCIIZ
;---------------------------------------
READKEYBOARD
         JSR FASTGETCHAR
         JSR $FFE4
         JSR SENDCHAR
         JMP LOOP
;---------------------------------------
TRANSFER
         LDA #$FF
         JSR FASTGETCHAR
         CMP #$01
         BEQ UPLOAD
         CMP #$02
         BEQ DOWNLOAD
         JMP LOOP
;---------------------------------------
UPLOAD
         LDA #$00
         STA TEMP1
         JSR FASTGETCHAR
         STA NUMBYTES
         JSR FASTGETCHAR
         STA ADDR
         JSR FASTGETCHAR
         STA ADDR+1
         LDX NUMBYTES
         LDY #$FF
UL1      INY
         DEX
         BEQ DONEUL
         JSR FASTGETCHAR
         STA (ADDR),Y
         ADC TEMP1
         STA TEMP1
         JMP UL1
DONEUL
         JMP LOOP
;---------------------------------------
JSRSOMEWHERE
         ;ALLOW 64NET TO DO A JSR
         ;INTO THE Ã64'S MEMORY

         LDA #$4C
         STA $0334
         JSR FASTGETCHAR
         STA $0335
         JSR FASTGETCHAR
         STA $0336
         JSR FASTGETCHAR
         PHA
         JSR FASTGETCHAR
         TAX
         JSR FASTGETCHAR
         TAY
         JSR FASTGETCHAR
         PLA
         JSR $0334
         JMP LOOP
;---------------------------------------
DOWNLOAD
         JSR FASTGETCHAR
         STA NUMBYTES
         JSR FASTGETCHAR
         STA ADDR
         JSR FASTGETCHAR
         STA ADDR+1
         JSR FASTGETCHAR ;THIS HELPS
                         ;STOP HANGS!
        ;THE CAUSE OF HANGS IS THAT THE
        ;SIMPLEX DIRECTION CANNOT ALWAYS
        ;CHANGE AFTER SENDING A $4F, OR
        ;A FEW OTHERS!!!!!! and the
        ;electrical limitations of the cables

         LDX NUMBYTES
         LDY #$FF
DL1      INY
         DEX
         BEQ DONEDL
         LDA (ADDR),Y
         JSR SENDCHAR
         JMP DL1
DONEDL
         JMP LOOP
;---------------------------------------
SETUP
         LDA #$07
         STA $DD03
         LDA #$00
         STA $DD01
         RTS
;---------------------------------------
SYNC
         LDA #$08
         STA D
PLAD     LDA D
         AND #$F0
         CMP #$80
         BNE PLAD
         LDA #$00
         STA D
PLAD2    LDA D
         AND #$F0
         CMP #$00
         BEQ PLAD2
         RTS
;---------------------------------------
SENDSYNCCHAR
         STA TEMPA
         LDA #$00
         STA TRIES
RETRY
         LDA TEMPA
         AND #$03
         ORA #$04
         STA D
SL1      INC TRIES
         BEQ RETRY
         LDA D
         AND #$70
         CMP #$50
         BNE SL1

         LDA TEMPA
         LSR A
         LSR A
         AND #$03
         STA D
SL2      INC TRIES
         BEQ RETRY
         LDA D
         AND #$70
         CMP #$20
         BNE SL2

         LDA TEMPA
         LSR A
         LSR A
         LSR A
         LSR A
         AND #$03
         ORA #$04
         STA D
SL3      INC TRIES
         BEQ RETRY
         LDA D
         AND #$70
         CMP #$60
         BNE SL3

         LDA TEMPA
         ROL A
         ROL A
         ROL A
         AND #$03
         STA D
SL4      INC TRIES
         BEQ RETRY
         LDA D
         AND #$70
         CMP #$10
         BNE SL4

         LDA #$03
         STA D
         RTS
;---------------------------------------
SENDCHAR
         STA TEMPA
         AND #$03
         ORA #$04
         STA D
L1       LDA D
         AND #$70
         CMP #$50
         BNE L1

         LDA TEMPA
         LSR A
         LSR A
         AND #$03
         STA D
L2       LDA D
         AND #$70
         CMP #$20
         BNE L2

         LDA TEMPA
         LSR A
         LSR A
         LSR A
         LSR A
         AND #$03
         ORA #$04
         STA D
L3       LDA D
         AND #$70
         CMP #$60
         BNE L3

         LDA TEMPA
         ROL A
         ROL A
         ROL A
         AND #$03
         STA D
L4       LDA D
         AND #$70
         CMP #$10
         BNE L4

         LDA #$03
         STA D
         RTS
;---------------------------------------
FASTGETCHAR

         LDA #$04
         STA D
L1B      LDA D
         AND #$08
         BEQ L1B

         LDA D
         LSR A
         LSR A
         LSR A
         LSR A
         AND #$0F
         STA TEMPA

         LDA #$00
         STA D
L2B      LDA D
         AND #$08
         BNE L2B

         LDA D
         AND #$F0
         ORA TEMPA

         RTS
;---------------------------------------
SETVECT
         LDX #$00
SVL1     LDA VECTTABLE,X
         BEQ SV1
         TAY
         INX
         LDA VECTTABLE,X
         STA $0300,Y
         INX
         LDA VECTTABLE,X
         INX
         STA $0301,Y
         JMP SVL1
SV1
         RTS

VECTTABLE
         .BYTE $1A
         .WORD OPEN
         .BYTE $1C
         .WORD CLOSE
         .BYTE $1E
         .WORD CHKIN
         .BYTE $20
         .WORD CHKOUT
         .BYTE $24
         .WORD CHRIN
         .BYTE $26
         .WORD PRINT
         .BYTE $2A
         .WORD GETIN
         .BYTE $30
         .WORD LOAD
         .BYTE $32
         .WORD SAVE

     ;END OF TABLE!
         .BYTE $00
;---------------------------------------
VECTOR
         JMP SETVECT
         JMP INITIALIZE


 
