Use names for more ROM routines and for "reset".

This commit is contained in:
Dave Lyons 2020-08-31 00:46:01 -07:00
parent 52d1065714
commit f4947cda68
17 changed files with 125 additions and 237 deletions

View File

@ -45,18 +45,21 @@ button2 = $c063
;
; ROM routines
;
prblnk = $f948 ; print 3 blanks
f8rom_init = $fb2f
pwrdup = $fb6f
pwrdup = $fb6f ; aka SETPWRC
machine = $fbb3
bascalc = $fbc1
bell1 = $fbdd
home = $fc58
wait = $fca8
crout = $fd8e
prbyte = $fdda
cout = $fded
idroutine = $fe1f ; GS or not GS
move = $fe2c
inverse = $fe80
normal = $fe84
inverse = $fe80 ; SETINV
normal = $fe84 ; SETNORM
setkbd = $fe89
setvid = $fe93
outport = $fe95

View File

@ -27,6 +27,7 @@
sta level
.endmacro
; [TODO] use .p816 instead of invoking this macro
.macro XCE
.byte $fb
.endmacro
.endmacro

View File

@ -11,8 +11,8 @@ print_time:
jsr validate_year_number
sec
jsr $fe1f ;an RTS in not-IIgs
bcs :+ ;not IIgs
jsr idroutine ;an RTS in not-IIgs
bcs :+ ;not IIgs
lda cfgclock ;Use IIgs clock?
bne doGSclk
: lda date+1

View File

@ -1,3 +1,6 @@
rdkey = $fd0c
;****************************************
;
; shell/runcmd -- SYS/BIN/S16 file runner
@ -7,7 +10,7 @@
run_s16:
jsr notspool
sec
jsr $fe1f ;IIgs?
jsr idroutine ;IIgs?
bcs typerr
lda #>bridge_name
ldy #<bridge_name
@ -101,8 +104,8 @@ copy280:
no_return:
jsr copy_loader
jsr off80
jsr $fe89
jsr $fe93
jsr setkbd
jsr setvid
start_normal
jsr home
lda #>cmdpath
@ -110,8 +113,8 @@ no_return:
jsr print_path
message_cstr_cr "..."
jsr hook_speech
lda $3f3
sta $3f4 ; cause Reset to reboot
lda reset+1
sta reset+2 ; cause Reset to reboot
lda #$ff ; disconnect NMI
ldy #$59
@ -301,13 +304,13 @@ myqcode:
cld
lda $c082
sta $c00c
jsr $fe89
jsr $fe93
jsr setkbd
jsr setvid
start_normal
jsr f8rom_init
jsr home
lda $3f3
sta $3f4
lda reset+1
sta reset+2
; init brkv
lda #$fa
sta $3f1
@ -357,7 +360,7 @@ qtprobx:
jsr qtone
lda #$e
jsr qtone
jsr $fd0c
jsr rdkey
jsr home
jmp rtn_again-myqcode+$1000
@ -444,9 +447,9 @@ lderr1: lda lderrmsg-loader+$1800,x
bpl lderr1
pla
jsr prbyte
lda $3f3
sta $3f4
jsr $fd0c
lda reset+1
sta reset+2
jsr rdkey
CALLOS mli_bye, ldbye-loader+$1800
jmp ($fffc)
ldbye: .byte 4,0,0,0,0,0,0

View File

@ -97,7 +97,7 @@ two_e: ror two_e_flag
no80xc: txa
pha
sec
jsr $fe1f ;Contains RTS in not-IIgs
jsr idroutine ;Contains RTS in not-IIgs
pla
bcs no_IIgs
ora #%00001000 ;IIgs

View File

