Skip to content

Commit 2027b27

Browse files
committed
Fix bank handling for driver print
1 parent c253641 commit 2027b27

File tree

6 files changed

+40
-8
lines changed

6 files changed

+40
-8
lines changed

disks/plasma_hd.po

0 Bytes
Binary file not shown.

disks/sos_selector_hd.po

0 Bytes
Binary file not shown.

disks/sos_selector_tdm_hd.po

0 Bytes
Binary file not shown.

src/sos/bfm.init2.s

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
; I've had this idea for a while, just not sure on how to implement it. I noticed when looking
88
; through the desktopmanager code, its driver uses an event to run after they are loaded to do its init.
99
; I wrote a driver using this method to print them, but then realised i can put it in here, so don't
10-
; need the vent stuff.
10+
; need the event stuff.
1111
; Prints:
1212
; - which drivers are loaded
1313
; - prints the loaded address and bank for debugging
@@ -59,7 +59,7 @@ ZZORG:
5959
ENVREG = $FFDF ; ENVIRONMENT REGISTER
6060
BANK_REG = $FFEF ; BANK REGISTER
6161
KEYBD = $C008 ; KEYBOARD B REG
62-
EXTPG = $1401 ; DRIVER EXTENDED BANK ADDRESS OFFSET
62+
EXTPG = $1601 ; EXTENDED BANK ADDRESS OFFSET (we are in the interpreter environment)
6363
SYSERR = $1928 ; REPORT ERROR TO SYSTEM
6464

6565
E_IFR = $FFED ; VIA E INTERRUPT FLAG REGISTER
@@ -125,6 +125,14 @@ WRITEBUF: .BYTE 24 ; SET CURSOR XPOS
125125
ROW: .BYTE 3 ; ROW 3
126126
LINE: .RES 75,$A0
127127

128+
; CLEAR CONSOLE PARAM LIST
129+
CLEARCON: .BYTE 3
130+
CLEARREF: .BYTE 0
131+
.WORD CLRSCR
132+
.WORD 1
133+
134+
CLRSCR: .BYTE 28 ; CLEAR VIEWPORT
135+
128136
; CLOSE CONSOLE PARAM LIST
129137
CLOSECON: .BYTE 1
130138
CLOSEREF: .BYTE 0
@@ -159,6 +167,7 @@ PRINT: PLA ;RESTORE ENVIRONMENT
159167
@OK1: LDA CONSREF ;UPDATE REFERENCE NUMBERS
160168
STA INITREF
161169
STA WRITEREF
170+
STA CLEARREF
162171
STA CLOSEREF
163172
BRK ;INIT CONSOLE
164173
.BYTE SOS_WRITE
@@ -168,15 +177,19 @@ PRINT: PLA ;RESTORE ENVIRONMENT
168177
JSR SYSERR
169178

170179
; LETS RUN THROUGH EACH DEVICE DRIVER
171-
@OK2: LDX #1 ;START AT DEV 1
180+
@OK2: LDA BANK_REG ;SAVE CURRENT BANK
181+
PHA
182+
LDA #0 ;DISABLE EXTENDED ADDRESSING
183+
STA POINTER+EXTPG
184+
LDX #1 ;START AT DEV 1
172185
STX DEVICE
186+
173187
LOOP: LDA SDT_DIBL,X ;GET POINTER TO DIB FROM SOS DEV TABLE
174188
STA POINTER
175189
LDA SDT_DIBH,X
176190
STA POINTER+1
177191
LDA SDT_BANK,X
178-
STA POINTER+EXTPG
179-
192+
STA BANK_REG
180193
; GRAB THE NAME OF THE DRIVER
181194
LDY #0
182195
LDA (POINTER),Y ;GET NAME LENGTH FROM DIB
@@ -186,7 +199,7 @@ LOOP: LDA SDT_DIBL,X ;GET POINTER TO DIB FROM SOS DEV TABLE
186199
LDA (POINTER),Y ;GET THE NAME
187200
STA LINE,Y ;STORE NAME IN CONSOLE WRITE BUFFER
188201
DEX
189-
BPL @L1
202+
BNE @L1
190203

191204
LDA #16 ;ALLOW 16 CHARS FOR NAME
192205
CLC
@@ -247,7 +260,9 @@ LOOP: LDA SDT_DIBL,X ;GET POINTER TO DIB FROM SOS DEV TABLE
247260
JMP LOOP
248261

249262

250-
DONE: LDA ENVREG ;TURN ON CXXX I/O
263+
DONE: PLA ;RESTORE BANK_REG
264+
STA BANK_REG
265+
LDA ENVREG ;TURN ON CXXX I/O
251266
PHA ;SAVE CURRENT STATE
252267
ORA #$40
253268
STA ENVREG
@@ -259,6 +274,11 @@ WAIT: LDA KEYBD ;CHECK IF CTRL KEY IS STILL DOWN
259274
PLA ;RESTORE ENVREG
260275
STA ENVREG
261276

277+
278+
BRK ;CLEAR SCREEN
279+
.BYTE SOS_WRITE
280+
.WORD CLEARCON
281+
262282
BRK ;CLOSE CONSOLE
263283
.BYTE SOS_CLOSE
264284
.WORD CLOSECON

src/sos/scmgr.s

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
; Update ADR_HIGH to $BC00 to allow call from print driver routine
2+
; SOS does not allow to call itself, this increases the address
3+
; so it passes from the print driver routine
4+
;
5+
; Updates by Robert Justice
6+
;
17
;SBTL "SOS 1_1 SYSTEM CALL MANAGER"
28
;.RELOC
39
.SEGMENT "CODE"

src/sos/sosldr.s

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
; D_PATH2 ".PB2/SOS.DRIVER"
1414
; set K_DRIVES to 2, then don't update from driver file
1515
;
16+
; - Call new print driver routine, checks for 'ctrl' key pressed
17+
; Hold ctrl down to keep the driver list on the screen
18+
;
1619
; Updates by Robert Justice
1720
;
1821
; macro to support setting the most significant bit on for ascii strings with EDASM MSB ON
@@ -630,7 +633,7 @@ TXS
630633
; +---------------+
631634
LDA SYSBANK ; BREG:=SYSBANK ! SEE FIGURE 4. !
632635
STA B_REG ; +---------------+
633-
JSR PRTDRIV ;Go see if we want to print the loaded drivers
636+
; JSR PRTDRIV ;Go see if we want to print the loaded drivers
634637
JMP (I_BASE_P) ; SOS LOAD COMPLETE - JMP TO INTERPRETER
635638
;
636639
;THE END.
@@ -1214,6 +1217,9 @@ WAIT: INC SRC_P ; WAIT FOR
12141217
;
12151218
LDA #$80 ; TURN VIDEO ON
12161219
STA SCRNMODE
1220+
1221+
JSR PRTDRIV ;Go see if we want to print the loaded drivers
1222+
12171223
RTS
12181224
;***************************************************************************************************
12191225
;PAGE

0 commit comments

Comments
 (0)