mirror of
https://github.com/marketideas/qasm.git
synced 2026-10-26 20:02:19 +00:00
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.
1 line
5.6 KiB
Plaintext
1 line
5.6 KiB
Plaintext
;------------------------------------------------------------
|
|
; BootLog8.aii
|
|
;
|
|
; This is the form of the Logon program embedded in the
|
|
; Apple //e Boot Blocks.
|
|
;
|
|
; 15-May-91 MSD Zero out the byte at $3F4 (the reset
|
|
; vector's check byte) to force Ctrl-Reset
|
|
; to reboot instead of dropping into the
|
|
; monitor.
|
|
;------------------------------------------------------------
|
|
machine m65c02
|
|
longa off
|
|
longi off
|
|
|
|
INCLUDE 'cons.macros'
|
|
include 'Console.equates'
|
|
|
|
; macro to make an AppleTalk call for P8
|
|
macro
|
|
&lab ATCall &Parm
|
|
&lab jsr $BF00
|
|
dc.b $42 ; AppleTalk call number
|
|
dc.w &Parm ; pointer to parameter block
|
|
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 128 ; ProDOS 8 boot blocks
|
|
NBPBuffLen equ 8192
|
|
AFPVersion equ $0200 ; AFP version 2.0
|
|
PDosInstall equ $2003 ; warm init ProDOS 8
|
|
|
|
CardPtr equ $FE
|
|
|
|
ResetVect equ $3F2 ; user's reset vector
|
|
|
|
; In P8 application, they would be equates to areas between $800 and $2000,
|
|
; except for NBPBuffer which would go up high in memory ($9F00). Here,
|
|
; NBPBuffer extends past $2000 where P8 was; this is OK since that memory
|
|
; is no longer needed by the time Logon is running.
|
|
|
|
LogonRec Record $800
|
|
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
|
|
BuffersEnd
|
|
EndR
|
|
|
|
BootLog8 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 LogonRec
|
|
|
|
;------------------------------------------------------------
|
|
;
|
|
; Init ProDOS 8, but don't have it find a startup application.
|
|
;
|
|
;------------------------------------------------------------
|
|
jsr PDosInstall
|
|
|
|
|
|
;------------------------------------------------------------
|
|
; 15-May-91 MSD
|
|
;
|
|
; At this point, $3F2-$3F4 have been set to $69 FF 5A by P8.
|
|
; This will cause you to drop into the monitor if you hit
|
|
; Ctrl-Reset. I will store a zero at $3F4 to invalidate the
|
|
; address; the AutoStart ROM will go into its slot scanning
|
|
; loop instead of doing a JMP ($3F2).
|
|
;------------------------------------------------------------
|
|
stz ResetVect+2 ; mess up the check byte
|
|
|
|
;------------------------------------------------------------
|
|
;
|
|
; Find and init the workstation card
|
|
;
|
|
;------------------------------------------------------------
|
|
jsr FindCard
|
|
LogRestart
|
|
ldx #$ff ;fix the stack for continous reboots
|
|
txs
|
|
lda mli+2
|
|
sta ProEntPt+1
|
|
and #$f0 ;clear all but the upper nibble
|
|
cmp #$c0 ;if we already point to C0 space, dont reinit
|
|
beq LR1 ;go to System Run & bypass spashscreen
|
|
lda mli+1
|
|
sta ProEntPt ;setup the ProDos Entry Point
|
|
lda #$14
|
|
sta mli+1
|
|
lda CardPtr+1
|
|
sta mli+2
|
|
sta aiparms+3
|
|
jsr mli
|
|
dc.b $42
|
|
dc.w initparms
|
|
jsr mli
|
|
dc.b $40
|
|
dc.w aiparms
|
|
cli ;turn on interrupts for Apple //e
|
|
InitConsole ; init the console driver
|
|
CursorOff ; and turn the input cursor off
|
|
|
|
jsr DrawLogOnScrn ; draw splash screen
|
|
|
|
LR1 ldx #16
|
|
LR2 phx
|
|
ldx #WaitStr
|
|
ldy #>WaitStr
|
|
WritePointer ;a short pause for RTMP to register
|
|
ATCall GetInfo
|
|
plx
|
|
lda ABridge
|
|
bne LR3
|
|
dex
|
|
bne LR2
|
|
LR3
|
|
;------------------------------------------------------------
|
|
;
|
|
; Initialize ProDOS 8's bitmap
|
|
;
|
|
;------------------------------------------------------------
|
|
ClearBitMap
|
|
lda #0 ;Clear the system bit map
|
|
tay
|
|
CLRBM sta $BF58,Y ;
|
|
iny
|
|
cpy #23 ;22 TIMES
|
|
bne CLRBM
|
|
lda #1 ;SET THE 23RD BIT TO ONE
|
|
sta $BF58,Y ;
|
|
lda #$cf ;save zero page from ProDOS
|
|
sta $Bf58 ;help it, protect itself!
|
|
lda LastDev ;get the device we were loaded from
|
|
sta UnitNum ;store it into GetFileInfo parms
|
|
sta RBUnitNum ;store it into the read block parms
|
|
|
|
;------------------------------------------------------------
|
|
;
|
|
; Fall into Logon's main loop
|
|
;
|
|
;------------------------------------------------------------
|
|
|
|
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
|