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
5959ENVREG = $FFDF ; ENVIRONMENT REGISTER
6060BANK_REG = $FFEF ; BANK REGISTER
6161KEYBD = $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)
6363SYSERR = $1928 ; REPORT ERROR TO SYSTEM
6464
6565E_IFR = $FFED ; VIA E INTERRUPT FLAG REGISTER
@@ -125,6 +125,14 @@ WRITEBUF: .BYTE 24 ; SET CURSOR XPOS
125125ROW: .BYTE 3 ; ROW 3
126126LINE: .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
129137CLOSECON: .BYTE 1
130138CLOSEREF: .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+
173187LOOP: 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
0 commit comments