This is what I have done so far.
James
;
; IO EQUATES
;
ICHID = $0000
ICDNO = $0001
ICCOM = $0002
ICSTA = $0003
ICBAL = $0004
ICBAH = $0005
ICPTL = $0006
ICPTH = $0007
ICBLL = $0008
ICBLH = $0009
ICAX1 = $000A
ICAX2 = $000B
ICAX3 = $000C
ICAX4 = $000D
ICAX5 = $000E
ICAX6 = $000F
;
; DISPLAY LIST EQUATES
;
ADLI = $0080
AVB = $0040
ALMS = $0040
AVSCR = $0020
AHSCR = $0010
AJMP = $0001
AEMPTY1 = $0000
AEMPTY2 = $0010
AEMPTY3 = $0020
AEMPTY4 = $0030
AEMPTY5 = $0040
AEMPTY6 = $0050
AEMPTY7 = $0060
AEMPTY8 = $0070
;
; OS VARIABLES FOR XL/XE
;
; PAGE 0
;
NGFLAG = $0001
CASINI = $0002
RAMLO = $0004
TRAMSZ = $0006
CMCMD = $0007
WARMST = $0008
BOOT = $0009
DOSVEC = $000A
DOSINI = $000C
APPMHI = $000E
POKMSK = $0010
BRKKEY = $0011
RTCLOK = $0012
BUFADR = $0015
ICCOMT = $0017
DSKFMS = $0018
DSKUTL = $001A
ABUFPT = $001C
ICHIDZ = $0020
ICDNOZ = $0021
ICCOMZ = $0022
ICSTAZ = $0023
ICBALZ = $0024
ICBAHZ = $0025
ICPTLZ = $0026
ICPTHZ = $0027
ICBLLZ = $0028
ICBLHZ = $0029
ICAX1Z = $002A
ICAX2Z = $002B
ICAX3Z = $002C
ICAX4Z = $002D
ICAX5Z = $002E
ICAX6Z = $002F
STATUS = $0030
CHKSUM = $0031
BUFRLO = $0032
BUFRHI = $0033
BFENLO = $0034
BFENHI = $0035
LTEMP = $0036
BUFRFL = $0038
RECVDN = $0039
XMTDON = $003A
CHKSNT = $003B
NOCKSM = $003C
BPTR = $003D
FTYPE = $003E
FEOF = $003F
FREQ = $0040
SOUNDR = $0041
CRITIC = $0042
FMSZPG = $0043
ZCHAIN = $004A
DSTAT = $004C
ATRACT = $004D
DRKMSK = $004E
COLRSH = $004F
TEMP = $0050
HOLD1 = $0051
LMARGN = $0052
RMARGN = $0053
ROWCRS = $0054
COLCRS = $0055
DINDEX = $0057
SAVMSC = $0058
OLDROW = $005A
OLDCOL = $005B
OLDCHR = $005D
OLDADR = $005E
FKDEF = $0060
PALNTS = $0062
LOGCOL = $0063
ADRESS = $0064
MLTTMP = $0066
SAVADR = $0068
RAMTOP = $006A
BUFCNT = $006B
BUFSTR = $006C
BITMSK = $006E
SHFAMT = $006F
ROWAC = $0070
COLAC = $0072
ENDPT = $0074
DELTAR = $0076
DELTAC = $0077
KEYDEF = $0079
SWPFLG = $007B
HOLDCH = $007C
INSDAT = $007D
COUNTR = $007E
LOMEM = $0080
;
; PAGE 2
;
VPRCED = $0202
VIMIRQ = $0216
CDTMV1 = $0218
CDTMV2 = $021A
CDTMV3 = $021C
CDTMV4 = $021E
CDTMV5 = $0220
VVBLKI = $0222
VVBLKD = $0224
CDTMA1 = $0226
CDTMA2 = $0228
CDTMF3 = $022A
SRTIMR = $022B
CDTMF4 = $022C
INTEMP = $022D
CDTMF5 = $022E
SDMCTL = $022F
SDLSTL = $0230
SDLSTH = $0231
SSKCTL = $0232
SPARE = $0233
LPENH = $0234
LPENV = $0235
BRKKY = $0236
VPIRQ = $0238
CDEVIC = $023A
CCOMND = $023B
CAUX1 = $023C
CAUX2 = $023D
TMPSIO = $023E
ERRFLG = $023F
DFLAGS = $0240
DBSECT = $0241
BOOTAD = $0242
COLDST = $0244
RECLEN = $0245
DSKTIM = $0246
PDVMSK = $0247
SHPDVS = $0248
PDMSK = $0249
RELADR = $024A
PPTMPA = $024C
PPTMPX = $024D
CHSALT = $026B
VSFLAG = $026C
KEYDIS = $026D
FINE = $026E
GPRIOR = $026F
HIBYTE = $0288
WMODE = $0289
BLIM = $028A
IMASK = $028B
JVECK = $028C
NEWADR = $028E
TXTROW = $0290
TXTCOL = $0291
TINDEX = $0293
TXTMSC = $0294
TXTOLD = $0296
CRETRY = $029C
HOLD3 = $029D
SUBTMP = $029E
HOLD2 = $029F
DMASK = $02A0
TMPLBT = $02A1
ESCFLG = $02A2
TABMAP = $02A3
LOGMAP = $02B2
INVFLG = $02B6
FILFLG = $02B7
TMPROW = $02B8
TMPCOL = $02B9
SCRFLG = $02BB
HOLD4 = $02BC
DRETRY = $02BD
SHFLOC = $02BE
BOTSCR = $02BF
RUNADR = $02C9
HIUSED = $02CB
ZHIUSE = $02CD
GBYTEA = $02CF
LOADAD = $02D1
ZLOADA = $02D3
DSCTLN = $02D5
ACMISR = $02D7
KRPDER = $02D9
KEYREP = $02DA
NOCLIK = $02DB
HELPFG = $02DC
DMASAV = $02DD
PBPNT = $02DE
PBUFSZ = $02DF
RUNAD = $02E0
INITAD = $02E2
RAMSIZ = $02E4
MEMTOP = $02E5
MEMLO = $02E7
HNDLOD = $02E9
DVSTAT = $02EA
CBAUDL = $02EE
CBAUDH = $02EF
CRSINH = $02F0
KEYDEL = $02F1
CH1 = $02F2
CHACT = $02F3
CHBAS = $02F4
NEWROW = $02F5
NEWCOL = $02F6
ROWINC = $02F8
COLINC = $02F9
CHAR = $02FA
ATACHR = $02FB
CH = $02FC
FILDAT = $02FD
DSPFLG = $02FE
SSFLAG = $02FF
;
; PAGE 3
;
DDEVIC = $0300
DUNIT = $0301
DCOMND = $0302
DSTATS = $0303
DBUFLO = $0304
DBUFHI = $0305
DTIMLO = $0306
DUNUSE = $0307
DBYTLO = $0308
DBYTHI = $0309
DAUX1 = $030A
DAUX2 = $030B
TIMER1 = $030C
ADDCOR = $030E
CASFLG = $030F
TIMER2 = $0310
TEMP1 = $0312
TEMP2 = $0314
TEMP3 = $0315
SAVIO = $0316
TIMFLG = $0317
STACKP = $0318
TSTAT = $0319
HATABS = $031A
PUPBT1 = $033D
PUPBT2 = $033E
PUPBT3 = $033F
IOCB0 = $0340
IOCB1 = $0350
IOCB2 = $0360
IOCB3 = $0370
IOCB4 = $0380
IOCB5 = $0390
IOCB6 = $03A0
IOCB7 = $03B0
PRNBUF = $03C0
SUPERF = $03E8
CKEY = $03E9
CASSBT = $03EA
CARTCK = $03EB
DERRF = $03EC
ACMVAR = $03ED
BASICF = $03F8
MINTLK = $03F9
GINTLK = $03FA
CHLINK = $03FB
CASBUF = $03FD
;
; HARDWARE REGISTERS
;
; GTIA
;
M0PF = $D000
HPOSP0 = $D000
M1PF = $D001
HPOSP1 = $D001
M2PF = $D002
HPOSP2 = $D002
M3PF = $D003
HPOSP3 = $D003
P0PF = $D004
HPOSM0 = $D004
P1PF = $D005
HPOSM1 = $D005
P2PF = $D006
HPOSM2 = $D006
P3PF = $D007
HPOSM3 = $D007
M0PL = $D008
SIZEP0 = $D008
M1PL = $D009
SIZEP1 = $D009
M2PL = $D00A
SIZEP2 = $D00A
M3PL = $D00B
SIZEP3 = $D00B
P0PL = $D00C
SIZEM = $D00C
P1PL = $D00D
GRAFP0 = $D00D
P2PL = $D00E
GRAFP1 = $D00E
P3PL = $D00F
GRAFP2 = $D00F
TRIG0 = $D010
GRAFP3 = $D010
TRIG1 = $D011
GRAFM = $D011
TRIG2 = $D012
COLPM0 = $D012
TRIG3 = $D013
COLPM1 = $D013
PAL = $D014
COLPM2 = $D014
COLPM3 = $D015
COLPF0 = $D016
COLPF1 = $D017
COLPF2 = $D018
COLPF3 = $D019
COLBK = $D01A
PRIOR = $D01B
VDELAY = $D01C
GRACTL = $D01D
HITCLR = $D01E
CONSOL = $D01F
;
; POKEY
;
POT0 = $D200
AUDF1 = $D200
POT1 = $D201
AUDC1 = $D201
POT2 = $D202
AUDF2 = $D202
POT3 = $D203
AUDC2 = $D203
POT4 = $D204
AUDF3 = $D204
POT5 = $D205
AUDC3 = $D205
POT6 = $D206
AUDF4 = $D206
POT7 = $D207
AUDC4 = $D207
ALLPOT = $D208
AUDCTL = $D208
KBCODE = $D209
STIMER = $D209
RANDOM = $D20A
SKREST = $D20A
POTGO = $D20B
SERIN = $D20D
SEROUT = $D20D
IRQST = $D20E
IRQEN = $D20E
SKSTAT = $D20F
SKCTL = $D20F
;
; PIA
;
PORTA = $D300
PORTB = $D301
PACTL = $D302
PBCTL = $D303
;
; ANTIC
;
DMACLT = $D400
CHACTL = $D401
DLISTL = $D402
DLISTH = $D403
HSCROL = $D404
VSCROL = $D405
PMBASE = $D407
CHBASE = $D409
WSYNC = $D40A
VCOUNT = $D40B
PENH = $D40C
PENV = $D40D
NMIEN = $D40E
NMIST = $D40F
NMIRES = $D40F
;
DSKINV = $E453
CIOV = $E456
SIOV = $E459
SETVBV = $E45C
SYSVBV = $E45F
XITVBV = $E462
SIOINV = $E465
SENDEV = $E468
INTINV = $E46B
CIOINV = $E46E
SELFSV = $E471
WARMSV = $E474
COLDSV = $E477
RBLOKV = $E47A
CSOPIV = $E47D
PUPDIV = $E480
SELFTSV = $E483
PENTV = $E486
PHUNLV = $E489
PHINIV = $E48C
GPDVV = $E48F
;
; Code equates for consol
;
L00F5 = $00F5
L0400 = $0400
L0401 = $0401
L0402 = $0402
L0403 = $0403
L0B18 = $0B18
L2045 = $2045
L2A2A = $2A2A
L434F = $434F
L4552 = $4552
L45CE = $45CE
L4946 = $4946
L4D58 = $4D58
L4F4E = $4F4E
L5245 = $5245
L52C1 = $52C1
L9B3F = $9B3F
;
;
; Code equates device
;
L0001 = $0001
L0002 = $0002
L0003 = $0003
L0004 = $0004
L0005 = $0005
L0006 = $0006
L0007 = $0007
L0008 = $0008
L0009 = $0009
L000A = $000A
L000B = $000B
L000C = $000C
L000D = $000D
L000E = $000E
L000F = $000F
L0010 = $0010
L0011 = $0011
L0012 = $0012
L0013 = $0013
L0014 = $0014
L0015 = $0015
L0016 = $0016
L0017 = $0017
L0018 = $0018
L0019 = $0019
L001B = $001B
L001C = $001C
L001D = $001D
L001E = $001E
L001F = $001F
L0020 = $0020
L0021 = $0021
L0022 = $0022
L0023 = $0023
L0024 = $0024
L0025 = $0025
L0026 = $0026
L0027 = $0027
L0028 = $0028
L0029 = $0029
L002A = $002A
L002B = $002B
L002C = $002C
L002D = $002D
L0030 = $0030
L0036 = $0036
L007F = $007F
L0084 = $0084
L00CA = $00CA
L00F0 = $00F0
L00F1 = $00F1
L00F2 = $00F2
L00F3 = $00F3
L00F4 = $00F4
L00F5 = $00F5
L00F6 = $00F6
L00F7 = $00F7
L00F8 = $00F8
L0200 = $0200
L0201 = $0201
L0202 = $0202
L0284 = $0284
L0285 = $0285
L0286 = $0286
L0287 = $0287
L2004 = $2004
L34F1 = $34F1
L44F1 = $44F1
L8002 = $8002 ;6850 status register
L8003 = $8003 ;6850 data register
L8004 = $8004 ;6850 status register
L8005 = $8005 ;6850 data register
L9103 = $9103
LA000 = $A000 ;port b
LA001 = $A001 ;port a
LA002 = $A002 ;portb data direction
LA003 = $A003 ;porta data direction
LA004 = $A004
LA005 = $A005
LA008 = $A008
LA009 = $A009
LA00B = $A00B
LA00C = $A00C
LA00D = $A00D ;interupt flag register
LA00E = $A00E
LF104 = $F104
LF12C = $F12C
LFD80 = $FD80
LFE80 = $FE80
;
; Start of code
;
*= $F000
;
RESET: lda #$3C
ldx #$00
txs
cld
txa
LF007: sta $00,X
inx
bne LF007 ;blank zero page
ldy #$07
sty L0003
LF010: tay
LF011: sta (L0002),Y
iny
bne LF011
dec L0003
bne LF010 ;blank rest of ram
lda #$03
sta L8002 ;reset 1st 6850
sta L8004 ;reset 2nd 6850
lda #$54 ;8bits, no parity, 1 stop bit
sta L8002 ;RTS high,disable tran int logic
lda #$55 ;8 bits, no parity, 1stop bit
sta L8004 ; rts high disable tran int logic. /16 clock
lda #$00 ;set port a to input
sta LA003 ;port a data dir reg
lda LA001 ;load current state of port a
sta L0010 ;save
sta L00F7
lda #$FF ;set port b to all output
sta LA002 ;port b data dir reg
lda #$01 ;
sta LA000 ;6522?
lda #$0C ; ca2 low. cb2 input. irq high to low cb1
sta LA00C ;irq ca1 high to low
lda #$40 ;counter out pb7. one shot
sta LA00B
lda #$7F
sta LA00E
cli
ldx #$06
stx L0020
jsr LF4EA
LF059: lda #$00
sta L000D
sta L0006
sta L0007
lda LA00C
ora #$01
sta LA00C
lda #$82
sta LA00E
LF06E: jsr LF082
lda L0025
beq LF078
jsr LF2C5
LF078: lda L0007
beq LF06E
jsr LF092
jmp LF059
LF082: lda L0029
beq LF091
inc L002A
bne LF091
inc L002B
bpl LF091
jsr LF3A2
LF091: rts
LF092: ldx #$00
jsr LF34A
cmp L00F4
bne LF101
lda L00F0
cmp #$70
bne LF0D3
lda #$01
sta L002C
jsr LF37F
ldx #$00
LF0AA: lda LF102,X ;load command from rom
beq LF0B9 ;branch at end of commands no match
cmp L00F1 ;compare with command list
beq LF0C1 ;branch if equal
inx ; point
inx ;to next
inx ;command in list
jmp LF0AA ;go loop
LF0B9: lda #$4E ;Error
jsr LF403
jmp LF101
LF0C1: txa
pha
lda #$41 ;Ack
jsr LF403 ; send Ack
pla
tax
lda LF104,X
pha
lda LF103,X
pha
rts ;go to command
LF0D3: ldx L002C
bne LF101
cmp #$31
bne LF0FD
lda L00F1
cmp #$53
bne LF0EE
inc L002D
ldx L002D
cpx #$08
bne LF101
ldx #$00
jmp LF0C1
LF0EE: cmp #$52
bne LF0FD
ldx L002D
cpx #$08
bne LF0FD
ldx #$03
jmp LF0C1
LF0FD: lda #$01
sta L002C
LF101: rts
LF102: .byte $53 ;status
LF103: .WORD STATUS -1
.BYTE $44 ;D
.WORD LF210 -1
.byte $57 ;W
.WORD WRITE -1
.byte $52 ;R
.WORD READ -1
.byte $30 ;0
.WORD LF251 -1
.BYTE $31 ;1
.WORD LF280 -1
.BYTE $33 ;3
.WORD STATUS -1
.BYTE $34 ;4
.WORD WRITE -1
.BYTE $35 ;5
.WORD READ -1
.BYTE $36 ;6
.WORD LF280 -1
.byte $00
LF121: .BYTE $05,$05,$81,$05
.BYTE $84,$84,$84,$84
.BYTE $84,$84
LF12B: .BYTE $F0
LF12C: .BYTE $00
LF12D: .BYTE $F5,$00,$03,$02
.BYTE $84,$02,$00,$02
.byte $89,$02,$0D,$03
.BYTE $91,$03,$15,$04
.byte $99,$04
STATUS: JSR LF175 ;send complete
adc L00F1,X
lda L0010
ldy L00F1
cpy #$33
bne LF15D
ldx L0020
lda #$00
sta L00F5,X
sta L0029
jsr LF4EA
lda L00F6
and #$7F
sta L00F6
lda L0028
LF15D: sta L00F7
ldx #$01
jsr LF34A
sta (L0009),Y
ldx #$01
LF168: lda L0008
beq LF168
jsr LF3DF
jsr LF2C0
jmp LF101
LF175: lda #$01
jsr LF37F
lda #$43 ;Complete
jsr LF403
lda #$01
jsr LF389
rts
WRITE: lda #$01
jsr LF37F
ldx #$02
jsr LF3BE
LF18F: lda L000E
beq LF18F
ldx #$02
jsr LF34A
cmp (L0009),Y
beq LF1A3
lda #$4E
bne LF1C2
jmp LF101
LF1A3: lda #$41
jsr LF403
lda L0010
sta L0201
lda L001E
and #$60
ora #$03
sta L0202
ldx #$04
lda L00F3
sta L0200
lda #$03
jsr LF40A
LF1C2: jsr LF403
jsr LF2C0
jmp LF101
READ: jsr LF175
lda L0020
asl A
tax
lda LF12B,X
clc
adc #$02
sta L0009
sta L000B
lda LF12C,X
adc #$00
sta L000A
sta L000C
lda #$82
jsr LF35B
sta (L0009),Y
sty L0005
LF1EE: lda L0008
beq LF1EE
jsr LF3F2
jsr LF2C0
ldy #$00
lda (L0009),Y
and #$7F
sta (L0009),Y
sta L00F6
ldx L0020
lda #$00
sta L0029
sta L00F5,X
jsr LF4EA
jmp LF101
LF210: jsr LF175
dec L00F2
lda L00F2
asl A
tax
lda LF241,X
sta L0009
sta L000B
lda LF242,X
sta L000A
sta L000C
lda #$81
jsr LF35B ;add chksum
pha ;save chksum
dey
sty L0005
LF230: lda L0008
beq LF230
jsr LF3F2 ;send byte
jsr LF2C0
pla
jsr LF403
jmp LF101
LF241: .byte $00
LF242: .byte $FC,$80,$FC,$00
.BYTE $FD,$80,$FD
.byte $00
.BYTE $FE,$80,$FE
.byte $00,$FF,$80,$FF
LF251: lda #$01
jsr LF37F
lda #$43 ;Complete
jsr LF403
lda L00F3
sta L0021
beq LF26E
lda #$40
ora L001E
sta L001E
lda #$40
ora L00F6
jmp LF278
LF26E: lda L001E
and #$BF
sta L001E
lda L00F6
and #$BF
LF278: sta L00F6
jsr LF2C0
jmp LF101
LF280: lda #$01
jsr LF37F
lda L00F2
sta L0287
lda L00F3
ldx #$02
ldy L00F1
cpy #$36
bne LF296
ldx #$05
LF296: jsr LF2A9
ldx #$03
lda #$03
jsr LF40A
jsr LF403
jsr LF2C0
jmp LF101
LF2A9: sta L0284
lda L001E
and #$60
sta L0286
txa
ora L0286
sta L0286
lda L0010
sta L0285
rts
LF2C0: lda L0024
bne LF2C0
rts
LF2C5: lda #$01
jsr LF389
jsr LF36A
cmp (L0009),Y
beq LF2D9
LF2D1: ldx L001F
lda #$00
sta L00F5,X
beq LF32B
LF2D9: ldy #$02
lda (L0009),Y
and #$0F
cmp #$05
bne LF2EC
dey
lda (L0009),Y
jsr LF333
jmp LF2D1
LF2EC: lda L001F
cmp #$07
bcs LF2FE
ldy #$01
lda (L0009),Y
ldx L0021
beq LF304
cmp L0021
beq LF304
LF2FE: jsr LF337
jmp LF2D1
LF304: sta L00F8
iny
lda (L0009),Y
and #$0F
ora #$80
ora L001E
sta L00F6
sta (L0009),Y
and #$0F
cmp #$02
bne LF31E
iny
lda (L0009),Y
sta L0028
LF31E: lda L00F8
jsr LF333
jsr LF3A2
ldx L001F
stx L0020
inx
LF32B: jsr LF4EA
lda #$00
sta L0025
rts
LF333: ldx #$00
beq LF339
LF337: ldx #$01
LF339: jsr LF2A9
lda #$00
sta L0287
ldx #$03
LF343: ldy L0008
beq LF343
jmp LF40A
LF34A: ldy LF121,X
txa
asl A
tax
lda LF12B,X
sta L0009
lda LF12C,X
sta L000A
tya
LF35B: tax
dex
lda #$00
tay
clc
LF361: adc (L0009),Y ;add chksum ?
iny
dex
bne LF361
adc #$00
rts
LF36A: lda L001F
asl A
tax
lda LF12B,X
sta L0009
lda LF12C,X
sta L000A
ldx L001F
lda L00F5,X
jmp LF35B
LF37F: jsr LF389
LF382: lda L0008
beq LF382
dec L0008
rts
LF389: php
sei
sta L000F
lda #$80
sta LA004
lda #$07
sta LA005
lda #$C0
sta LA00E
lda #$00
sta L0008
plp
rts
LF3A2: lda LA00C
and #$F1
ora #$0E
sta LA00C
and #$F1
ora #$0C
ldy #$02
sty L0029
ldy #$00
sty L002A
sty L002B
sta LA00C
rts
LF3BE: lda LF121,X
sta L0001
txa
asl A
tax
lda LF12B,X
sta L0002
lda LF12C,X
sta L0003
lda #$00
sta $00
sta L000E
lda L8005
lda #$D5
sta L8004
rts
LF3DF: ldy LF121,X
dey
sty L0005
txa
asl A
tax
lda LF12B,X
sta L000B
lda LF12C,X
sta L000C
LF3F2: ldy #$00
lda (L000B),Y
LF3F6: sty L0004
ldx #$35
stx L0024
stx L8004
sta L8005 ;send byte 6850
rts
;send on sio buss
LF403: ldy #$00
sty L0005
jmp LF3F6
LF40A: sta L001D
stx L001C
jsr LF34A
sta (L0009),Y
lda L001F
sta L0023
lda L0025
sta L0022
ldy #$00
lda (L0009),Y
bne LF423
sta L001D
LF423: ldx L001C
jsr LF51F
lda #$05
jsr LF389
LF42D: lda L0019
beq LF437
lda L0008
beq LF42D
bne LF460
LF437: lda L001B
beq LF441
jsr LF4D4
jmp LF423
LF441: lda L001D
bne LF448
lda #$43
rts
LF448: lda #$0A
jsr LF389
LF44D: ldx #$05
lda #$00
sta L00F5,X
jsr LF4EA
LF456: ldx #$05
lda L00F5,X
bne LF46E
lda L0008
beq LF456
LF460: dec L001D
bne LF423
lda L00F5
ora #$80
sta L00F5
lda #$45
bne LF4AB
LF46E: jsr LF36A
cmp (L0009),Y
bne LF44D
ldy #$00
lda (L0009),Y
cmp L0010
bne LF44D
iny
lda (L0009),Y
ldy #$00
cmp (L0017),Y
bne LF44D
ldy #$02
lda (L0009),Y
and #$0F
cmp #$01
beq LF4C2
cmp #$00
bne LF44D
lda L00F5
and #$7F
sta L00F5
lda L00F6
and #$DF
sta L00F6
lda (L0009),Y
and #$40
lsr A
ora L00F6
sta L00F6
lda #$43
LF4AB: pha
ldx L001F
ldy #$00
sty L00F5,X
ldx L0023
jsr LF4EA
lda L0022
sta L0025
lda #$40
sta LA00E
pla
rts
LF4C2: lda L00F6
and #$DF
sta L00F6
lda (L0009),Y
and #$40
lsr A
ora L00F6
sta L00F6
jmp LF44D
LF4D4: lda LA008
sta LA008
lda LA009
and #$1F
sta LA009
LF4E2: lda LA00D
and #$20
beq LF4E2
rts
LF4EA: lda L8002
and #$04
beq LF4EA
lda LA000
ora #$01
sta LA000
lda LF121,X
sta L0012
stx L001F
txa
asl A
tax
lda LF12B,X
sta L0013
lda LF12C,X
sta L0014
ldx L001F
lda L8003
lda #$00
sta L0011
lda LA000
and #$FE
sta LA000
rts
LF51F: lda LF121,X
sta L0016
txa
asl A
tax
lda LF12B,X
sta L0017
lda LF12C,X
sta L0018
ldy #$00
sty L001B
sty L0027
LF537: lda L8002
and #$04
beq LF537
sei
lda LA000
and #$FE
tax
ora #$01
sta LA000
lda (L0017),Y
sta L8003
iny
sty L0015
sty L0019
lda L8003
lda #$14
stx LA000
sta L8002
cli
rts
NMI:
bit L0026
bpl LF566
rti
LF566: dec L0026
pha
tya
pha
lda L0019
beq LF5D3
LF56F: lda L8002
ror A
bcs LF591
ror A
bcs LF581
ror A
bcs LF5A4
ror A
bcc LF56F
jmp LF613
LF581: ldy L0015
cpy L0016
beq LF5A6
lda (L0017),Y
sta L8003 ;send byte lan
inc L0015
jmp LF56F
LF591: ldy L0027
lda L8003
cmp (L0017),Y
bne LF5A4
cpy #$01
beq LF5B5
inc L0027
bne LF56F
beq LF5A6
LF5A4: inc L001B
LF5A6: ldy #$0C
LF5A8: dey
bne LF5A8
sty L0019
lda #$54
sta L8002
jmp LF613
LF5B5: ldy L0015
LF5B7: cpy L0016
beq LF5A6
LF5BB: lda L8002
ror A
ror A
bcc LF5CE
lda (L0017),Y
sta L8003 ;send byte lan
iny
sty L0015
bne LF5B7
beq LF5A6
LF5CE: ror A
bcc LF5BB
bcs LF5A6
LF5D3: ldy L001F
lda L00F5,Y
bne LF613
ldy L0011
LF5DC: lda L8002
ror A
bcc LF5ED
lda L8003
beq LF600
cmp L0010
beq LF600
bne LF613
LF5ED: and #$02
beq LF5DC
bne LF613
LF5F3: cpy L0012
beq LF60B
LF5F7: lda L8002
ror A
bcc LF607
lda L8003 ;get byte from lan
LF600: sta (L0013),Y
iny
sty L0011
bne LF5F3
LF607: and #$02
beq LF5F7
LF60B: tya
ldy L001F
sta L00F5,Y
sta L0025
LF613: pla
tay
pla
inc L0026
rti
IRQ: pha
txa
pha
tya
pha
lda LA00D
bmi LF633
lda L8004
bmi LF64A
lda L8002
bmi LF65C
LF62D: pla
tay
pla
tax
pla
rti
LF633: tax
and #$02
beq LF63B
jmp LF662
LF63B: txa
and #$40
beq LF643
jmp LF685
LF643: lda #$BD
sta LA00D
bne LF62D
LF64A: ldx L0024 ;consol
beq LF655
and #$02
beq LF62D
jmp LF6B4
LF655: and #$71
beq LF62D
jmp LF696
LF65C: lda L8003 ;lan
jmp LF62D
LF662: lda L0006
bne LF678
inc L0006
ldx #$00
jsr LF3BE
lda LA00C
and #$FE
sta LA00C
jmp LF67F
LF678: inc L0007
lda #$02
sta LA00E
LF67F: lda LA001
jmp LF62D
LF685: dec L000F
bne LF690
inc L0008
lda #$40
sta LA00E
LF690: lda LA004
jmp LF62D
LF696: and #$70 ;recieve sio byte
beq LF69C
inc L000D
LF69C: lda L8005
ldy $00
sta (L0002),Y
iny
sty $00
cpy L0001
bne LF6B1
inc L000E
lda #$55
sta L8004
LF6B1: jmp LF62D
LF6B4: ldy L0004 ;send sio byte
cpy L0005
beq LF6C5
iny
sty L0004
lda (L000B),Y
sta L8005
jmp LF6D1
LF6C5: lda #$55
sta L8004
lda #$00
sta L0024
lda L8005
LF6D1: jmp LF62D
;-----------------------------------------
; $FC00
;consol code
*= $0700
;
BEGIN .byte $00
.BYTE $05
.WORD BEGIN
.WORD START
clc
rts
START lda #$5F
sta VPRCED
lda #$08
sta VPRCED+1
lda #$00
sta L08BF
lda PACTL
ora #$01
sta PACTL
lda #$2F
sta DOSVEC
lda #$07
sta DOSVEC+1
lda #$C9
ldy #$08
jsr L0844
rts
L072F: ldx #$10
lda #$03
sta IOCB0+ICCOM,X
lda #$BB
sta IOCB0+ICBAL,X
lda #$08
sta IOCB0+ICBAH,X
lda #$04
sta IOCB0+ICAX1,X
jsr CIOV
L0748: lda #$C0
ldy #$08
jsr L0844
L074F: lda CH ;get key press
cmp #$FF
bne L075E
lda L08BF ; proceed on sio flag
beq L074F ;wait loop
jmp L0777 ;get data from lan
L075E: jsr L0827 ; keyboard input
sta DAUX1
jsr L0839
lda #$9B
jsr L0839
jsr L086C
bpl L0777
lda #$F0
ldy #$08
bne L078E
L0777: jsr L088F
bmi L07B8
lda L0400
cmp #$FF
bne L0794
lda L0401
cmp #$FF
bne L0794
lda #$E2
ldy #$08
L078E: jsr L0844
jmp L0748
L0794: lda #$07
sta RUNAD
lda #$07
sta RUNAD+1
lda #$FF
sta L08BD
sta L08BE
ldx #$10
lda #$0C
sta IOCB0+ICCOM,X
jsr CIOV
jmp L07C2
L07B3: jsr L088F
bpl L07C2
L07B8: lda #$FE
ldy #$08
jsr L0844
jmp L072F
L07C2: ldx L0401
lda L0400
cmp L08BD
bne L07D2
cpx L08BE
beq L07B3
L07D2: sta DAUX1
sta L08BD
stx L08BE
lda L0402
beq L081B
lda L0400
sta RAMLO
lda L0401
sta RAMLO+1
lda #$07
sta INITAD
lda #$07
sta INITAD+1
lda L0402
and #$7F
tay
tax
dey
L07FC: lda L0403,Y
sta (RAMLO),Y
dey
bpl L07FC
clc
txa
adc RAMLO
sta RAMLO
lda RAMLO+1
adc #$00
sta RAMLO+1
bit L0402
bpl L0818
jsr L0821
L0818: jmp L07B3
L081B: jsr L0824
jmp L072F
L0821: jmp (INITAD)
L0824: jmp (RUNAD)
L0827: ldx #$10
lda #$00
sta IOCB0+ICBLL,X
sta IOCB0+ICBLH
lda #$07
sta IOCB0+ICCOM,X
jmp CIOV
L0839: pha
ldx #$00
txa
sta IOCB0+ICBLL,X
pla
jmp CIOV
L0844: ldx #$00
sta IOCB0+ICBAL,X
tya
sta IOCB0+ICBAH,X
lda #$09
sta IOCB0+ICCOM,X
lda #$00
sta IOCB0+ICBLH,X
lda #$28
sta IOCB0+ICBLL,X
jmp CIOV
VPROCDV inc L08BF
lda PACTL
ora #$01
sta PACTL
pla
rti
L086C: jsr L087C
lda #$31 ;1
sta DCOMND
lda #$00
sta DSTATS
jmp SIOV
L087C: lda #$70 ;device id
sta DDEVIC
lda #$01
sta DUNIT
sta DTIMLO
lda #$FF
sta DAUX2
rts
L088F: lda L08BF
beq L088F
lda #$00
sta L08BF
sta DBYTHI
jsr L087C
lda #$FF
sta DBUFLO
lda #$03
sta DBUFHI
lda #$52 ;Read
sta DCOMND
lda #$40
sta DSTATS
lda #$81
sta DBYTLO
jmp SIOV
.byte "K:"
L08BD: .byte $00
L08BE: .byte $00
L08BF: .byte $00
L08C0: .BYTE "FILE # ?"
.BYTE $9B
.BYTE $C1 ;inverse A
.byte "TARI "
.BYTE $CC ;inverse L
.BYTE "OCAL "
.BYTE $C1
.BYTE "rea "
.BYTE $CE
.BYTE "ETWORK"
.BYTE $9B
.BYTE "** NO FILE **"
.BYTE $9B
.BYTE "** XMT ERR **"
.byte $9B
.BYTE "** READ ERR **"
.BYTE $9B
*=$FFFA
.WORD NMI
.WORD RESET
.WORD IRQ
Atari 800 Network Modules in 1983
Started by Curt Vendel, Dec 5 2002 7:38 AM
30 replies to this topic
#26
Posted Mon Nov 22, 2010 3:15 AM
#27
Posted Mon Nov 22, 2010 6:57 AM
Any chance of producing any of these once everything is figured out?
#28
Posted Mon Nov 22, 2010 8:02 AM
Hello OldAtarian
I want at least two! So I'm in.
sincerely
Mathy
I want at least two! So I'm in.
sincerely
Mathy
#29
Posted Fri Dec 3, 2010 11:33 PM
Ditto.
Please let me know when these are available.
Please let me know when these are available.
#30
Posted Sat Apr 16, 2011 6:07 PM
bump
#31
Posted Mon Aug 8, 2011 6:38 AM
Necrobump 
I'm still debating whether to put a cash bounty on the first person to figure out how to load the driver and make the code work. Any hungry programmers out there?
I'm still debating whether to put a cash bounty on the first person to figure out how to load the driver and make the code work. Any hungry programmers out there?
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users














