mirror of
https://github.com/mgcaret/davex-mg-utils.git
synced 2024-12-13 17:29:37 +00:00
124 lines
3.2 KiB
ArmAsm
124 lines
3.2 KiB
ArmAsm
|
; %help
|
||
|
; at.info -- Display AppleTalk info.
|
||
|
;
|
||
|
; syntax: at.info
|
||
|
;
|
||
|
; Displays AppleTalk node number, bridge node, and (for IIgs) hardware
|
||
|
; ID and ROM version.
|
||
|
;
|
||
|
; If AppleTalk is offline, will print the slot number of an installed
|
||
|
; Workstation Card.
|
||
|
; %hend
|
||
|
|
||
|
.pc02
|
||
|
.include "davex-mg.inc"
|
||
|
|
||
|
cardptr = xczpage
|
||
|
|
||
|
DX_start $ae00 ; load address
|
||
|
DX_info $01,$12,dx_cc_iie_or_iigs,$00
|
||
|
DX_ptab
|
||
|
DX_end_ptab
|
||
|
DX_desc "Display AppleTalk info."
|
||
|
DX_main
|
||
|
cli ; appletalk requires interrupt
|
||
|
ATcall inforeq
|
||
|
bcs noatalk
|
||
|
lda thisnet
|
||
|
ldy thisnet+1
|
||
|
jsr xprdec_2
|
||
|
jsr xmess
|
||
|
asc_hi "."
|
||
|
.byte $00
|
||
|
lda #$00
|
||
|
ldy nodenum
|
||
|
jsr xprdec_2
|
||
|
ldy abridge
|
||
|
beq :+
|
||
|
phy
|
||
|
jsr xmess
|
||
|
asc_hi ", bridge "
|
||
|
.byte $00
|
||
|
ply
|
||
|
lda #$00
|
||
|
jsr xprdec_2
|
||
|
: lda #$8d
|
||
|
jsr cout
|
||
|
sec
|
||
|
jsr checkmach
|
||
|
bcs :+
|
||
|
; display IIgs specific
|
||
|
jsr xmess
|
||
|
asc_hi "Hardware ID: "
|
||
|
.byte $00
|
||
|
lda #$00
|
||
|
ldy hwid
|
||
|
jsr xprdec_2
|
||
|
jsr xmess
|
||
|
asc_hi ", ROM version "
|
||
|
.byte $00
|
||
|
lda #$00
|
||
|
ldy romver
|
||
|
jsr xprdec_2
|
||
|
lda #$8d
|
||
|
jsr cout
|
||
|
: rts
|
||
|
noatalk: lda #$01
|
||
|
jsr xredirect
|
||
|
jsr xmess
|
||
|
asc_hi "AppleTalk offline!"
|
||
|
.byte $00
|
||
|
jsr FindCard
|
||
|
bcs :+ ; no card
|
||
|
and #$0f ; get slot #
|
||
|
pha
|
||
|
jsr xmess
|
||
|
asc_hi "Workstation Card in slot "
|
||
|
.byte $00
|
||
|
pla
|
||
|
tay
|
||
|
lda #$00
|
||
|
jsr xprdec_2
|
||
|
jsr xmess
|
||
|
.byte $8d,$00
|
||
|
: lda #$ff
|
||
|
jsr xredirect
|
||
|
jmp xerr
|
||
|
.proc FindCard
|
||
|
lda #$f9 ; offset to ID bytes
|
||
|
sta cardptr
|
||
|
lda #$c7 ; start at slot 7
|
||
|
sta cardptr+1
|
||
|
NextSlot: ldy #$03
|
||
|
: lda (cardptr),y
|
||
|
cmp idtbl,y ; check ID byte
|
||
|
bne NoMatch
|
||
|
dey
|
||
|
bpl :-
|
||
|
ldy #$04
|
||
|
lda (cardptr),y
|
||
|
beq NoMatch ; Skip IIgs AppleTalk
|
||
|
cmp #$01 ; Workstation card?
|
||
|
bne NoCard ; nope, something else
|
||
|
clc
|
||
|
lda cardptr+1 ; get slot
|
||
|
rts
|
||
|
NoMatch: dec cardptr+1
|
||
|
lda cardptr+1
|
||
|
cmp #$c0 ;are we finished scanning the slots?
|
||
|
bne NextSlot
|
||
|
NoCard: lda #$00
|
||
|
sec
|
||
|
rts
|
||
|
idtbl: .byte "ATLK" ; msb off
|
||
|
.endproc
|
||
|
inforeq: .byte 0,2 ; sync GetInfo
|
||
|
.word $0000 ; result code
|
||
|
.dword $00000000 ; completion address
|
||
|
thisnet: .word $0000 ; this network #
|
||
|
abridge: .byte $00 ; local bridge
|
||
|
hwid: .byte $00 ; hardware ID, IIgs only
|
||
|
romver: .word $00 ; ROM version, IIgs only
|
||
|
nodenum: .byte $00 ; node number
|
||
|
DX_end
|