@ -67,7 +67,7 @@ find_mydir:
lda $281
ora #%10000000
cmp #$80+'/'
cmp #_'/'
bne fdir_partial
lda #0
sta mypath
@ -96,7 +96,7 @@ strip_mp:
beq :+
lda mypath,x
ora #%10000000
cmp #$80+'/'
cmp #_'/'
bne strip_mp
: stx mypath
stx mydir_len
@ -174,7 +174,7 @@ pe_fnd: inc p
jmp crout
pe_notfnd:
lda #$80+'$'
lda #_'$'
jsr cout
lda errcode
jsr prbyte
@ -189,14 +189,14 @@ bell:
lda cfgbell
bne sysbell
ldy #32
bell1: lda #2
: lda #2
jsr wait
sta spkr
lda #$24
jsr wait
sta spkr
dey
bne bell1
bne :-
rts
fix_stack:

View File

@ -1846,8 +1846,8 @@ go_quit:
sta $3fd
sty $3fc
lda $3f3
sta $3f4
lda reset+1
sta reset+2
; quitting to S16?
bit s16_flag
bmi quit_s16
@ -1883,7 +1883,7 @@ go_boot:
; If IIgs, do what the ProDOS-16 PQUIT thinger does
; on 'Reboot system'
sec
jsr $fe1f ;CLC on IIgs
jsr idroutine ;CLC on IIgs
bcs rb_NotGS
sei
lda #0
@ -5910,8 +5910,8 @@ off80:
.if IsDavex2
jsr mess
.byte _'U'-ctrl,_'T'-ctrl,_'A',_'1',0 ; for an old 80-column card on Apple II+?
jsr $fe89
jsr $fe93
jsr setkbd
jsr setvid
jsr hook_speech
.else ; isDavex3
jsr on40

View File

@ -33,11 +33,13 @@
.segment "CODE_2000"
orgadr = $2000
; sys
; org orgadr
.include "Common/2/Apple.Globals2.asm"
.include "Common/2/Mli.globals2.asm"
;
rdkey = $fd0c
.define _(char) char | $80
;*********************************************
filebuff = $bb00
@ -54,27 +56,27 @@ thePath: .byte 0,0,0,0,0,0,0,0,0,0 ;10 zeroes
.byte 0,0,0,0,0,0,0,0,0,0 ;10 zeroes
.byte 0,0,0,0,0,0,0,0,0,0 ;10 zeroes
image2 = *
lda $3f3
sta $3f4
jsr $fe84
jsr $fb2f
jsr $fe89
jsr $fe93
jsr $fc58
lda reset+1
sta reset+2 ; make reset reboot
jsr normal
jsr f8rom_init
jsr setkbd
jsr setvid
jsr home
lda $c000
cmp #$b8
cmp #_'8'
beq yes80
cmp #$b3 ;"3"?
cmp #_'3'
bne no80colmn
yes80: lda #$c3
ldy #0
sta $37
sty $36
sta $c010 ;clear kbd
jsr $fd8e ;crout
sta kbdstrb ;clear kbd
jsr crout
no80colmn = *
lda $3f3
sta $3f4
lda reset+1
sta reset+2
lda #0
sta level
ldx #0
@ -88,12 +90,12 @@ copyme: lda $2000,x
bne copyme
jmp continue+diff1
i_error: pha
jsr $fc58
jsr home
pla
jsr $fdda
jsr $fbdd
jsr $fbdd
jsr $fd0c
jsr prbyte
jsr bell1
jsr bell1
jsr rdkey
OutaHere = *
jsr mli
.byte mli_bye

View File

@ -45,7 +45,6 @@
orgadr = $9800
; org orgadr
;prbyte = $fdda
;
myversion = $09
minversion = $11

View File

