mirror of
https://github.com/antoinevignau/source.git
synced 2025-02-08 04:30:38 +00:00
1 line
7.5 KiB
Plaintext
1 line
7.5 KiB
Plaintext
|
load 'macros.dump'
include 'driver.equ'
include 'scrap.equ'
include 'dbsc.equ'
IMPORT D_AlertBox
IMPORT X_AsciiFilter
IMPORT D_AuxHand
IMPORT D_BeachBall
IMPORT X_Blurb2
IMPORT X_Button1Text
IMPORT X_Button2Text
IMPORT X_Button3Text
IMPORT D_CloseDialog
IMPORT X_ContText
IMPORT D_CurCursor
IMPORT X_DefaultDBFieldBlock
IMPORT D_DigitsOnly
IMPORT X_FSBlurbString
IMPORT FSDialogTemplate
IMPORT X_FSScratch
IMPORT FieldRecSize
IMPORT X_FieldRecord
IMPORT X_FormatMask
IMPORT D_GetNewModalDialog
IMPORT D_GrowHandle
IMPORT X_InitFieldScanner
IMPORT D_NeedHand
IMPORT X_NextField
IMPORT X_OldCursor
IMPORT X_SStoAsciiScrap
IMPORT X_PLtoAsciiScrap
IMPORT D_SetCursor
IMPORT X_WPtoAsciiScrap
IMPORT X_DBButton1Text
IMPORT X_DBButton2Text
IMPORT X_DBButton3Text
IMPORT X_DBContText
import X_AsciitoDBScrap
import X_ClipData
import X_DoAsciitoDBScrap
import X_NumberStr
X_ScDoAsciitoDBScrap PROC EXPORT
;Using X_DBScrapData
;Using X_FieldScannerData
;Using D_CursorData
;Using X_ClipData
input Src:l,SepFlag:w,ScanFields:w
local Dptr:l,Dsize:l,Doff:l,ScrapPtr:l,D_AuxHand:l
local Aptr:l,Asize:l,Aoff:l,MaxRow:w,MaxCol:w
local Col:w,Result:w,StrSize:w,FieldPtr:l
local DataOff:l,RowSize:l,Row:w,Cells:l
local ScrapSize:l,Sptr:l
output Dest:l
error err
begin
MoveWord >D_CurCursor,X_OldCursor
SpaceLong
PushLong Src
_GetHandleSize
PullLong ScrapSize
DecLong ScrapSize
AddLong [Src],ScrapSize,Sptr
short
lda [Sptr]
cmp #CR
bne nocr
long
PushLong ScrapSize
PushLong Src
jsl D_GrowHandle
bra scan
nocr long
;Initialize scanner
scan PushLong Src
PushWord SepFlag
PushWord ScanFields
jsl X_InitFieldScanner
;Allocate string block
SpaceLong
PushLong #1024
jsl D_NeedHand
sta err
PullLong D_AuxHand
jcs error
;Allocate handle for scrap
SpaceLong
_MaxBlock
PullLong ScrapSize
SpaceLong
PushLong ScrapSize
jsl D_NeedHand
sta err
PullLong Dest
jcs exit
;Initialize sizes, field block to copy, etc.
Stzl Dsize
Stzl Doff
PushLong #X_DefaultDBFieldBlock
PushLong #X_FieldRecord
PushLong #FieldRecSize
_BlockMove
lda #X_DBScHeaderSize
jsr FixDptr
jcs exit
MoveWord #X_DBCellType,[Dptr]
MoveWord #0,[Dptr]:#X_DBLabels
MoveWord #0,[Dptr]:#X_DBFormHeight
MoveWord #0,[Dptr]:#X_DBHeaderHeight
MoveWord #0,[Dptr]:#X_DBFooterHeight
MoveLong #X_DBScHeaderSize,Dsize
MoveLong #X_DBScHeaderSize,Doff
Stzl Cells
MoveLong [D_AuxHand],Aptr
Stzl Asize
Stzl Aoff
MoveWord #1,MaxRow
sta MaxCol
sta Col
loop jsl D_BeachBall
SpaceWord
jsl X_NextField
PullWord Result
lda X_FSScratch
and #$ff
sta StrSize
bne notempty
brl test
notempty clc
adc #4
inc a
jsr FixAptr
jcs listerr
MoveWord MaxRow,[Aptr]
MoveWord Col,[Aptr]:#2
PushLong #X_FSScratch
Addwls #4,Aptr
pea 0
inc StrSize
pei StrSize
_BlockMove
Addwl #4,Aoff
Addwl StrSize,Aoff
IncLong Cells
test lda Result
beq dofield
bpl dorecord
bra doendofscrap
dofield Cmpw Col,MaxCol
bge newmax
bra nonewmax
newmax MoveWord Col,MaxCol
nonewmax inc Col
brl loop
dorecord Cmpw Col,MaxCol
bge blah1
bra blah2
blah1 MoveWord Col,MaxCol
blah2 MoveWord #1,Col
inc MaxRow
brl loop
doendofscrap
Cmpw Col,MaxCol
bge blah3
bra blah4
blah3 MoveWord Col,MaxCol
blah4 MoveLong [Dest],Dptr
MoveLong MaxRow,[Dptr]:#X_DBRows
MoveLong MaxCol,[Dptr]:#X_DBColumns
SpaceLong
PushWord #(FieldRecSize+13)
PushWord MaxCol
_Multiply
pla
sta DataOff
plx
stx DataOff+2
clc
adc #X_DBScHeaderSize
jcs listerr
sta DataOff
MoveLong DataOff,[Dptr]:#X_DBDataOffset
MoveWord #1,Col
MoveLong #(FieldRecSize+13),X_FieldRecord
colloop jsl D_BeachBall
lda #(FieldRecSize+13)
jsr FixDptr
jcs listerr
PushLong #X_FieldRecord
PushLong Dptr
PushLong #FieldRecSize
_BlockMove
Addwl #FieldRecSize,Dptr
MoveLong >FieldName,[Dptr]
Addwl #4,Dptr
MoveByte #0,[Dptr]
IncLong Dptr
MoveLong >FieldName,[Dptr]
MoveLong #0,[Dptr]:#4
lda >FieldBody
inc a
sta >FieldBody
bne @1
lda >FieldBody+2
inc a
sta >FieldBody+2
@1 Addwl #(FieldRecSize+13),Doff
lda Col
cmp MaxCol
bge endcolloop
inc Col
brl colloop
end
|