mirror of
https://github.com/marketideas/qasm.git
synced 2026-10-24 22:02:28 +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
2.5 KiB
NASM
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 |