First release
This commit is contained in:
parent
25de611f19
commit
5fef614692
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
;
; Heap.aii.i
;
; Imports and macros for the Heap.
;
; Copyright © 1989, Claris Corporation
;
; 5/3/89 Kevin A. Watts from older H_Heap.aii.i and H_Block.aii.i
;
;----------------------------------------------------------------
IF &Type('&__FILE__') = 'UNDEFINED' THEN
gblc &__FILE__
&__FILE__ setc ''
ENDIF
H_TOO_OLD equ -1
H_TOO_NEW equ -2
H_BAD equ -3
IF &__FILE__ 'Heap' THEN
IMPORT H_Init
IMPORT H_CurrentHeap
IMPORT H_SetHeap
IMPORT H_UnsetHeap
IMPORT H_ResetHeap
IMPORT H_NewHeap
IMPORT H_DisposeHeap
IMPORT H_ReadHeap
IMPORT H_WriteHeap
ENDIF
IF &__FILE__ 'Block' THEN
IMPORT H_NewBlock
IMPORT H_DisposeBlock
IMPORT H_ResizeBlock
IMPORT H_CopyBlock
IMPORT H_GetBlockPtr
IMPORT H_GetBlockSize
IMPORT H_TruncHeap
ENDIF
;----------------------------------------------------------------
IF &__FILE__ 'Heap' AND &__FILE__ 'Block' THEN
MACRO
H_Init ; H_Init
jsl H_Init
ENDM
MACRO ; H_SetHeap
H_SetHeap &Heap
IF &Heap='' THEN
AERROR 'Bad usage of: H_SetHeap HeapID'
ENDIF
MoveLong &Heap,xy
jsl H_SetHeap
ENDM
MACRO ; H_UnsetHeap
H_UnsetHeap
jsl H_UnsetHeap
ENDM
MACRO ; H_ResetHeap
H_ResetHeap
jsl H_ResetHeap
ENDM
MACRO ; H_NewHeap
H_NewHeap &Heap,&err==
IF &Heap='' THEN
AERROR 'Bad usage of: H_NewHeap HeapID [,err=]'
ENDIF
jsl H_NewHeap
IF &err'' THEN
sty &err
ENDIF
MoveLong ax,&Heap
ENDM
MACRO ; H_DisposeHeap
H_DisposeHeap
jsl H_DisposeHeap
ENDM
MACRO ; H_WriteHeap
H_WriteHeap &FileID,&err==
IF &FileID='' THEN
AERROR 'Bad usage of: H_WriteHeap FileID [,err=]'
ENDIF
MoveWord &FileID,x
jsl H_WriteHeap
IF &err'' THEN
sty &err
ENDIF
ENDM
MACRO ; H_ReadHeap
H_ReadHeap &FileID,&Heap,&err==
IF &Heap='' OR &FileID='' THEN
AERROR 'Bad usage of: H_ReadHeap FileID, HeapID [,err=]'
ENDIF
MoveWord &FileID,x
jsl H_ReadHeap
IF &err'' THEN
sty &err
ENDIF
MoveLong ax,&Heap
ENDM
MACRO ; H_NewBlock
H_NewBlock &Size,&Index,&Ptr,&err==
IF &Size='' OR &Index='' THEN
AERROR 'Bad usage of: H_NewBlock Size, Index [,Ptr] [,err=]'
ENDIF
SpaceLong
MoveLong &Size,xy
jsl H_NewBlock
IF &err'' THEN
sty &err
ENDIF
IF &Index='ax' OR &Index='ay' THEN
AERROR 'Bad usage of H_NewBlock: Index may not be ax or ay'
ENDIF
MoveLong ax,&Index
IF &Ptr='' THEN
pla
pla
ELSE
PullLong &Ptr
ENDIF
ENDM
MACRO ; H_DisposeBlock
H_DisposeBlock &Index
IF &Index='' THEN
AERROR 'Bad usage of: H_DisposeBlock Index'
ENDIF
MoveLong &Index,xy
jsl H_DisposeBlock
ENDM
MACRO ; H_ResizeBlock
H_ResizeBlock &Index,&Size,&Ptr,&err==
IF &Index='' OR &Size='' THEN
AERROR 'Bad usage of: H_ResizeBlock Index, Size [,Ptr] [,err=]'
ENDIF
PushLong &Index
MoveLong &Size,xy
jsl H_ResizeBlock
IF &err'' THEN
sty &err
ENDIF
IF &Ptr'' THEN
MoveLong ax,&Ptr
ENDIF
ENDM
MACRO ; H_CopyBlock
H_CopyBlock &Index,&NewIndex,&NewPtr,&err==
IF &Index='' OR &NewIndex='' THEN
AERROR 'Bad usage of: H_CopyBlock Index, NewIndex [,NewPtr] [,err=]'
ENDIF
SpaceLong
MoveLong &Index,xy
jsl H_CopyBlock
IF &err'' THEN
sty &err
ENDIF
IF &NewIndex='ax' OR &NewIndex='ay' THEN
AERROR 'Bad usage of H_CopyBlock: NewIndex may not be ax or ay'
ENDIF
MoveLong ax,&NewIndex
IF &NewPtr='' THEN
pla
pla
ELSE
PullLong &NewPtr
ENDIF
ENDM
MACRO ; H_GetBlockPtr
H_GetBlockPtr &Index,&Ptr
IF &Index='' OR &Ptr='' THEN
AERROR 'Bad usage of: H_GetBlockPtr Index, Ptr'
ENDIF
MoveLong &Index,xy
jsl H_GetBlockPtr
MoveLong ax,&Ptr
ENDM
MACRO ; H_GetBlockSize
H_GetBlockSize &Index,&Size
IF &Index='' OR &Size='' THEN
AERROR 'Bad usage of: H_GetBlockSize Index, Size'
ENDIF
MoveLong &Index,xy
jsl H_GetBlockSize
MoveLong ax,&Size
ENDM
MACRO ; H_TruncHeap
H_TruncHeap
jsl H_TruncHeap
ENDM
ENDIF
|
|
@ -0,0 +1 @@
|
|||
;
; Heap.equ
;
; Heap memory managment module equates
;
; Copyright © 1989 Claris Corporation
;
; 1-25-89 Begun by Kevin A. Watts
;
;--------------------------------------------------------------
H_MAX_FREE_LIST equ 64 ; maximum data size of blocks in free lists
H_BLOCK_GRAN equ 2 ; must be a power of 2
H_N_FREE_LISTS equ (H_MAX_FREE_LIST/H_BLOCK_GRAN+1)
H_HeaderRec RECORD 0 ; Structure of a heap header block
Header DS.L 1 ; handle to the header block
Version DS.L 1 ; heap version # (at offset 4 for compatability)
HeaderPtr DS.L 1 ; pointer to the header block
NumISegments DS.W 1 ; # of index segments
NumDSegments DS.W 1 ; # of data segments
FreeIndex DS.L 1 ; index free list head
EndIndex DS.W 1 ; offset to never used portion of newest index segment
ZHEADER_SHORT_SIZE equ *
FreeListArray DS.L 1 ; = HeaderPtr + FreeLists
ISegHandleLo DS.L 1 ; = HeaderPtr + ISegHandle
ISegHandleHi DS.L 1 ; = HeaderPtr + ISegHandle+2
DSegHandleLo DS.L 1 ; = HeaderPtr + DSegHandle
DSegHandleHi DS.L 1 ; = HeaderPtr + DSegHandle+2
ISegPtrLo DS.L 1 ; = HeaderPtr + ISegPtr
ISegPtrHi DS.L 1 ; = HeaderPtr + ISegPtr+2
DSegPtrLo DS.L 1 ; = HeaderPtr + DSegPtr
DSegPtrHi DS.L 1 ; = HeaderPtr + DSegPtr+2
ZHEADER_SIZE equ *
FreeLists DS.W H_N_FREE_LISTS
; free list heads for each block size (segment #s)
HANDLE_ARRAY equ *
;Array of index segment handles DS.L H_MaxSegments
;Array of index segment pointers DS.L H_MaxSegments
;Array of data segment handles DS.L H_MaxSegments
;Array of data segment pointers DS.L H_MaxSegments
ENDR ; H_HeaderRec
;------------
H_VariablesRec RECORD H_HeaderRec.ZHEADER_SIZE ; Heap variables
; 'Globals' - maintain value across heap calls
H_ZPptr DS.L 1 ; Pointer to zero page
H_IsLocked DS.W 1 ; Flag - is current heap locked?
H_MaxSegments DS.W 1 ; Maximum number each of index & data segments
H_HeaderSize DS.W 1 ; Size of heap header
H_DSegHOffsetLo DS.W 1 ; Offset to array of handles to data segments
H_DSegHOffsetHi DS.W 1 ; " + 2
H_ISegPOffsetLo DS.W 1 ; Offset to array of pointers to index segments
H_ISegPOffsetHi DS.W 1 ; " + 2
H_DSegPOffsetLo DS.W 1 ; Offset to array of pointers to data segments
H_DSegPOffsetHi DS.W 1 ; " + 2
; 'Locals' - not assumed to maintain value across heap calls
BlockSize DS.W 1 ; = DataSize + H_BLOCK_OVERHEAD
CopyHdr DS.W 1 ; Flag to control header copying
DP DS.W 1 ; place to store save direct page value
DataSize DS.L 1 ; size of data block
EndPtr DS.L 1 ; Pointer to end of used portion of index table
ErrorFlag DS.W 1
FreeListOffset DS.W 1 ; Offset into an array of free lists
HasMoved DS.W 1 ; Flag - has heap header moved?
Index DS.L 1 ; an index
ISegPtr DS.L 1 ; pointer to an index segment
SkipLastResort DS.W 1 ; Flag - skip last resort allocation?
MaxFreeSeg DS.W 1 ; segment with most free space
MaxFreeSpace DS.W 1 ; free space in MaxFreeSeg
NewHeap DS.L 1 ; handle of heap to set
Offset DS.W 1 ; block offset within a segment
OldIndex DS.L 1 ; an index
OldPtr DS.L 1 ; a pointer
OldSize DS.L 1 ; size of data block
Ptr DS.L 1 ; generic ptr (usually to a data block)
SegHandle DS.L 1 ; handle of a data segment
Segment DS.W 1 ; a segment number
SegPtr DS.L 1 ; pointer to a data segment
SegSize DS.W 1 ; segment size
VARIABLE_SPACE equ * ; total size of variables
ENDR ; H_Globals ----------------------
;------------
H_ZPSIZE equ H_HeaderRec.ZHEADER_SIZE+H_VariablesRec.VARIABLE_SPACE-H_VariablesRec
H_ZPATTR equ attrBank+attrFixed+attrLocked+attrPage
IMPORT D_ZeroBlock
|
|
@ -0,0 +1 @@
|
|||
-lseg{Kind} HEAP Source:AWGS:Heap:Obj:Heap.aii.o Source:AWGS:Heap:Obj:Block.aii.o ¶
|
|
@ -0,0 +1 @@
|
|||
#
# Heap.make - Makefile for Heap
#
# Copyright © 1989, Claris Corporation.
#
# This is a sub-makefile, called recursively when ::AppleWorks.make is
# executed.
#
# All modules (including Driver, Scrap, Pict, SS, DB, etc.)
# should have similar makefiles in their respective folders.
#
# This makefile rebuilds the module object files as necessary and creates a
# file containing the necessary steps to link the module with the rest of
# AppleWorksGS. ::AppleWorks.make combines the link files from the modules
# into a script which it executes to create an executable.
#--------------------------------------------------------------------------------
# Variables
AsmIIGSOptions = -i {HeapIncDir},{AWGS}Driver,{AWGS}Macros ¶
-d ErrorCheck=0,Verbose=0,VerboseErrors=0,Debug=0,Profile=0 ¶
-d DriverSupport=1,HeapIO=3,Squeezing=1,GrowBlocks=1 ¶
-d VariableDSegSize=1,VariableISegSize=0,UseLastResort=0 ¶
-d ZeroInit=1,ReadV70=1
Segment = HEAP
Module = Heap
ModuleDir = {AWGS}{Module}:
HeapSrcDir = {AWGS}Heap:Src:
HeapIncDir = {AWGS}Heap:
HeapObjDir = {AWGS}Heap:Obj:
Linkfile = {ModuleDir}{Module}.link
Makefile = {ModuleDir}{Module}.make
HeapIncludes = {HeapIncDir}Heap.equ ¶
{HeapSrcDir}HeapPrivate.equ ¶
{HeapSrcDir}Heap.mac ¶
{HeapIncDir}Heap.aii.i
GlobalMacros = {AWGS}Macros:Macros.Dump ¶
{AWGS}Macros:m16.profile
Objs = {HeapObjs}
HeapObjs = {HeapObjDir}Heap.aii.o ¶
{HeapObjDir}Block.aii.o ¶
# {HeapObjDir}X_Heap.aii.o # temporary glue routines
#--------------------------------------------------------------------------------
# Main target
{Linkfile} ÄÄ {Objs} {Makefile}
@echo "# Creating {LinkFile} ¶É"
@echo " -lseg¶{Kind¶} {Segment} {Objs} ¶¶" > {Targ}
# Global heap dependencies
{HeapObjs} Ä {HeapIncludes} {GlobalMacros} {Makefile}
clean Ä
@confirm "Delete {Module} objs and linkfile?"
@if {status} == 0 then
delete {Linkfile} {Objs}
@end
#--------------------------------------------------------------------------------
# Default rules
.aii.o Ä .aii
AsmIIGS {DepDir}{Default}.aii -o {TargDir}{Default}.aii.o {AsmIIGSOptions}
{HeapObjDir} Ä {HeapSrcDir}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
;
; Heap.mac - Heap macros
;
; Copyright © 1989, Claris Corporation
;
; 1-13-89 Kevin A. Watts
; 1-17-89 kaw - added Deref
; BeginZ - prologue for use with Zero Page
MACRO
BeginZ
phd
lda #0 ; Replace with the address of the zero page
tcd
ENDM
; ReturnZ - epilog for use with Zero Page
MACRO
ReturnZ
pld
rtl
ENDM
; DefineZ - modify routine using BeginZ prologue.
; Zero page address must be in accumulator, and data bank must equal code bank
MACRO
DefineZ &routine
sta &routine+2
ENDM
; Deref Ptr - equivalent to "MoveLong [Ptr],Ptr", but this one works.
; Ptr should be a direct page variable
; Regs: a, x, y
; Side-effect: leaves Ptr in ax
MACRO
Deref &Ptr
ldy #2
lda [&Ptr],y
tax
lda [&Ptr]
sta &Ptr
stx &Ptr+2
ENDM
; DivByPwr2 Var,Divisor - divide Var by Divisor,
; - where Divisor is a power of 2
MACRO
DivByPwr2 &Var,&Divisor
LCLA &count
&count: SETA &eval( &Divisor )
WHILE &count > 1 DO
lsr &Var
&count: SETA &count/2
ENDWHILE
ENDM
; MulByPwr2 Var,Multiplier - multiply Var by Multiplier,
; - where Multiplier is a power of 2
MACRO
MulByPwr2 &Var,&Multiplier
LCLA &count
&count: SETA &eval( &Multiplier )
WHILE &count > 1 DO
asl &Var
&count: SETA &count/2
ENDWHILE
ENDM
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
;
; X_Heap.aii.i
;
; Imports from X_Heap.aii
;
; Copyright © 1989, Claris Corporation
;
; Tuesday, January 31, 1989 6:17:13 PM
;
IMPORT X_NewHeap
IMPORT X_DisposeHeap
IMPORT X_NeedSpace
IMPORT X_NewBlock
IMPORT X_DisposeBlock
IMPORT X_GetBlockSize
IMPORT X_GetBlockPtr
IMPORT X_ResizeBlock
IMPORT X_WriteHeap
IMPORT X_ReadHeap
IMPORT X_TruncHeap
IMPORT X_CopyIndex
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
#
# IWCL.make - Makefile for the ImageWriter CL driver
#
# Copyright © 1989, Claris Corporation.
#
# This makefile only assembles IWCL code. It is NOT intended to be used
# as a sub-build to ::AppleWorks.make.
#
# To build LQ driver instead of regular driver, change the "-d lq=0" to
# "-d lq=1" and change Program to "ImageWriter.CLQ"
#--------------------------------------------------------------------------------
# Variables
AsmIIGSOptions1 = -i {IWCLIncDir},{AWGS}Macros
AsmIIGSOptions2 = -d lq=0
Program = ImageWriter.CL
IWCLSrcDir = {iwcl}src:
IWCLIncDir = {iwcl}src:
IWCLObjDir = {iwcl}obj:
Makefile = {iwcl}IWCL.make
GlobalMacros = {iwcl}src:all.macros ¶
{iwcl}src:iw.macros ¶
{awgs}macros:m16.stack ¶
{awgs}macros:m16.cmp
Objs = {IWCLObjDir}iw.o ¶
{IWCLObjDir}dialogdata.o
{IWCL}{Program} ÄÄ {Objs}
@If "`Newer {Objs} {IWCL}{Program}`"
LinkIIGS {IWCLObjDir}iw.o {IWCLObjDir}dialogdata.o -o {IWCL}{Program} -t $BB -at $0001 -l > {IWCL}Link.map
@End
{Objs} Ä {makefile}
{IWCLObjDir}iw.o Ä {IWCLSrcDir}iw.asm ¶
{IWCLSrcDir}hld.asm ¶
{IWCLSrcDir}lld.asm ¶
{IWCL}iw.sym ¶
{Makefile}
ASMIIGS {IWCLSrcDir}iw.asm -o {IWCLObjDir}iw.o {AsmIIGSOptions1} {AsmIIGSOptions2}
{IWCLObjDir}dialogdata.o Ä {IWCLSrcDir}dialogdata.asm
ASMIIGS {IWCLSrcDir}dialogdata.asm -o {IWCLObjDir}dialogdata.o {AsmIIGSOptions1} {AsmIIGSOptions2}
{IWCL}iw.sym Ä {IWCLSrcDir}iw.asm {GlobalMacros}
ASMIIGS -c -d DUMPIT {IWCLSrcDir}iw.asm {AsmIIGSOptions1}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
MACRO
&Lab _Names &MyName
bra Skip&SysCnt
dc i1'$42'
dc i1'L:&MyName'
msb on
dc c'&MyName'
msb off
Skip&SysCnt Anop
Mend
MACRO
&lab _PmGetPrinterName
&lab ldx #19+256*40
jsl $E10000
MEND
MACRO
&lab _PrDevPrChanged
&lab ldx #19+256*25
jsl $E10000
MEND
MACRO
&lab _PrDevStartup
&lab ldx #19+256*26
jsl $E10000
MEND
MACRO
&lab _PrDevShutdown
&lab ldx #19+256*27
jsl $E10000
MEND
MACRO
&lab _PrDevOpen
&lab ldx #19+256*28
jsl $E10000
MEND
MACRO
&lab _PrDevRead
&lab ldx #19+256*29
jsl $E10000
MEND
MACRO
&lab _PrDevWrite
&lab ldx #19+256*30
jsl $E10000
MEND
MACRO
&lab _PrDevClose
&lab ldx #19+256*31
jsl $E10000
MEND
MACRO
&lab _PrDevStatus
&lab ldx #19+256*32
jsl $E10000
MEND
MACRO
&lab _PrDevInitBack
&lab ldx #19+256*33
jsl $E10000
MEND
MACRO
&lab _PrDevFillBack
&lab ldx #19+256*34
jsl $E10000
MEND
MACRO
&lab _PrDevAsyncRead
&lab ldx #19+256*33
jsl $E10000
MEND
MACRO
&lab _PrDevAsyncWrite
&lab ldx #19+256*34
jsl $E10000
MEND
MACRO
&lab _error
&lab bcc @1
dc.b 0,$4c ; brk $4c
@1
mend
MACRO
&lab _DevIsItSafe
&lab ldx #19+256*48
jsl $E10000
MEND
MACRO
&lab MoveRect &Src,&Dest
&lab lda &Src
sta &Dest
lda &Src+2
sta &Dest+2
lda &Src+4
sta &Dest+4
lda &Src+6
sta &Dest+6
MEND
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
all Ä
unset echo
cd ::
make
cd src
|
|
@ -0,0 +1 @@
|
|||
### Dependencies for building both the imagewriter and imagewriter.lq drivers.
install Ä both
choose -u 'Scott Lindsey' ':StyleWare, Inc.:' -pw azures
cp -y imageÅ Royalton:Appleworks_GS:Bandit:Utilities: ³ Dev:Null
all Ä imagewriter.cl
beep
mac2gs -y imagewriter.cl :imagewriter.cl
both Ä imagewriter.cl imagewriter.clq
beep
mac2gs -y imagewriter.cl :imagewriter.cl
beep
mac2gs -y imagewriter.clq :imagewriter.clq
macros Ä :src:iw.sym
### Dependancies for IW
imagewriter.cl Ä :obj:iw.o ¶
:obj:dialogdata.o
LINKIIGS :obj:iw.o :obj:dialogdata.o -o imagewriter.cl -t $70BB0001 ¶
-s > list
imagewriter.clq Ä :obj:lq.o ¶
:obj:dialogdata.o
LINKIIGS :obj:lq.o :obj:dialogdata.o -o imagewriter.clq -t $70BB0001
### Dependancies for iw.o
### Setting the variable lq to 0 will build the regular Imagewriter driver
:obj:iw.o Ä :src:iw.asm ¶
:src:hld.asm ¶
:src:lld.asm
ASMIIGS -d lq=0 :src:iw.asm -o :obj:iw.o
### Dependencies for lq.o
### Setting the variable lq to 1 will build the Imagewriter LQ driver
:obj:lq.o Ä :src:iw.asm ¶
:src:hld.asm ¶
:src:lld.asm
ASMIIGS -d lq=1 :src:iw.asm -o :obj:lq.o
### Dependancies for dialogdata.o
:obj:dialogdata.o Ä :src:dialogdata.asm
ASMIIGS :src:dialogdata.asm -o :obj:dialogdata.o
### Dependancies for stdtext.o
:obj:stdtext.o Ä :src:stdtext.asm
ASMIIGS :src:stdtext.asm -o :obj:stdtext.o
### Dependancies for iw.sym
:src:iw.sym Ä :src:iw.asm :src:all.macros
ASMIIGS -c -d DUMPIT :src:iw.asm
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
#
# Macros.make - Makefile for Macros
#
# Copyright © 1989, Claris Corporation.
#
# This makefile rebuilds the symbol table dump file
# whenever any of the macro files it includes have changed.
#--------------------------------------------------------------------------------
# Variables
Module = Macros
ModuleDir = {AWGS}{Module}:
Makefile = {ModuleDir}{Module}.make
MacroFiles = {ModuleDir}m16.bob ¶
{ModuleDir}m16.branch ¶
{ModuleDir}m16.cmp ¶
{ModuleDir}m16.eval ¶
{ModuleDir}m16.math ¶
{ModuleDir}m16.move ¶
{ModuleDir}m16.msl ¶
{ModuleDir}m16.stack ¶
{ModuleDir}m16.tools ¶
{ModuleDir}m16.utility ¶
{ModuleDir}e16.tools
#--------------------------------------------------------------------------------
# Main target
{ModuleDir}Macros.dump ÄÄ {MacroFiles} {MakeFile}
@echo "# Creating {ModuleDir}DumpMacros.aii É"
@echo > {ModuleDir}DumpMacros.aii
@for i in {MacroFiles}; ¶
@echo "¶tinclude¶t¶'{i}¶'" >> {ModuleDir}DumpMacros.aii; ¶
@end
@echo >> {ModuleDir}DumpMacros.aii
@echo "¶tDUMP¶t¶'{ModuleDir}Macros.dump¶'" >> {ModuleDir}DumpMacros.aii
@echo "¶tEND" >> {ModuleDir}DumpMacros.aii
AsmIIGS {ModuleDir}DumpMacros.aii -c # don't even bother with object.
Delete {ModuleDir}DumpMacros.aiiÅ # don't need source files
clean Ä
@confirm "Delete {ModuleDir}Macros.dump"
@if {status} == 0 then
delete {ModuleDir}Macros.dump
@end
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
;..............................................................................;
;
; Bgt & Ble - Branch greater than and branch less than equal
;
; Bgt adrs - Branch if Z flag clear and Carry set
; Ble adrs - Branch if Z flag set or Carry clear
;
;..............................................................................;
MACRO
bgt &adr
beq *+4
bge &adr
MEND
MACRO
ble &adr
blt &adr
beq &adr
MEND
;..............................................................................;
;
; Jcc adrs - Jump (long branch) on condition code macros
;
; Jmi adrs - Branch if N flag set
; Jpl adrs - Branch if N flag clear
; Jeq adrs - Branch if Z flag set
; Jne adrs - Branch if Z flag clear
; Jcs adrs - Branch if carry set
; Jcc adrs - Branch if carry clear
; Jlt adrs - Branch if less than (carry clear)
; Jge adrs - Branch if greater than or equal (carry set)
; Jle adrs - Branch if less than or equal
; Jgt adrs - Branch if greater than
;..............................................................................;
MACRO
jmi &adr
bpl *+5
brl &adr
mexit
MEND
MACRO
jpl &adr
bmi *+5
brl &adr
mexit
MEND
MACRO
jeq &adr
bne *+5
brl &adr
mexit
MEND
MACRO
jne &adr
beq *+5
brl &adr
mexit
MEND
MACRO
jcs &adr
bcc *+5
brl &adr
mexit
MEND
MACRO
jcc &adr
bcs *+5
brl &adr
mexit
MEND
MACRO
jlt &adr
bcs *+5
brl &adr
mexit
MEND
MACRO
jge &adr
bcc *+5
brl &adr
mexit
MEND
MACRO
jle &adr
beq ~bra&sysindex
bge ~nobra&sysindex
~bra&sysindex
brl &adr
~nobra&sysindex
mexit
MEND
MACRO
jgt &adr
blt ~nobra&sysindex
beq ~nobra&sysindex
brl &adr
~nobra&sysindex
mexit
MEND
;..............................................................................;
;
; JTS tableadrs,index - Jump Subroutine Table Short
; BTS tableadrs,index - Jump Table Short
;
; Thess macros implement a short jump to subroutine using the value of the
; accumulator or index to index into the table for the subroutines address.
;
;..............................................................................;
MACRO
JTS &table,&index
IF &nbr(&syslist) ³ 2 THEN
lda &index
ENDIF
asl a
tax
jsr (&table,x)
MEND
MACRO
BTS &table,&index
IF &nbr(&syslist) ³ 2 THEN
lda &index
ENDIF
asl a
tax
jmp (&table,x)
MEND
;..............................................................................;
;
; JTL tableadrs - Jump Subroutine Table Long
;
; This macros implements a long jump to subroutine using the value of the
; accumulator to index into the given table for the subroutines address.
;
;..............................................................................;
MACRO
JTL &table,&index
IF &nbr(&syslist) ³ 2 THEN
lda &index
ENDIF
asl a
asl a
tax
lda &table+1,x
sta ~b&sysindex+2
lda &table,x
sta ~b&sysindex+1
~b&sysindex
jsl *
mexit
MEND
********************************************************************
*
* AWGS WP module requires a case sensitive jsl to call the
* SpellChecker.
*
*
*
* Thursday, May 4, 1989 11:16:10 AM
********************************************************************
MACRO
&lab Case_Jsl &to
&lab
Case Object
jsl &to
Case Off
mend
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
;..............................................................................;
;
; EVAL - Evaluate word expression to A
;
; eval expression
;
; The first operand in an expression may or may not be present. If it is
; present then the accumulator will be loaded with its value before expression
; evaluation begins.
;
; Sample expressions:
;
; eval 'Var1.+Var2.-Var3.+#10'
; eval '.*Var3./Var4.%Var5'
;
; Note:
;
; Eleven operations are supported +,-,*,/,% (mod), ^ (and), | (or), x (eor), < (asl),
; > (lsr), i (inc), and d (dec). Each of these must be preceded by a '.' and no spaces
; can be present in the expression. The expression should be quoted. Also note that
; both immediate and variable word values may be operands.
;
;..............................................................................;
MACRO
&lab eval &exp
&lab
lclc &operand
lcla &opstart
lclc &newexp
IF (&substr(&exp,1,1) = '''') or (&substr(&exp,1,1) = '"') THEN
&newexp setc &substr(&exp,2,&len(&exp)-2)
ELSE
&newexp setc &exp
ENDIF
&operand setc &substr(&newexp,1,1)
IF &operand='.' GOTO .no1op
&opstart seta &pos('.',&newexp)
IF &opstart>0 GOTO .doexp
lda &newexp
mexit
.doexp
&operand setc &substr(&newexp,1,&opstart-1)
&newexp setc &substr(&newexp,&opstart,&len(&newexp)-&opstart+1)
lda &operand
.no1op
eval2 &newexp
mexit
MEND
;
; Eval2 is the heart of the eval macro
;
MACRO
&lab eval2 &exp
&lab ;
IF (&nbr(&syslist)=0) GOTO .done
lclc &op
lclc &operand
lclc &rest
lcla &restbegin
lclc &newexp
&newexp setc &exp
.start
&op setc &substr(&newexp,2,1)
&rest setc &substr(&newexp,3,&len(&newexp)-2)
&restbegin seta &pos('.',&rest)
IF &restbegin>0 GOTO .ok
&restbegin seta &len(&rest)+1
.ok
&operand setc &substr(&rest,1,&restbegin-1)
IF &op='+' GOTO .doadd
IF &op='-' GOTO .dosub
IF &op='*' GOTO .domul
IF &op='/' GOTO .dodiv
IF &op='%' GOTO .domod
IF &op='^' GOTO .doand
IF &op='|' GOTO .door
IF &op='x' GOTO .doxor
IF &op='<' GOTO .doasl
IF &op='>' GOTO .dolsr
IF &op='i' GOTO .doinc
IF &op='d' GOTO .dodec
.done
mexit
.doadd
clc
adc &operand
GOTO .dorest
.dosub
sec
sbc &operand
GOTO .dorest
.domul
pha
pha
pha
lda &operand
pha
_Multiply
pla
plx
GOTO .dorest
.dodiv
pha
pha
pha
lda &operand
pha
_SDivide
pla
plx
GOTO .dorest
.domod
pha
pha
pha
lda &operand
pha
_SDivide
plx
pla
GOTO .dorest
.doand
and &operand
GOTO .dorest
.door
ora &operand
GOTO .dorest
.doxor
eor &operand
GOTO .dorest
.doasl
asl a
GOTO .dorest
.dolsr
lsr a
GOTO .dorest
.doinc
inc a
GOTO .dorest
.dodec
dec a
GOTO .dorest
.dorest
&restbegin seta &pos('.',&rest)
IF &restbegin>0 GOTO .next
mexit
.next
&newexp setc &substr(&rest,&restbegin,&len(&rest)-&restbegin+1)
GOTO .start
mexit
MEND
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
; File: M16.ProDos
;
; StyleWare, Inc.
;
; New (10/27/87), Stack Version of ProDOS macros.
; Usage: (e.g.)
; pushlong paramblock
; _OPEN
;
; CLASS 1 string.
MACRO
&lab STR1 &string
lclc &sset
&sset SETC &SETTING('STRING')
STRING ASIS
&lab DC.W &len(&string)-2 ; eliminate enclosing quotes.
DC.B &string
STRING &sset
MEND
MACRO
&lab _CREATE
&lab pea $2001
jsl $E100B0
MEND
MACRO
&lab _DESTROY
&lab pea $2002
jsl $E100B0
MEND
MACRO
&lab _OS_ShutDown
&lab pea $2003
jsl $E100B0
MEND
MACRO
&lab _CHANGE_PATH
&lab pea $2004
jsl $E100B0
MEND
MACRO
&lab _SET_FILE_INFO
&lab pea $2005
jsl $E100B0
MEND
MACRO
&lab _GET_FILE_INFO
&lab pea $2006
jsl $E100B0
MEND
MACRO
&lab _VOLUME
&lab pea $2008
jsl $E100B0
MEND
MACRO
&lab _SET_PREFIX
&lab pea $2009
jsl $E100B0
MEND
MACRO
&lab _GET_PREFIX
&lab pea $200A
jsl $E100B0
MEND
MACRO
&lab _CLEAR_BACKUP_BIT
&lab pea $200B
jsl $E100B0
MEND
MACRO
&lab _SET_SYS_PREFS
&lab pea $200C
jsl $E100B0
MEND
MACRO
&lab _Null
&lab pea $200D
jsl $E100B0
MEND
MACRO
&lab _Expand_Path
&lab pea $200E
jsl $E100B0
MEND
MACRO
&lab _Get_SYS_PREFS
&lab pea $200F
jsl $E100B0
MEND
MACRO
&lab _OPEN
&lab pea $2010
jsl $E100B0
MEND
MACRO
&lab _NEWLINE
&lab pea $2011
jsl $E100B0
MEND
MACRO
&lab _READ
&lab pea $2012
jsl $E100B0
MEND
MACRO
&lab _WRITE
&lab pea $2013
jsl $E100B0
MEND
MACRO
&lab _CLOSE
&lab pea $2014
jsl $E100B0
MEND
MACRO
&lab _FLUSH
&lab pea $2015
jsl $E100B0
MEND
MACRO
&lab _SET_MARK
&lab pea $2016
jsl $E100B0
MEND
MACRO
&lab _GET_MARK
&lab pea $2017
jsl $E100B0
MEND
MACRO
&lab _SET_EOF
&lab pea $2018
jsl $E100B0
MEND
MACRO
&lab _GET_EOF
&lab pea $2019
jsl $E100B0
MEND
MACRO
&lab _SET_LEVEL
&lab pea $201A
jsl $E100B0
MEND
MACRO
&lab _GET_LEVEL
&lab pea $201B
jsl $E100B0
MEND
MACRO
&lab _GET_DIR_ENTRY
&lab pea $201C
jsl $E100B0
MEND
MACRO
&lab _Begin_Session
&lab pea $201D
jsl $E100B0
MEND
MACRO
&lab _End_Session
&lab pea $201E
jsl $E100B0
MEND
MACRO
&lab _Session_Status
&lab pea $201F
jsl $E100B0
MEND
MACRO
&lab _GET_DEV_NUM
&lab pea $2020
jsl $E100B0
MEND
MACRO
&lab _GET_LAST_DEV
&lab pea $2021
jsl $E100B0
MEND
MACRO
&lab _READ_BLOCK
&lab pea $2022
jsl $E100B0
MEND
MACRO
&lab _WRITE_BLOCK
&lab pea $2023
jsl $E100B0
MEND
MACRO
&lab _FORMAT
&lab pea $2024
jsl $E100B0
MEND
MACRO
&lab _ERASE_DISK
&lab pea $2025
jsl $E100B0
MEND
MACRO
&lab _Reset_Cache
&lab pea $2026
jsl $E100B0
MEND
MACRO
&lab _GETNAME
&lab pea $2027
jsl $E100B0
MEND
MACRO
&lab _GET_BOOT_VOL
&lab pea $2028
jsl $E100B0
MEND
MACRO
&lab _Quit
&lab pea $2029
jsl $E100B0
MEND
MACRO
&lab _GET_VERSION
&lab pea $202A
jsl $E100B0
MEND
MACRO
&lab _Get_FST_Info
&lab pea $202B
jsl $E100B0
MEND
MACRO
&lab _D_INFO
&lab pea $202C
jsl $E100B0
MEND
MACRO
&lab _D_Status
&lab pea $202D
jsl $E100B0
MEND
MACRO
&lab _D_Control
&lab pea $202E
jsl $E100B0
MEND
MACRO
&lab _D_Read
&lab pea $202F
jsl $E100B0
MEND
MACRO
&lab _D_Write
&lab pea $2030
jsl $E100B0
MEND
MACRO
&lab _ALLOC_INTERRUPT
&lab pea $2031
jsl $E100B0
MEND
MACRO
&lab _DEALLOC_INTERRUPT
&lab pea $2032
jsl $E100B0
MEND
MACRO
&lab _Add_Notify_Proc
&lab pea $2034
jsl $E100B0
MEND
MACRO
&lab _Del_Notify_Proc
&lab pea $2035
jsl $E100B0
MEND
MACRO
&lab _D_Rename
&lab pea $2036
jsl $E100B0
MEND
MACRO
&lab _Get_Std_Ref_Num
&lab pea $2037
jsl $E100B0
MEND
MACRO
&lab _Get_Ref_Num
&lab pea $2038
jsl $E100B0
MEND
MACRO
&lab _Get_Ref_Info
&lab pea $2039
jsl $E100B0
MEND
MACRO
&lab ChkBugIn &callnum
&lab
IF (Developing AND &Type('PDOS')'UNDEFINED ') THEN
lda GSBugging
bne @1
lda >$C025
and #$C0 ; -opt
cmp #$C0
bne @2
@1 call GSOSBug,in=(#1:w,#0:w,&callnum:w,!pblock:l)
@2
ENDIF
MEND
MACRO
&lab ChkBugOut &callnum
&lab
IF (Developing AND &Type('PDOS')'UNDEFINED ') THEN
php
pha
lda GSBugging
bne @3
lda >$C025
and #$C0 ; -opt
cmp #$C0
bne @4
@3 call GSOSBug,in=(#0:w,err:w,&callnum:w,!pblock:l)
@4 pla
plp
ENDIF
MEND
MACRO
&lab _BindInt
&lab pea $2031
jsl $E100B0
MEND
MACRO
&lab _UnBindInt
&lab pea $2032
jsl $E100B0
MEND
|
|
@ -0,0 +1 @@
|
|||
; File: M16.ProDos
;
;
; Copyright Apple Computer, Inc. 1986, 1987, 1988
; All Rights Reserved
;
;
MACRO
&lab _CREATE ¶ms
&lab jsl $E100A8
DC.W 1
DC.L ¶ms
MEND
MACRO
&lab _DESTROY ¶ms
&lab jsl $E100A8
DC.W 2
DC.L ¶ms
MEND
MACRO
&lab _CHANGE_PATH ¶ms
&lab jsl $E100A8
DC.W 4
DC.L ¶ms
MEND
MACRO
&lab _SET_FILE_INFO ¶ms
&lab jsl $E100A8
DC.W 5
DC.L ¶ms
MEND
MACRO
&lab _GET_FILE_INFO ¶ms
&lab jsl $E100A8
DC.W 6
DC.L ¶ms
MEND
MACRO
&lab _VOLUME ¶ms
&lab jsl $E100A8
DC.W 8
DC.L ¶ms
MEND
MACRO
&lab _SET_PREFIX ¶ms
&lab jsl $E100A8
DC.W 9
DC.L ¶ms
MEND
MACRO
&lab _GET_PREFIX ¶ms
&lab jsl $E100A8
DC.W $0A
DC.L ¶ms
MEND
MACRO
&lab _CLEAR_BACKUP_BIT ¶ms
&lab jsl $E100A8
DC.W $0B
DC.L ¶ms
MEND
MACRO
&lab _OPEN ¶ms
&lab jsl $E100A8
DC.W $10
DC.L ¶ms
MEND
MACRO
&lab _NEWLINE ¶ms
&lab jsl $E100A8
DC.W $11
DC.L ¶ms
MEND
MACRO
&lab _READ ¶ms
&lab jsl $E100A8
DC.W $12
DC.L ¶ms
MEND
MACRO
&lab _WRITE ¶ms
&lab jsl $E100A8
DC.W $13
DC.L ¶ms
MEND
MACRO
&lab _CLOSE ¶ms
&lab jsl $E100A8
DC.W $14
DC.L ¶ms
MEND
MACRO
&lab _FLUSH ¶ms
&lab jsl $E100A8
DC.W $15
DC.L ¶ms
MEND
MACRO
&lab _SET_MARK ¶ms
&lab jsl $E100A8
DC.W $16
DC.L ¶ms
MEND
MACRO
&lab _GET_MARK ¶ms
&lab jsl $E100A8
DC.W $17
DC.L ¶ms
MEND
MACRO
&lab _SET_EOF ¶ms
&lab jsl $E100A8
DC.W $18
DC.L ¶ms
MEND
MACRO
&lab _GET_EOF ¶ms
&lab jsl $E100A8
DC.W $19
DC.L ¶ms
MEND
MACRO
&lab _SET_LEVEL ¶ms
&lab jsl $E100A8
DC.W $1A
DC.L ¶ms
MEND
MACRO
&lab _GET_LEVEL ¶ms
&lab jsl $E100A8
DC.W $1B
DC.L ¶ms
MEND
MACRO
&lab _GET_DIR_ENTRY ¶ms
&lab jsl $E100A8
DC.W $1C
DC.L ¶ms
MEND
MACRO
&lab _GET_DEV_NUM ¶ms
&lab jsl $E100A8
DC.W $20
DC.L ¶ms
MEND
MACRO
&lab _GET_LAST_DEV ¶ms
&lab jsl $E100A8
DC.W $21
DC.L ¶ms
MEND
MACRO
&lab _READ_BLOCK ¶ms
&lab jsl $E100A8
DC.W $22
DC.L ¶ms
MEND
MACRO
&lab _WRITE_BLOCK ¶ms
&lab jsl $E100A8
DC.W $23
DC.L ¶ms
MEND
MACRO
&lab _FORMAT ¶ms
&lab jsl $E100A8
DC.W $24
DC.L ¶ms
MEND
MACRO
&lab _ERASE_DISK ¶ms
&lab jsl $E100A8
DC.W $25
DC.L ¶ms
MEND
MACRO
&lab _GET_NAME ¶ms
&lab jsl $E100A8
DC.W $27
DC.L ¶ms
MEND
MACRO
&lab _GET_PATH_NAME ¶ms
&lab jsl $E100A8
DC.W $27
DC.L ¶ms
MEND
MACRO
&lab _GET_BOOT_VOL ¶ms
&lab jsl $E100A8
DC.W $28
DC.L ¶ms
MEND
MACRO
&lab _QUIT ¶ms
&lab jsl $E100A8
DC.W $29
DC.L ¶ms
MEND
MACRO
&lab _GET_VERSION ¶ms
&lab jsl $E100A8
DC.W $2A
DC.L ¶ms
MEND
MACRO
&lab _D_INFO ¶ms
&lab jsl $E100A8
DC.W $2C
DC.L ¶ms
MEND
MACRO
&lab _ALLOC_INTERRUPT ¶ms
&lab jsl $E100A8
DC.W $31
DC.L ¶ms
MEND
MACRO
&lab _DEALLOC_INTERRUPT ¶ms
&lab jsl $E100A8
DC.W $32
DC.L ¶ms
MEND
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
-lseg:dynamic PL Source:AWGS:PL:Obj:pl.o Source:AWGS:PL:Obj:pdata.o Source:AWGS:PL:Obj:picon.o Source:AWGS:PL:Obj:putil.o Source:AWGS:PL:Obj:poptions.o Source:AWGS:PL:Obj:pfile.o Source:AWGS:PL:Obj:pprint.o Source:AWGS:PL:Obj:ptool.o Source:AWGS:PL:Obj:pmouse.o Source:AWGS:PL:Obj:pobject.o Source:AWGS:PL:Obj:pobjutil.o Source:AWGS:PL:Obj:plist.o Source:AWGS:PL:Obj:pmove.o Source:AWGS:PL:Obj:ppage.o Source:AWGS:PL:Obj:pruler.o Source:AWGS:PL:Obj:pupdate.o Source:AWGS:PL:Obj:pmenus.o Source:AWGS:PL:Obj:pedit.o Source:AWGS:PL:Obj:pundo.o Source:AWGS:PL:Obj:parrange.o Source:AWGS:PL:Obj:pscroll.o Source:AWGS:PL:Obj:pguide.o Source:AWGS:PL:Obj:pdrag.o Source:AWGS:PL:Obj:ptab.o Source:AWGS:PL:Obj:main.o Source:AWGS:PL:Obj:prim.o Source:AWGS:PL:Obj:prim2.o Source:AWGS:PL:Obj:tutil.o Source:AWGS:PL:Obj:tdraw.o Source:AWGS:PL:Obj:click.o Source:AWGS:PL:Obj:key.o Source:AWGS:PL:Obj:edit.o Source:AWGS:PL:Obj:format.o Source:AWGS:PL:Obj:truler.o Source:AWGS:PL:Obj:tcntl.o ¶
-lseg:dynamic PL2 Source:AWGS:PL:Obj:pruler2.o Source:AWGS:PL:Obj:putil2.o Source:AWGS:PL:Obj:pobjutil2.o Source:AWGS:PL:Obj:tscrap.o Source:AWGS:PL:Obj:tutil2.o ¶
-lseg PLSCRAP Source:AWGS:PL:Obj:pscrap.o Source:AWGS:PL:Obj:strings.o ¶
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_Deref
IMPORT D_NeedHand
IMPORT P_AddGuide
IMPORT P_ContentRect
IMPORT P_FixPt
IMPORT P_H
IMPORT P_PageMode
IMPORT P_RoundGuide
IMPORT P_Traverse
IMPORT P_V
IMPORT D_UnLock
IMPORT P_PaperRect
IMPORT P_FullPaperRect
; pdrag.s
; Notes for D_DrawProc:
; newpt of -1,-1 says to get rid of the old drawing & nothing else
; newpt == oldpt says to get rid of old, then redraw it for real.
; need to clip as necessary.
;---------------------------------------------------------------------------
;
; P_DragStuff (OldPt:l, starting D_MouseDown Q_Point
; Array:l, array HANDLE of guides/tabs
; Count:w, Number of items currently in array.
; D_DrawProc:l, procedure/function to draw tab/guide
; TabType:w, L/D/R
; Vert:w, Vertical Guide?
; Max:w, Maximum pixel position for valid whatever
; Min:w, Minimum ' ' ' ' "
; Erase:w Erase an old whatever first?
;
; ----> NewCount, NewArrayHdl, NewPt
P_DragStuff PROC EXPORT
;Using P_Data
local adjpt:l,hoffset:w,voffset:w
local newpt:l,tmp:l,ptr:l,ppi:l
input oldpt:l,count:w,array:l,D_DrawProc:l,tabtype:w
input vert:w,max:w,min:w,dist:w,erase:w
output newcount:w,amt:w
error err
begin
stz err
lda oldpt+2
and #$FFFE
sta oldpt+2
moveaddr D_DrawProc,DrawIt+1 ; patch in the functional
moveaddr D_DrawProc,DrawIt2+1 ; parameter.
moveaddr D_DrawProc,DrawIt3+1
subword P_V,P_ContentRect,voffset ; correct for
subword P_H,P_ContentRect+2,a ; scrolled-over-ness
and #$FFFE ; make sure it's even
sta hoffset ; pixelized, to be safe...
lda vert
bne VertMaxMin
moveword max,newpt
jsr AdjustPt
moveword amt,max
moveword min,newpt
jsr AdjustPt
moveword amt,min
bra DidMaxMin
VertMaxMin moveword max,newpt+2
jsr AdjustPt
moveword amt,max
moveword min,newpt+2
jsr AdjustPt
moveword amt,min
DidMaxMin
lda count
beq StartDrag
rcall D_Deref,in=(array:ax),out=(ptr:ax)
StartDrag lda erase
beq DragLoop
movelong #-1,newpt
brl OKDraw
DragLoop tool _GetMouse,in=(!newpt:l)
lda newpt+2
and #$FFFE
sta newpt+2
lda vert ; Only redraw
beq HorizCmp ; when vertical
cmpw oldpt+2,newpt+2 ; or horizontal
jeq ContLoop ; changes, as
bra DoneCmp ; is appropriate
HorizCmp cmpw oldpt,newpt ; .
jeq ContLoop ; :
DoneCmp jsr AdjustPt
; Check to see if it is too D_Close to another one...
lda count
beq OKDraw
call P_Traverse,in=(array:l,amt:w,#4:w,count:w),out=(tmp:w)
lsr a
lsr a
cmp count
bge CheckLesser
addword amt,dist,a
scmpw a,[ptr]:tmp
bge DontMove
CheckLesser subword amt,dist,y
subword tmp,#4,tmp
bmi OKDraw
tya
scmpw a,[ptr]:tmp
ble DontMove
OKDraw pushlong oldpt
pushlong newpt
pushword tabtype
pushword vert
DrawIt jsl *
bra ContLoop
DontMove movelong oldpt,newpt
bra CheckDown
ContLoop movelong newpt,oldpt
CheckDown tool _StillDown,in=(#0:w),out=(a:w)
jne DragLoop
PutDown movelong newpt,oldpt
jsr AdjustPt
scmpw amt,min
jlt NoDice
scmpw max,amt
jlt NoDice
lda count
beq NeedNew
rcall D_UnLock,in=(array:ax)
bra Unlocked
NeedNew call D_NeedHand,in=(#4:l),out=(array:l)
movelong [array],ptr
movelong #0,[ptr]
Unlocked lda P_PageMode
beq DoAddG
; Round
call P_RoundGuide,in=(amt:w,vert:w),out=(amt:w)
moveword amt,newpt
moveword amt,newpt+2
rcall P_FixPt,in=(newpt:ax),out=(newpt:ax)
pushlong oldpt
pushlong newpt
pushword tabtype
pushword vert
DrawIt3 jsl *
movelong newpt,oldpt
DoAddG
in amt:w,array:l,count:w,tabtype:w
out count:w
xerr err
xcall P_AddGuide
bra Dice
NoDice movelong #-1,newpt
Dice pushlong oldpt
pushlong newpt
pushword tabtype
pushword vert
DrawIt2 jsl *
moveword count,newcount
return
;-------------------------
;
; AdjustPt (local routine) ; adjust a Q_Point for drawing
;
AdjustPt addword newpt,voffset,adjpt
addword newpt+2,hoffset,adjpt+2
lda P_PageMode
beq DidMap
subword adjpt,voffset,adjpt
subword adjpt+2,hoffset,adjpt+2
tool _MapPt,in=(!adjpt:l,#P_FullPaperRect:l,#P_PaperRect:l)
DidMap lda vert
beq HorizAmt
lda adjpt+2 ;
and #$FFFE ; Q_Mask to even pixel
sta amt
bra DidHV
HorizAmt moveword adjpt,amt
DidHV rts
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_Deref
IMPORT P_AddObjRgn
IMPORT P_DrawRgn
IMPORT P_ObjList
IMPORT P_RemoveObj
IMPORT P_ToolType
IMPORT T_Dispose
;--------------------------------------------------------------------------
;
; P_SetObjAttr (Attr:w; NewValue:w)
;
P_SetObjAttr PROC EXPORT
;Using P_Data
;Using P_ObjData
INPUT Attr:w,NewValue:w
LOCAL ObjHdl:l,ObjPtr:l,UpdateRgn:l,ObjType:w
BEGIN
lda P_ToolType
jne Exit
tool _NewRgn,out=(UpdateRgn:l)
movelong P_ObjList,ObjHdl
WhileLoop
cpzl ObjHdl
jeq EndLoop
rcall D_Deref,in=(ObjHdl:ax),out=(ObjPtr:ax)
moveword [ObjPtr]:#P_Selected,a
jeq NextObject
moveword [ObjPtr]:#P_Type,ObjType
cmp #P_ALPHA
jeq NextObject
lda Attr
asl a
tax
jmp (JumpTable,x)
ChangeFill
lda ObjType
cmp #P_RECTANGLE
blt NextObject
cmp #P_CIRCLE+1
bge NextObject
moveword NewValue,[ObjPtr]:#P_ObjFilled
bra AddObj
ChangePen
cmpw ObjType,#P_CIRCLE+1
bge NextObject
call P_AddObjRgn,in=(ObjPtr:l,UpdateRgn:l)
moveword NewValue,[ObjPtr]:#P_PenSize
bra AddObj
ChangeColor
cmpw ObjType,#P_PICTURE
bge NextObject
moveword NewValue,[ObjPtr]:#P_ObjColor
bra AddObj
ChangeFont
jsr IsPageDate
bcc NextObject
moveword NewValue,[ObjPtr]:#P_ItemFontID
bra AddObj
ChangeStyle
jsr IsPageDate
bcc NextObject
movebyte NewValue,[ObjPtr]:#P_ItemFontID+2
bra AddObj
ChangeSize
jsr IsPageDate
bcc NextObject
movebyte NewValue,[ObjPtr]:#P_ItemFontID+3
AddObj
call P_AddObjRgn,in=(ObjPtr:l,UpdateRgn:l)
NextObject
tool _HUnlock,in=(ObjHdl:l)
movelong [ObjPtr],ObjHdl
brl WhileLoop
EndLoop
call P_DrawRgn,in=(UpdateRgn:l)
Exit RETURN
; Returns with carry set if it is a page or date object
IsPageDate
lda ObjType
cmp #P_PAGETOOL
blt @Clear
cmp #P_DATETOOL+1
bge @Clear
sec
rts
@Clear clc
rts
JumpTable DC.W ChangeFill
DC.W ChangePen
DC.W ChangeColor
DC.W ChangeFont
DC.W ChangeStyle
DC.W ChangeSize
ENDP
;-----------------------------------------------------------------------------
;
; P_SetDelFlag (Value:w)
;
P_SetDelFlag PROC EXPORT
;Using P_Data
;Using P_ObjData
INPUT Value:w
LOCAL ObjHdl:l,ObjPtr:l
BEGIN
movelong P_ObjList,ObjHdl
ObjLoop cpzl ObjHdl
beq Exit
movelong [ObjHdl],ObjPtr
moveword [ObjPtr]:#P_Selected,a
beq NextObj
moveword Value,[ObjPtr]:#P_Deleted
NextObj
movelong [ObjPtr],ObjHdl
bra ObjLoop
Exit RETURN
ENDP
;------------------------------------------------------------------------------
;
; P_DelMarkObj ()
;
; Deletes are objects that are marked as deleted from the object list.
P_DelMarkObj PROC EXPORT
;Using P_Data
;Using P_ObjData
LOCAL ObjHdl:l,ObjPtr:l,NextObj:l
BEGIN
movelong P_ObjList,ObjHdl
While cpzl ObjHdl
jeq EndWhile
movelong [ObjHdl],ObjPtr
movelong [ObjPtr],NextObj
moveword [ObjPtr]:#P_Deleted,a
beq TryNext
; need to do more if Q_Text object or picture
moveword [ObjPtr]:#P_Type,a
cmp #P_Alpha
bne NotAlpha
call T_Dispose,in=(ObjHdl:l,#0:w)
bra Dispose
NotAlpha cmp #P_PICTURE
bne Dispose
tool _KillPicture,in=([ObjPtr]:#P_PictHandle:l)
Dispose
call P_RemoveObj,in=(ObjHdl:l)
tool _DisposeHandle,in=(ObjHdl:l)
TryNext movelong NextObj,ObjHdl
brl While
EndWhile
RETURN
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_CheckPurge
IMPORT P_ContentRect
IMPORT P_CurrentWin
IMPORT P_DrawContent
IMPORT P_FirstPOff
IMPORT P_H
IMPORT P_LoadPage
IMPORT P_Page
IMPORT P_PageCount
IMPORT P_PageMode
IMPORT P_PageRect
IMPORT P_PaperRect
IMPORT P_PrintHand
IMPORT P_SavePage
IMPORT P_V
IMPORT D_PrintToLW
IMPORT D_PrOpenDoc
; pprint.s
;---------------------------------------------------------------------------
;
; P_PrintDoc (Window:l)
;
P_PrintDoc PROC EXPORT
;Using P_Data
input Window:l
error Err
local PHdl:l,PPtr:l,PrinterPort:l,Spool:w,Copies:w
local FirstPage:w,LastPage:w,CurPage:w,docOpened:w
BEGIN +b
stz Err
stz docOpened
call P_SavePage,in=(P_Page:w)
; D_Save to be restored
pushword P_Page
pushword P_PageMode
pushlong P_CurrentWin
pushword P_H
pushword P_V
pushlong P_ContentRect
stz P_PageMode
stz P_H
stz P_V
subword P_PaperRect,P_PageRect,P_ContentRect
subword P_PaperRect+2,P_PageRect+2,P_ContentRect+2
movelong P_PrintHand,PHdl
movelong [PHdl],PPtr
moveword [PPtr]:#oPrJob+oBJDocLoop,a
and #$ff
sta Spool
moveword [PPtr]:#oPrJob+oICopies,Copies
moveword [PPtr]:#oPrJob+oIFstPage,FirstPage
moveword [PPtr]:#oPrJob+oILstPage,LastPage
moveword #1,[PPtr]:#oPrJob+oIFstPage
moveword #1,[PPtr]:#oPrJob+oICopies ; do copies *our* way: collated.
; if it's a LaserWriter, do it the ÔnormalÕ way.
lda >D_PrintToLW
bne @normalMuck
moveword #1,[PPtr]:#oPrJob+oILstPage
bra @didMuck
@normalMuck
subword LastPage,FirstPage,a
ina
moveword a,[PPtr]:#oPrJob+oILstPage
@didMuck
; Adjust the page range...
; if it's 1-999, pretend like it's 0-999
cmpw LastPage,#999
bne @cont
cmpw FirstPage,#1
bne @cont
stz FirstPage
@cont
lda FirstPage
bne NotZero
cmpw P_FirstPOff,#-2
beq NotZero
inc FirstPage
NotZero
subword LastPage,P_FirstPOff,LastPage
cmpw a,P_PageCount
blt LastOkay
lda P_PageCount
inc a
sta LastPage
LastOkay
subword FirstPage,P_FirstPOff,FirstPage
scmpw a,#2
bge FirstOkay
moveword #2,FirstPage
FirstOkay
CopyLoop
lda Copies
jeq Exit
dec Copies
moveword FirstPage,CurPage
PageLoop
cmpw LastPage,CurPage
blt CopyLoop
; D_Open printer doc
lda docOpened
bne @opened
moveword #-1,docOpened
call D_PrOpenDoc,in=(PHdl:l,#0:l),out=(PrinterPort:l),err=(Err)
jcs Abort
@opened movelong PrinterPort,P_CurrentWin
call P_LoadPage,in=(CurPage:w)
tool _PrOpenPage,in=(PrinterPort:l,#0:l),err=(err)
bcs CloseIt
tool _SetFontFlags,in=(#4:w)
tool _SetTextMode,in=(#modeForeCopy:w)
call P_DrawContent,in=(#P_PaperRect:l,#1:w)
CloseIt tool _PrClosePage,in=(PrinterPort:l)
lda err
jne Abort
lda >D_PrintToLW
bne ckMem
closeD tool _PrCloseDoc,in=(PrinterPort:l),err=(Err)
stz docOpened
jcs Exit
didclose
jsl D_CheckPurge
bcc MemOkay
tool _PRSetError,in=(#-128:w)
lda docOpened
jeq Exit
brl abort
ckMem jsl D_CheckPurge
bcc NoSpool
tool _PRSetError,in=(#-128:w)
lda docOpened
jeq Exit
brl abort
MemOkay
; Print spooled file if neccessary
lda Spool
beq NoSpool
tool _PrPicFile,in=(PHdl:l,#0:l,#StatusRecord:l),err=(Err)
bcs Exit
NoSpool
inc CurPage
brl PageLoop
Exit lda docOpened
beq @restore
stz Copies
bra closeD
@restore
; Restore from stack
pulllong P_ContentRect
pullword P_V
pullword P_H
pulllong P_CurrentWin
pullword P_PageMode
call P_LoadPage,in=(:w)
RETURN
Abort tool _PrCloseDoc,in=(PrinterPort:l)
stz docOpened
bra Exit
StatusRecord DS.B 28
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_Deref
IMPORT DoneH
IMPORT DoneV
IMPORT P_ContentRect
IMPORT P_Do_Ruler
IMPORT P_FullPaperRect
IMPORT P_H
IMPORT P_HRulRect
IMPORT P_PageMode
IMPORT P_PaperRect
IMPORT P_PortRect
IMPORT P_PrintHand
IMPORT P_V
IMPORT P_VRulRect
IMPORT D_Set4Pat
IMPORT D_UnLock
;----------------------------------------------------------------------
;
; Draw Rulers
;
P_DrawRulers PROC EXPORT
;Using P_Data
;Using P_RulerData
;Using P_IconData
input rgnhdl:l
local tmprect:r,counter:w,offset:w,printstuff:l,vert:l
local horz:l,ppp:w,startloc:w,tmp:l,ppfp:w,rgnptr:l
begin +b
call D_Set4Pat,in=(#LightYellow:w)
moveword #P_TabWTop,tmprect
moveword #P_TabWBottom,tmprect+4
moveword P_VRulRect+2,tmprect+2
moveword P_VRulRect+6,tmprect+6
tool _ClipRect,in=(!tmprect:l)
tool _PaintRect,in=(!tmprect:l)
_PenNormal
rcall D_Deref,in=(P_PrintHand:ax),out=(printstuff:ax)
moveword [printstuff]:#4,vert
moveword [printstuff]:#6,horz
stz vert+2
stz horz+2
rcall D_UnLock,in=(P_PrintHand:ax)
rcall D_Deref,in=(rgnhdl:ax),out=(rgnptr:ax)
; ; Horizontal ruler
moverect P_HRulRect,tmprect
moveword P_VRulRect+2,tmprect+2
tool _RectInRgn,in=(!tmprect:l,rgnhdl:l),out=(a:w)
jeq CkVert
subword P_PaperRect+6,P_PaperRect+2,ppp
; do D_Update Q_Rect!?!?!
subword P_ContentRect+2,P_H,startloc
lda P_PageMode
bne DoHPage
tool _Long2Fix,in=(horz:l),out=(horz:l)
bra DoHoriz
DoHPage moveword P_FullPaperRect+2,startloc
subword P_FullPaperRect+6,P_FullPaperRect+2,ppfp
tool _Multiply,in=(horz:w,ppfp:w),out=(tmp:l)
tool _FixDiv,in=(tmp:l,#0:w,ppp:w),out=(horz:l)
DoHoriz
pushlong horz
pushword startloc
cmpw [rgnptr]:#4,P_ContentRect+2
blt HContent1
and #$FFFE
pushword a
bra HCk
HContent1 pushword P_ContentRect+2
HCk cmpw [rgnptr]:#8,P_ContentRect+6
blt HContent2
pushword P_ContentRect+6
bra DoneH
HContent2 pushword a
DoneH ; in :l,:w,:w,:w
in #0:w,#P_HRulRect:l,#P_VRulRect:l,#P_PortRect:l
in #P_ContentRect:l,P_Pagemode:w
xcall P_Do_Ruler
; ; Vertical ruler
CkVert tool _RectInRgn,in=(#P_VRulRect:l,rgnhdl:l),out=(a:w)
jeq exit
subword P_PaperRect+4,P_PaperRect,ppp
subword P_ContentRect,P_V,startloc
lda P_PageMode
bne DoVPage
tool _Long2Fix,in=(vert:l),out=(vert:l)
bra DoVert
DoVPage moveword P_FullPaperRect,startloc
subword P_FullPaperRect+4,P_FullPaperRect,ppfp
tool _Multiply,in=(vert:w,ppfp:w),out=(tmp:l)
tool _FixDiv,in=(tmp:l,#0:w,ppp:w),out=(vert:l)
DoVert
pushlong vert
pushword startloc
cmpw [rgnptr]:#2,P_ContentRect
blt VContent1
pushword a
bra VCk
VContent1 pushword P_ContentRect
VCk cmpw [rgnptr]:#6,P_ContentRect+4
blt VContent2
pushword P_ContentRect+4
bra DoneV
VContent2 pushword a
DoneV ; in :l,:w,:w,:w
in #1:w,#P_HRulRect:l,#P_VRulRect:l,#P_PortRect:l
in #P_ContentRect:l,P_Pagemode:w
xcall P_Do_Ruler
Exit rcall D_UnLock,in=(rgnhdl:ax)
_PenNormal
return
ENDP
END
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT X_CopyOneHandle
IMPORT X_DisposeThread
IMPORT P_CopyObjList
IMPORT P_MakePict
IMPORT T_CpyOrClrObj
IMPORT T_ReThread
;-----------------------------------------------
;
; Forward addresses and entries
;
;-----------------------------------------------
ENTRY P_CopyPLScrap
ENTRY P_DelObjList
ENTRY P_DelPLScrap
ENTRY P_PL2Pict
ENTRY T_Dispose
P_ScrapJumps PROC EXPORT
DC.L P_CopyPLScrap
DC.L P_DelPLScrap
DC.L P_PL2Pict
ENDP
P_ScrapData PROC EXPORT
EXPORT P_QDPict
EXPORT P_ConvErr
P_QDPict DS.B 4
P_ConvErr DS.B 2
ENDP
;------------------------------------------------------------------------------
;
; P_CopyPLScrap (ScrapHdl:l) : CopyHdl:l
;
P_CopyPLScrap PROC EXPORT
input ScrapHdl:l
output CopyHdl:l
error Err
begin
call P_CopyObjList,in=(ScrapHdl:l,#1:w),out=(CopyHdl:l),err=(Err)
return
ENDP
;-----------------------------------------------------------------------------
;
; P_DelPLScrap (ObjHdl:l,KillData:w)
;
P_DelPLScrap PROC EXPORT
;Using P_ObjData
;Using P_ScrapData
input ObjHdl:l,KillData:w
local ObjPtr:l,NextObj:l
begin +b
cpzl P_QDPict
beq DoIt
tool _KillPicture,in=(P_QDPict:l)
stzl P_QDPict
DoIt
call P_DelObjList,in=(ObjHdl:l,KillData:w,#1:w)
return
ENDP
;-----------------------------------------------------------------------------
;
; P_PL2Pict (ObjHdl:l) : PictHdl:l
;
P_PL2Pict PROC EXPORT
;Using P_ScrapData
input ObjHdl:l
output PictHdl:l
error Err
begin +b
cpzl P_QDPict
beq DoIt
moveword P_ConvErr,Err
bne Exit
call X_CopyOneHandle,in=(P_QDPict:l),out=(PictHdl:l),err=(Err)
bra Exit
DoIt
call P_MakePict,in=(ObjHdl:l),out=(PictHdl:l),err=(Err)
Exit
return
ENDP
;-----------------------------------------------------------------------------
;
; P_DelObjList (ObjHdl:l,KillData:w,All:w)
;
P_DelObjList PROC EXPORT
;Using P_ObjData
;Using P_ScrapData
input ObjHdl:l,KillData:w,All:w
local ObjPtr:l,NextObj:l
begin
WhileLoop
cpzl ObjHdl
jeq Exit
movelong [ObjHdl],ObjPtr
movelong [ObjPtr],NextObj
lda KillData
beq TrashIt
moveword [ObjPtr]:#P_Type,a
cmp #P_ALPHA
bne TryPict
call T_Dispose,in=(ObjHdl:l,All:w)
bra TrashIt
TryPict cmp #P_PICTURE
bne TrashIt
tool _KillPicture,in=([ObjPtr]:#P_PictHandle:l)
TrashIt
tool _DisposeHandle,in=(ObjHdl:l)
movelong NextObj,ObjHdl
brl WhileLoop
Exit return
ENDP
;----------------------------------------------------------------------------
;
; T_Dispose (ObjHdl:l,All:w)
;
; Can call X_DisposeThread if there are no objects attached to this one.
T_Dispose PROC EXPORT
;Using P_ObjData
input ObjHdl:l,All:w
local ObjPtr:l,NThread:l,PThread:l,Ptr:l
begin +b
movelong [ObjHdl],ObjPtr
movelong [ObjPtr]:#P_NThread,NThread
movelong [ObjPtr]:#P_PThread,PThread
lda All
beq NotAll
cpzl PThread
beq KillThread
lda PThread
and PThread+2
cmp #$FFFF
beq Killthread
brl Exit
NotAll
lda NThread
ora NThread+2
ora PThread
ora PThread+2
bne Linked
KillThread
call X_DisposeThread,in=([ObjPtr]:#P_ParagHdl:l,#1:w)
brl Exit
Linked
call T_CpyOrClrObj,in=(ObjPtr:l,#0:w),out=(a:l)
cpzl PThread
beq NoPrev
movelong [PThread],Ptr
movelong NThread,[Ptr]:#P_NThread
NoPrev
cpzl NThread
beq NoNext
movelong [NThread],Ptr
movelong PThread,[Ptr]:#P_PThread
NoNext
cpzl PThread
beq AtStart
pushlong PThread
bra Cont
AtStart pushlong NThread
Cont jsl T_ReThread
Exit return
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_DrawIcon
IMPORT P_BuildUndo
IMPORT P_CheckIcon
IMPORT P_CkLoc
IMPORT P_ContentRect
IMPORT P_Cursor
IMPORT P_DeSelectAll
IMPORT P_FillMode
IMPORT P_FillRect
IMPORT P_FrameRect
IMPORT P_IconPalette
IMPORT P_IsObjSel
IMPORT P_KillImport
IMPORT P_LineSize
IMPORT P_Palette
IMPORT P_SetObjAttr
IMPORT P_ToolHeights
IMPORT P_ToolType
IMPORT P_UnCkIcon
IMPORT P_VisPalette
IMPORT T_Deactivate
;-----------------------------------------------
;
; Forward addresses and entries
;
;-----------------------------------------------
ENTRY P_NewTool
;---------------------------------------------------------------------------
;
; P_DrawTools
;
P_DrawTools PROC EXPORT
;Using P_IconData
;Using P_Data
;Using P_ObjData
LOCAL tmp:l,tmprect:r
BEGIN
call D_DrawIcon,in=(#P_IconPalette:l,#-1:w,#-1:w,#0:w)
tool _SetPenSize,in=(#2:w,#1:w)
tool _MoveTo,in=(#36:w,#0:w)
tool _LineTo,in=(#36:w,#220:w)
tool _PenNormal
tool _InvertRect,in=(#P_Palette:l)
lda P_FillMode
beq DoFrame
tool _InvertRect,in=(#P_FillRect:l)
bra DrawCheck
DoFrame tool _InvertRect,in=(#P_FrameRect:l)
DrawCheck lda P_LineSize
asl a
addlong a,#P_CkLoc,tmp
call D_DrawIcon,in=(#P_CheckIcon:l,#1:w,[tmp]:w,#0:w)
RETURN
ENDP
;------------------------------------------------------------------------------
;
; P_MDInTools (ThePt:l)
;
P_MDInTools PROC EXPORT
;Using P_IconData
;Using P_Data
;Using P_ObjData
INPUT ThePt:l
LOCAL Tmp:l,NewSize:w
BEGIN
lda ThePt
ldx #0
ToolLoop cmp P_ToolHeights,x
blt FoundIt
inx
inx
bra ToolLoop
FoundIt
txa
lsr a
cmp #P_CIRCLE+1
beq ChangeFill
bge ChangeLine
NewTool
call P_NewTool,in=(a:w,#1:w)
brl Exit
ChangeFill
lda ThePt+2
cmp P_FrameRect+6
bge DoFill
lda P_FillMode
beq SetFF
stz P_FillMode
bra DoFillStuff
DoFill
lda P_FillMode
bne SetFF
moveword #1,P_FillMode
DoFillStuff
tool _ClipRect,in=(#P_IconPalette:l)
tool _InvertRect,in=(#P_FillRect:l)
tool _InvertRect,in=(#P_FrameRect:l)
tool _ClipRect,in=(#P_ContentRect:l)
SetFF
call P_IsObjSel,out=(a:w)
beq ToExit
call P_BuildUndo,in=(#P_FillUndo:w)
call P_SetObjAttr,in=(#P_FillAttr:w,P_FillMode:w)
ToExit brl Exit
ChangeLine
subword a,#P_CIRCLE+1,NewSize
tool _ClipRect,in=(#P_IconPalette:l)
; uncheck old D_Mark
lda P_LineSize
asl a
addlong a,#P_CkLoc,tmp
call D_DrawIcon,in=(#P_UnCkIcon:l,#1:w,[tmp]:w,#0:w)
; check D_New D_Mark
lda NewSize
sta P_LineSize
asl a
addlong a,#P_CkLoc,tmp
call D_DrawIcon,in=(#P_CheckIcon:l,#1:w,[tmp]:w,#0:w)
tool _ClipRect,in=(#P_ContentRect:l)
call P_IsObjSel,out=(a:w)
beq Exit
call P_BuildUndo,in=(#P_PenSizeUndo:w)
call P_SetObjAttr,in=(#P_PenSizeAttr:w,P_LineSize:w)
Exit RETURN
ENDP
;---------------------------------------------------------------------------
;
; P_NewTool (NewTool:w; KillImport:w)
;
P_NewTool PROC EXPORT
;Using P_Data
;Using P_IconDATA
;Using P_OBJData
;Using T_Data
INPUT NewTool:w,KillImport:w
LOCAL CRect:r
BEGIN
tool _ClipRect,in=(#P_ContentRect:l)
cmpw NewTool,P_ToolType
jeq Exit
; Deselect old tool and select D_New one
stz CRect
stz CRect+2
moveword P_ContentRect+4,CRect+4
moveword P_IconPalette+6,CRect+6
tool _ClipRect,in=(!CRect:l)
lda P_VisPalette
beq NotVis1
tool _InvertRect,in=(#P_Palette:l)
NotVis1
lda NewTool
asl a
tax
lda CursorTypes,x
sta P_Cursor
lda P_ToolHeights,x
dec a
moveword a,P_Palette+4
subword a,#12,P_Palette
lda P_VisPalette
beq NotVis2
tool _InvertRect,in=(#P_Palette:l)
NotVis2
tool _ClipRect,in=(#P_ContentRect:l)
lda KillImport
beq NoKill
jsl P_KillImport
NoKill
; If we're un-using the Arrow tool, deselect everything.
lda P_ToolType
cmp #P_ARROW
bne UnText
call P_DeSelectAll
bra Choose
; If we're un-using the I-beam tool, deactivate the Q_Text.
UnText
cmp #P_ALPHA
bne Choose
call T_Deactivate,in=(#1:w,#1:w)
Choose
moveword NewTool,P_ToolType
Exit RETURN
CursorTypes
DC.W ArrowCursor
DC.W BeamCursor
DC.W PageNumCursor
DC.W DateCursor
DC.W -1
DC.W -1
DC.W -1
DC.W -1
DC.W -1
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT T_GetParPtr
IMPORT T_LineCount
IMPORT T_LineInfoSize
IMPORT T_LinesHdl
IMPORT T_MulLine
;------------------------------------------------------------------------------
;
; T_OffsetLines (ParagNo:w,LineNo:w,CharCount:w)
;
T_OffsetLines PROC EXPORT
;Using T_Data
;Using T_TextEqu
INPUT ParagNo:w,LineNo:w,CharCount:w
LOCAL ParagPtr:l,LinesHdl:l,LinePtr:l,LineCount:w
BEGIN
rcall T_GetParPtr,in=(ParagNo:a),out=(ParagPtr:ax)
movelong [ParagPtr]:#T_LinesHdl,LinesHdl
movelong [LinesHdl],LinePtr
moveword [ParagPtr]:#T_LineCount,LineCount
rcall T_MulLine,in=(LineNo:a),out=(a:a)
addwl a,LinePtr
ldx LineNo
LLoop inx
cpx LineCount
bge EndLLoop
addwl #T_LineInfoSize,LinePtr
addword CharCount,[LinePtr],[LinePtr]
bra LLoop
EndLLoop
RETURN
ENDP
END
|
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT P_KillUndo
IMPORT T_DotLine
IMPORT T_DotObj
IMPORT T_DotOffset
IMPORT T_DotParag
IMPORT T_DotPixs
IMPORT T_FontFlags
IMPORT T_GetObject
IMPORT T_GetParPtr
IMPORT T_GetParSize
IMPORT T_InvSelect
IMPORT T_JunkRight
IMPORT T_MovedDot
IMPORT T_NextChar
IMPORT T_Pix2Offset
IMPORT T_PrevChar
IMPORT T_RangeFont
IMPORT T_TextSelect
;-----------------------------------------------------------------------------
;
; T_DoControl (Char:w; ModFlags:w)
;
T_DoControl PROC EXPORT
;Using P_ObjData
;Using T_TextEqu
;Using T_Data
INPUT Char:w,ModFlags:w
LOCAL ParagPtr:l,LastPar:w
LOCAL ObjHdl:l,ObjPtr:l,MaxWidth:w
BEGIN
stz T_FontFlags
jsl T_InvSelect
stz T_TextSelect
rcall T_GetParPtr,in=(#0:a),out=(ParagPtr:ax)
moveword [ParagPtr],a
dec a
sta LastPar
lda Char
asl a
tax
jmp (JumpTable,x)
; Left arrow
_LeftArrow
rcall T_PrevChar,in=(T_DotParag:a,T_DotOffset:x)
cmp #0
beq PrevParag
sta T_DotOffset
brl MovedDot
PrevParag
lda T_DotParag
beq NoDec
dec a
sta T_DotParag
rcall T_GetParSize,in=(a:a),out=(a:a)
dec a
sta T_DotOffset
NoDec brl MovedDot
_RightArrow
rcall T_NextChar,in=(T_DotParag:a,T_DotOffset:x)
cmp #0
beq NextParag
sta T_DotOffset
brl MovedDot
NextParag
cmpw T_DotParag,LastPar
bge NoInc
inc T_DotParag
moveword #T_ParHeader,T_DotOffset
NoInc brl MovedDot
_UpArrow
lda T_DotLine
beq PrevParag2
dec T_DotLine
bra FindPixs
PrevParag2
lda T_DotParag
jeq Exit
dec T_DotParag
rcall T_GetParPtr,in=(T_DotParag:a),out=(ParagPtr:ax)
moveword [ParagPtr]:#T_LineCount,a
dec a
sta T_DotLine
bra FindPixs
_DownArrow
rcall T_GetParPtr,in=(T_DotParag:a),out=(ParagPtr:ax)
lda T_DotLine
inc a
cmpw a,[ParagPtr]:#T_LineCount
bge NextParag2
inc T_DotLine
bra FindPixs
NextParag2
cmpw T_DotParag,LastPar
jeq Exit
inc T_DotParag
stz T_DotLine
FindPixs
call T_GetObject,in=(T_DotParag:w,T_DotLine:w),out=(T_DotObj:l)
movelong T_DotObj,ObjHdl
movelong [ObjHdl],ObjPtr
subword [ObjPtr]:#P_TRect+6,[ObjPtr]:#P_TRect+2,MaxWidth
in T_DotParag:w,T_DotLine:w,T_DotPixs:w,MaxWidth:w
out T_DotOffset:w,T_DotPixs:w
xcall T_Pix2Offset
MovedDot
rcall T_JunkRight,in=(T_DotParag:a,T_DotOffset:x)
sta T_DotOffset
jsl P_KillUndo
jsl T_MovedDot
jsl T_RangeFont
Exit
RETURN
JumpTable
DC.W Exit ;0
DC.W Exit ;1
DC.W Exit ;2
DC.W Exit ;3
DC.W Exit ;4
DC.W Exit ;5
DC.W Exit ;6
DC.W Exit ;7
DC.W _LeftArrow ;8
DC.W Exit ;9 Tab
DC.W _DownArrow ;10
DC.W _UpArrow ;11
DC.W Exit ;12
DC.W Exit ;13 CR
DC.W Exit ;14
DC.W Exit ;15
DC.W Exit ;16
DC.W Exit ;17
DC.W Exit ;18
DC.W Exit ;19
DC.W Exit ;20
DC.W _RightArrow ;21
DC.W Exit ;22
DC.W Exit ;23
DC.W Exit ;24
DC.W Exit ;25
DC.W Exit ;26
DC.W Exit ;27
DC.W Exit ;28
DC.W Exit ;29
DC.W Exit ;30
DC.W Exit ;31
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
include 'pl.equ'
;-----------------------------------------------
;
; Imported addresses
;
;-----------------------------------------------
IMPORT D_GrowHandle
IMPORT T_GetParPtr
IMPORT T_OffsetPars
;-----------------------------------------------
;
; Forward addresses and entries
;
;-----------------------------------------------
ENTRY T_LessRoom
ENTRY T_MakeRoom
; ------------------------------------------------------------------------------
; T_MakeRoom and T_LessRoom will grow or shrink the Q_Text blocks the
; correct amount and make sure everything in the parag array data
; structure gets updated, with the exception of the LinesHdl.
;
;------------------------------------------------------------------------------
;
; T_DoRoom (Par:w,Offset:w,Bytes:w)
;
T_DoRoom PROC EXPORT
lda 4,s ;look at bytes
jpl T_MakeRoom
eor #$ffff
inc a
sta 4,s
brl T_LessRoom
ENDP
;------------------------------------------------------------------------------
;
; T_MakeRoom (ParagNo:w,Offset:w,Bytes:w)
;
T_MakeRoom PROC EXPORT
;Using T_Data
;Using T_TextEqu
INPUT ParagNo:w,Offset:w,Bytes:w
LOCAL ParagPtr:l,TextHdl:l,TextPtr:l
LOCAL X_Blocksize:w,TextSize:w,NewTSize:w
ERROR Err
BEGIN
stz Err
lda Bytes
jeq Exit
rcall T_GetParPtr,in=(ParagNo:a),out=(ParagPtr:ax)
movelong [ParagPtr]:#T_TextBlock,TextHdl
addword [ParagPtr]:#T_ParOffset,Offset,Offset
movelong [TextHdl],TextPtr
moveword [TextPtr],X_Blocksize
moveword [TextPtr]:#T_TextSize,TextSize
addword a,Bytes,NewTSize
cmp X_Blocksize
blt Fits
; 1. Grow Q_Text Block
call D_GrowHandle,in=(#0:w,NewTSize:w,TextHdl:l),err=(Err)
bcs Exit
movelong [TextHdl],TextPtr
moveword NewTSize,[TextPtr]
; BlockMove rest of Q_Text down
Fits
moveword NewTSize,[TextPtr]:#T_TextSize
addwl Offset,TextPtr
pushlong TextPtr
lda Bytes
addlong a,TextPtr,s
pushword #0
subword TextSize,Offset,s
_BlockMove
call T_OffsetPars,in=(ParagNo:w,Bytes:w)
Exit RETURN
ENDP
;------------------------------------------------------------------------------
;
; T_LessRoom (ParagNo:w,Offset:w,Bytes:w)
;
; This routine will remove the Bytes starting at ParagNo,Offset.
T_LessRoom PROC EXPORT
;Using T_TextEqu
INPUT ParagNo:w,Offset:w,Bytes:w
LOCAL ParagPtr:l,TextBlock:l,TextPtr:l
LOCAL TextSize:w,SrcOffset:w,DestOffset:w
BEGIN
rcall T_GetParPtr,in=(ParagNo:a),out=(ParagPtr:ax)
movelong [ParagPtr]:#T_TextBlock,TextBlock
movelong [TextBlock],TextPtr
moveword [TextPtr]:#T_TextSize,TextSize
addword [ParagPtr]:#T_ParOffset,Offset,DestOffset
addword a,Bytes,SrcOffset
addlong a,TextPtr,s ;Src
lda DestOffset
addlong a,TextPtr,s ;Dest
subword TextSize,SrcOffset,a
pushword #0
pushword a ;Amount
_BlockMove
subword TextSize,Bytes,TextSize
cmp #4
beq KillIt
moveword a,[TextPtr]
moveword a,[TextPtr]:#T_TextSize
pushword #0
pushword TextSize
pushlong TextBlock
_SetHandleSize
pushword ParagNo
subword #0,Bytes,s
jsl T_OffsetPars
bra Exit
KillIt
tool _DisposeHandle,in=(TextBlock:l)
Exit RETURN
ENDP
;-------------------------------------------------------------------------------
;
; T_CalcFBytes (FontId1:l,Color1:w,FontId2:l,Color2:w) : Bytes:w
;
T_CalcFBytes PROC EXPORT
INPUT FontID1:l,Color1:w,FontID2:l,Color2:w
OUTPUT Bytes:w
BEGIN
stz Bytes
cmpw FontId1,FontID2
beq SameFont
moveword #3,bytes
SameFont
cmpb FontId1+2,FontId2+2
beq SameStyle
addword #2,bytes,bytes
SameStyle
cmpb FontId1+3,FontId2+3
beq SameSize
addword #2,bytes,bytes
SameSize
cmpb color1,color2
beq SameColor
addword #2,bytes,bytes
SameColor
RETURN
ENDP
;------------------------------------------------------------------------------
;
; T_WriteFbytes (Ptr:l,FontId1:l,Color1:w,FontId2:l,Color2:w)
;
T_WriteFBytes PROC EXPORT
INPUT Ptr:l,FontID1:l,Color1:w,FontID2:l,Color2:w
BEGIN
cmpw FontId1,FontID2
beq SameFont
moveword #1,[Ptr]
moveword FontId2,[Ptr]:#1
addwl #3,Ptr
SameFont
cmpb FontId1+2,FontId2+2
beq SameStyle
lda FontId2+1 ;2 is in the high
shortm
lda #2 ;flag is in the low
longm
sta [Ptr]
addwl #2,Ptr
SameStyle
cmpb FontId1+3,FontId2+3
beq SameSize
lda FontId2+2 ;3 is in the high
shortm
lda #3 ;flag is in the low
longm
sta [Ptr]
addwl #2,Ptr
SameSize
cmpb color1,color2
beq SameColor
lda color2-1 ;2 is in the high
shortm
lda #4 ;flag is in the low
longm
sta [Ptr]
SameColor
RETURN
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
load 'macros.dump'
include 'driver.equ'
P_Strings PROC
EXPORT P_KillLMasterStr,P_CancelStr,P_OKStr,P_InsText1Msg
EXPORT P_InsText2Msg,P_RCtlMsg1,P_RCtlMsg2,P_RCtlMsg3
EXPORT P_DelText1Msg,P_DelText2Msg,P_GotoTextMsg
EXPORT P_PNumMsg,P_LRMsg,P_TBMsg,P_ColMsg,P_CSMsg
P_KillLMasterStr STR 'This will delete anything on the left master page.'
P_CancelStr STR 'Cancel'
P_OKStr STR 'OK'
P_InsText1Msg STR 'Insert'
P_InsText2Msg STR 'page(s)'
P_RCtlMsg1 STR 'at the beginning.'
P_RCtlMsg2 STR 'after the current page.'
P_RCtlMsg3 STR 'at the end.'
P_DelText1Msg STR 'Delete pages'
P_DelText2Msg STR 'through'
P_GotoTextMsg STR 'Go to page'
P_PNumMsg STR 'First page number:'
P_LRMsg STR 'Left / Right Margins'
P_TBMsg STR 'Top / Bottom Margins'
P_ColMsg STR 'Columns'
P_CSMsg STR 'Column Spacing'
ENDP
END
|
|
@ -0,0 +1 @@
|
|||
#
# PL.make - Makefile for PL
#
# Copyright © 1989, Claris Corporation.
#
# This is a sub-makefile, called recursively when ::AppleWorks.make is
# executed.
#
# All modules (including Driver, Scrap, Pict., SS, DB, etc.)
# should have similar makefiles in their respective folders.
#
# This makefile rebuilds the module object files as necessary and creates a
# file containing the necessary steps to link this module with the rest of
# AppleWorksGS. ::AppleWorks.make combines the link files from the modules
# into a script which it executes to create an executable.
#--------------------------------------------------------------------------------
# Variables
AsmIIGSOptions =
Segment1 = PL
Segment2 = PL2
Segment3 = PLSCRAP
Module = PL
ModuleDir = {AWGS}{Module}:
SrcDir = {ModuleDir}Src:
IncDir = {ModuleDir}
ObjDir = {ModuleDir}Obj:
GlobalIncludes = {AWGS}Macros:Macros.dump ¶
{IncDir}PL.equ ¶
{AWGS}Driver:Driver.equ
Linkfile = {ModuleDir}{Module}.link
Makefile = {ModuleDir}{Module}.make
Objs = {Objs1} {Objs2} {Objs3}
Objs1 = {objdir}pl.o ¶
{objdir}pdata.o ¶
{objdir}picon.o ¶
{objdir}putil.o ¶
{objdir}poptions.o ¶
{objdir}pfile.o ¶
{objdir}pprint.o ¶
{objdir}ptool.o ¶
{objdir}pmouse.o ¶
{objdir}pobject.o ¶
{objdir}pobjutil.o ¶
{objdir}plist.o ¶
{objdir}pmove.o ¶
{objdir}ppage.o ¶
{objdir}pruler.o ¶
{objdir}pupdate.o ¶
{objdir}pmenus.o ¶
{objdir}pedit.o ¶
{objdir}pundo.o ¶
{objdir}parrange.o ¶
{objdir}pscroll.o ¶
{objdir}pguide.o ¶
{objdir}pdrag.o ¶
{objdir}ptab.o ¶
{objdir}main.o ¶
{objdir}prim.o ¶
{objdir}prim2.o ¶
{objdir}tutil.o ¶
{objdir}tdraw.o ¶
{objdir}click.o ¶
{objdir}key.o ¶
{objdir}edit.o ¶
{objdir}format.o ¶
{objdir}truler.o ¶
{objdir}tcntl.o
Objs2 = {objdir}pruler2.o ¶
{objdir}putil2.o ¶
{objdir}pobjutil2.o ¶
{objdir}tscrap.o ¶
{objdir}tutil2.o ¶
# {objdir}tdbg.o ¶
# {objdir}tdbg.o ¶
# {objdir}pdbg.o ¶
# {objdir}pdbg.o
Objs3 = {objdir}pscrap.o ¶
{objdir}strings.o
ScrapDpndtObj = {objdir}pedit.o ¶
{objdir}pl.o
#--------------------------------------------------------------------------------
# Main target
{Linkfile} ÄÄ {Objs} {Makefile}
@if "`newer {Makefile} {LinkFile}`"; ¶
@echo "# Creating {LinkFile} ¶É"
@echo " -lseg:dynamic {Segment1} {Objs1} ¶¶" > {targ}
@echo " -lseg:dynamic {Segment2} {Objs2} ¶¶" >> {targ}
@echo " -lseg {Segment3} {Objs3} ¶¶" >> {targ}
@else
@touch {linkfile}
@end
# Global PL dependencies
{Objs} Ä {GlobalIncludes}
# Other PL dependencies
{ScrapDpndtObj} Ä {AWGS}Scrap:Scrap.equ
clean Ä
@confirm "Delete {Module} objs and linkfile?"
@if ({status} == 0)
set foobar {exit}
unset exit
delete -y {awgs}{module}:src:Å.lst
delete -y {Linkfile}
delete -y {Objs}
set exit {foobar}
@end
#--------------------------------------------------------------------------------
# Default rules
.o Ä .s
AsmIIGS {DepDir}{Default}.s -i {IncDir},{AWGS}Macros,{AWGS}Driver,{AWGS}Scrap -o {TargDir}{Default}.o {AsmIIGSOptions}
{ObjDir} Ä {SrcDir}
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
-lseg:dynamic PICT Source:AWGS:Pict:Obj:picture.aii.o Source:AWGS:Pict:Obj:fliprot.aii.o Source:AWGS:Pict:Obj:region.aii.o Source:AWGS:Pict:Obj:pixels.aii.o Source:AWGS:Pict:Obj:text.aii.o Source:AWGS:Pict:Obj:misc.aii.o ¶
|
|
@ -0,0 +1 @@
|
|||
#
# Pict.make - Makefile for Pict
#
# Copyright © 1989, Claris Corporation.
#
# This is a sub-makefile, called recursively when ::AppleWorks.make is
# executed.
#
# All modules (including Driver, Scrap, Pict., SS, DB, etc.)
# should have similar makefiles in their respective folders.
#
# This makefile rebuilds the module object files as necessary and creates a
# file containing the necessary steps to link this module with the rest of
# AppleWorksGS. ::AppleWorks.make combines the link files from the modules
# into a script which it executes to create an executable.
#--------------------------------------------------------------------------------
# Variables
AsmIIGSOptions =
Segment1 = PICT
Module = Pict
ModuleDir = {AWGS}{Module}:
SrcDir = {ModuleDir}Src:
IncDir = {ModuleDir}
ObjDir = {ModuleDir}Obj:
Linkfile = {ModuleDir}{Module}.link
Makefile = {ModuleDir}{Module}.make
GlobalIncludes = {IncDir}Pict.equ ¶
{AWGS}Driver:Driver.equ
GlobalMacros = {AWGS}Macros:Macros.dump
Objs = {ObjDir}picture.aii.o ¶
{ObjDir}fliprot.aii.o ¶
{ObjDir}region.aii.o ¶
{ObjDir}pixels.aii.o ¶
{ObjDir}text.aii.o ¶
{ObjDir}misc.aii.o
#--------------------------------------------------------------------------------
# Main target
{Linkfile} ÄÄ {Objs} {Makefile}
@echo "Creating {LinkFile} ¶É"
@echo " -lseg:dynamic {Segment1} {Objs} ¶¶" > {Targ}
# Global Pict dependencies
{Objs} Ä {GlobalIncludes} {GlobalMacros}
clean Ä
@confirm "Delete {Module} objs and linkfile?"
@if {status} == 0 then
rm {Linkfile} {Objs}
@end
#--------------------------------------------------------------------------------
# Default rules
.aii.o Ä .aii
AsmIIGS -i {AWGS}Macros,{AWGS}Driver,{AWGS}Pict {DepDir}{Default}.aii -o {TargDir}{Default}.aii.o {AsmIIGSOptions}
{ObjDir} Ä {SrcDir}
|
|
@ -0,0 +1 @@
|
|||
LOAD 'Macros.dump'
INCLUDE 'Pict.equ'
INCLUDE 'Driver.equ'
IMPORT Q_FlipHMap
IMPORT Q_FlipVMap
IMPORT Q_RotLMap
IMPORT Q_RotRMap
****************************************************************
* ;
* Picture flipping and rotating routines ;
* Jeff G. Erickson ;
* ;
****************************************************************
****************************************************************
Q_PictData PROC EXPORT
EXPORT Q_picterr
EXPORT Q_gotPScomm
EXPORT Q_op
EXPORT Q_center
EXPORT Q_addbytes
EXPORT Q_pictSCB
EXPORT Q_thePnSize
EXPORT Q_theMask
EXPORT Q_thePnLoc
EXPORT Q_theFGcolor
EXPORT Q_theBGcolor
EXPORT Q_theTxFont
EXPORT Q_theTxMode
EXPORT Q_theChExtra
EXPORT Q_theSpExtra
EXPORT Q_theFontFlags
EXPORT Q_theTxLoc
EXPORT Q_txtPort
EXPORT Q_txtPortLoc
EXPORT Q_txtSCB
EXPORT Q_txtImage
EXPORT Q_txtWidth
EXPORT Q_txtBounds
EXPORT Q_txtHandle
EXPORT Q_txtHsize
EXPORT Q_txtRect
EXPORT Q_pixSCB
EXPORT Q_pixbounds
EXPORT Q_srcpixsize
EXPORT Q_dstpixsize
EXPORT Q_PixelTable
EXPORT Q_printsquare
EXPORT Q_square
EXPORT Q_half
Q_picterr DS.B 2
Q_gotPScomm DC.W 0
*--------------------------------------------------------------*
* Picture stuff ;
*--------------------------------------------------------------*
Q_op DS.B 2 ; current picture opcode
Q_center DS.B 4 ; TWICE the Q_center of the picture
Q_addbytes DS.B 4 ; how many bytes to add to the pict?
Q_pictSCB DS.B 2 ; picture's original SCB
Q_thePnSize DS.B 4 ; current pen size w/i the D_New picture
Q_theMask DS.B 8 ; ... pen Q_Mask ...
Q_thePnLoc DS.B 4 ; current pen location w/i OLD picture
*--------------------------------------------------------------*
* Q_Text stuff ;
*--------------------------------------------------------------*
Q_theFGcolor DS.B 2 ; ... foreground color ...
Q_theBGcolor DS.B 2 ; ... background color ...
Q_theTxFont DS.B 4 ; ... font ID ...
Q_theTxMode DS.B 2 ; ... Q_Text mode ...
Q_theChExtra DS.B 4 ; ... charExtra ...
Q_theSpExtra DS.B 4 ; ... spaceExtra ...
Q_theFontFlags DS.B 2 ; ... font flags ...
Q_theTxLoc DS.B 4 ; ... the Q_Text location ...
Q_txtPort DS.B 170 ; Q_Text port
Q_txtPortLoc ; ; Q_Text port loc
Q_txtSCB DS.B 2 ; SCB
Q_txtImage DS.B 4 ; pointer to Q_Text image
Q_txtWidth DS.B 2 ; byte width of Q_Text image (mult. of 8)
Q_txtBounds DS.B 8 ; bounds of Q_Text image (adj'd to width)
Q_txtHandle DS.B 4 ; handle on Q_Text image (ptr to Q_txtImage)
Q_txtHsize DS.B 4 ; size of Q_txtHandle
Q_txtRect DS.B 8 ; REAL bounds of Q_Text image
*--------------------------------------------------------------*
* Pixelmap stuff ;
*--------------------------------------------------------------*
Q_pixSCB DS.B 2 ; pixmap's scan-Q_Line control byte
Q_pixbounds DS.B 4 ; bottom right of (old) bounds
Q_srcpixsize DS.B 4 ; size (bytes) of source pixmap
Q_dstpixsize DS.B 4 ; size (bytes) of detination pixmap
Q_PixelTable ; ; routines for mangling pixmaps
DC.L Q_FlipHMap
DC.L Q_FlipVMap
DC.L Q_RotRMap
DC.L Q_RotLMap
*--------------------------------------------------------------*
* Q_Region stuff ;
*--------------------------------------------------------------*
Q_printsquare DC.W 0,0,128,256
Q_square DC.W 0,0,128,128
Q_half DC.W 0,0,128,64
ENDP
END
|
|
@ -0,0 +1 @@
|
|||
LOAD 'Macros.dump'
INCLUDE 'Pict.equ'
INCLUDE 'Driver.equ'
IMPORT Q_printsquare
IMPORT Q_square
****************************************************************
*
* Q_ManglePoint(srcpt:l,rectptr:l,what:w,prrec:l):dstpt:l
* Flip/rotate a Q_Point around the Q_center of a rectangle.
* srcpt and dstpt are values, not pointers. Everything
* is done according to the print record prrec.
*
****************************************************************
Q_ManglePoint PROC EXPORT
;Using Q_PictData
input srcpt:l,rectptr:l,who:w,prrec:l
output dstpt:l
local middle:l,prptr:l
begin +b
movelong [rectptr],myrect
movelong [rectptr]:#4,myrect+4
cmpl prrec,#0
beq nomap
movelong [prrec],prptr
movelong [prptr]:#4,Q_printsquare+4
pushlong #myrect
pushlong #Q_printsquare
pushlong #Q_square
_MapRect
pushlong !srcpt
pushlong #Q_printsquare
pushlong #Q_square
_MapPt
nomap addword myrect,myrect+4,middle
addword myrect+2,myrect+6,middle+2
jtl trashPt,who
cmpl prrec,#0
beq nomap2
pushlong !srcpt
pushlong #Q_square
pushlong #Q_printsquare
_MapPt
nomap2 movelong srcpt,dstpt
return
trashPt DC.L h_pt
DC.L v_pt
DC.L r_pt
DC.L l_pt
*--------------------------------------------------------------*
h_pt lda middle+2 ; H-flip the Q_Point around middle.x
sec
sbc srcpt+2
sta srcpt+2
rtl
*--------------------------------------------------------------*
v_pt lda middle ; V-flip the Q_Point around middle.y
sec
sbc srcpt
sta srcpt
rtl
*--------------------------------------------------------------*
;
; NOTE: The reason behind adding the last bit of either middle or
; middle+2 in the calculations below is to prevent the Q_Point
; from creeping up and/or to the left when (middle)+(middle+2)
; is odd. Trust me. It works.
; -- jge, 1/20/88
;
r_pt lda middle+2 ; R-rotate the Q_Point around middle
and #1 ; <adjust for creep>
clc
adc middle+2 ; pt.x <= -(pt.y - middle.y) + middle.x
adc middle
sta dstpt ; (divide middle by 2, preserving
asl dstpt ; the sign)
ror a ;
sec
sbc srcpt
tax ; D_Save it here...
lda middle ; pt.y <= pt.x - middle.x + middle.y
and #1 ; <adjust for creep>
clc
adc middle
sec
sbc middle+2
sta dstpt ; (divide middle by 2, preserving
asl dstpt ; the sign)
ror a ;
clc
adc srcpt+2
sta srcpt
stx srcpt+2 ; ...and store it here.
r_ptdone rtl
*--------------------------------------------------------------*
l_pt lda middle ; L-rotate the Q_Point around middle
and #1 ; <adjust for creep>
clc
adc middle ; pt.y <= -(pt.x - middle.x) + middle.y
adc middle+2
sta dstpt ; (divide middle by 2, preserving
asl dstpt ; the sign)
ror a ;
sec
sbc srcpt+2
tay ; D_Save it here...
lda middle+2 ; pt.x <= pt.y - middle.y + middle.x
and #1 ; <adjust for creep>
clc
adc middle+2
sec
sbc middle
sta dstpt ; (divide middle by 2, preserving
asl dstpt ; the sign)
ror a ;
clc
adc srcpt
sta srcpt+2
sty srcpt ; ...and store it here.
l_ptdone rtl
*--------------------------------------------------------------*
myrect DS.B 8
ENDP
END
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
;------------------------------------------
;
; Equates from procedure Q_PictData
;
;------------------------------------------
Q_fliph equ 0
Q_flipv equ 1
Q_rotr equ 2
Q_rotl equ 3
Q_BadPictData equ $A501 ; Error code: illegal picture data
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
-lseg{Kind} SS Source:AWGS:SS:Obj:Data.aii.o Source:AWGS:SS:Obj:SS.aii.o Source:AWGS:SS:Obj:FileIO.aii.o Source:AWGS:SS:Obj:Edit.aii.o Source:AWGS:SS:Obj:Edit2.aii.o Source:AWGS:SS:Obj:Undo.aii.o Source:AWGS:SS:Obj:Move.aii.o Source:AWGS:SS:Obj:Move2.aii.o Source:AWGS:SS:Obj:Move3.aii.o Source:AWGS:SS:Obj:Sort.aii.o Source:AWGS:SS:Obj:Format.aii.o Source:AWGS:SS:Obj:Options.aii.o Source:AWGS:SS:Obj:DataMenu.aii.o Source:AWGS:SS:Obj:Update.aii.o Source:AWGS:SS:Obj:Draw.aii.o Source:AWGS:SS:Obj:Draw2.aii.o Source:AWGS:SS:Obj:Mouse.aii.o Source:AWGS:SS:Obj:Key.aii.o Source:AWGS:SS:Obj:Misc.aii.o Source:AWGS:SS:Obj:Cells.aii.o Source:AWGS:SS:Obj:Cells2.aii.o Source:AWGS:SS:Obj:CellEdit.aii.o Source:AWGS:SS:Obj:CellEval.aii.o Source:AWGS:SS:Obj:Eval2.aii.o Source:AWGS:SS:Obj:Dlog.aii.o ¶
-lseg{Kind} SS2 Source:AWGS:SS:Obj:Misc2.aii.o Source:AWGS:SS:Obj:Dlog2.aii.o Source:AWGS:SS:Obj:Chart.aii.o Source:AWGS:SS:Obj:Pie.aii.o Source:AWGS:SS:Obj:Bar.aii.o Source:AWGS:SS:Obj:ChartData.aii.o ¶
|
|
@ -0,0 +1 @@
|
|||
#
# SS.make - Makefile for SS
#
# Copyright © 1989, Claris Corporation.
#
# This is a sub-makefile, called recursively when ::AppleWorks.make is
# executed.
#
# All modules (including Driver, Scrap, Pict., SS, DB, etc.)
# should have similar makefiles in their respective folders.
#
# This makefile rebuilds the module object files as necessary and creates a
# file containing the necessary steps to link this module with the rest of
# AppleWorksGS. ::AppleWorks.make combines the link files from the modules
# into a script which it executes to create an executable.
#--------------------------------------------------------------------------------
# Variables
AsmIIGSOptions = -i {IncDir},{AWGS}Macros,{AWGS}Driver,{AWGS}Heap,{AWGS}Eval
# -d Profile,ProfileNumber=13
Segment1 = SS
Segment2 = SS2
Module = SS
ModuleDir = {AWGS}{Module}:
SrcDir = {ModuleDir}Src:
IncDir = {ModuleDir}
ObjDir = {ModuleDir}Obj:
Linkfile = {ModuleDir}{Module}.link
Makefile = {ModuleDir}{Module}.make
GlobalIncludes = {IncDir}SS.equ ¶
{AWGS}Driver:Driver.equ ¶
{AWGS}Heap:Heap.aii.i
GlobalMacros = {AWGS}Macros:Macros.dump ¶
{AWGS}Macros:M16.Profile ¶
Objs = {Objs1} {Objs2}
Objs1 = {ObjDir}Data.aii.o ¶
{ObjDir}SS.aii.o ¶
{ObjDir}FileIO.aii.o ¶
{ObjDir}Edit.aii.o ¶
{ObjDir}Edit2.aii.o ¶
{ObjDir}Undo.aii.o ¶
{ObjDir}Move.aii.o ¶
{ObjDir}Move2.aii.o ¶
{ObjDir}Move3.aii.o ¶
{ObjDir}Sort.aii.o ¶
{ObjDir}Format.aii.o ¶
{ObjDir}Options.aii.o ¶
{ObjDir}DataMenu.aii.o ¶
{ObjDir}Update.aii.o ¶
{ObjDir}Draw.aii.o ¶
{ObjDir}Draw2.aii.o ¶
{ObjDir}Mouse.aii.o ¶
{ObjDir}Key.aii.o ¶
{ObjDir}Misc.aii.o ¶
{ObjDir}Cells.aii.o ¶
{ObjDir}Cells2.aii.o ¶
{ObjDir}CellEdit.aii.o ¶
{ObjDir}CellEval.aii.o ¶
{ObjDir}Eval2.aii.o ¶
{ObjDir}Dlog.aii.o
Objs2 = {ObjDir}Misc2.aii.o ¶
{ObjDir}Dlog2.aii.o ¶
{ObjDir}Chart.aii.o ¶
{ObjDir}Pie.aii.o ¶
{ObjDir}Bar.aii.o ¶
{ObjDir}ChartData.aii.o
#--------------------------------------------------------------------------------
# Main target
{Linkfile} ÄÄ {Objs} {Makefile}
@if "`newer {Makefile} {LinkFile}`"
@echo "Creating {LinkFile} ¶É"
@echo " -lseg¶{Kind¶} {Segment1} {Objs1} ¶¶" > {Targ}
@echo " -lseg¶{Kind¶} {Segment2} {Objs2} ¶¶" >> {Targ}
@else
@touch {Linkfile}
@end
# SS dependencies
{Objs} Ä {GlobalIncludes} {GlobalMacros}
{ObjDir}Data.aii.o ¶
{ObjDir}CellEdit.aii.o ¶
{ObjDir}CellEval.aii.o ¶
{ObjDir}Cells2.aii.o ¶
{ObjDir}Move.aii.o ¶
{ObjDir}Move2.aii.o ¶
{ObjDir}Move3.aii.o ¶
{ObjDir}Undo.aii.o ¶
{ObjDir}SS.aii.o Ä {Makefile}
{ObjDir}CellEval.aii.o ¶
{ObjDir}CellEdit.aii.o ¶
{ObjDir}Cells2.aii.o ¶
{ObjDir}Dlog2.aii.o ¶
{ObjDir}Draw.aii.o ¶
{ObjDir}Edit.aii.o ¶
{ObjDir}Eval2.aii.o ¶
{ObjDir}Misc.aii.o ¶
{ObjDir}Misc2.aii.o ¶
{ObjDir}Move.aii.o ¶
{ObjDir}Move2.aii.o ¶
{ObjDir}Move3.aii.o ¶
{ObjDir}SS.aii.o Ä {AWGS}Eval:Eval.aii.i
clean Ä
@confirm "Delete {Module} objs and linkfile?"
@if {status} == 0 then
rm {Linkfile} {Objs}
@end
#--------------------------------------------------------------------------------
# Default rules
.aii.o Ä .aii
AsmIIGS {DepDir}{Default}.aii -o {TargDir}{Default}.aii.o {AsmIIGSOptions}
{ObjDir} Ä {SrcDir}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue