Files
Shawn Quick dfcaae62dd Add qlink, the disk tools, and a bootable ProDOS 8 image.
Move the assembler to src/qasm. qlink links OMF 1.0 and 2.0 from a script. makeBin flattens a load file, qomf dumps OMF, and qpro builds ProDOS volumes. APW and MPW assemble through the ORCA front end. Relocatable modules emit OMF objects. Listings stay off unless -l is set.

make boot assembles the GS/OS 6.0.1 ProDOS 8 kernel and BASIC.SYSTEM into an 800K volume. BASIC.SYSTEM accepts ls and pfx, and its splash reports PRODOS BASIC 2.0, copyright 1983-2026. IIGS.601.SRC is the source and the BASIC.SYSTEM oracle that image is built from.
2026-10-16 14:41:55 -07:00

1 line
3.3 KiB
Plaintext

;
; BootLog16
;
; This is the Logon program used during booting under GS/OS
;
; 12-Nov-91 MSD (Apple II Setup 2.2d21)
; Changed LogonData to start at $3000 to prevent it overlapping Fizzy
; at $1xxx. If you mounted 8 or more volumes at boot time, the
; results of the FIListSessions call would wipe out the code in Fizzy
; that Logon was supposed to return to.
;
Print OFF
MACHINE M65816
INCLUDE 'cons.macros'
include 'Console.equates'
longa off
longi off
Print ON,NOGEN
; macro to make an AppleTalk call for P16
macro
&lab ATCall &Parm
&lab phx ; X and Y must be preserved
phy
clc
xce ; force native mode!
rep #$30
longa on
longi on
ldx #&parm
ldy #^&parm
jsl $E11014 ; Ram Dispatch
sep #$30
longa off
longi off
ply
plx
mend
**************************************************
* OSFlag indicates the application type and is defined
* as follows:
*
* ProDOS 16 application = 64
* ProDOS 8 application = 0
* ProDOS 16 Boot Blocks = 192
* ProDOS 8 Boot Blocks = 128
*
**************************************************
OSFlag equ 192 ;ProDOS 16 Application
NBPBuffLen equ 8192
AFPVersion equ $0200 ;AFP version 2.0
CardPtr equ $FE
LogonData Record $3000
ReplyBuff DS.B 768
ArrayBuff DS.B 512
WindowBuff DS.B 512
MySelArray DS.B 256
FSName DS.B 64
NameBuffer DS.B 64
PassBuffer DS.B 16
NewPassWrd DS.B 16
LogPckt DS.B 128
Prefix DS.B 128
SessBuff DS.B 1024
CompSelArray DS.B 256
NBPBuffer ds.b NBPBuffLen
EndR
BootLog16 PROC export
export (InitParm,FrameParms1,MainWindow):code
export (TitLine,SelXPos,SelYPos):code
export (Increment,Selindex,StgArrayPtr):code
export (ArrayCnt,ListOptByte,ListParms):code
export (RestoreBox,MessParms,MessPtr):code
export (FilterProc,MessOpt):code
export (MessageWind,MainWindow):code
export FileOpenErr:code
export (Mess0,Mess20,Mess15):code
import ZPLabel
import LoaderLen:equ
import ConsDrvr
with LogonData
phk
plb
sep #$30
longa off
longi off
pha ; save GS/OS versus P8 flag
lda #$C0
sta InitParm
InitConsole
CursorOff
jsr DrawLogOnScrn ; draw splash screen
pla ; get BootOS flag again
jsr Logon
rep #$30
longa on
longi on
rtl
INCLUDE 'logon.main'
INCLUDE 'icon.aii'
ENDP
MLI equ $BF00
RomIn equ $c082
SetVid equ $fe93
SetKbd equ $fe89
Home equ $FC58
Clr80Vid equ $c00c
SetAltChar equ $c00f
Clr80Col equ $c000
BasStart equ $2000
OurPath equ $280
ZPLabel Proc Export
endp
ZPCode Proc Export,TempORG $1000
import FileOpenErr
jsr mli ;ISSUE THE PRODOS OPEN COMMAND
dc.b $c8
dc.w LaunOpen
beq OpenOk
jmp FileOpenErr ;this is a terminal error
OpenOk lda OpenRef ;GET A REF NUM
sta ReadRef ;SAVE IT FOR READ
jsr mli ;AND ISSUE THE READ COMMAND
dc.b $ca
dc.w LaunRead
beq ReadOk
lockup jmp lockup ;were in trouble now, just hang
ReadOk jsr mli ;AND NOW ISSUE THE CLOSE COMMAND
dc.b $cc
dc.w LaunClose
cld
lda RomIn
jsr SetVid
jsr SetKbd
jsr Home
sta Clr80Vid
sta SetAltChar
sta Clr80Col
ldx #$ff
txs
jmp BasStart
LaunOpen
dc.b 3
dc.w OurPath
dc.w $bb00
OpenRef dc.b 0
*
LaunRead
dc.b 4
ReadRef dc.b 0
dc.w $2000
dc.w $ffff
dc.w 0000
*
LaunClose
dc.b 1
dc.b 0
LdrBottom
export LoaderLen:equ
LoaderLen equ LdrBottom-ZPCode
ENDP
end