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
2.5 KiB
NASM

title 'Interrupt Stuff'
**********************************************************************
*
* Interrupt Record Stuff
* Copyright (C) 1988
* Apple Computer, Inc.
* All Rights Reserved
*
* This file contains the routines
*
* GetInterruptState
* SetInterruptState
* GetIntStateRecSize
*
*
**********************************************************************
include 'all.macros'
include 'mt.equates.asm'
include '::sys.equs.asm'
IntStateRecSize equ AVal-irq_A
****************************************************************
*
GetInterruptState PROC EXPORT
*
* This copies the first BytesDesired bytes of the system interrupt
* variables into the specified InterruptStateRecord.
*
*
* Inputs:
* StateRecPtr
* BytesDesired
*
* Outputs:
* none
*
* External Refs:
import EndCall6
*
* Entry Points:
* none
*
longa on ; mode
longi on
*
****************************************************************
DefineStack
OrigD word
RTL1 block 3
RTL2 block 3
BytesDesired word
StateRecPtr LONG
phd
tsc
tcd
phb
pea #$e1e1
plb
plb
ldy BytesDesired
cpy #IntStateRecSize
bcc @1
ldy #IntStateRecSize
@1 dey
sep #$20
longa off
Loop lda |irq_A,y
sta [StateRecPtr],y
dey
bpl Loop
rep #$20
longa on
plb
jml EndCall6
ENDP
****************************************************************
*
SetInterruptState PROC EXPORT
*
* This copies the first BytesDesired bytes from the specified
* IntStateRecord into the interrupt state variables in bank $E1.
*
*
* Inputs:
* StateRecPtr
* BytesDesired
*
* Outputs:
* none
*
* External Refs:
import EndCall6
*
* Entry Points:
* none
*
longa on ; mode
longi on
*
****************************************************************
DefineStack
OrigD word
RTL1 block 3
RTL2 block 3
BytesDesired word
StateRecPtr LONG
phd
tsc
tcd
phb
pea #$e1e1
plb
plb
ldy BytesDesired
cpy #IntStateRecSize
bcc @1
ldy #IntStateRecSize
@1 dey
sep #$20
longa off
Loop
lda [StateRecPtr],y
sta |irq_a,y
dey
bpl Loop
rep #$20
longa on
plb
jml EndCall6
ENDP
****************************************************************
*
GetIntStateRecSize PROC EXPORT
*
* This returns the size of the interrupt state record.
*
*
* Inputs:
* space for integer
*
* Outputs:
* SizeofIntStateRecord
*
* External Refs:
import oEndCall0
*
* Entry Points:
* none
*
longa on ; mode
longi on
*
****************************************************************
DefineStack
RTL1 block 3
RTL2 block 3
Size word
lda #IntStateRecSize
sta Size,s
jml oEndCall0
ENDP
END