@ -115,37 +115,29 @@ systemtype:
asc "System: "
.byte 0
sec
jsr $fe1f
jsr idroutine
bcc st_gs
jmp IdentNotGS
;
st_gs: jsr xmess
asc "Apple IIgs, ROM version $"
.byte 0
clc
; [TODO] Use .p816
.byte b_xce,b_rep,$30
jsr $fe1f
jsr idroutine
.byte b_phy
sec
.byte b_xce
pla
jsr $fdda
jsr prbyte
jsr xmess
asc " (Machine ID=$"
.byte 0
pla
jsr $fdda
jsr prbyte
jsr xmess
asc ")"
.byte 0
jsr my_crout
clc
@ -163,10 +155,7 @@ st_gs: jsr xmess
sec
.byte b_xce
jsr xmess
asc "Total RAM = "
.byte 0
ldx #10
div1K: lsr totalmem+3
@ -213,29 +202,20 @@ not_2p3:
cmp #$ea
bne Not2e1
jsr xmess
asc "Apple IIe (unenhanced)"
.byte 0
rts
Not2e1: cmp #$e0
bne not2e2
jsr xmess
asc "Apple IIe (enhanced)"
.byte 0
rts
not2e2:
cmp #$e1
bne notDbgr
jsr xmess
asc "Apple IIe (special ROMs)"
.byte 0
rts
notDbgr:
@ -246,10 +226,7 @@ notDbgr:
cmp #5
beq IIcPlus
jsr xmess
asc "Apple IIc, version "
.byte 0
lda $fbbf
cmp #$ff
@ -262,45 +239,28 @@ notDbgr:
beq TwoC4
unkn0: jmp unknown
IIcPlus: jsr xmess
asc "Apple IIc Plus"
.byte 0
rts
TwoC1: jsr xmess
asc "1"
.byte 0
rts
TwoC2: jsr xmess
asc "2: 3.5"
.byte $a2
asc " disk ROM"
.byte 0
rts
TwoC3: jsr xmess
asc "3: Memory Expandable"
.byte 0
rts
TwoC4: jsr xmess
asc "4: Revised Mem. Expandable"
.byte 0
rts
;****************************************************
scanslots:
lda #1
@ -313,19 +273,13 @@ ss1: jsr scan1
rts
;
scan1: jsr xmess
asc "Slot "
.byte 0
lda slot
ora #'0'+$80
ora #_'0'
jsr cout
jsr xmess
asc ": "
.byte 0
lda slot
ora #$c0
@ -334,9 +288,8 @@ scan1: jsr xmess
sta rom
jsr PrSlotDesc
jsr my_crout
jsr MaybeATLK
rts
;
jmp MaybeATLK
ATLKsig: asc "ATLK"
.byte 0
MaybeATLK:
@ -348,10 +301,7 @@ at_chk: lda (rom),y
cpy #$FE
bcc at_chk
jsr xmess
asc " AppleTalk card; version="
.byte 0
ldy #$fe
lda (rom),y
@ -377,15 +327,12 @@ prnib: and #$0F
adc #6
prn_dig: adc #$B0
jmp cout
;
SlotEmpty: jsr xmess
asc "empty"
.byte 0
rts
;
notPasc0: jmp notPasc
PrSlotDesc:
ldy slot
@ -408,19 +355,13 @@ PrSlotDesc:
lda (rom),y
pha
jsr xmess
asc "Pascal ID = $"
.byte 0
pla
pha
jsr prbyte
jsr xmess
asc ": "
.byte 0
pla
lsr a
@ -439,31 +380,19 @@ PascTbl:
.addr ps8-1,ps9-1,ps10-1,ps0-1,ps0-1,ps0-1,ps0-1,ps0-1
;
ps0: jsr xmess
asc "???"
.byte 0
rts
ps1: jsr xmess
asc "printer"
.byte 0
rts
ps2: jsr xmess
asc "joystick/mouse"
.byte 0
rts
ps3: jsr xmess
asc "serial or parallel card"
.byte 0
rts
ps4: jsr xmess
@ -614,16 +543,13 @@ desNotSP: inc slot
;
Descr1SP:
jsr xmess
asc "SmartPort controller found in slot "
.byte 0
lda slot
ora #'0'+$80
ora #_'0'
jsr cout
jsr xmess
.byte $80+'.',cr,0
.byte _'.',cr,0
; find the entry point
ldy #$ff
lda (rom),y
@ -647,10 +573,7 @@ SpStatus:
jsr CallSP
bcs staterr
jsr xmess
asc "Number of devices: "
.byte 0
lda #0
ldy NumDevs
@ -680,10 +603,7 @@ es_done: rts
;
StatOneUnit:
jsr xmess
asc "Unit #"
.byte 0
lda Unit
sta UnitNum
@ -691,10 +611,7 @@ StatOneUnit:
lda #0
jsr xprdec_2
jsr xmess
asc ": "
.byte 0
ldx #sptSTATUS
lda #>Stat1parms
@ -709,10 +626,7 @@ statok:
jsr my_crout
;
jsr xmess
asc " Blocks: "
.byte 0
lda NumBlocks+2
ldx NumBlocks+1
@ -724,10 +638,7 @@ statok:
jsr my_crout
;
jsr xmess
asc " Device name: "
.byte 0
ldx #0
ldy NameLen
@ -741,48 +652,32 @@ prname1: lda NameLen+1,x
;
jsr PrintType
jsr xmess
asc ", subtype=$"
.byte 0
lda DevSubtype
jsr $fdda
jsr prbyte
jsr xmess
asc ", version=$"
.byte 0
lda UnitVersion+1
jsr $fdda
jsr prbyte
lda UnitVersion
jsr $fdda
jsr my_crout
rts
jsr prbyte
jmp my_crout
;
PrintType:
jsr xmess
asc " Type = "
.byte 0
lda #0
ldy DevType
jsr xprdec_2
jsr xmess
asc " ("
.byte 0
jsr prtype2
jsr xmess
asc ")"
.byte 0
rts
@ -803,27 +698,18 @@ PrintStatByte:
sta scratch
jsr sb7
jsr xmess
asc ", "
.byte 0
asl scratch
asl scratch
jsr ChkNot
jsr xmess
asc "online, "
.byte 0
asl scratch
jsr ChkNot
jsr xmess
asc "write protected"
.byte 0
rts
;

