mirror of https://github.com/marketideas/qasm.git
1650 lines
33 KiB
ArmAsm
1650 lines
33 KiB
ArmAsm
lst off
|
|
ttl "QuickASM Shell v0.70"
|
|
exp off
|
|
tr on
|
|
cas se
|
|
* dup
|
|
*======================================================
|
|
* Graphic Shell for QuickASM development system
|
|
|
|
* Programming by Lane Roath
|
|
* Copyright (c) 1990 Ideas From the Deep & Lane Roath
|
|
*------------------------------------------------------
|
|
* 26-Jun-90 0.70 :Line/Label in, Find centers text, WORDS works!
|
|
* 20-Jun-90 0.60 :now works w/new stuff from Shawn & LOGIN!!!!
|
|
* 10-Jun-90 0.50 :asm,link,menus now much easier to use
|
|
* 30-Mar-90 0.40 :One shell, graphics & text... works!
|
|
* 01-Mar-90 0.35 :QA command parsing working!!!
|
|
* 27-Feb-90 0.30 :QA output trapped, link & assemble work
|
|
* 22-Feb-90 0.20 :start adding QA stuff (seperate file)
|
|
* 09-Feb-90 0.10 :start graphics shell from WW code
|
|
*======================================================
|
|
|
|
rel
|
|
|
|
Version = $00700000 ;v0.70
|
|
Class1 = $2000
|
|
|
|
lst off
|
|
use 2/data/qa.equates
|
|
use macs
|
|
use ifd.equs
|
|
use equs
|
|
lst rtn
|
|
|
|
EXT HProj,HSrc,HGSOS,HTran,HTool,InstallKey,LoadQAStuff
|
|
EXT pchr,pstr,pblk,pechr,pestr,peblk,DoClear,DoEnter
|
|
EXT doTextMode,PrintWelcome,pt2c,SetStyle,mySetRuler
|
|
EXT GrafVectors,SetTabs
|
|
|
|
*======================================================
|
|
* Startup the program & do all that cool stuff
|
|
|
|
QuickASM ENT
|
|
phk ;use our bank as data bank
|
|
plb
|
|
tdc ; & save DP for special use
|
|
sta myDP
|
|
|
|
~Startup #SSRec;#mySD;#0 ;startup the toolbox
|
|
|
|
stz WdwCnt
|
|
stz SDFlg
|
|
stz ClearFlg
|
|
stz EnterFlg
|
|
stz PrtOK?
|
|
stz LastFile
|
|
stz SaveText
|
|
lda #5002 ;init window menu
|
|
sta WMenuRef
|
|
lda #1 ;init search flags
|
|
sta CaseFlg
|
|
sta FromTop
|
|
stz WordFlg
|
|
stz LabelFlg
|
|
inc
|
|
sta TextPath ;can't have NIL initial path!
|
|
lda #'1:'
|
|
sta TextPath+2
|
|
|
|
~NewHandle #200;ID2;#0;#0 ;allocate print record
|
|
ply
|
|
sty PrtHdl ;save handle, good or bad (stack)!
|
|
plx
|
|
stx PrtHdl+2
|
|
bcs :4
|
|
phx
|
|
phy
|
|
_PrDefault ;init record w/default values
|
|
bcc :1
|
|
:4
|
|
~SysError #MPInit ;show error w/allocation
|
|
bra :0
|
|
:1
|
|
dec PrtOK?
|
|
Hdl_Ptr PrtHdl;Ptr
|
|
ldy #$18 ;index to wDev in style subrecord
|
|
lda [Ptr],y
|
|
and #%11111111_11011010 ;force condensed & text quality
|
|
ora #%00000000_00000001
|
|
sta [Ptr],y
|
|
:0
|
|
~FMGetCurFID ;get current font ID
|
|
PullLong NewStyle
|
|
lda #22
|
|
sta NewStyle ;force cmd windows to be in COURIER!
|
|
SEP #$20
|
|
lda #12 ;use 10 point
|
|
sta NewStyle+3
|
|
REP #$20
|
|
|
|
jsr LoadQAStuff ;need QA stuff
|
|
bcc :qagood
|
|
~SysError #QAError
|
|
:qagood
|
|
jsr PrintWelcome ;show QuickASM welcome text
|
|
|
|
jsr GrafVectors ;set print vectors for graphics
|
|
|
|
~CreateMBar #Menus;#AppleMenu;#0 ;create our menu bar
|
|
|
|
lda #16*1024 ;16K max
|
|
sta TEMaxChrs
|
|
|
|
lda #100
|
|
sta WdwRec ;only use half of screen
|
|
lda #CmdWdwID
|
|
sta WdwIDNum
|
|
ldx #CmdTitle ;open command window
|
|
jsr OpenWindow
|
|
lax WdwPtr
|
|
sax CmdPtr ;save wdw pointer
|
|
lax TEHdl
|
|
sax CmdTEHdl ;save TE handle (for inserts)
|
|
|
|
jsr InstallKey ;let ENTER,CLEAR work
|
|
|
|
lda #25
|
|
sta WdwRec
|
|
lda #100 ;only use half of screen
|
|
sta WdwRec+4
|
|
lda #ErrWdwID
|
|
sta WdwIDNum
|
|
ldx #ErrTitle ;open error window
|
|
jsr OpenWindow
|
|
lax WdwPtr
|
|
sax ErrPtr ;save wdw pointer
|
|
lax TEHdl
|
|
sax ErrTEHdl ;save TE handle (for inserts)
|
|
|
|
jsr InstallKey ;setup as required
|
|
|
|
stz TEMaxChrs ;unlimited source size
|
|
lda #199
|
|
sta WdwRec+4 ;docs use all of screen
|
|
lda #WindowID
|
|
sta WdwIDNum
|
|
sta FrontWdw ;force update of menus
|
|
|
|
~SelectWindow CmdPtr
|
|
|
|
stz PrintBuf
|
|
jsr PrintWelcome ;show QuickASM welcome text
|
|
|
|
_InitCursor ;no longer waiting to startup
|
|
|
|
~CheckClick #TextName ;do we have a doc to open?
|
|
txa
|
|
beq :9 ; no- don't open anything
|
|
|
|
jsr HProj ;open new/finder doc
|
|
:9
|
|
do TeaseWare
|
|
jsr DoTease ;show teaser if on
|
|
fin
|
|
|
|
*======================================================
|
|
* Main event loop
|
|
|
|
Main
|
|
_QARun ;allow background apps time
|
|
|
|
~QAGetQuitFlag ;time to quit?
|
|
pla
|
|
bfl :0
|
|
jsr mySD ; yes- repeat if open windows
|
|
:0
|
|
jsr SetWindow ;insure menus set correctly
|
|
|
|
~TaskMaster #$FFFF;#TaskRc ;handle the tasks!
|
|
pla
|
|
bfl :9 ;result from TaskMaster
|
|
|
|
cmp #$19 ;special menu item?
|
|
beq :4
|
|
cmp #$11 ;menu event?
|
|
bne :1
|
|
:4
|
|
jsr HandleMenus ; yes- handle it
|
|
bra :9
|
|
:1
|
|
cmp #$16 ;close window
|
|
bne :2
|
|
jsr CloseWindow ; yes- do so!
|
|
:2
|
|
:9
|
|
~TEGetLastError #-1;TEHdl ;report any internal errors
|
|
pla
|
|
bfl :ok
|
|
~SysError #MTEInfo ; (saves crashes!)
|
|
bra Main
|
|
:ok
|
|
lda ClearFlg ;user press CLEAR?
|
|
beq :9a
|
|
jsr DoClear ; yes- clear text
|
|
:9a
|
|
lda EnterFlg ;how about ENTER?
|
|
beq Main
|
|
jsr DoEnter ; yes- parse line
|
|
bra Main
|
|
|
|
*======================================================
|
|
* Close all windows, save all docs, and shutdown the tools
|
|
|
|
mySD
|
|
phk
|
|
plb
|
|
clc ;use our bank, in 65816, 16 bit mode
|
|
xce
|
|
rep #$30
|
|
lda myDP
|
|
tcd
|
|
|
|
lda WdwCnt ;do we need to close a window?
|
|
cmp #3
|
|
blt :1
|
|
jsr CloseWindow ; yes- try to do so
|
|
bcc :2
|
|
~QASetQuitFlag #0 ;user canceled!!!
|
|
stz SDFlg
|
|
:2 rts
|
|
:1
|
|
~QAGetLaunch ;get launch flags (leave on stack)
|
|
_QADispose
|
|
_QAShutdown ;shutdown QA tools
|
|
|
|
_Shutdown ;shutdown real tools
|
|
|
|
ply
|
|
pla
|
|
plx ;get launch flags from stack
|
|
stz QuitParms
|
|
lax #TextPath ;[][ vat do we get back? ][]
|
|
sax QuitParms+2
|
|
sty QuitParms+6 ; & save to quit area
|
|
tya
|
|
beq :quit
|
|
and #$FF ;launch or shutdown?
|
|
bfl :launch
|
|
|
|
lda #1 ; SD- make parms usable
|
|
sta SDParms
|
|
_GSOS _OSShutdown;SDParms ;shutdown
|
|
brk $69
|
|
:launch
|
|
lda #2
|
|
sta QuitParms ;use launch parms!
|
|
:quit
|
|
_GSOS _Quit;QuitParms
|
|
brk $69
|
|
|
|
*======================================================
|
|
* Handle Menu events from Task Master
|
|
|
|
HandleMenus
|
|
lda TData+2
|
|
ldx #-2 ;locate index
|
|
]loop inx
|
|
inx
|
|
cpx MaxMenus ;should never happen!
|
|
bge :err
|
|
cmp MenuNums,x ; by looking for menu #
|
|
bne ]loop
|
|
lda TData ; item = item # - menu #
|
|
sec
|
|
sbc TData+2 ;and exit via da table
|
|
jsr (HdlMenus,x)
|
|
|
|
~HiliteMenu #0;TData+2 ;unhilite menu
|
|
rts
|
|
:err
|
|
ora #$8000
|
|
~SysError #MMenu ;ohhhh no!
|
|
rts
|
|
|
|
*======================================================
|
|
* Set the window after a new one becomes active
|
|
|
|
SetWindow
|
|
~FrontWindow
|
|
pla ;get pointer to front window
|
|
plx ; (system,ours,none)
|
|
cmp WdwPtr
|
|
bne :1
|
|
cpx WdwPtr+2 ;is this a new window?
|
|
bne :1
|
|
rts ; no- done!
|
|
:1
|
|
sax WdwPtr ; yes- save pointer
|
|
ora WdwPtr+2
|
|
bfl :disable ;window open?
|
|
|
|
~CheckMItem #0;LastFile ; yes- uncheck last file in menu
|
|
|
|
~GetWKind WdwPtr ;is this one of our windows?
|
|
plx
|
|
stx SysWdw ;save status
|
|
bmi :disable
|
|
|
|
~GetCtlHandleFromID WdwPtr;#TECtrlID
|
|
PullLong TEHdl
|
|
|
|
~GetWRefCon WdwPtr ;get application value
|
|
plx
|
|
stx LastFile ;check in menu
|
|
~CheckMItem #1;LastFile
|
|
ply
|
|
cpy #WindowID ;source window?
|
|
bne :disable+2
|
|
brl EnableMenus ; yes, enable our menus
|
|
:disable
|
|
stz LastFile
|
|
brl DisableMenus ; no, disable our menus
|
|
|
|
*======================================================
|
|
* Handle Apple menu events
|
|
|
|
HApple
|
|
bne :1 about?
|
|
ldx #Anorm
|
|
ldy #anz-Anorm
|
|
lda TaskRc+14 ;option key pressed?
|
|
and #%0000100000000000
|
|
bfl :a
|
|
ldx #Aspcl ; yes, show bullshit dialog
|
|
ldy #asz-Aspcl
|
|
:a
|
|
stx AMod ;set text to show
|
|
sty AMod+4
|
|
~CenterDialog #DAbout
|
|
~Alert #DAbout;#0 ; & display centered alert
|
|
pla
|
|
:1
|
|
dec ;help?
|
|
bne :2
|
|
:2
|
|
do TeaseWare
|
|
DoTease ~NewAlert #DTease ; yes, does user really want to?
|
|
fin
|
|
|
|
rts
|
|
|
|
*======================================================
|
|
* Handle the File menu selections
|
|
|
|
HFile ENT
|
|
asl ;create index
|
|
tax
|
|
jmp (:tbl,x) ; & pass control to item handler
|
|
:tbl
|
|
da :Close
|
|
da :New
|
|
da :Open
|
|
da :Save
|
|
da :Save_As
|
|
da :Write
|
|
da :Write_As
|
|
da :Append
|
|
da :Revert
|
|
da :Page_Setup
|
|
da :Print
|
|
da :Shutdown
|
|
da :Quit
|
|
|
|
*------------------------------------------------------
|
|
:Close
|
|
brl CloseWindow
|
|
*------------------------------------------------------
|
|
:New
|
|
SHORTAX
|
|
ldx NewName
|
|
inc NewName+1,x ;we allow new files A-Z
|
|
LONGAX
|
|
ldx #NewName
|
|
brl OpenWindow2 ; yes- do so!
|
|
|
|
*------------------------------------------------------
|
|
:Open
|
|
ldy #TxtTypes
|
|
lda TaskRc+14 ;option key pressed?
|
|
and #%0000100000000000
|
|
bfl :a
|
|
ldy #AllTypes ; yes! Allow opening of ANY file!
|
|
:a
|
|
lda #OpenPrompt
|
|
ldx #TextName ;present SFDialog to select file
|
|
_GetFile
|
|
bcs :2b
|
|
btr :2a
|
|
:1a rts ;no file selected!
|
|
:2a
|
|
_WaitCursor
|
|
jsr :ReadFile ;read file w/style if present
|
|
bcs :2d
|
|
ldx #TextPath ;title = pathname
|
|
jsr OpenWindow2 ;Now open a window for the text!
|
|
bcs :2d
|
|
jsr SetText ;place text into TERec
|
|
bcc :2c
|
|
:2d
|
|
jsr RemoveText ;error- clean up memory
|
|
:2b
|
|
~SysError #MFOpen ;inform user of errors
|
|
:2c
|
|
_InitCursor
|
|
rts
|
|
*------------------------------------------------------
|
|
:Write
|
|
dec SaveText ;FALL THRU!!!
|
|
*------------------------------------------------------
|
|
:Save
|
|
~GetWTitle WdwPtr ; yes- need a filename?
|
|
PullLong Ptr
|
|
lda [Ptr]
|
|
cmp #$550A ; (untitled = 10,'U')
|
|
beq :Save_As
|
|
brl SaveData ; no, just save
|
|
|
|
*------------------------------------------------------
|
|
:Write_As
|
|
dec SaveText ;FALL THRU!!!
|
|
*------------------------------------------------------
|
|
:Save_As
|
|
~GetWTitle WdwPtr ; yes- get filename
|
|
pla
|
|
plx ; & set up for SF dialog
|
|
ldy #TextName
|
|
_CreateSFPath ; (set path & file info)
|
|
bcs :2b
|
|
~PutFile #SavePrompt;#TextName
|
|
bcs :2b
|
|
bfl :2c
|
|
~GetInfoRefCon WdwPtr ;get handle to title memory
|
|
_DisposeHandle ; & free that memory!
|
|
bcs :2b
|
|
ldx #InPath ;reset window title
|
|
jsr SetWdwTitle
|
|
:g2b bcs :2b
|
|
brl SaveData ;save file under new name!
|
|
|
|
*------------------------------------------------------
|
|
:Page_Setup
|
|
lda PrtOK? ;ok to do this?
|
|
bfl :6a
|
|
~PrStlDialog PrtHdl ; yep, do so
|
|
plx
|
|
:62b bcs :52b
|
|
:6a rts
|
|
|
|
*------------------------------------------------------
|
|
:Print
|
|
lda PrtOK? ; yes, printing ok?
|
|
bfl :6a
|
|
brl PrintText ; yes- do so!
|
|
|
|
*------------------------------------------------------
|
|
:Append
|
|
~GetFile #AppendPrompt;#TextName;#TxtTypes
|
|
bcs :g2b
|
|
bfl :6a
|
|
~TESetSelection #-1;#-1;#0 ;move to end of text
|
|
:DoApnd
|
|
_WaitCursor
|
|
jsr :ReadFile ;read text & style from file
|
|
:52b bcs :g2b
|
|
~TEReplace #%1101;textH;#0;#1;styleH;#0 ; & replace selection
|
|
jsr RemoveText
|
|
brl :2c
|
|
|
|
*------------------------------------------------------
|
|
:Revert
|
|
~GetWTitle WdwPtr ; yes- anything to revert to?
|
|
PullLong Ptr
|
|
lda [Ptr]
|
|
cmp #$550A ; (can't revert if never saved!)
|
|
beq :9a
|
|
~NewAlert #DWarning ; yes, does user really want to?
|
|
bne :9a
|
|
~GetWTitle WdwPtr ;get name to revert to
|
|
pla
|
|
plx
|
|
ldy #TextName
|
|
_CreateSFPath ;set path & get save name
|
|
:g52b bcs :52b
|
|
lda #20 ;select entire document
|
|
jsr HEdit
|
|
brl :DoApnd ; & replace w/file contents
|
|
|
|
*------------------------------------------------------
|
|
:Shutdown
|
|
~QASetLaunch #0;#-1 ;shutdown
|
|
|
|
*------------------------------------------------------
|
|
:Quit
|
|
_CloseAllNDAs ;close any open NDAs first
|
|
bcs :g52b
|
|
~QASetQuitFlag #-1 ; & quit if we are OK
|
|
:9a rts
|
|
|
|
*------------------------------------------------------
|
|
* Save some code space, make changes easier
|
|
|
|
:ReadFile
|
|
~ReadFile #TextName;#0 ;read file into memory
|
|
bcs :rfxit
|
|
sax textH
|
|
stz styleH ;assume just a text file
|
|
stz styleH+2
|
|
lda OpenParms+14 ;wp file?
|
|
eor #$50
|
|
bne :rfxit
|
|
jsr LoadStyle ; yes- get style info
|
|
:rfxit rts
|
|
|
|
*======================================================
|
|
* Handle the edit menu selections
|
|
|
|
HEdit ENT
|
|
sec
|
|
sbc #20 ;create usable #, ignore sys stuff
|
|
blt :2z
|
|
~TESetSelection #0;#-1;#0 ;Select All!
|
|
:2z
|
|
rts
|
|
|
|
*======================================================
|
|
* Handle a menu item selection
|
|
|
|
HWdwMenu
|
|
bne :1 ;stack windows?
|
|
jsr :InitStack
|
|
lda #:stack ; yes- do so
|
|
brl DoWindows
|
|
:1
|
|
dec ;edit next document?
|
|
beq :3
|
|
dec ;text mode?
|
|
bne :2
|
|
jmp doTextMode ; yes- do it!
|
|
:3
|
|
stz temp
|
|
lda #:nextwdw ; yes- search for it
|
|
jsr DoWindows
|
|
lda temp2 ;got one?
|
|
cmp #-1
|
|
bne :2a
|
|
lda temp3 ; no- or we wrapped to first!
|
|
:2a
|
|
sta TData ;and select it!!!
|
|
:2
|
|
lda #:front
|
|
jsr DoWindows ;select it- return = error!
|
|
lda #$FACE
|
|
:9
|
|
~SysError #MGetWindow ;oh shit!
|
|
rts
|
|
*------------------------------------------------------
|
|
:front
|
|
cpx TData ; yes- correct one?
|
|
bne :no
|
|
pla ; yes, return to main loop!
|
|
pla
|
|
~SelectWindow Ptr ;bring it to the front!
|
|
bcs :9
|
|
_InitCursor ; & exit
|
|
:no
|
|
rts
|
|
*------------------------------------------------------
|
|
:stack
|
|
cpy #WindowID ;only stack source windows
|
|
bne :no
|
|
~ShowHide #0;Ptr ;adjust window pos while hidden
|
|
~MoveWindow :pos+2;:pos;Ptr
|
|
~SizeWindow #586;#124;Ptr
|
|
~NotifyCtls #-1;#16;#0;Ptr
|
|
~ShowWindow Ptr ;redisplay it
|
|
|
|
lda :pos+2
|
|
sec
|
|
sbc #10
|
|
tax ;adjust for new pos
|
|
lda :pos
|
|
sbc #10 ; (+10 in both directions)
|
|
cmp #25
|
|
bge :is2 ;still on screen?
|
|
:InitStack
|
|
lda #24
|
|
ldx #1 ;set start of stack
|
|
ldy WdwCnt
|
|
]loop
|
|
dey ;done w/windows?
|
|
beq :is2
|
|
adc #10 ; no- move windows up
|
|
pha
|
|
txa
|
|
adc #10 ; & to the left
|
|
tax
|
|
pla
|
|
cmp #70 ;moved to furthest pos?
|
|
blt ]loop
|
|
:is2
|
|
sta :pos
|
|
stx :pos+2
|
|
rts
|
|
:pos
|
|
dw 0,0
|
|
|
|
*------------------------------------------------------
|
|
* Search thru windows for 'next' one (wish I could search menus!)
|
|
|
|
:nextwdw
|
|
lda temp ;first time?
|
|
bne :srch
|
|
stx temp ; yes- init
|
|
stz temp2
|
|
dec temp2
|
|
bra :s2
|
|
:s1
|
|
cpx temp3 ;less than first?
|
|
bge :xit
|
|
:s2
|
|
stx temp3 ; yes- save for wrap
|
|
rts
|
|
:srch
|
|
cpx temp ;greater than first?
|
|
blt :s1
|
|
cpx temp2 ; yes- less than last?
|
|
bge :xit
|
|
stx temp2 ; yes- save it
|
|
:xit rts
|
|
|
|
*======================================================
|
|
* Go thru each window on the screen. If a window is ours
|
|
* call a procedure to deal with it, otherwise cycle to end
|
|
* of the windows & return to caller
|
|
* ENTRY: A = routine pointer
|
|
* EXIT: none (last window reached)
|
|
|
|
DoWindows
|
|
sta :mod+1 ;save pointer to routine
|
|
|
|
_WaitCursor
|
|
|
|
~GetFirstWindow ;get first window in system
|
|
bra :getptr
|
|
]loop
|
|
~GetWRefCon Ptr ;check to see if it's the right window
|
|
plx
|
|
ply
|
|
bcs :9
|
|
cpy #WindowID ;is it ours?
|
|
beq :mod
|
|
cpy #ErrWdwID
|
|
beq :mod
|
|
cpy #CmdWdwID
|
|
bne :next
|
|
:mod jsr $FFFF ; yes -handle it!
|
|
:next
|
|
~GetNextWindow Ptr ;try the next one
|
|
:getptr
|
|
pla
|
|
plx
|
|
sax Ptr ;got one?
|
|
ora Ptr+2
|
|
bne ]loop ; yes- check it!
|
|
:9
|
|
_InitCursor
|
|
rts
|
|
|
|
*======================================================
|
|
* Open a new text edit window for our use
|
|
* ENTRY: X = title to window
|
|
* EXIT: standard errors
|
|
|
|
OpenWindow2 ;zeros out WdwPtr after open
|
|
jsr OpenWindow
|
|
stz WdwPtr
|
|
stz WdwPtr+2 ;insure menus set correctly
|
|
rts
|
|
OpenWindow
|
|
phx ;save pointer to title
|
|
|
|
~NewWindow #WindowParms ;open actual window
|
|
PullLong WdwPtr
|
|
bcs :9 ;error?
|
|
|
|
inc WdwCnt ;we opened another!
|
|
|
|
~NewControl2 WdwPtr;#0;#TETemplate
|
|
PullLong TEHdl
|
|
bcc :1
|
|
:9
|
|
plx
|
|
~SysError #MWOpen ;ooops! Show user!
|
|
rts
|
|
:1
|
|
lda #2
|
|
ldy #$10 ;we use
|
|
inc WMenuRef
|
|
lda WMenuRef
|
|
sta NWID ;id for menu
|
|
sta temp
|
|
lda WdwIDNum ;id for checks
|
|
sta temp+2
|
|
~SetWRefCon temp;WdwPtr ;set 'our window' thingy.
|
|
bcs :9
|
|
~InsertMItem #NewWdw;#-1;#WindowMenu
|
|
bcs :9
|
|
|
|
~TEGetRuler #3;#rulerH;#0 ;get ruler
|
|
bcs :9
|
|
|
|
lax rulerH
|
|
sax Hdl ;move to DP & place on stack
|
|
pea #0
|
|
pea #$26
|
|
phx
|
|
pha
|
|
_SetHandleSize ;it's a bit bigger now!
|
|
bcs :9
|
|
|
|
Hdl_Ptr Hdl;Ptr
|
|
ldy #$10
|
|
lda #2 ;we use specific tabs
|
|
sta [Ptr],y
|
|
ldy #$14
|
|
lda #75 ;opcode tab
|
|
sta [Ptr],y
|
|
ldy #$18
|
|
lda #125 ;operand
|
|
sta [Ptr],y
|
|
ldy #$1C
|
|
lda #200 ;comment
|
|
sta [Ptr],y
|
|
ldy #$20
|
|
lda #300 ;extra
|
|
sta [Ptr],y
|
|
ldy #$24
|
|
lda #-1 ;terminator
|
|
sta [Ptr],y
|
|
jsr mySetRuler ;use it!
|
|
|
|
Hdl_Ptr TEHdl;Ptr ;point to TE record
|
|
ldy #$10
|
|
lda [Ptr],y ;clear dirty flag!
|
|
and #%10111111
|
|
sta [Ptr],y
|
|
|
|
plx
|
|
|
|
*======================================================
|
|
* Set the title for the current window
|
|
* ENTRY: X = address of title (GS/OS class 1 string)
|
|
* EXIT: none
|
|
|
|
SetWdwTitle
|
|
stx temp2 ;point to title
|
|
lda (temp2)
|
|
inc
|
|
inc
|
|
sta temp ; & get length
|
|
stz temp+2
|
|
|
|
~NewHandle temp;ID3;#$C000;#0 ;get memory for title
|
|
PullLong Hdl
|
|
bcc :1
|
|
:9
|
|
~SysError #MWTitle ;show error!
|
|
rts
|
|
:1
|
|
Hdl_Ptr Hdl;Ptr ;point to this memory
|
|
|
|
SHORTM
|
|
lda (temp2) ;get length of title
|
|
sta [Ptr]
|
|
tay
|
|
]loop
|
|
iny
|
|
lda (temp2),y ;copy string to buffer
|
|
dey
|
|
sta [Ptr],y
|
|
dey
|
|
bne ]loop
|
|
LONGM
|
|
|
|
~PrSetDocName Ptr ;show name over network
|
|
bcs :9
|
|
~SetWTitle Ptr;WdwPtr ;set window title
|
|
bcs :9
|
|
~SetInfoRefCon Hdl;WdwPtr ; & save handle to title memory
|
|
:g9 bcs :9
|
|
~GetWRefCon WdwPtr ;get menu item #
|
|
plx
|
|
ply
|
|
bcs :g9
|
|
stx temp
|
|
~SetMItemName Ptr;temp ;set menu item's name
|
|
bcs :g9
|
|
~CalcMenuSize #0;#0;#WindowMenu
|
|
rts
|
|
|
|
*======================================================
|
|
* Close the currently open window, checking to see if the
|
|
* window's contents need to be saved.
|
|
|
|
CloseWindow
|
|
lda FrontWdw ;is it ours?
|
|
btr :0
|
|
~SendBehind #-2;WdwPtr ; no- send it behind the others
|
|
rts
|
|
:0
|
|
jsr CheckSave ;save data if needed
|
|
bcs :9
|
|
~GetInfoRefCon WdwPtr ;get handle to title memory
|
|
_DisposeHandle ; & free that memory!
|
|
bcs :1
|
|
~GetWRefCon WdwPtr ;get menu item #
|
|
plx
|
|
ply
|
|
bcs :1
|
|
phx
|
|
_DeleteMItem ;remove from window!
|
|
bcs :1
|
|
~CalcMenuSize #0;#0;#WindowMenu
|
|
|
|
dec WdwCnt ;one less!
|
|
~CloseWindow WdwPtr ;close window if OK
|
|
bcc :9
|
|
:1
|
|
~SysError #MClose ;oops!
|
|
:9
|
|
rts
|
|
|
|
*======================================================
|
|
* Check to see if the contents of the current window need
|
|
* to be saved, and save them if so.
|
|
|
|
CheckSave
|
|
~GetWTitle WdwPtr ;get title for dialog
|
|
PullLong FNSub
|
|
Hdl_Ptr TEHdl;Ptr ;deref TE record
|
|
ldy #$10
|
|
lda [Ptr],y ;get ctrlFlag
|
|
and #%01000000 ;...has record been modified?
|
|
bfl :0
|
|
~AlertWindow #1;#FNSub;#DSave ; yes- should we save it?
|
|
plx
|
|
beq :save ; yes- do so
|
|
dex
|
|
beq :0 ; no, but continue anyway
|
|
:9
|
|
sec
|
|
:0 rts ; no- abort whatever we're doing!
|
|
:save
|
|
lda #3 ;handle as 'save' from menu!
|
|
brl HFile
|
|
|
|
*======================================================
|
|
* Save the document data, including Styles if asked!
|
|
|
|
SaveData
|
|
do TeaseWare
|
|
brl DoTease ;no saving... only writes!
|
|
else
|
|
|
|
_WaitCursor ;show saving
|
|
|
|
~ZoomWindow WdwPtr ;insure proper Ruler settings
|
|
|
|
jsr GetText ; (well-first check for no text)
|
|
|
|
~GetWTitle WdwPtr ;get name to save under
|
|
pla
|
|
plx
|
|
bcs :g9 ;good window?
|
|
ldy #TextName
|
|
_CreateSFPath ;set path & get save name
|
|
bcs :g9
|
|
lda #$50 ;assume w/p
|
|
ldx #'AQ'
|
|
ldy SaveText ;correct?
|
|
bfl :1
|
|
lda #4 ; no- save as text
|
|
ldx #0
|
|
:1
|
|
sta CreateParms+8 ;set file & aux type
|
|
stx CreateParms+10
|
|
~WriteFile #TextName;textH ;save text to data fork
|
|
:g9 bcs :9
|
|
lda SaveText ;save as text only?
|
|
bfl :7
|
|
_GSOS _GetFileInfo;SFIParms
|
|
lda SFIParms+10
|
|
and #$FFFE ; yes- set linker's ASM bit
|
|
sta SFIParms+10
|
|
_GSOS _SetFileInfo;SFIParms
|
|
bra :8
|
|
:7
|
|
jsr SaveStyle ; no- go write style info
|
|
bcs :9
|
|
:8
|
|
Hdl_Ptr TEHdl;Ptr ;point to TE record
|
|
ldy #$10
|
|
lda [Ptr],y ;saved...clear dirty flag!
|
|
and #%10111111
|
|
sta [Ptr],y
|
|
:xit
|
|
~ZoomWindow WdwPtr ;back to normal
|
|
|
|
stz SaveText ;clear text only flag
|
|
_InitCursor
|
|
brl RemoveText ;get rid of that memory!
|
|
:9
|
|
~SysError #MWriting ;ohh... shit!
|
|
bra :xit
|
|
|
|
*======================================================
|
|
* Save the style information to the resource fork
|
|
* of the appr. file. styleH contains handle to styles
|
|
|
|
SaveStyle
|
|
~CreateResourceFile #'QA';#$50;#$C3;#TextName
|
|
~OpenResourceFile #0;#0;#TextName
|
|
bcc :1
|
|
cmp #eofEncountered ;empty?
|
|
sec
|
|
bne RClose
|
|
:1
|
|
~RemoveResource #rTEStyle;#1
|
|
bcc :2
|
|
cmp #resNotFound ;$63 -GS/OS
|
|
beq :2
|
|
cmp #$1E06 ;not found?
|
|
sec
|
|
bne RClose ; bad boy error!
|
|
:2
|
|
~AddResource styleH;#0;#rTEStyle;#1
|
|
|
|
fin ;--- TEASEWARE ---
|
|
RClose
|
|
plx
|
|
php
|
|
pha
|
|
phx
|
|
_CloseResourceFile ;File ID on stack
|
|
pla
|
|
plp
|
|
rts
|
|
|
|
*======================================================
|
|
* Get the style information from WP file
|
|
|
|
LoadStyle
|
|
~OpenResourceFile #0;#0;#TextName
|
|
bcs RClose
|
|
~LoadResource #rTEStyle;#1 ;try to load it
|
|
PullLong styleH
|
|
bcs RClose
|
|
~DetatchResource #rTEStyle;#1 ;take it from the system!
|
|
bra RClose
|
|
|
|
*======================================================
|
|
* Get the text from the current document, and setup the
|
|
* selection information for use by somebody important.
|
|
* ENTRY: none (front window = text document to work with)
|
|
* EXIT: bcs = error; selStart,selEnd = range, temp3 = # of banks
|
|
|
|
GetSelText ENT
|
|
jsr GetText ;get text & style info
|
|
|
|
jsr GetSelection ;get start & end of selection
|
|
|
|
CmpLong selStart;selEnd
|
|
bne :sel ;do we have a selection?
|
|
stz selStart
|
|
stz selStart+2
|
|
MoveLong textLen;selEnd ; no- textualize entire doc!
|
|
:sel
|
|
lda [Hdl]
|
|
sta Ptr
|
|
ldy #2 ;deref returned handle
|
|
lda [Hdl],y
|
|
clc ;insure offset into large buffer
|
|
adc selStart+2
|
|
sta Ptr+2
|
|
|
|
lda selEnd+2
|
|
sec
|
|
sbc selStart+2 ;get # of banks to look thru
|
|
sta temp3
|
|
ldy selStart ;get inner bank offset
|
|
clc
|
|
rts
|
|
|
|
*======================================================
|
|
* Get the text and style records from the current window
|
|
* ENTRY: none
|
|
* EXIT: textLen = length of text, HDL = copy of textH
|
|
|
|
GetText ENT
|
|
~TEGetText #%11101;#textH;#0;#3;#styleH;#0
|
|
PullLong textLen
|
|
bcs :9 ;get text OK?
|
|
lda textLen
|
|
ora textLen+2 ;do we have any text?
|
|
bne :8
|
|
brl EmptyDlg ; no- inform user
|
|
:8
|
|
ldx textH
|
|
stx Hdl ;save a few bytes...
|
|
ldx textH+2
|
|
stx Hdl+2
|
|
rts
|
|
:9
|
|
~SysError #MGetTxt ;show user!
|
|
pla
|
|
bra RemoveText
|
|
|
|
*------------------------------------------------------
|
|
* Awwww... save a few bytes, make it easier... next LIB!
|
|
* ENTRY: textH, styleH = handles to text and style data
|
|
* EXIT: textH and styleH are disposed, TE errors passed thru
|
|
|
|
SetText ENT
|
|
~TESetText #%01101;textH;#0;#1;styleH;#0
|
|
|
|
*------------------------------------------------------
|
|
* After we get it we usually need to free the memory again!
|
|
|
|
RemoveText ENT
|
|
php ;save errors from SetText
|
|
pha
|
|
~DisposeHandle textH ;get rid of that memory!
|
|
~DisposeHandle styleH
|
|
pla
|
|
plp
|
|
rts
|
|
|
|
*======================================================
|
|
* Get some information about the current TE record
|
|
|
|
GetTEInfo ENT
|
|
~TEGetTextInfo #TEInfoRec;#5;#0
|
|
bcc :1
|
|
~SysError #MTEInfo ;oh... damnation!
|
|
:2
|
|
rts
|
|
:1
|
|
lda TEInfoRec
|
|
ora TEInfoRec+2 ;anything in document?
|
|
btr :2
|
|
|
|
*------------------------------------------------------
|
|
* Show user file is empty!
|
|
|
|
EmptyDlg
|
|
_InitCursor ;probably a watch...
|
|
|
|
~NewAlert #DEmpty ;inform user
|
|
pla ; & skip calling routine!
|
|
sec
|
|
bra RemoveText
|
|
|
|
*======================================================
|
|
* Get or set the selection area in the current TE window
|
|
|
|
GetSelection ENT
|
|
~TEGetSelection #selStart;#selEnd;#0
|
|
rts
|
|
|
|
SetSelection ENT
|
|
~TEScroll #1;selStart;#0;#0
|
|
~TESetSelection selStart;selEnd;#0
|
|
rts
|
|
|
|
*======================================================
|
|
* Enable our menus to allow normal operation
|
|
|
|
EnableMenus
|
|
lda FrontWdw ;we already do this?
|
|
bfl :1
|
|
rts
|
|
:1
|
|
stz FrontWdw ; no- we will now
|
|
dec FrontWdw
|
|
ldx #-1
|
|
lda #$FF7F ;turn them on!
|
|
bra SetMens
|
|
|
|
*======================================================
|
|
* Disable our menus so we can't screw things up (ie, DAs, no window)
|
|
|
|
DisableMenus
|
|
lda FrontWdw ;we already do this?
|
|
btr :1
|
|
lda SysWdw ;system window?
|
|
cmp :wdw
|
|
sta :wdw ; (not already done)
|
|
bne :1
|
|
rts
|
|
:1
|
|
stz FrontWdw ; no- we will now
|
|
|
|
ldx #0
|
|
lda #$80 ;turn them off!
|
|
bra SetMens
|
|
|
|
:wdw ds 2
|
|
*------------------------------------------------------
|
|
* Set menus according to Acc. value
|
|
|
|
SetMens
|
|
psl #0 ;end of list flag
|
|
|
|
do TeaseWare
|
|
else ;leave save/print items disabled
|
|
pea #258
|
|
phx
|
|
pea #259
|
|
phx
|
|
pea #260
|
|
phx
|
|
pea #261
|
|
phx
|
|
fin ;--- TEASEWARE ---
|
|
|
|
pea #262
|
|
phx
|
|
pea #263
|
|
phx
|
|
ldx #0
|
|
bit SysWdw
|
|
bmi :1
|
|
ldx #-1
|
|
:1 pea #270
|
|
phx
|
|
pea #265
|
|
phx
|
|
|
|
pea #0 ;end of list flag
|
|
pha
|
|
pea #SrcMenu ;dis/enable some menus
|
|
_SetMenus ;stack 'em up!
|
|
_SetMItems
|
|
rts
|
|
|
|
*======================================================
|
|
* Update our text window
|
|
|
|
UpdateWin
|
|
~DrawControls TaskRc+16 ;update is easy!
|
|
rtl
|
|
|
|
*======================================================
|
|
* Print the loaded text to the printer, via Print Manager
|
|
|
|
PrintText
|
|
do TeaseWare
|
|
brl DoTease
|
|
else
|
|
|
|
~PrValidate PrtHdl ;insure a good record
|
|
plx
|
|
bcs :zpe1
|
|
|
|
~PrJobDialog PrtHdl ;get user's printing options
|
|
plx
|
|
bcs :PE1 ;error?
|
|
txa
|
|
btr :GoForIt ;cancel?
|
|
rts
|
|
:GoForIt
|
|
_WaitCursor
|
|
|
|
~ZoomWindow WdwPtr ;[][ work around TE bug ][]
|
|
|
|
* Open the 'print document' and start printing our information
|
|
|
|
~PrOpenDoc PrtHdl;#0 ;open new grafPort for printing
|
|
PullLong PPort
|
|
:zpe1 bcs :PE1
|
|
|
|
Hdl_Ptr PrtHdl;Ptr ;Dereference the print record
|
|
ldy #6+2+6
|
|
ldx #8-2
|
|
]loop lda [Ptr],y ;copy page rectangle to our area
|
|
sta QuitPath,x
|
|
dey
|
|
dey
|
|
dex
|
|
dex
|
|
bpl ]loop
|
|
|
|
stz temp ;starting line # = 0
|
|
stz temp+2
|
|
:NewPage
|
|
~PrOpenPage PPort;#0 ;open a new page to print on
|
|
:PE1 bcs :eof
|
|
|
|
~TEPaintText PPort;temp;#QuitPath;#0;TEHdl
|
|
PullLong temp
|
|
bpl :ok
|
|
lda #$2209 ;x = $FFFF at EOF!
|
|
:ok
|
|
pha
|
|
~PrClosePage PPort ;close the current page
|
|
pla
|
|
bfl :NewPage ;error or EOF?
|
|
cmp #$2209
|
|
clc
|
|
beq :eof
|
|
sec ; no- real error!
|
|
:eof
|
|
php
|
|
pha
|
|
~PrCloseDoc PPort ; yes- close entire printed document
|
|
pla
|
|
plp
|
|
bcs :err
|
|
|
|
~PrPicFile PrtHdl;#0;#StatusRec ;print file to the printer!
|
|
bcc :done
|
|
:err
|
|
cmp #$80 ;ok if just a Cancel (oA-.) command
|
|
beq :done
|
|
pha
|
|
pha
|
|
_PrSetError ;abort printing w/proper error
|
|
pla
|
|
ora #$8000
|
|
~SysError #MPrint ;show user our error!
|
|
:done
|
|
~ZoomWindow WdwPtr ;[][ undo TE bug fix ][]
|
|
_InitCursor
|
|
rts
|
|
|
|
fin ;--- TeaseWare ---
|
|
|
|
*======================================================
|
|
* This is our tool record for the Startup call
|
|
|
|
SSRec
|
|
dw 0
|
|
dw $C080 ;640 & do it as fast as possible!
|
|
dw 0
|
|
adrl 0 ;dpage handle
|
|
dw :sse-*/4 ;number of tools
|
|
|
|
dw 10,$0100 ;SANE
|
|
dw 04,$0300 ;quickdraw
|
|
dw 18,$0206 ;qdaux
|
|
dw 06,$0300 ;event
|
|
dw 27,$0300 ;font
|
|
dw 14,$0300 ;window
|
|
dw 16,$0300 ;control
|
|
dw 15,$0300 ;menu
|
|
dw 28,$0300 ;list
|
|
dw 20,$0300 ;lined
|
|
dw 21,$0101 ;dialog
|
|
dw 22,$0104 ;scrap
|
|
dw 05,$0101 ;desk
|
|
dw 23,$0101 ;file
|
|
dw 19,$0200 ;print manager
|
|
dw 34,$0100 ;TextEdit
|
|
:sse
|
|
*------------------------------------------------------
|
|
* Menu definitions
|
|
|
|
Menus
|
|
adrl MWindow
|
|
adrl MTran
|
|
adrl MGSOS
|
|
adrl MTool
|
|
adrl MSrc
|
|
adrl MProj
|
|
adrl MEdit
|
|
adrl MFile
|
|
adrl MApple
|
|
adrl 0
|
|
|
|
* We use the following to get our menu indexes
|
|
|
|
MenuNums
|
|
dw AppleMenu
|
|
dw FileMenu
|
|
dw EditMenu
|
|
dw ProjMenu
|
|
dw SrcMenu
|
|
dw ToolMenu
|
|
dw GSOSMenu
|
|
dw TranMenu
|
|
dw WindowMenu
|
|
|
|
MaxMenus dw *-MenuNums ;used to insure we don't bomb!
|
|
|
|
HdlMenus
|
|
da HApple
|
|
da HFile
|
|
da HEdit
|
|
da HProj
|
|
da HSrc
|
|
da HTool
|
|
da HGSOS
|
|
da HTran
|
|
da HWdwMenu
|
|
|
|
*------------------------------------------------------
|
|
MApple
|
|
asc '$$@\XN300',00
|
|
asc '--About QuickASM...\N300',00
|
|
asc '--Help...\N301*HhVD',00
|
|
asc '>'
|
|
MFile
|
|
asc '$$ File \N255',00
|
|
asc '--New\N256*Nn',00
|
|
asc '--Open...\N257*Oo',00
|
|
asc '--Close\N255*`~V',00
|
|
asc '--Save\N258*SsD',00
|
|
asc '--Save As...\N259D',00
|
|
asc '--Write Text\N260*WwD',00
|
|
asc '--Write As...\N261DV',00
|
|
asc '--Append...\N262',00
|
|
asc '--Revert\N263',00
|
|
asc '--Page Setup...\N264',00
|
|
asc '--Print...\N265*PpDV',00
|
|
asc '--Shutdown\N266',00
|
|
asc '--Quit\N267*Qq',00
|
|
asc '>'
|
|
MEdit
|
|
asc '$$ Edit \N250',00
|
|
asc '--Undo\N250*ZzVD',00
|
|
asc '--Cut\N251*Xx',00
|
|
asc '--Copy\N252*Cc',00
|
|
asc '--Paste\N253*Vv',00
|
|
asc '--Clear\N254',00
|
|
asc '--Select All\N270',00
|
|
asc '>'
|
|
MProj
|
|
asc '$$ Project \N400',00
|
|
asc '--New\N400D',00
|
|
asc '--Open...\N401D',00
|
|
asc '--Close\N402VD',00
|
|
asc '--Save\N403D',00
|
|
asc '--Save As...\N404VD',00
|
|
asc '--Build Project\N405*Bb',00
|
|
asc '--Build other...\N410',00
|
|
asc '--Options...\N406VD',00
|
|
asc '--Add Window\N407D',00
|
|
asc '--Add File...\N408D',00
|
|
asc '--Remove Window\N409D',00
|
|
asc '>'
|
|
MSrc
|
|
asc '$$ Source \N500',00
|
|
asc '--Find...\N500*Ff',00
|
|
asc '--Find Again\N501*Gg',00
|
|
asc '--Find & Replace\N502*Rr',00
|
|
asc '--Replace All\N503',00
|
|
asc '--Go Label/Line\N516*LlV',00
|
|
asc '--Assemble\N515*Aa',00
|
|
asc '--Margins & Tabs\N504*Mm',00
|
|
asc '--Fix Source\N505*Yy',00
|
|
asc '--Information\N506*IiV',00
|
|
asc '--Type Style...\N507V',00
|
|
asc '--Black\N508',00
|
|
asc '--Blue\N509',00
|
|
asc '--Red\N510',00
|
|
asc '--Violet\N511',00
|
|
asc '--Green\N512',00
|
|
asc '--Jade\N513',00
|
|
asc '--L.Grey\N514',00
|
|
asc '>'
|
|
MTool
|
|
asc '$$ Tools \N600',00
|
|
asc '--Execute Tool...\N600VD',00
|
|
asc '>'
|
|
MGSOS
|
|
asc '$$ GS/OS \N700',00
|
|
asc '--Delete...\N700*Dd',00
|
|
asc '--Rename...\N701VD',00
|
|
asc '--Format Disk\N702D',00
|
|
asc '>'
|
|
MTran
|
|
asc '$$ Transfer \N800',00
|
|
asc '--Launch...\N800*=+V',00
|
|
asc '--Merlin 16+\N801D',00
|
|
asc '>'
|
|
MWindow
|
|
asc '$$ Windows \N5000',00
|
|
asc '--Stack Windows\N5000*Kk',00
|
|
asc '--Edit Next Doc\N5001*Ee',00
|
|
asc '--Text Mode\N5002*TtV',00
|
|
asc '>'
|
|
NewWdw
|
|
asc '--New Window\H'
|
|
NWID hex FACE00
|
|
|
|
*------------------------------------------------------
|
|
WindowParms
|
|
da WindowEnd-WindowParms
|
|
da %1100001110100100
|
|
WdwTtl adrl MWOpen
|
|
adrl 0
|
|
da 25,1,199,639
|
|
adrl 0
|
|
da 0
|
|
da 0
|
|
da 0
|
|
da 0
|
|
da 0
|
|
da 0
|
|
da 9
|
|
da 0
|
|
da 162
|
|
da 0
|
|
adrl 0
|
|
da 0
|
|
adrl 0
|
|
adrl 0
|
|
adrl UpdateWin
|
|
WdwRec da 25,1,199,639
|
|
adrl -1
|
|
adrl 0
|
|
WindowEnd
|
|
|
|
CmdTitle strl ' Commands '
|
|
ErrTitle strl ' Errors '
|
|
*------------------------------------------------------
|
|
* The TextEdit window control definition
|
|
|
|
TETemplate
|
|
dw 17
|
|
adrl TECtrlID
|
|
dw 0,0,0,0
|
|
adrl $85000000
|
|
dw 0
|
|
dw %0111110000000000
|
|
adrl 0
|
|
adrl %01000010001000000000000000000000
|
|
dw 2,4,2,4
|
|
adrl $FFFFFFFF
|
|
dw 0
|
|
adrl 0
|
|
dw 0
|
|
adrl 0
|
|
dw 0
|
|
adrl 0
|
|
adrl 0
|
|
TEMaxChrs adrl 0 ;modified
|
|
|
|
*======================================================
|
|
* About dialog to give credit where due
|
|
|
|
DAbout
|
|
dw 40,25,115,270
|
|
dw 1
|
|
hex 80,80,80,80
|
|
adrl :3
|
|
adrl :1
|
|
adrl :2
|
|
adrl 0
|
|
|
|
:2 dw 1
|
|
dw 0,0,75,245
|
|
dw $A
|
|
adrl :2a
|
|
dw 0
|
|
dw 0
|
|
adrl 0
|
|
:2a str ''
|
|
|
|
:3 dw 2
|
|
dw 0,0,75,245
|
|
dw $F
|
|
adrl :2a
|
|
dw 0
|
|
dw 0
|
|
adrl 0
|
|
:1
|
|
dw 3
|
|
dw 5,3,72,243
|
|
dw $8016
|
|
AMod adrl Anorm
|
|
dw anz-Anorm
|
|
dw 0
|
|
adrl 0
|
|
Anorm
|
|
hex 01530300,014A0100
|
|
asc 'QuickASM Shell',AA,' v0.70'
|
|
hex 01530000,0D0D
|
|
asc ,'Portions are Copyright ',A9,' 1988-90'
|
|
hex 0D,01430100
|
|
asc 'Ideas From the Deep'
|
|
hex 01430000
|
|
asc ' & '
|
|
hex 01430200
|
|
asc 'Lane Roath'
|
|
hex 01430000,0d0d
|
|
asc 'QuickASM system written by ',0D
|
|
asc 'Shawn Quick and Lane Roath'
|
|
anz
|
|
Aspcl
|
|
hex 014A0100
|
|
asc 'QuickASM written in QuickAsm ',0D
|
|
asc '& Merlin 16+. Dated '
|
|
date 5 ;dd-mmm-yy
|
|
hex 0d0d
|
|
hex 0153020001430100
|
|
asc /"Will you still need me, will you /
|
|
asc /still feed me, when I'm 64?"/,0D
|
|
asc /Sgt. Pepper's Lonely Hearts Club Band /
|
|
asc / \ When I'm 64 \ Beatles/
|
|
asz
|
|
*======================================================
|
|
* Misc. NewAlert dialog templates
|
|
|
|
do TeaseWare
|
|
DTease
|
|
asc '80\'
|
|
asc 'This version has this stupid message everywhere to '
|
|
asc 'remind you that this is a PRELIMINARY version of '
|
|
asc 'QuickASM. Please contact us to purchase the final copy '
|
|
asc 'or to report bugs and/or suggest inprovements! ',0D0D
|
|
asc 'Ideas From the Deep - '
|
|
asc '309 Oak Ridge Lane / Haughton / LA / 71037',0D
|
|
asc 'Phone: (318) 949-8264',0D,'(if no answer, leave message)\'
|
|
asc '^#0',00
|
|
|
|
fin ;--- tease dialog ---
|
|
|
|
DWarning ENT
|
|
asc '54/'
|
|
asc 'This operation could damage the document '
|
|
asc 'contents! Are you sure you wish to do this?/'
|
|
asc '^#6/#1',00
|
|
DSave
|
|
asc '55$'
|
|
asc '"*0" has been changed! Should I save it?$'
|
|
asc '^#2$#3$#1',00
|
|
DEOF ENT
|
|
asc '13/'
|
|
asc 'No more matches!/'
|
|
asc '^#0',00
|
|
DEmpty
|
|
asc '14/'
|
|
asc 'File Empty!/'
|
|
asc '^#0',00
|
|
FNSub ENT
|
|
adrl 0 ;filled in!
|
|
|
|
*------------------------------------------------------
|
|
* Our GS/OS parm tables (NOTE: Class 1 now!)
|
|
|
|
SFIParms dw 4
|
|
adrl TextName
|
|
ds 8
|
|
|
|
TxtTypes ENT
|
|
dw 3
|
|
dw $8000
|
|
dw $04
|
|
adrl 0
|
|
dw $8000 ;we read these types of files
|
|
dw $B0
|
|
adrl 0
|
|
dw $8000
|
|
dw $50
|
|
adrl 0
|
|
AllTypes ENT
|
|
dw 1
|
|
dw $C000 ;we can delete anything!
|
|
dw 0
|
|
adrl 0
|
|
|
|
*------------------------------------------------------
|
|
* Error message text
|
|
|
|
ENT MFOpen
|
|
|
|
MQuit str 'Quit'
|
|
MMenu str 'Menu #'
|
|
MWOpen str 'Opening Window'
|
|
MFOpen str 'Open File'
|
|
MGetTxt str 'GetText'
|
|
MClose str 'Close Wdw'
|
|
MPInit str 'Init PrRec'
|
|
MPrint str 'Printing'
|
|
MWTitle str 'Wdw Title'
|
|
MWriting str 'Writting!'
|
|
MGetWindow str 'Get Wdw'
|
|
MTEInfo str 'TEInfo'
|
|
QAError str 'QA Startup'
|
|
|
|
OpenPrompt str 'Open the file...'
|
|
SavePrompt str 'Save file as...'
|
|
AppendPrompt str 'Append the file...'
|
|
|
|
NewName strl 'Untitled.@'
|
|
|
|
*======================================================
|
|
* The following are equates to use DS w/no code space
|
|
|
|
ENT tFind,tReplace,TextName,TextPath,QuitPath,PrintBuf
|
|
|
|
dum * ;we DS this in the link file
|
|
|
|
QuitParms ds 8
|
|
SDParms ds 4
|
|
|
|
WdwIDNum ds 2 ;so Cmd,Err,Source wdws have unique IDs
|
|
|
|
tFind ds 30 ;oh-no!
|
|
tReplace ds 30
|
|
|
|
TextName ds 32 ;Class 1 file & path buffers
|
|
TextPath ds 256
|
|
CmdLine ENT
|
|
QuitPath ds 128 ;dup of above, for saves!!!
|
|
TEInfoRec ENT ;textedit info record
|
|
StatusRec ds 128 ;Used by printing routines
|
|
TempBuf ENT
|
|
PrintBuf ds 256
|
|
*------------------------------------------------------
|
|
* Text Edit records we use
|
|
|
|
ENT NewStyle,textH,styleH,rulerH,selStart,selEnd,myDP
|
|
|
|
NewStyle ds 12
|
|
|
|
textH ds 4 ;handles that can't be in DP!
|
|
styleH ds 4
|
|
rulerH ds 4
|
|
|
|
selStart ds 4 ;text selection info
|
|
selEnd ds 4
|
|
|
|
myDP ds 2 ;page in bank 0 of my DP
|
|
DS_Size ENT
|
|
dend
|
|
|
|
sav 2/obj/qasm.l
|