1 line
7.5 KiB
Plaintext
Raw Normal View History

2023-03-04 03:45:20 +01:00
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