View File

@ -175,12 +175,12 @@ DoTheOffset = *
jsr cout
lda offset+2
;beq dto_1
jsr $fdda
jsr prbyte
dto_1: lda offset+1
jsr $fdda
jsr prbyte
lda offset
jsr $fdda
lda #':'+$80
jsr prbyte
lda #_':'
jsr cout
lda #Space
jsr cout
@ -218,7 +218,7 @@ DoTheHex = *
MoreHex: cpx count
bcs Blanks
lda data,x
jsr $fdda
jsr prbyte
lda #Space
jsr cout
inx

View File

@ -249,9 +249,9 @@ detail: lda #'d'+$80
.byte 0
lda catbuff+$20
jsr $fdda
jsr prbyte
lda catbuff+$1f
jsr $fdda
jsr prbyte
jsr xmess
@ -308,7 +308,7 @@ plainpath:
ldy #<catbuff
jmp xprint_path
abort0: sta $c010
abort0: sta kbdstrb
abort: lda #der_abort
jmp xProDOS_err

View File

@ -72,7 +72,7 @@ badslot:
;*********************************************
start: sty slotnum
sec
jsr $fe1f
jsr idroutine
bcc is_gs
jsr xmess
.byte cr
@ -206,9 +206,9 @@ nh_error:
asc "*** error allocating memory: $"
.byte 0
lda error2+1
jsr $fdda ;PRBYTE
jsr prbyte
lda error2
jsr $fdda ;PRBYTE
jsr prbyte
jsr crout
jmp my_xerr
@ -248,22 +248,22 @@ PrintBuffInfo:
asc ", address=$"
.byte 0
lda buffadr+3
jsr $fdda
jsr prbyte
lda buffadr+2
jsr $fdda
jsr prbyte
lda buffadr+1
jsr $fdda
jsr prbyte
lda buffadr
jsr $fdda
jsr prbyte
jmp crout
error: jsr xmess
.byte cr
asc "*** extended call returned error $"
.byte 0
lda result+1
jsr $fdda
jsr prbyte
lda result
jsr $fdda
jsr prbyte
jsr crout
jmp my_xerr

View File

