antoine-source/appleworksgs/PL/Src/TCNTL.S

1 line
3.0 KiB
ArmAsm
Executable File

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