@ -34,7 +34,7 @@ OrgAdr = $9000 ;change as necessary (end below $B000)
BigBuffer = $A000
MyVersion = $05
MinVersion = $11
MinVersion = $14
;*********************************************
rts
.byte $ee,$ee
@ -45,14 +45,14 @@ MinVersion = $11
.addr start
.byte 0,0,0,0
; parameters here
.byte $80+'l',t_nil
.byte $80+'i',t_nil
.byte $80+'z',t_string
.byte $80+'p',t_nil
.byte $80+'k',t_string
.byte $80+'s',t_nil
.byte $80+'n',t_string
.byte $80+'r',t_yesno
.byte 'l',t_nil
.byte 'i',t_nil
.byte 'z',t_string
.byte 'p',t_nil
.byte 'k',t_string
.byte 's',t_nil
.byte 'n',t_string
.byte 'r',t_yesno
.byte 0,0
descr: pstr "AppleTalk experimental"
@ -337,9 +337,8 @@ DoPrinter:
jsr xprint_path
jsr crout
lda dirFlag
jsr $fdda
jsr crout
rts
jsr prbyte
jmp crout
PrinterP:
.byte 0
@ -355,7 +354,7 @@ DoLookup:
lda #'='
sta pagebuff+1
lda #'k'+$80
lda #'k'
jsr xgetparm_ch
bcc use_Kind
lda #>Wildcard
@ -370,7 +369,7 @@ copyKind:
dey
bpl copyKind
lda #'z'+$80
lda #'z'
jsr xgetparm_ch
bcs UseMyZone
sta str+1
@ -397,9 +396,7 @@ copyZ: lda (str),y
.addr LookupP
jsr xmess
asc "Number of matches: $"
.byte 0
lda lkupCount
jsr prbyte

View File

@ -24,11 +24,10 @@
OrgAdr = $A000 ;change as necessary (end below $B000)
; org OrgAdr
PrByte = $fdda
Space = $A0
;
MyVersion = $10
MinVersion = $11
MyVersion = $11
MinVersion = $14
;*********************************************
rts
.byte $ee,$ee
@ -40,9 +39,9 @@ MinVersion = $11
.byte 0,0,0,0
; parameters here
.byte 0,t_wildpath
.byte $80+'l',t_int1 ;minimum length
.byte $80+'o',t_nil ;offsets
.byte $80+'m',t_nil ;allow mixed bit 7
.byte 'l',t_int1 ;minimum length
.byte 'o',t_nil ;offsets
.byte 'm',t_nil ;allow mixed bit 7
.byte 0,0
descr: pstr "find printable strings in files"
@ -69,7 +68,7 @@ start: nop ;don't let shell print wildcards
ldy open_path
jsr xprint_path
jsr xmess
.byte $80+':',cr,0
.byte _':',cr,0
;
; Open the source file
;
@ -272,12 +271,12 @@ DoTheOffset = *
lda #'$'+$80
jsr cout
lda offset+2
jsr PrByte
jsr prbyte
lda offset+1
jsr PrByte
jsr prbyte
lda offset
jsr PrByte
lda #':'+$80
jsr prbyte
lda #_':'
jsr cout
lda #Space
jsr cout

View File

@ -52,6 +52,7 @@
.include "Common/2/Mli.globals2.asm"
.include "Common/Macros.asm"
rdkey = $fd0c
.segment "CODE_A000"
@ -404,12 +405,12 @@ copyme: lda $2000,x
bne copyme
jmp continue ; +diff1
i_error: pha
jsr $fc58
jsr home
pla
jsr $fdda
jsr $fbdd
jsr $fbdd
jsr $fd0c
jsr prbyte
jsr bell1
jsr bell1
jsr rdkey
jsr mli
.byte mli_bye
.addr bye_parms ; +diff1

View File

@ -449,9 +449,9 @@ wait_ac2: jsr inchar
debugByte:
bit Debug
bpl dbbx
jsr $fdda
lda #$a0
jsr $fded
jsr prbyte
lda #_' '
jsr cout
dbbx: rts
;
print_status:
@ -463,10 +463,7 @@ print_status:
rts
stat1: jsr xmess
.byte cr
asc_hi "S=1"
.byte cr,0
rts
;