home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-26 | 113.1 KB | 5,869 lines |
- opt l+,o+,ow-,ow6+
- output Source:EditKeys.o
-
- ; EditKeys v1.2
- ; © 1991 by David Kinder
-
- ; EditKeys.s - Main source code
-
- ; Assemble with Devpac v3 then link:
- ; 1> Blink EditKeys.o Graphics.o TO EditKeys
-
- ; The header "system.gs" must have been compiled
- ; from v36 or higher include files.
-
- ; "I guess I believed in what we had
- ; But words got in the way"
- ; The Sisters of Mercy
-
- include Source:xref.i
-
- incdir Source:include/
- include devices/keymap.i
- include dos/rdargs.i
- include libraries/asl.i
- include libraries/asl_lib.i
- include libraries/arp_lib.i
- include workbench/wb_lib.i
-
- CALLSYS MACRO
- jsr _LVO\1(a6)
- ENDM
-
- section Code,code
-
- movem.l d0/a0,Parms ; Save parameters
-
- suba.l a1,a1
- CALLEXEC FindTask
- move.l d0,a4
-
- tst.l pr_CLI(a4) ; Are we CLI or Workbench?
- bne.s EndStartup
-
- lea pr_MsgPort(a4),a0
- CALLSYS WaitPort ; Wait for a message
- lea pr_MsgPort(a4),a0
- CALLSYS GetMsg ; Then get it
- move.l d0,ReturnMsg
-
- EndStartup bsr.s _Main
- tst.l ReturnMsg
- beq.s ExitToDOS
-
- CALLEXEC Forbid
- move.l ReturnMsg,a1
- CALLSYS ReplyMsg
-
- ExitToDOS move.l d5,d0
- rts
-
- _Main lea IntName,a1 ; Are we running under
- moveq #36,d0 ; KickStart 2?
- CALLEXEC OpenLibrary
- move.l d0,_IntuitionBase
- beq NoNewOS
-
- move.b #1,OS2 ; Note version
- move.b #1,MyBord1+bd_FrontPen
- move.b #1,MyBord2+bd_FrontPen
- move.b #1,MyBord3+bd_FrontPen
- move.b #3,MoreText+it_FrontPen
- move.b #0,NewName+it_FrontPen
- move.b #0,OpenName+it_FrontPen
- move.b #0,SaveName+it_FrontPen
- move.b #0,SaveAsName+it_FrontPen
- move.b #0,AboutName+it_FrontPen
- move.b #0,IconifyName+it_FrontPen
- move.b #0,QuitName+it_FrontPen
- addi #11,MainWindow+nw_TopEdge
- move.l #x2_Imagea,Gadg0a+gg_GadgetRender
- move.l #x2_Imageb,Gadg0b+gg_GadgetRender
- move.l #x2_Imagec,Gadg0c+gg_GadgetRender
- move.l #x2_Imaged,Gadg0d+gg_GadgetRender
- move.l #x2_Imagee,Gadg0e+gg_GadgetRender
- move.l #x2_CSI,CSIGadg+gg_GadgetRender
- move.l #0,MyBord3+bd_NextBorder
- move.b #2,DoubleReq+rq_BackFill
- move.b #1,DblBord1+bd_FrontPen
- move.b #1,DblBord2+bd_FrontPen
- move.b #1,DblBord3+bd_FrontPen
- move.b #1,DblBord4+bd_FrontPen
- move.b #2,DblGText4+it_BackPen
- move.b #1,DblGBord1+bd_FrontPen
- move.b #1,DblGBord2+bd_FrontPen
- move.b #1,DblGBord3+bd_FrontPen
- move.b #1,DblGBord4+bd_FrontPen
- move.b #2,LoseReq+rq_BackFill
- move.b #1,LsBord1+bd_FrontPen
- move.b #1,LsBord2+bd_FrontPen
- move.b #1,LsGBord1+bd_FrontPen
- move.b #1,LsGBord2+bd_FrontPen
- move.l #x2_Ls,LsGadg1+gg_GadgetRender
- move.l #x2_Comp,LsGadg4+gg_GadgetRender
- move.b #10,Par_Modify
-
- lea Gadg0a,a0
- bsr FixGadg
- lea Gadg0b,a0
- bsr FixGadg
- lea Gadg0c,a0
- bsr FixGadg
- lea Gadg0d,a0
- bsr.s FixGadg
- lea Gadg0e,a0
- bsr.s FixGadg
- lea CSIGadg,a0
- bsr.s FixGadg
-
- lea Img01dt,a0
- .colours eori #$ffff,(a0)+
- cmpa.l #CSIdat,a0
- bne .colours
-
- moveq #0,d0 ; Try to open the
- lea AslLibName,a1 ; asl.library
- CALLEXEC OpenLibrary
- move.l d0,_AslBase
- beq NoArp
- movea.l _AslBase,a6
- CALLSYS AllocFileRequest ; Get struct
- move.l d0,AslFReq
- beq NoArp
- move.l d0,a0
- move.l rf_Dir(a0),xDir
- move.l rf_File(a0),xFile
-
- lea DosName,a1 ; Open 'dos.library'
- moveq #36,d0
- CALLEXEC OpenLibrary
- move.l d0,_DOSBase
- beq NoArp
- bra.s RunAllOS
-
- FixGadg subi #2,gg_LeftEdge(a0)
- subi #1,gg_TopEdge(a0)
- addi #4,gg_Width(a0)
- addi #2,gg_Height(a0)
- rts
-
- NoNewOS lea IntName,a1 ; Open 'intuition.library'
- moveq #33,d0 ; Need v1.2 or later
- CALLEXEC OpenLibrary
- move.l d0,_IntuitionBase
- beq NoIntuition ; Open failed
-
- lea ArpName,a1 ; Open 'arp.library'
- moveq #0,d0
- CALLSYS OpenLibrary
- move.l d0,_DOSBase
- beq NoArpLib
-
- RunAllOS lea GrafName,a1 ; Open 'graphics.library'
- moveq #0,d0
- CALLEXEC OpenLibrary
- move.l d0,_GfxBase
- beq NoGraphics ; Open failed
-
- movem.l Parms,d0/a0 ; Analyse parameters
- tst.l ReturnMsg
- beq.s ChanceParms
-
- move.l ReturnMsg,a0 ; Get correct
- move.l sm_ArgList(a0),a0 ; 'current directory'
- move.l wa_Lock(a0),d1 ; for Workbench
- CALLDOS CurrentDir
- bra NoChanceParms
-
- ChanceParms bsr _GADS ; Parse input line
- tst.l d7
- bmi.s LineError
- tst.l Par_Arry+4 ; Was it 'NOMAP'?
- bne.s SetNone
- tst.l d7
- beq.s NoChanceParms
- bra.s CParms
-
- SetNone move #HIGHCOMP!ITEMTEXT!COMMSEQ,Save+mi_Flags
- bra IconReturn ; Disable 'Save' menu item
-
- CParms move.l Par_Arry,a0
- lea PathName,a1
- movea.l xFile,a2
- moveq #0,d0
- moveq #13,d5
- CParmsLp move.b (a0,d0),(a1,d5)
- move.b (a0,d0),(a2,d0)
- beq.s AllLoad
- addq #1,d0
- addq #1,d5
- cmpi.b #72,d5
- beq.s AllLoad
- bra CParmsLp
-
- LineError tst.b OS2
- bne.s .line
- move.l Par_Arry,a1
- CALLDOS Puts
- bra NoRun
- .line neg.l d7
- move.l d7,d1
- moveq #0,d2
- CALLDOS PrintFault
- bra NoRun
-
- NoChanceParms move.b #1,ErrResponse
- movea.l AslFReq,a0 ; Can we use ASL?
- cmpa.l #0,a0
- beq.s PUseArp
- lea LoadTags,a1
- movea.l _AslBase,a6
- CALLSYS AslRequest
- bra.s PAllFDo
- PUseArp lea ArpFileReq,a0
- CALLDOS FileRequest ; Call ARP FileRequest()
-
- PAllFDo tst.l d0
- beq SetNone
- bsr ARP_Extract ; Get path
- AllLoad bsr LoadKeyMap
- cmpi #1,d6
- beq NoRun
- tst d6
- beq.s ItWentOK
- move.l MySegment,d1
- CALLDOS UnLoadSeg
- bra NoRun
-
- ItWentOK bsr CopyToSave
- bsr AnalyseKM
- bsr GenerateKeys
- bsr CancelDead
-
- IconReturn move.b #2,ErrResponse
- lea MainWindow,a0 ; Open our window on
- CALLINT OpenWindow ; Workbench screen
- move.l d0,Windowhd
- beq NoRun ; Open window failed
- bsr WindSetUp
-
- move.l Windowhd,a0 ; Install menus
- lea ProjectMenu,a1
- CALLSYS SetMenuStrip
- tst.l d0
- beq NoMenus ; Menus failed
-
- move.l RPort,a1 ; Set up colours for...
- moveq #1,d0
- tst.b OS2
- beq.s UsePen1
- moveq #2,d0
- UsePen1 CALLGRAF SetAPen
-
- move.l RPort,a1 ; ...an area fill for
- moveq #4,d0 ; a 'keyboard' look!
- moveq #11,d1
- move #587,d2
- moveq #89,d3
- CALLSYS RectFill
-
- tst.b OS2
- beq.s DoOSGadg
- move.l RPort,a0
- lea x2_Box,a1
- moveq #91,d0
- moveq #110,d1
- CALLINT DrawImage
-
- DoOSGadg move.l Windowhd,a0 ; We don't want to have
- lea Gadg0a,a1 ; intuition draw all the
- moveq #0,d0 ; gadgets, then draw over
- moveq #-1,d1 ; them, then redraw them,
- suba.l a2,a2 ; so we only add the gadgets
- CALLINT AddGList ; here
-
- lea Gadg0a,a0 ; This makes the gadgets
- move.l Windowhd,a1 ; visible over the white
- suba.l a2,a2 ; background
- CALLSYS RefreshGadgets
-
- move.l RPort,a0 ; Add a few finishing
- lea MyBord1,a1 ; extras to the display...
- moveq #0,d0
- moveq #0,d1
- CALLSYS DrawBorder
-
- move.l RPort,a0
- lea MoreText,a1
- moveq #0,d0
- moveq #0,d1
- CALLSYS PrintIText
-
- move.l RPort,a0
- lea MoreText,a1
- move #256,d0
- moveq #0,d1
- CALLSYS PrintIText
-
- move.l RPort,a0
- lea SqrText,a1
- moveq #0,d0
- moveq #0,d1
- CALLSYS PrintIText
-
- cmpi.b #1,MyMode ; Should we enable
- bne.s MainLoop ; DMRequest()?
- move.l Windowhd,a0
- lea DoubleReq,a1
- CALLSYS SetDMRequest
-
- MainLoop move.l UserPort,a0 ; Wait for an Intuition
- CALLEXEC WaitPort ; message...
- CheckMessage move.l UserPort,a0
- CALLEXEC GetMsg
- tst.l d0
- beq MainLoop
- move.l d0,a1
- move.l im_Class(a1),d2 ; Store the message
- move im_Code(a1),d3
- move im_Qualifier(a1),d4
- move.l im_IAddress(a1),a2
- CALLSYS ReplyMsg
- cmpi.l #CLOSEWINDOW,d2 ; Is it close time?
- beq QuitProper
- cmpi.l #MENUPICK,d2
- beq.s GoMenu
- cmpi.l #GADGETDOWN,d2
- beq GoGadget
- cmpi.l #GADGETUP,d2
- beq KeyGadget
- cmpi.l #RAWKEY,d2
- beq.s KeyPress
- cmpi.l #REQSET,d2
- beq ReqStart
- bra CheckMessage
-
- KeyPress cmpi #$5f,d3 ; Was it 'Help'?
- bne CheckMessage
-
- move.l Windowhd,a0 ; If so, set up a help
- lea HlpText1,a1 ; requester
- suba.l a2,a2
- lea ContText,a3
- moveq #0,d0
- moveq #0,d1
- move #520,d2
- moveq #71,d3
- CALLINT AutoRequest
- bra CheckMessage
-
- GoMenu move.l d3,d0
- andi.l #%0000000000011111,d0 ; Was it the project menu?
- bne CheckMessage
-
- move.l d3,d0 ; Check the subitems
- andi.l #%0000011111100000,d0
- beq.s MNew
- cmpi.l #%0000000000100000,d0
- beq MOpen
- cmpi.l #%0000000001000000,d0
- beq MSave
- cmpi.l #%0000000001100000,d0
- beq MSaveAs
- cmpi.l #%0000000010100000,d0
- beq MIconify
- cmpi.l #%0000000011000000,d0
- beq QuitProper
- bra CheckMessage
-
- MNew move.l Windowhd,a0 ; Are you sure?
- lea MNewText,a1
- lea LReqText,a2
- lea RReqText,a3
- moveq #0,d0
- moveq #0,d1
- move #407,d2
- moveq #53,d3
- CALLINT AutoRequest
- tst.l d0
- beq CheckMessage
-
- bsr ClearOut
- bsr GenerateKeys
- move.l Windowhd,a0 ; Disable 'Save' item...
- move.l #%0000000001000000,d0
- CALLINT OffMenu
- move #"«»",ModWindText-1 ; ...and reset name
- clr.b ModWindText+1
- move.l Windowhd,a0
- lea MainWindowText,a1
- move.l #-1,a2
- CALLSYS SetWindowTitles
- move.l #$20202020,DeadTxt
- move.l #$20202000,DeadTxt+4
- move.l #$20202020,DblGTxt4
- move.l #$20202000,DblGTxt4+4
- clr.b CurrDKey
- move.b #1,ChQVal
- bsr ChangeKString
- clr.b ChQVal
- MNew_NK move.b MyMode,d0
- cmpi.b #1,d0
- beq GGadga
- cmpi.b #2,d0
- beq GGadgb
- cmpi.b #3,d0
- beq GGadgc
- cmpi.b #4,d0
- beq GGadgd
- bra GGadge
-
- MIconify move.l Windowhd,a0 ; Close old window...
- move wd_LeftEdge(a0),IconWindow
- move wd_TopEdge(a0),IconWindow+2
- CALLINT ClearMenuStrip
- move.l Windowhd,a0
- CALLSYS ClearDMRequest
- move.l Windowhd,a0
- CALLSYS CloseWindow
-
- tst.b OS2
- beq DoOldIcon
- lea WBName,a1 ; If we are running
- moveq #36,d0 ; under 2.0, its nicer
- CALLEXEC OpenLibrary ; to become a menu item
- move.l d0,_WorkbenchBase ; than a small window
- beq.s NoWBLib
- CALLSYS CreateMsgPort
- move.l d0,MyWBPort
- beq.s NoPort
-
- moveq #1,d0
- moveq #1,d1
- lea WBTxt,a0
- move.l MyWBPort,a1
- suba.l a2,a2
- movea.l _WorkbenchBase,a6
- CALLSYS AddAppMenuItemA
- move.l d0,d7
-
- movea.l MyWBPort,a0 ; Wait for what must be
- CALLEXEC WaitPort ; an AppMessage
- CheckWBMsg move.l MyWBPort,a0
- CALLSYS GetMsg
- tst.l d0
- beq.s ShutWB
- move.l d0,a1
- CALLSYS ReplyMsg
- bra CheckWBMsg
-
- ShutWB move.l d7,a0
- movea.l _WorkbenchBase,a6
- CALLSYS RemoveAppMenuItem
- movea.l MyWBPort,a0
- CALLEXEC DeleteMsgPort
- NoPort movea.l _WorkbenchBase,a1
- CALLEXEC CloseLibrary
- NoWBLib bra IconReturn
-
- DoOldIcon lea IconWindow,a0
- CALLSYS OpenWindow
- move.l d0,Windowhd
- beq NoRun
- bsr WindSetUp
-
- IconLoop move.l UserPort,a0
- CALLEXEC WaitPort
- move.l UserPort,a0
- CALLSYS GetMsg
- tst.l d0
- beq IconLoop
- move.l d0,a1
- move.l im_Class(a1),d2
- CALLSYS ReplyMsg
- cmpi.l #GADGETUP,d2
- bne IconLoop
-
- move.l Windowhd,a0 ; Close iconified window
- CALLINT CloseWindow
- bra IconReturn
-
- MOpen movea.l AslFReq,a0 ; Can we use ASL?
- cmpa.l #0,a0
- beq.s OUseArp
- lea LoadTags,a1
- movea.l _AslBase,a6
- CALLSYS AslRequest
- bra.s OAllFDo
- OUseArp move.l #fr_LHail,ArpFileReq
- lea ArpFileReq,a0
- CALLDOS FileRequest ; Call ARP FileRequest()
-
- OAllFDo tst.l d0
- beq CheckMessage
- bsr ARP_Extract ; Analyse response
- bsr LoadKeyMap
- cmpi #1,d6
- beq NotFoundErr
- tst d6
- beq.s NewOkay
- move.l MySegment,d1
- CALLDOS UnLoadSeg
- move.l Windowhd,a0
- lea OpenErr2,a1
- suba.l a2,a2
- lea ContText,a3
- moveq #0,d0
- moveq #0,d1
- move #342,d2
- moveq #53,d3
- CALLINT AutoRequest
- bra CheckMessage
-
- NewOkay bsr CopyToSave
- bsr AnalyseKM
- bsr GenerateKeys
- move.l Windowhd,a0
- lea MainWindowText,a1
- move.l #-1,a2
- CALLINT SetWindowTitles
- move.l #$20202020,DeadTxt
- move.l #$20202000,DeadTxt+4
- move.l #$20202020,DblGTxt4
- move.l #$20202000,DblGTxt4+4
- clr.b CurrDKey
- move.b #1,ChQVal
- bsr ChangeKString
- clr.b ChQVal
- move.b MyMode,d0
- cmpi.b #1,d0
- beq GGadga
- cmpi.b #2,d0
- beq GGadgb
- cmpi.b #3,d0
- beq GGadgc
- cmpi.b #4,d0
- beq GGadgd
- bra GGadge
-
- NotFoundErr move.l Windowhd,a0
- lea OpenErr1,a1
- suba.l a2,a2
- lea ContText,a3
- moveq #0,d0
- moveq #0,d1
- move #350,d2
- moveq #53,d3
- CALLINT AutoRequest
- bra CheckMessage
-
- MSave move.l #10240,d0
- move.l #MEMF_CLEAR,d1
- CALLEXEC AllocMem ; Get a buffer
- movea.l d0,a5 ; a5 is index into
- move.l d0,SaveBuffer ; SaveBuffer
- beq NoMemBuff
-
- move.l #5120,d0
- move.l #MEMF_CLEAR,d1
- CALLSYS AllocMem
- move.l d0,SaveBuffer2
- bne.s GotAllMem
-
- movea.l SaveBuffer,a1 ; Free buffer
- move.l #10240,d0
- CALLSYS FreeMem
- bra NoMemBuff
-
- GotAllMem bsr CreateOutput ; Fill buffer...
-
- move.l #SavePath,d1
- move.l #MODE_NEWFILE,d2
- CALLDOS Open ; Open output file
- move.l d0,d7 ; Get file handle
- beq NoOpenMap
-
- move.l d7,d1
- move.l SaveBuffer,d2
- move.l a5,d3
- sub.l SaveBuffer,d3
- CALLSYS Write ; Write keymap
- move.l d7,d1
- CALLSYS Close ; Close keymap
-
- movea.l xFile,a0 ; Get keymap name
- lea ModWindText,a1
- .loop move.b (a0)+,d1
- beq.s .end
- move.b d1,(a1)+
- cmpa.l #EndWindText,a1
- beq.s .end
- bra .loop
-
- .end move.b #"»",(a1)+
- clr.b (a1)
- movea.l Windowhd,a0
- lea MainWindowText,a1
- movea.l #-1,a2
- CALLINT SetWindowTitles
-
- SaveEnd movea.l SaveBuffer,a1 ; Free buffer
- move.l #10240,d0
- CALLEXEC FreeMem
- movea.l SaveBuffer2,a1
- move.l #5120,d0
- CALLSYS FreeMem
- bra CheckMessage
-
- NoMemBuff move.l Windowhd,a0 ; Not enough memory so
- lea NSavText,a1 ; flag then return without
- suba.l a2,a2 ; saving keymap
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move #311,d2
- moveq #53,d3
- CALLINT AutoRequest
- bra CheckMessage
-
- NoOpenMap move.l Windowhd,a0
- lea OpenSErr,a1
- suba.l a2,a2
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move #278,d2
- moveq #53,d3
- CALLINT AutoRequest
- bra SaveEnd
-
- MSaveAs movea.l AslFReq,a0 ; Can we use ASL?
- cmpa.l #0,a0
- beq.s SUseArp
- lea SaveTags,a1
- movea.l _AslBase,a6
- CALLSYS AslRequest
- bra.s SAllFDo
- SUseArp move.l #fr_SHail,ArpFileReq
- lea ArpFileReq,a0
- CALLDOS FileRequest ; Call ARP FileRequest()
-
- SAllFDo tst.l d0
- beq CheckMessage
- bsr ARP_Extract ; Analyse response
- bsr CopyToSave
- bra MSave
-
- CreateOutput move.l #$3f3,(a5)+ ; a5=index into SaveBuffer
- clr.l (a5)+ ; Setup hunk structure
- move.l #1,(a5)+
- clr.l (a5)+
- clr.l (a5)+
- addq.l #4,a5 ; Skip hunk size
- move.l #$3e9,(a5)+ ; Hunk_code
- addq.l #4,a5
-
- move.l SaveBuffer2,a6 ; a6=reloc buffer
-
- clr.l (a5)+ ; Header
- clr.l (a5)+
- clr (a5)+
-
- addq #4,a5 ; KMName
- move.l #$4c,(a5)+ ; KMLowMapType
- move.l #$c4,(a5)+ ; KMLowMap
- move.l #$2e,(a5)+ ; KMLCapsable
- move.l #$3d,(a5)+ ; KMLRepeatable
- move.l #$8c,(a5)+ ; KMHighMapType
- move.l #$1c4,(a5)+ ; KMHighMap
- move.l #$36,(a5)+ ; KMHCapsable
- move.l #$45,(a5)+ ; KMHRepeatable
-
- lea CapsTab,a0 ; Do Capsable table
- bsr MakeBitTab
- lea ReptTab,a0 ; ...and Repeatable
- bsr MakeBitTab ; table
-
- lea KeyTypes,a0 ; Do KeyTypes...
- moveq #0,d0
- .loop move.l (a0,d0),(a5)+
- addq #4,d0
- cmpi.b #$60,d0
- bne .loop
-
- .loopn move.b #KCF_NOP,(a5)+ ; clear end of table
- addq #1,d0
- cmpi.b #$78,d0
- bne .loopn
-
- move.l a5,SaveDeadBuf1 ; Store for deadkeys
-
- lea KeyDefs,a0 ; ...and KeyDefs
- moveq #0,d0
- .loop2 move.l (a0,d0),(a5)+
- addq #4,d0
- cmpi #4*$60,d0
- bne .loop2
-
- .loop3 clr.l (a5)+
- addq #4,d0
- cmpi #4*$78,d0
- bne .loop3
-
- lea KeyTypes,a0 ; Now deadkeys
- lea KeyDefs,a1
- moveq #0,d0
- SaveDLoop lea DeadTab,a2
- move.b (a0,d0),d2
- andi.b #KCF_DEAD,d2
- beq NoSDead
-
- move.b (a0,d0),d2 ; Extract a deadkey
- andi.b #KC_VANILLA,d2
- bsr QualToIndex ; How many to get?
-
- move.l a5,SaveDeadBuf2
- move d0,d1
- lsl #4,d1
- add d1,a2
- moveq #0,d1
- .loop move (a2,d1),(a5)+ ; Transfer to buffer
- addq #2,d1
- cmp d1,d2
- bne .loop
-
- moveq #0,d1
- move.l SaveDeadBuf2,a4
- lea DeadIndex,a3
- SaveMLoop cmpi.b #DPF_MOD,(a4,d1)
- bne.s NoSMod
-
- moveq #0,d3
- move.b 1(a4,d1),d3
- lsl #4,d3
- move.l a5,d4
- sub.l a4,d4
- move.b d4,1(a4,d1)
- move.l (a3,d3),(a5)+ ; Transfer modkey table
- move.l 4(a3,d3),(a5)+
- move.l 8(a3,d3),(a5)+
- move.l 12(a3,d3),(a5)+
-
- NoSMod addq #2,d1
- cmp d1,d2
- bne SaveMLoop
-
- move d0,d1 ; Put address in reloc
- lsl #2,d1 ; table
- move.l SaveDeadBuf2,d2
- sub.l SaveBuffer,d2
- subi.l #32,d2
-
- move.l SaveDeadBuf1,a4
- add d1,a4
- move.l d2,(a4)
- sub.l SaveBuffer,a4
- sub.l #32,a4
- move.l a4,(a6)+
- bsr CheckA6
-
- NoSDead addq #1,d0
- cmpi #$60,d0
- bne SaveDLoop
-
- lea KeyTypes,a0 ; Finally strings
- lea KeyDefs,a1
- moveq #0,d0
- SaveSLoop lea StringList,a2
- move.b (a0,d0),d2
- andi.b #KCF_STRING,d2
- beq NoSStr
-
- move.b (a0,d0),d2 ; Extract string key
- andi.b #KC_VANILLA,d2
- bsr QualToIndex ; How many to get?
- lsr #1,d2
-
- move.l a5,SaveDeadBuf2
- move d0,d1
- lsl #3,d1
- add d1,a2
- moveq #0,d1
- .loop move.b (a2,d1),(a5)+ ; Transfer to buffer
- clr.b (a5)+
- addq #1,d1
- cmp d1,d2
- bne .loop
-
- lsl #1,d2
- moveq #0,d1
- move.l SaveDeadBuf2,a4
- SaveStr lea StringArea,a3
- moveq #0,d3
- move.b (a4,d1),d3
- lsl #5,d3
- move.l a5,d4
- sub.l a4,d4
- move.b d4,1(a4,d1)
- moveq #0,d7 ; Transfer string
- add d3,a3
- .loop move.b (a3,d7),d6
- beq.s .loopstop
- move.b d6,(a5)+
- addq #1,d7
- bra .loop
-
- .loopstop move.b d7,(a4,d1)
- addq #2,d1
- cmp d1,d2
- bne SaveStr
-
- move.l a5,d7
- andi.b #1,d7
- beq.s .noalign
- clr.b (a5)+ ; Ensure word-aligned
-
- .noalign move d0,d1 ; Put address in reloc
- lsl #2,d1 ; table
- move.l SaveDeadBuf2,d2
- sub.l SaveBuffer,d2
- subi.l #32,d2
-
- move.l SaveDeadBuf1,a4
- add d1,a4
- move.l d2,(a4)
- sub.l SaveBuffer,a4
- sub.l #32,a4
- move.l a4,(a6)+
- bsr CheckA6
-
- NoSStr addq #1,d0
- cmpi #$60,d0
- bne SaveSLoop
-
- move.l a5,a1
- movea.l xFile,a0 ; Transfer name
- moveq #0,d0
- .loop move.b (a0,d0),(a5)+
- beq.s FinSName
- addq #1,d0
- bra .loop
-
- FinSName move.l a5,d0
- andi.b #1,d0
- beq.s .noalign
- clr.b (a5)+
- .noalign move.l SaveBuffer,a0
- move.l a1,d0
- sub.l a0,d0
- subi.l #32,d0
- move.l d0,42(a0)
-
- move.l a5,d0
- andi.l #3,d0
- beq.s .noline ; Hunk must be long
- clr (a5)+ ; word aligned
-
- .noline move.l a5,d0
- move.l SaveBuffer,a3
- sub.l a3,d0 ; Get Hunk_size
- subi.l #$20,d0
- lsr.l #2,d0
- move.l d0,$14(a3) ; Save it
- move.l d0,$1c(a3)
- move.l #$3ec,(a5)+ ; Hunk_reloc32
-
- move.l a6,d0
- sub.l SaveBuffer2,d0
- lsr.l #2,d0
- addi.l #9,d0
- move.l d0,(a5)+ ; No. of references
- clr.l (a5)+ ; in Hunk 0
-
- RelocLoop cmp.l SaveBuffer2,a6
- beq.s GotReloc
- move.l -(a6),d0 ; Transfer reloc
- move.l d0,(a5)+
- bra RelocLoop
-
- GotReloc move.l #$2a,(a5)+ ; Refs. to initial table
- move.l #$26,(a5)+
- move.l #$22,(a5)+
- move.l #$1e,(a5)+
- move.l #$1a,(a5)+
- move.l #$16,(a5)+
- move.l #$12,(a5)+
- move.l #$e,(a5)+
- move.l #$a,(a5)+
-
- clr.l (a5)+ ; Termination
- move.l #$3f2,(a5)+ ; Hunk_end
- rts
-
- CheckA6 move.l SaveBuffer2,a4
- add.l #5120,a4
- cmpa.l a4,a6
- bne.s NotProb
- subq.l #4,a6
- NotProb rts
-
- QualToIndex cmpi.b #KC_NOQUAL,d2
- bne.s .1
- moveq #2,d2
- rts
- .1 cmpi.b #KC_VANILLA,d2
- bne.s .2
- moveq #16,d2
- rts
- .2 cmpi.b #KCF_SHIFT,d2
- bne.s .3
- moveq #4,d2
- rts
- .3 cmpi.b #KCF_ALT,d2
- bne.s .4
- moveq #4,d2
- rts
- .4 cmpi.b #KCF_CONTROL,d2
- bne.s .5
- moveq #4,d2
- rts
- .5 moveq #8,d2
- rts
-
- MakeBitTab moveq #0,d0 ; a0 = byte table to
- moveq #0,d1 ; convert to bits
- MakeCLoop bclr d1,d2
- tst.b (a0,d0) ; Test key
- beq.s NoCSet
- bset d1,d2
-
- NoCSet addq #1,d0
- addq #1,d1
- cmpi.b #96,d0
- beq.s MCapsOver
- cmpi.b #8,d1
- bne MakeCLoop
-
- move.b d2,(a5)+ ; Save byte
- moveq #0,d1
- bra MakeCLoop
-
- MCapsOver move.b d2,(a5)+
- addq #3,a5
- rts
-
- GoGadget move gg_GadgetID(a2),d0 ; Which gadget was it?
- cmpi #90,d0
- beq GoGadg1
- cmpi #91,d0
- beq GoGadg2
- cmpi #92,d0
- beq GoGadg3
- cmpi #93,d0
- beq GoGadg4
- cmpi #89,d0
- beq EndQual
- cmpi #-1,d0
- beq GoGadga
- cmpi #-2,d0
- beq GoGadgb
- cmpi #-3,d0
- beq GoGadgc
- cmpi #-4,d0
- beq GoGadgd
- cmpi #-5,d0
- beq GoGadge
-
- LoadCheck cmpi.b #1,MyMode ; Is it 'Keymap' mode?
- bne CheckMessage
- clr.b StringBuf
- move.l a2,-(sp)
- moveq #0,d7
- move.b d0,d7
- move d7,MyNewKey
- bsr KeyInString
- move.l (sp)+,a2
- cmpa.l MyDefKey,a2 ; Is it same key?
- bne.s NotSame
- bsr CheckQual
- move.b d0,d6
- cmp.b MyDefQual,d6
- bne.s NotSame
- bra AllSame
-
- NotSame movea.l a2,a4
- bsr CheckQual ; Store current qualifiers
- move.b d0,d6
-
- move.l Windowhd,a0
- lea StrGadg,a1
- suba.l a2,a2
- moveq #89,d0
- CALLINT RemoveGList
-
- movea.l MyDefKey,a3
- cmpa.l #0,a3
- beq.s FirstDef
- cmp.b MyDefQual,d6
- bne.s FirstDef
-
- NotFirstDef move gg_Flags(a3),d0
- eori #SELECTED,d0
- move d0,gg_Flags(a3)
-
- FirstDef move.b d6,MyDefQual
- move gg_Flags(a4),d0
- eori #SELECTED,d0 ; Turn new key on
- move d0,gg_Flags(a4)
- move.l a4,MyDefKey
-
- move.l Windowhd,a0
- lea StrGadg,a1
- moveq #5,d0
- moveq #89,d1
- CALLSYS AddGList
-
- movea.l a4,a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLSYS RefreshGList
- move.l a3,a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLSYS RefreshGList
- AllSame move #GADGHCOMP,StrGadg+gg_Flags
- lea StrGadg,a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLINT RefreshGList
- bsr CSIon
- bsr ActString
-
- cmpa.l #Gadg46,a3 ; Was any key 'Return'?
- beq.s DoAnthrGadg
- cmpi.l #Gadg46,MyDefKey
- bne CheckMessage
-
- DoAnthrGadg lea Gadg87,a0 ; If so, refresh key to
- move.l Windowhd,a1 ; the left as well
- moveq #1,d0
- CALLINT RefreshGList
- bra CheckMessage
-
- KeyInString bsr CheckQual ; Input: d7 GadgNo.
- move.l d0,LastQualVal ; a6 safe
- move.l d7,LastGadgVal
- KeyInString2 lsl #2,d0
- lea QualTable,a0
- move.l (a0,d0),NoDeadStore
- lea DQualTab,a0
- move.l (a0,d0),DeadStore
-
- lea IDtoGadget,a0
- lea KeyTypes,a2
- lea KeyDefs,a3
- lea MapToKeys,a4
- suba.l #1,a4
- moveq #0,d2
- moveq #0,d3
- move.b (a4,d7),d2 ; Keycode in d2
- move.b (a2,d2),d3 ; Get key type
- andi.b #KCF_STRING,d3
- bne KI_String
- move.b (a2,d2),d3
- andi.b #KCF_DEAD,d3
- bne KI_Dead
- move.b (a2,d2),d3
- andi.b #KC_VANILLA,d3 ; Find which key in each
- moveq #0,d6 ; key definition list
- bsr.s KI_Sub
- cmpi.b #KC_VANILLA,d3
- bne.s KI_AllDoF
- move.l LastQualVal,d4
- andi.b #1,d4
- beq.s KI_AllDoF
- andi.b #KCF_SHIFT!KCF_ALT,d3
- moveq #0,d6
- bsr.s KI_Sub
- cmpi.b #-1,d6
- beq.s KI_None
- andi.b #%10011111,d0
-
- KI_AllDoF cmpi.b #-1,d6
- beq.s KI_None
- KI_AllDo move.b #32,SqrTxt
- tst.b d0
- beq.s KI_NoKey
- move.b d0,SqrTxt
- KI_NoKey move.l RPort,a0
- lea SqrText,a1
- clr.b it_BackPen(a1)
- moveq #0,d0
- moveq #0,d1
- CALLINT PrintIText
- KI_None rts
-
- KI_Sub move.l NoDeadStore,a5
- move.b (a5,d3),d6 ; Get index
- moveq #0,d4 ; Extract key from the
- move.b d2,d4 ; 'KeyDefs' table
- lsl #2,d4
- sub d6,d4
- move.b 3(a3,d4),d0 ; ASCII value in gadget
- rts
-
- KI_Dead move.b (a2,d2),d3
- andi.b #KC_VANILLA,d3
- move.l DeadStore,a5
- moveq #0,d1
- move.b (a5,d3),d1 ; Get index
- move.l a0,d6
- lea DeadTab,a0
- move d2,d5
- lsl #4,d5
- add d1,d5
- move.b (a0,d5),d2
- tst.b d2
- beq.s KI_DeadDead
- cmpi.b #DPF_MOD,d2
- beq.s KI_ModDead
- move.l d6,a0
- bra KI_None
-
- KI_DeadDead move.b 1(a0,d5),d0
- bra KI_AllDo
-
- KI_ModDead moveq #0,d2
- move.b 1(a0,d5),d2
- mulu #16,d2
- lea DeadIndex,a0
- moveq #0,d0
- move.b CurrDKey,d0
- add d0,d2
- move.b (a0,d2),d0
- bra KI_AllDo
-
- KI_String move.b (a2,d2),d3
- andi.b #KC_VANILLA,d3
- move.l DeadStore,a5
- moveq #0,d1
- move.b (a5,d3),d1 ; Get index
- lsr #1,d1
- lea StringList,a0
- lsl #3,d2
- add d2,d1
- moveq #0,d3
- move.b (a0,d1),d3
- lsl #5,d3
- lea StringArea,a0
- lea StringBuf,a1
- moveq #0,d0
- KI_SMove move.b (a0,d3),(a1,d0)
- beq.s KI_SDone
- addq #1,d3
- addq #1,d0
- cmpi.b #32,d0
- bne KI_SMove
- KI_SDone move d0,si_BufferPos+SpecialInfo
- clr si_DispPos+SpecialInfo
- move.b #" ",SqrTxt
- move.l RPort,a0
- lea SqrText,a1
- move.b #3,it_BackPen(a1)
- moveq #0,d0
- moveq #0,d1
- CALLINT PrintIText
- rts
-
- GoGadg1 move Gadg91+gg_Flags,d0
- eori #SELECTED,d0
- move d0,Gadg91+gg_Flags
- lea Gadg91,a0 ; Redraw gadget
- move.l Windowhd,a1
- suba.l a2,a2
- moveq #1,d0
- CALLINT RefreshGList
- bra EndQual
-
- GoGadg2 move Gadg90+gg_Flags,d0
- eori #SELECTED,d0
- move d0,Gadg90+gg_Flags
- lea Gadg90,a0
- move.l Windowhd,a1
- suba.l a2,a2
- moveq #1,d0
- CALLINT RefreshGList
- bra.s EndQual
-
- GoGadg3 move Gadg93+gg_Flags,d0
- eori #SELECTED,d0
- move d0,Gadg93+gg_Flags
- lea Gadg93,a0
- move.l Windowhd,a1
- suba.l a2,a2
- moveq #1,d0
- CALLINT RefreshGList
- bra.s EndQual
-
- GoGadg4 move Gadg92+gg_Flags,d0
- eori #SELECTED,d0
- move d0,Gadg92+gg_Flags
- lea Gadg92,a0
- move.l Windowhd,a1
- suba.l a2,a2
- moveq #1,d0
- CALLINT RefreshGList
-
- EndQual bsr RedrawKeys ; Perform routines common
- bsr SortOutFlag ; to all qualifier keys
- cmpi.b #5,MyMode ; If 'DeadKeys', select
- bne.s GoEQual1 ; dead & ghost modifiable
- move.b #DPF_DEAD,DeadByte
- bsr PickUpDead
- bsr CancelMod
- bsr NoOfDead
- bsr CancelString
- bsr NoOfDead
-
- GoEQual1 cmpi.b #4,MyMode ; If 'Modifiable', select
- bne.s GoEQual2 ; modifiable & ghost dead
- move.b #DPF_MOD,DeadByte
- bsr PickUpDead
- bsr CancelDead
- bsr CancelString
- bsr NoOfMod
-
- GoEQual2 cmpi.b #1,MyMode ; If 'KeyMap', ghost dead
- bne.s GoEQual3
- bsr CancelDead
- bsr SetUpKeyOn
- bsr ActString
-
- GoEQual3 bsr ERedrawKeys ; Complete and RefreshGList()
- bra CheckMessage
-
- GoGadga cmpi.b #1,MyMode
- beq CheckMessage
- GGadga bsr StartExclude
- move.b #1,MyMode
- move #GADGHCOMP!GADGIMAGE!SELECTED,Gadg0a+gg_Flags
- bsr EndExclude
- bsr GoGadgKey
- bsr SNoToggleGadg
- bsr CancelDead
- bsr SetUpKeyOn
- bsr ENoToggleGadg
- bsr ActString
- bsr ChangeKString
- bra CheckMessage
-
- GoGadgb cmpi.b #2,MyMode
- beq CheckMessage
- GGadgb bsr StartExclude
- move.b #2,MyMode
- move #GADGHCOMP!GADGIMAGE!SELECTED,Gadg0b+gg_Flags
- bsr EndExclude
- bsr GoGadgCap
- bsr SToggleGadg
- bsr SetupCaps
- bsr EToggleGadg
- bra CheckMessage
-
- GoGadgc cmpi.b #3,MyMode
- beq CheckMessage
- GGadgc bsr StartExclude
- move.b #3,MyMode
- move #GADGHCOMP!GADGIMAGE!SELECTED,Gadg0c+gg_Flags
- bsr EndExclude
- bsr GoGadgCap
- bsr SToggleGadg
- bsr SetUpRept
- bsr EToggleGadg
- bra CheckMessage
-
- GoGadgd cmpi.b #4,MyMode
- beq CheckMessage
- GGadgd bsr StartExclude
- move.b #4,MyMode
- move #GADGHCOMP!GADGIMAGE!SELECTED,Gadg0d+gg_Flags
- bsr EndExclude
- bsr GoGadgKey
- bsr SToggleGadg
- move.b #DPF_MOD,DeadByte
- bsr PickUpDead
- bsr.s CancelDead
- bsr CancelString
- bsr NoOfMod
- bsr EToggleGadg
- bra CheckMessage
-
- GoGadge cmpi.b #5,MyMode
- beq CheckMessage
- GGadge bsr.s StartExclude
- move.b #5,MyMode
- move #GADGHCOMP!GADGIMAGE!SELECTED,Gadg0e+gg_Flags
- bsr EndExclude
- bsr GoGadgKey
- bsr SToggleGadg
- move.b #DPF_DEAD,DeadByte
- bsr PickUpDead
- bsr.s CancelMod
- bsr CancelString
- bsr NoOfDead
- bsr EToggleGadg
- bra CheckMessage
-
- CancelDead move #GADGHCOMP!GADGIMAGE!GADGDISABLED,On_Value
- move.b #DPF_DEAD,DeadByte
- bsr PickUpDead
- move #GADGHCOMP!GADGIMAGE!SELECTED,On_Value
- rts
-
- CancelMod move #GADGHCOMP!GADGIMAGE!GADGDISABLED,On_Value
- move.b #DPF_MOD,DeadByte
- bsr PickUpDead
- move #GADGHCOMP!GADGIMAGE!SELECTED,On_Value
- rts
-
- StartExclude bsr CheckQual
- lsl #2,d0
- lea QualTable,a0
- move.l (a0,d0),NoDeadStore
- lea DQualTab,a0
- move.l (a0,d0),DeadStore
-
- move.l Windowhd,a0 ; Turn off all mode gadgets
- lea Gadg0a,a1
- moveq #5,d0
- CALLINT RemoveGList
- move #GADGHCOMP!GADGIMAGE,d0
- move d0,Gadg0a+gg_Flags
- move #GADGHCOMP!GADGIMAGE,d0
- move d0,Gadg0b+gg_Flags
- move #GADGHCOMP!GADGIMAGE,d0
- move d0,Gadg0c+gg_Flags
- move #GADGHCOMP!GADGIMAGE,d0
- move d0,Gadg0d+gg_Flags
- move #GADGHCOMP!GADGIMAGE,d0
- move d0,Gadg0e+gg_Flags
- rts
-
- EndExclude move.l Windowhd,a0
- lea Gadg0a,a1
- moveq #0,d0
- moveq #5,d1
- suba.l a2,a2
- CALLINT AddGList ; Turn on all mode gadgets
-
- lea Gadg0a,a0
- move.l Windowhd,a1
- moveq #5,d0
- CALLSYS RefreshGList ; ...and redraw them
- rts
-
- GoGadgCap move Gadg89+gg_Flags,d0 ; Do we need to alter any
- andi #GADGDISABLED,d0 ; gadgets for the new mode?
- beq.s SendGadgCap ; Yes, so branch
- rts
-
- SendGadgCap move.l Windowhd,a0 ; Deactivate qualifiers
- lea Gadg89,a1
- moveq #5,d0
- CALLINT RemoveGList
-
- move Gadg89+gg_Flags,d0 ; then turn them off
- ori #GADGDISABLED,d0 ; similarly to OffGadget()
- move d0,Gadg89+gg_Flags
- move Gadg90+gg_Flags,d0
- ori #GADGDISABLED,d0
- move d0,Gadg90+gg_Flags
- move Gadg91+gg_Flags,d0
- ori #GADGDISABLED,d0
- move d0,Gadg91+gg_Flags
- move Gadg92+gg_Flags,d0
- ori #GADGDISABLED,d0
- move d0,Gadg92+gg_Flags
- move Gadg93+gg_Flags,d0
- ori #GADGDISABLED,d0
- move d0,Gadg93+gg_Flags
-
- move.l Windowhd,a0
- lea Gadg89,a1
- moveq #5+89,d0
- moveq #5,d1
- CALLSYS AddGList
-
- lea Gadg89,a0 ; and redraw
- move.l Windowhd,a1
- moveq #5,d0
- CALLSYS RefreshGList
- rts
-
- GoGadgKey move Gadg89+gg_Flags,d0 ; Do we need to alter any
- andi #GADGDISABLED,d0 ; gadgets for the new mode?
- bne.s SendGadgKey ; Yes, so branch
- rts
-
- SendGadgKey move.l Windowhd,a0 ; Deactivate qualifiers
- lea Gadg89,a1
- moveq #5,d0
- CALLINT RemoveGList
-
- move Gadg89+gg_Flags,d0 ; then turn them on
- eori #GADGDISABLED,d0 ; similarly to OnGadget()
- move d0,Gadg89+gg_Flags
- move Gadg90+gg_Flags,d0
- eori #GADGDISABLED,d0
- move d0,Gadg90+gg_Flags
- move Gadg91+gg_Flags,d0
- eori #GADGDISABLED,d0
- move d0,Gadg91+gg_Flags
- move Gadg92+gg_Flags,d0
- eori #GADGDISABLED,d0
- move d0,Gadg92+gg_Flags
- move Gadg93+gg_Flags,d0
- eori #GADGDISABLED,d0
- move d0,Gadg93+gg_Flags
-
- move.l Windowhd,a0
- lea Gadg89,a1
- moveq #5+89,d0
- moveq #5,d1
- suba.l a2,a2
- CALLSYS AddGList
-
- lea Gadg89,a0 ; and redraw
- move.l Windowhd,a1
- moveq #5,d0
- CALLSYS RefreshGList
- rts
-
- SToggleGadg move.l Windowhd,a0
- CALLINT ClearDMRequest
- move.l Windowhd,a0 ; Deactivate keys
- lea StrGadg,a1
- moveq #89,d0
- CALLSYS RemoveGList
-
- move #RELVERIFY!TOGGLESELECT,d0
- move #gg_Activation,d1
- moveq #0,d2
- lea DeadIDtoGadg,a0
- STGadgLoop move.l (a0,d2),a1
- move d0,(a1,d1)
- addq #4,d2
- cmpi #88*4,d2
- bne STGadgLoop
-
- move #RELVERIFY!TOGGLESELECT!BOOLEXTEND,Gadg46+gg_Activation
- move #GADGHCOMP!GADGDISABLED,StrGadg+gg_Flags
- bsr CSIoff
- bra SortOutFlag
-
- EToggleGadg move.l Windowhd,a0 ; Finish & redraw
- lea StrGadg,a1
- moveq #5,d0
- moveq #89,d1
- CALLINT AddGList
-
- lea StrGadg,a0
- move.l Windowhd,a1
- moveq #89,d0
- CALLSYS RefreshGList
- rts
-
- SNoToggleGadg move.l Windowhd,a0 ; Turn on requester
- lea DoubleReq,a1
- CALLINT SetDMRequest
- move.l Windowhd,a0 ; Deactivate keys
- lea StrGadg,a1
- moveq #89,d0
- CALLSYS RemoveGList
-
- move #GADGIMMEDIATE,d0
- move #gg_Activation,d1
- moveq #0,d2
- lea DeadIDtoGadg,a0
- STNoGadgLp move.l (a0,d2),a1
- move d0,(a1,d1)
- addq #4,d2
- cmpi #88*4,d2
- bne STNoGadgLp
-
- move #GADGIMMEDIATE!BOOLEXTEND,Gadg46+gg_Activation
- bra.s SortOutFlag
-
- ENoToggleGadg move.l Windowhd,a0
- lea StrGadg,a1
- moveq #5,d0
- moveq #89,d1
- CALLINT AddGList
-
- lea StrGadg,a0
- move.l Windowhd,a1
- moveq #89,d0
- CALLSYS RefreshGList
- rts
-
- SortOutFlag move #GADGHCOMP!GADGIMAGE,d0
- move #gg_Flags,d1
- moveq #0,d2
- lea DeadIDtoGadg,a0
- SFlagLoop move.l (a0,d2),a1
- move d0,(a1,d1)
- addq #4,d2
- cmpi #88*4,d2
- bne SFlagLoop
- rts
-
- SetupCaps lea CapsTab,a0 ; Analyse Caps table
- bra.s BitInfo
-
- SetUpRept lea ReptTab,a0 ; Analyse Repeat table
-
- BitInfo lea KeysToMap,a1
- moveq #0,d0
- moveq #0,d1
- BitLoop move.b (a0,d0),d2
- move.l (a1,d1),a3
- cmpa #0,a3 ; Is it a valid key?
- beq.s EBit
- adda #gg_Flags,a3
- tst.b d2 ; Is it high?
- beq.s NotBit ; No...
- move #GADGHCOMP!GADGIMAGE!SELECTED,(a3)
- bra.s EBit
- NotBit move #GADGHCOMP!GADGIMAGE,(a3)
- EBit addi #4,d1 ; Continue loop
- addi #1,d0
- cmpi #$60,d0
- bne BitLoop
- rts
-
- KeyGadget move gg_GadgetID(a2),d0 ; Now process normal keys
- cmpi #94,d0
- beq.s CSIenter
- cmpi.b #1,MyMode
- beq.s OnKeyEd
- cmpi.b #2,MyMode
- beq OnCaps
- cmpi.b #3,MyMode
- beq OnRept
- cmpi.b #4,MyMode
- beq OnMod
- cmpi.b #5,MyMode
- beq OnDead
- bra CheckMessage
-
- CSIenter move #$9b00,StringBuf
- move #1,si_BufferPos+SpecialInfo
- clr si_DispPos+SpecialInfo
- lea StrGadg,a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLINT RefreshGList
- bsr ActString
- bra CheckMessage
-
- OnKeyEd tst d0 ; Has a string been entered?
- bne CheckMessage
- tst.b StringBuf
- beq CheckMessage
- lea StringBuf,a0
- lea SoM,a1
- bsr StrComp
- tst d0
- bne.s NotSpecString
- bsr Sisters
-
- NotSpecString tst.b StringBuf+1 ; Process string
- bne StringEnter ; User entered string
-
- lea KeyTypes,a4 ; Handle single key input
- lea MapToKeys,a2
- suba.l #1,a2
- moveq #0,d7
- move MyNewKey,d2
- move.b (a2,d2),d7
- move.b (a4,d7),d1 ; Get key type
- andi.b #KCF_STRING,d1
- bne EdOneString ; User modifies string
- move.b (a4,d7),d1
- andi.b #KCF_DEAD,d1
- bne EditDead ; User modifies deadkey
-
- move.b (a4,d7),d1 ; Replace one single char
- move.b MyDefQual,d2 ; definition with another
- cmpi.b #7,d2
- beq Ed_NoGo
- cmpi.b #1,d2 ; Do we have to reorganise
- beq.s Ed___C ; the KeyDefinition?
- cmpi.b #2,d2
- beq.s Ed_S__
- cmpi.b #3,d2
- beq.s Ed_S_C
- cmpi.b #4,d2
- beq.s Ed__A_
- cmpi.b #5,d2
- beq Ed__AC
- cmpi.b #6,d2
- beq.s Ed_SA_
- bra Ed_Go
-
- Ed___C cmpi.b #KCF_ALT+KCF_SHIFT,d1
- beq.s Ed_MustFix_1
- cmpi.b #KC_VANILLA,d1
- bne Ed_Go
- Ed_MustFix_1 bsr Ed_MustFix
- tst d0
- beq CheckMessage
- move.b #KCF_SHIFT,(a4,d7)
- bra.s Ed_Go
-
- Ed_S__ cmpi.b #KCF_ALT+KCF_CONTROL,d1
- bne.s Ed_Go
- bsr Ed_MustFix
- tst d0
- beq CheckMessage
- move.b #KCF_ALT,(a4,d7)
- bra.s Ed_Go
-
- Ed__A_ cmpi.b #KCF_CONTROL+KCF_SHIFT,d1
- bne.s Ed_Go
- bsr Ed_MustFix
- tst d0
- beq CheckMessage
- move.b #KCF_SHIFT,(a4,d7)
- bra.s Ed_Go
-
- Ed_S_C andi.b #KCF_ALT,d1
- beq.s Ed_Go
- bsr Ed_MustFix
- tst d0
- beq CheckMessage
- eori.b #KCF_ALT,(a4,d7)
- bra.s Ed_Go
-
- Ed_SA_ cmpi.b #KC_VANILLA,d1
- beq.s Ed_Go
- andi.b #KCF_CONTROL,d1
- beq.s Ed_Go
- bsr Ed_MustFix
- tst d0
- beq CheckMessage
- eori.b #KCF_CONTROL,(a4,d7)
- bra.s Ed_Go
-
- Ed__AC andi.b #KCF_SHIFT,d1
- beq.s Ed_Go
- bsr Ed_MustFix
- tst d0
- beq CheckMessage
- eori.b #KCF_SHIFT,(a4,d7)
-
- Ed_Go lea KeyDefs,a0 ; Change key definition
- move.b MyDefQual,d2
- move.b (a4,d7),d1
- move d7,d6
- lsl #2,d6
- cmpi.b #KC_NOQUAL,d1
- beq.s Eg____
- cmpi.b #KCF_SHIFT,d1
- beq Eg_S__
- cmpi.b #KCF_ALT,d1
- beq Eg__A_
- cmpi.b #KCF_CONTROL,d1
- beq Eg___C
- cmpi.b #KCF_SHIFT+KCF_ALT,d1
- beq Eg_SA_
- cmpi.b #KCF_SHIFT+KCF_CONTROL,d1
- beq Eg_S_C
- cmpi.b #KCF_ALT+KCF_CONTROL,d1
- beq Eg__AC
- cmpi.b #KC_VANILLA,d1
- beq Eg_SA_
-
- Eg____ tst.b d2
- bne.s .1
- move.b #KC_NOQUAL,(a4,d7)
- move.b StringBuf,3(a0,d6)
- bra Eg_Done
- .1 cmpi.b #1,d2
- bne.s .2
- move.b #KCF_CONTROL,(a4,d7)
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .2 cmpi.b #2,d2
- bne.s .3
- move.b #KCF_SHIFT,(a4,d7)
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .3 cmpi.b #4,d2
- bne.s .4
- move.b #KCF_ALT,(a4,d7)
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .4 cmpi.b #3,d2
- bne.s .5
- move.b #KCF_SHIFT+KCF_CONTROL,(a4,d7)
- move.b 3(a0,d6),2(a0,d6)
- move.b 3(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bra Eg_Done
- .5 cmpi.b #5,d2
- bne.s .6
- move.b #KCF_CONTROL+KCF_ALT,(a4,d7)
- move.b 3(a0,d6),2(a0,d6)
- move.b 3(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bra Eg_Done
- .6 move.b #KCF_SHIFT+KCF_ALT,(a4,d7)
- move.b 3(a0,d6),2(a0,d6)
- move.b 3(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bsr VanOrNot
- bra Eg_Done
-
- Eg_S__ tst.b d2
- bne.s .1
- move.b StringBuf,3(a0,d6)
- bra Eg_Done
- .1 cmpi.b #2,d2
- bne.s .2
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .2 cmpi.b #4,d2
- bne.s .3
- move.b #KCF_SHIFT+KCF_ALT,(a4,d7)
- move.b 2(a0,d6),(a0,d6)
- move.b StringBuf,1(a0,d6)
- bsr VanOrNot
- bra Eg_Done
- .3 cmpi.b #6,d2
- bne.s .4
- move.b #KCF_SHIFT+KCF_ALT,(a4,d7)
- move.b 3(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bsr VanOrNot
- bra Eg_Done
- .4 cmpi.b #1,d2
- bne.s .5
- move.b #KCF_SHIFT+KCF_CONTROL,(a4,d7)
- move.b 2(a0,d6),(a0,d6)
- move.b StringBuf,1(a0,d6)
- bra Eg_Done
- .5 move.b #KCF_SHIFT+KCF_CONTROL,(a4,d7)
- move.b 3(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bra Eg_Done
-
- Eg__A_ tst.b d2
- bne.s .1
- move.b StringBuf,3(a0,d6)
- bra Eg_Done
- .1 cmpi.b #4,d2
- bne.s .2
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .2 cmpi.b #2,d2
- bne.s .3
- move.b #KCF_SHIFT+KCF_ALT,(a4,d7)
- move.b 2(a0,d6),1(a0,d6)
- move.b 2(a0,d6),(a0,d6)
- move.b StringBuf,2(a0,d6)
- bsr VanOrNot
- bra Eg_Done
- .3 cmpi.b #6,d2
- bne.s .4
- move.b #KCF_SHIFT+KCF_ALT,(a4,d7)
- move.b 2(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bsr VanOrNot
- bra Eg_Done
- .4 cmpi.b #1,d2
- bne.s .5
- move.b #KCF_ALT+KCF_CONTROL,(a4,d7)
- move.b 2(a0,d6),(a0,d6)
- move.b StringBuf,1(a0,d6)
- bra Eg_Done
- .5 move.b #KCF_CONTROL+KCF_ALT,(a4,d7)
- move.b 3(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bra Eg_Done
-
- Eg___C tst.b d2
- bne.s .1
- move.b StringBuf,3(a0,d6)
- bra Eg_Done
- .1 cmpi.b #1,d2
- bne.s .2
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .2 cmpi.b #2,d2
- bne.s .3
- move.b #KCF_SHIFT+KCF_CONTROL,(a4,d7)
- move.b 2(a0,d6),1(a0,d6)
- move.b 2(a0,d6),(a0,d6)
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .3 cmpi.b #3,d2
- bne.s .4
- move.b #KCF_SHIFT+KCF_CONTROL,(a4,d7)
- move.b 2(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bra Eg_Done
- .4 cmpi.b #4,d2
- bne.s .5
- move.b #KCF_ALT+KCF_CONTROL,(a4,d7)
- move.b 2(a0,d6),1(a0,d6)
- move.b 2(a0,d6),(a0,d6)
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .5 move.b #KCF_CONTROL+KCF_ALT,(a4,d7)
- move.b 2(a0,d6),1(a0,d6)
- move.b StringBuf,(a0,d6)
- bra Eg_Done
-
- Eg_SA_ tst.b d2
- bne.s .1
- move.b StringBuf,3(a0,d6)
- bra Eg_Done
- .1 cmpi.b #2,d2
- bne.s .2
- move.b StringBuf,2(a0,d6)
- bra Eg_Done
- .2 cmpi.b #4,d2
- bne.s .3
- move.b StringBuf,1(a0,d6)
- bra.s Eg_Done
- .3 move.b StringBuf,(a0,d6)
- bra.s Eg_Done
-
- Eg_S_C tst.b d2
- bne.s .1
- move.b StringBuf,3(a0,d6)
- bra.s Eg_Done
- .1 cmpi.b #2,d2
- bne.s .2
- move.b StringBuf,2(a0,d6)
- bra.s Eg_Done
- .2 cmpi.b #1,d2
- bne.s .3
- move.b StringBuf,1(a0,d6)
- bra.s Eg_Done
- .3 move.b StringBuf,(a0,d6)
- bra.s Eg_Done
-
- Eg__AC tst.b d2
- bne.s .1
- move.b StringBuf,3(a0,d6)
- bra.s Eg_Done
- .1 cmpi.b #4,d2
- bne.s .2
- move.b StringBuf,2(a0,d6)
- bra.s Eg_Done
- .2 cmpi.b #1,d2
- bne.s .3
- move.b StringBuf,1(a0,d6)
- bra.s Eg_Done
- .3 move.b StringBuf,(a0,d6)
-
- Eg_Done move.l Windowhd,a0 ; Redraw affected key
- lea StrGadg,a1
- moveq #89,d0
- CALLINT RemoveGList
- bsr GenerateKeys
- move.l Windowhd,a0
- lea StrGadg,a1
- moveq #5,d0
- moveq #89,d1
- CALLINT AddGList
-
- lea DeadIDtoGadg,a0
- move MyNewKey,d7
- subq #1,d7
- move d7,d0
- lsl #2,d0
- move.l (a0,d0),a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLSYS RefreshGList
-
- cmpi #45,d7
- bne.s Eg_FinalCall
- lea Gadg87,a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLSYS RefreshGList
- Eg_FinalCall bsr ChangeKString
- bra CheckMessage
-
- Ed_MustFix move.l Windowhd,a0 ; What should we do?
- lea EdText,a1
- lea EdPos,a2
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move.l #320,d2
- moveq #62,d3
- CALLINT AutoRequest
- rts
-
- Ed_NoGo move.l Windowhd,a0
- lea NoEdText,a1
- suba.l a2,a2
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move.l #325,d2
- moveq #53,d3
- CALLINT AutoRequest
- bra CheckMessage
-
- VanOrNot move.l Windowhd,a0 ; What should we do
- lea VanText,a1 ; about CTRL key?
- lea VanPos,a2
- lea VanNeg,a3
- moveq #0,d0
- moveq #0,d1
- move #397,d2
- moveq #62,d3
- CALLINT AutoRequest
- tst.l d0
- bne.s ChangeToVan
- rts
- ChangeToVan move.b #KC_VANILLA,(a4,d7)
- rts
-
- EditDead moveq #0,d0
- move.b MyDefQual,d0
- lsl #2,d0
- lea DQualTab,a0
- move.l (a0,d0),a6
-
- move.b (a4,d7),d1
- andi.b #KC_VANILLA,d1
- moveq #0,d0
- move.b (a6,d1),d0
- lea DeadTab,a5
- move d7,d6
- lsl #4,d6
- add d0,d6
- move.b (a5,d6),d2
- cmpi.b #DPF_MOD,d2
- beq.s EditMod
- tst.b d2
- bne CheckMessage
- move.b StringBuf,1(a5,d6) ; Store new definition
- bra Eg_Done
-
- EditMod moveq #0,d0
- move.b 1(a5,d6),d0
- lsl #4,d0
- add.b CurrDKey,d0
- lea DeadIndex,a0
- move.b StringBuf,(a0,d0)
- bra Eg_Done
-
- StringEnter lea KeyTypes,a4 ; Handle string input
- lea MapToKeys,a2
- suba.l #1,a2
- moveq #0,d7
- move MyNewKey,d2
- move.b (a2,d2),d7
- move.b (a4,d7),d1 ; Get key type
- andi.b #KCF_STRING,d1
- bne EditString
- move.b (a4,d7),d1
- andi.b #KCF_DEAD,d1
- beq NormToStr ; Convert to string
-
- move.l Windowhd,a0 ; Cannot put a string on
- lea NoDeadSText,a1 ; a deadkey
- suba.l a2,a2
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move.l #357,d2
- moveq #53,d3
- CALLINT AutoRequest
- bra CheckMessage
-
- EdOneString move.b (a4,d7),d1 ; Current keytype
- andi.b #KC_VANILLA,d1
- move.b MyDefQual,d2 ; Qualifier
- bsr StringExpand
-
- move.l DeadStore,a5 ; Now edit string
- move d7,d2
- move.b (a4,d2),d3
- andi.b #KC_VANILLA,d3
- moveq #0,d1
- move.b (a5,d3),d1 ; Get index
- lsr #1,d1
- lea StringList,a0
- lsl #3,d2
- add d2,d1
- moveq #0,d3
- move.b (a0,d1),d3
- lsl #5,d3
- lea StringArea,a0
- lea StringBuf,a1
- move.b (a1),(a0,d3) ; Copy key entered
- clr.b 1(a0,d3)
-
- lea StringList,a1
- adda d2,a1
- move.b (a4,d7),d6
- andi.b #KC_VANILLA,d6
- moveq #0,d1
- ExStrLoop moveq #0,d3 ; Can we turn this key
- move.b (a1,d1),d3 ; back to a normal?
- lsl #5,d3
- tst.b 1(a0,d3)
- bne Eg_Done ; No...
-
- addq #1,d1
- cmpi.b #KC_NOQUAL,d6
- beq.s PassStrTest
- cmpi.b #KCF_SHIFT,d6
- beq.s .1
- cmpi.b #KCF_ALT,d6
- beq.s .1
- cmpi.b #KCF_CONTROL,d6
- beq.s .1
- cmpi.b #KC_VANILLA,d6
- beq.s .2
-
- cmpi.b #4,d1
- beq.s PassStrTest
- bra ExStrLoop
-
- .1 cmpi.b #2,d1
- beq.s PassStrTest
- bra ExStrLoop
-
- .2 cmpi.b #8,d1
- beq.s PassStrTest
- bra ExStrLoop
-
- PassStrTest cmpi.b #KC_VANILLA,d6
- bne.s NoCheckNeed
-
- movem.l a0-a1,-(sp)
- move.l Windowhd,a0
- lea ZapText1,a1
- lea EdPos,a2
- lea ZapNo,a3
- moveq #0,d0
- moveq #0,d1
- move #415,d2
- moveq #71,d3
- CALLINT AutoRequest
- movem.l (sp)+,a0-a1
-
- tst.l d0
- beq Eg_Done
- move.b #KCF_STRING+KCF_SHIFT+KCF_ALT,(a4,d7)
- moveq #0,d3 ; Remove CTRL defs
- move.b 4(a1),d3
- lsl #5,d3
- clr (a0,d3)
- moveq #0,d3
- move.b 5(a1),d3
- lsl #5,d3
- clr (a0,d3)
- moveq #0,d3
- move.b 6(a1),d3
- lsl #5,d3
- clr (a0,d3)
- moveq #0,d3
- move.b 7(a1),d3
- lsl #5,d3
- clr (a0,d3)
-
- NoCheckNeed move.b (a4,d7),d5 ; Turn string back to
- andi.b #KC_VANILLA,d5 ; normal keytype
- move d7,d6
- lsl #2,d6
- lea KeyDefs,a2
-
- moveq #0,d3
- move.b (a1),d3
- lsl #5,d3
- move.b (a0,d3),3(a2,d6)
- clr (a0,d3)
- cmpi.b #KC_NOQUAL,d5
- beq.s StrChkOver
-
- moveq #0,d3
- move.b 1(a1),d3
- lsl #5,d3
- move.b (a0,d3),2(a2,d6)
- clr (a0,d3)
- cmpi.b #KCF_SHIFT,d5
- beq.s StrChkOver
- cmpi.b #KCF_ALT,d5
- beq.s StrChkOver
- cmpi.b #KCF_CONTROL,d5
- beq.s StrChkOver
-
- moveq #0,d3
- move.b 2(a1),d3
- lsl #5,d3
- move.b (a0,d3),1(a2,d6)
- clr (a0,d3)
- moveq #0,d3
- move.b 3(a1),d3
- lsl #5,d3
- move.b (a0,d3),(a2,d6)
- clr (a0,d3)
-
- StrChkOver andi.b #$ff-KCF_STRING,(a4,d7)
- bsr SortStringNow
-
- cmpi.b #KCF_SHIFT+KCF_ALT,d5
- bne Eg_Done
-
- move.l Windowhd,a0 ; What should we do
- lea VanText,a1 ; about CTRL key?
- lea VanPos,a2
- lea VanNeg,a3
- moveq #0,d0
- moveq #0,d1
- move #397,d2
- moveq #62,d3
- CALLINT AutoRequest
- tst.l d0
- beq Eg_Done
- move.b #KC_VANILLA,(a4,d7)
- bra Eg_Done
-
- EditString move.b (a4,d7),d1 ; Current keytype
- andi.b #KC_VANILLA,d1
- move.b MyDefQual,d2 ; Qualifier
- bsr.s StringExpand
-
- move.l DeadStore,a5 ; Now edit string
- move d7,d2
- move.b (a4,d2),d3
- andi.b #KC_VANILLA,d3
- moveq #0,d1
- move.b (a5,d3),d1 ; Get index
- lsr #1,d1
- lea StringList,a0
- lsl #3,d2
- add d2,d1
- moveq #0,d3
- move.b (a0,d1),d3
- lsl #5,d3
- lea StringArea,a0
- lea StringBuf,a1
- moveq #0,d0
- EdStrLoop move.b (a1,d0),(a0,d3) ; Copy string entered
- beq Eg_Done ; to main buffers
- addq #1,d3
- addq #1,d0
- cmpi.b #32,d0
- bne EdStrLoop
-
- StringExpand lea StringList,a0 ; d1=keytype of key,
- move d7,d6 ; d2=keytype to be added
- lsl #3,d6 ; d7=keyno, a4=keytypes
-
- cmpi.b #KC_NOQUAL,d1
- beq Str___
- cmpi.b #KCF_SHIFT,d1
- beq StrS__
- cmpi.b #KCF_ALT,d1
- beq Str_A_
- cmpi.b #KCF_CONTROL,d1
- beq Str__C
- cmpi.b #KCF_SHIFT+KCF_ALT,d1
- beq StrSA_
- cmpi.b #KCF_SHIFT+KCF_CONTROL,d1
- beq.s StrS_C
- cmpi.b #KCF_ALT+KCF_CONTROL,d1
- beq.s Str_AC
- rts ; If KC_VANILLA then return
-
- Str_AC andi.b #2,d2
- bne.s .1
- rts
- .1 move.b 3(a0,d6),6(a0,d6)
- move.b 2(a0,d6),4(a0,d6)
- move.b 1(a0,d6),2(a0,d6)
- lea 1(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- lea 5(a0,d6),a1
- bsr GetStr
- lea 7(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KC_VANILLA,(a4,d7)
- rts
-
- StrS_C andi.b #4,d2
- bne.s .1
- rts
- .1 move.b 2(a0,d6),4(a0,d6)
- move.b 3(a0,d6),5(a0,d6)
- lea 2(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- lea 6(a0,d6),a1
- bsr GetStr
- lea 7(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KC_VANILLA,(a4,d7)
- rts
-
- StrSA_ andi.b #1,d2
- bne.s .1
- rts
- .1 lea 4(a0,d6),a1
- bsr GetStr
- lea 5(a0,d6),a1
- bsr GetStr
- lea 6(a0,d6),a1
- bsr GetStr
- lea 7(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KC_VANILLA,(a4,d7)
- rts
-
- Str__C cmpi.b #2,d2
- beq.s .1
- cmpi.b #4,d2
- beq.s .2
- cmpi.b #3,d2
- beq.s .1
- cmpi.b #5,d2
- beq.s .2
- cmpi.b #6,d2
- beq.s .3
- cmpi.b #7,d2
- beq.s .3
- rts
- .3 move.b 1(a0,d6),4(a0,d6)
- lea 1(a0,d6),a1
- bsr GetStr
- lea 2(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- lea 5(a0,d6),a1
- bsr GetStr
- lea 6(a0,d6),a1
- bsr GetStr
- lea 7(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KC_VANILLA,(a4,d7)
- rts
- .2 move.b 1(a0,d6),2(a0,d6)
- lea 1(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KCF_ALT+KCF_CONTROL,(a4,d7)
- rts
- .1 move.b 1(a0,d6),2(a0,d6)
- lea 1(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KCF_SHIFT+KCF_CONTROL,(a4,d7)
- rts
-
- Str_A_ cmpi.b #1,d2
- beq.s .1
- cmpi.b #2,d2
- beq.s .2
- cmpi.b #3,d2
- beq.s .3
- cmpi.b #5,d2
- beq.s .1
- cmpi.b #6,d2
- beq.s .2
- cmpi.b #7,d2
- beq.s .3
- rts
- .3 move.b 1(a0,d6),2(a0,d6)
- lea 1(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- lea 4(a0,d6),a1
- bsr GetStr
- lea 5(a0,d6),a1
- bsr GetStr
- lea 6(a0,d6),a1
- bsr GetStr
- lea 7(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KC_VANILLA,(a4,d7)
- rts
- .2 move.b 1(a0,d6),2(a0,d6)
- lea 1(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KCF_SHIFT+KCF_ALT,(a4,d7)
- rts
- .1 lea 2(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KCF_CONTROL+KCF_ALT,(a4,d7)
- rts
-
- StrS__ cmpi.b #1,d2
- beq.s .1
- cmpi.b #4,d2
- beq.s .2
- cmpi.b #3,d2
- beq.s .1
- cmpi.b #5,d2
- beq.s .3
- cmpi.b #6,d2
- beq.s .2
- cmpi.b #7,d2
- beq.s .3
- rts
- .3 lea 2(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- lea 4(a0,d6),a1
- bsr GetStr
- lea 5(a0,d6),a1
- bsr GetStr
- lea 6(a0,d6),a1
- bsr GetStr
- lea 7(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KC_VANILLA,(a4,d7)
- rts
- .2 lea 2(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KCF_SHIFT+KCF_ALT,(a4,d7)
- rts
- .1 lea 2(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KCF_SHIFT+KCF_CONTROL,(a4,d7)
- rts
-
- Str___ cmpi.b #1,d2
- beq .1
- cmpi.b #2,d2
- beq .2
- cmpi.b #4,d2
- beq .3
- cmpi.b #3,d2
- beq .4
- cmpi.b #5,d2
- beq.s .5
- cmpi.b #6,d2
- beq.s .6
- cmpi.b #7,d2
- beq.s .7
- rts
- .7 lea 1(a0,d6),a1
- bsr GetStr
- lea 2(a0,d6),a1
- bsr GetStr
- lea 3(a0,d6),a1
- bsr GetStr
- lea 4(a0,d6),a1
- bsr GetStr
- lea 5(a0,d6),a1
- bsr GetStr
- lea 6(a0,d6),a1
- bsr GetStr
- lea 7(a0,d6),a1
- bsr GetStr
- move.b #KCF_STRING+KC_VANILLA,(a4,d7)
- rts
- .6 lea 1(a0,d6),a1
- bsr.s GetStr
- lea 2(a0,d6),a1
- bsr.s GetStr
- lea 3(a0,d6),a1
- bsr.s GetStr
- move.b #KCF_STRING+KCF_SHIFT+KCF_ALT,(a4,d7)
- rts
- .5 lea 1(a0,d6),a1
- bsr.s GetStr
- lea 2(a0,d6),a1
- bsr.s GetStr
- lea 3(a0,d6),a1
- bsr.s GetStr
- move.b #KCF_STRING+KCF_CONTROL+KCF_ALT,(a4,d7)
- rts
- .4 lea 1(a0,d6),a1
- bsr.s GetStr
- lea 2(a0,d6),a1
- bsr.s GetStr
- lea 3(a0,d6),a1
- bsr.s GetStr
- move.b #KCF_STRING+KCF_CONTROL+KCF_SHIFT,(a4,d7)
- rts
- .3 lea 1(a0,d6),a1
- bsr.s GetStr
- move.b #KCF_STRING+KCF_ALT,(a4,d7)
- rts
- .2 lea 1(a0,d6),a1
- bsr.s GetStr
- move.b #KCF_STRING+KCF_SHIFT,(a4,d7)
- rts
- .1 lea 1(a0,d6),a1
- bsr.s GetStr
- move.b #KCF_STRING+KCF_CONTROL,(a4,d7)
- rts
-
- GetStr bsr.s PickUpNew
- moveq #0,d4
- move.b (a0,d6),d4
- lsl #5,d4
- move StringNow,d5
- lsl #5,d5
- lea StringArea,a3
- move.l (a3,d4),(a3,d5)
- move.l 4(a3,d4),4(a3,d5)
- move.l 8(a3,d4),8(a3,d5)
- move.l 12(a3,d4),12(a3,d5)
- move.l 16(a3,d4),16(a3,d5)
- move.l 20(a3,d4),20(a3,d5)
- move.l 24(a3,d4),24(a3,d5)
- move.l 28(a3,d4),28(a3,d5)
- rts
-
- PickUpNew bsr SortStringNow
- cmpi #$100,StringNow
- beq.s FullUp
- move.b StringNow+1,(a1)
- rts
-
- FullUp move.b (a0,d6),(a1)
- rts
-
- NormToStr move.b (a4,d7),d1 ; Convert normal key
- andi.b #KC_VANILLA,d1 ; to string definition
- lea StringArea,a0
- lea StringList,a1
- lea KeyDefs,a2
- move d7,d6
- lsl #2,d6
- move d6,d5
- lsl #1,d5
-
- cmpi.b #KCF_SHIFT,d1
- beq.s Norm1ToStr
- cmpi.b #KCF_ALT,d1
- beq.s Norm1ToStr
- cmpi.b #KCF_CONTROL,d1
- beq.s Norm1ToStr
- cmpi.b #KCF_SHIFT+KCF_ALT,d1
- beq.s Norm2ToStr
- cmpi.b #KCF_SHIFT+KCF_CONTROL,d1
- beq.s Norm2ToStr
- cmpi.b #KCF_CONTROL+KCF_ALT,d1
- beq.s Norm2ToStr
- cmpi.b #KC_VANILLA,d1
- bne.s Norm0ToStr
- move.b #KCF_SHIFT+KCF_ALT,(a4,d7)
- bra.s Norm2ToStr
-
- Norm0ToStr bsr SortStringNow
- move StringNow,d4
- move.b d4,(a1,d5)
- lsl #5,d4
- move.b 3(a2,d6),(a0,d4) ; Turn byte definition
- andi.b #$ff-KCF_NOP,(a4,d7)
- ori.b #KCF_STRING,(a4,d7) ; into a string
- bra EditString
-
- Norm1ToStr bsr SortStringNow
- move StringNow,d4
- move.b d4,1(a1,d5)
- lsl #5,d4
- move.b 2(a2,d6),(a0,d4)
- bra Norm0ToStr
-
- Norm2ToStr bsr SortStringNow
- move StringNow,d4
- move.b d4,3(a1,d5)
- lsl #5,d4
- move.b (a2,d6),(a0,d4)
- bsr SortStringNow
- move StringNow,d4
- move.b d4,2(a1,d5)
- lsl #5,d4
- move.b 1(a2,d6),(a0,d4)
- bra Norm1ToStr
-
- OnCaps subq #1,d0
- moveq #0,d1
- lea MapToKeys,a0
- move.b (a0,d0),d1
- lea CapsTab,a1
- eori.b #1,(a1,d1) ; Toggle value in table
- bra CheckMessage
-
- OnRept subq #1,d0
- moveq #0,d1
- lea MapToKeys,a0
- move.b (a0,d0),d1
- lea ReptTab,a1
- eori.b #1,(a1,d1)
- bra CheckMessage
-
- AnalyseKM bsr ClearOut
-
- clr.b ModifyIndex ; Reset counter
- move.l MySegment,d0
- lsl.l #2,d0
- addi.l #18,d0
- move.l d0,a2
- move.l km_LoCapsable(a2),a0 ; First extract caps
- lea CapsTab,a1
- moveq #0,d1
- moveq #0,d3
- AnlCapLp move.b (a0,d3),d0
- bsr Anly_Bit
- addq #1,d3
- cmpi #8,d3
- bne AnlCapLp
- move.l km_HiCapsable(a2),a0 ; Now high caps
- moveq #0,d3
- AnlCapLpHi move.b (a0,d3),d0
- bsr Anly_Bit
- addq #1,d3
- cmpi #4,d3
- bne AnlCapLpHi
-
- move.l km_LoRepeatable(a2),a0 ; Now extract repeaters
- lea ReptTab,a1
- moveq #0,d1
- moveq #0,d3
- AnlRepLp move.b (a0,d3),d0
- bsr Anly_Bit
- addq #1,d3
- cmpi #8,d3
- bne AnlRepLp
- move.l km_HiRepeatable(a2),a0
- moveq #0,d3
- AnlRepLpHi move.b (a0,d3),d0
- bsr Anly_Bit
- addq #1,d3
- cmpi #4,d3
- bne AnlRepLpHi
-
- move.l km_LoKeyMapTypes(a2),a0 ; Get key types
- lea KeyTypes,a1
- moveq #$3e,d0
- KTypeLp move (a0,d0),(a1,d0)
- tst d0
- beq.s KTypeLoOver
- subq #2,d0
- bra KTypeLp
-
- KTypeLoOver move.l km_HiKeyMapTypes(a2),a0
- moveq #$1e,d0
- KTypeHi move (a0,d0),$40(a1,d0)
- tst d0
- beq.s KTypeOver
- subq #2,d0
- bra KTypeHi
-
- KTypeOver move.l km_LoKeyMap(a2),a0 ; Now for the actual keys!
- lea KeyDefs,a1
- move #252,d0
- ActKeyLp move.l (a0,d0),(a1,d0)
- tst d0
- beq.s ActKeyLoOvr
- subq #4,d0
- bra ActKeyLp
-
- ActKeyLoOvr move.l km_HiKeyMap(a2),a0
- adda.l #$100,a1
- move #$7c,d0
- ActKeyHi move.l (a0,d0),(a1,d0)
- tst d0
- beq.s ActKeyOvr
- subq #4,d0
- bra ActKeyHi
-
- ActKeyOvr lea KeyTypes,a0 ; Get deadkeys
- lea KeyDefs,a1
- lea DeadTab,a3
- moveq #0,d0
- DeadLoop move.b (a0,d0),d1
- andi.b #KCF_DEAD,d1
- beq.s NotDead
-
- move d0,d2 ; Get dead key descriptor
- lsl #2,d2
- move.l (a1,d2),a2
- lsl #2,d2
- movea.l a2,a6
- moveq #0,d7
- DeadLoop2 move.b (a2),(a3,d2)
- move.b 1(a2),1(a3,d2)
- bsr IndexSub
- adda.l #2,a2
- addq #2,d2
- addq #2,d7
- cmpi #16,d7
- bne DeadLoop2
-
- NotDead addq #1,d0
- cmpi #96,d0
- bne DeadLoop
-
- lea DeadTab,a4 ; Check deads
- lea KeyTypes,a0
- moveq #0,d0
- moveq #0,d4
- SortDeadLp move.b (a0,d0),d1
- andi.b #KCF_DEAD,d1
- cmpi.b #KCF_DEAD,d1
- bne.s ContDChk
- bsr DeadToVan
- ContDChk addq #1,d0
- addi #16,d4
- cmpi.b #96,d0
- bne SortDeadLp
-
- clr.l UseDead
- clr.l UseDead+4
- clr.l UseDead+8
- clr.l UseDead+12
-
- lea DeadTab,a0 ; Count no. of deadkeys
- lea UseDead,a1 ; and modkeys
- lea ModIndex,a2
- moveq #0,d0
- moveq #0,d1
- UseDeadLp move.b (a0,d0),d1 ; Get key data
- cmpi.b #DPF_DEAD,d1 ; Is it a deadkey?
- beq.s Dead_D ; Yes, so branch
- cmpi.b #DPF_MOD,d1 ; Is it modifiable?
- beq.s Dead_M
-
- NotCounted addq #2,d0
- cmpi #768*2,d0 ; Have we finished?
- bne UseDeadLp
- bra ExString
-
- Dead_D move.b 1(a0,d0),d1 ; Get significant byte
- andi.b #$0f,d1 ; Avoid double-deadkeys
- move.b #1,(a1,d1) ; Mark as in use
- bra NotCounted
-
- Dead_M move.b 1(a0,d0),d1 ; Mark modifiable as
- move.b #1,(a2,d1) ; in use
- bra NotCounted
-
- Anly_Bit moveq #0,d2 ; Extract nos. from the
- Anly_BLp btst #0,d0 ; bit table
- beq.s BitLow
- move.b #1,(a1,d1)
- bra.s EBLp
- BitLow clr.b (a1,d1)
- EBLp lsr.b d0
- addi #1,d2
- addi #1,d1
- cmpi #8,d2
- bne Anly_BLp
- rts
-
- IndexSub cmpi.b #DPF_MOD,(a2) ; Subroutine to extract data
- bne.s NotIndex ; for keys of type DPF_MOD
-
- movea.l a6,a4 ; Only 256 DPF_MODs allowed!
- moveq #0,d3
- move.b 1(a2),d3
- add.l d3,a4
- move.b ModifyIndex,d3
- mulu #16,d3
- moveq #0,d4
- lea DeadIndex,a5
- IndexLoop move.b (a4,d4),(a5,d3)
- move.b 1(a4,d4),1(a5,d3)
- cmpi #14,d4
- beq.s IndexOver
- addq #2,d3
- addq #2,d4
- bra IndexLoop
-
- IndexOver move.b ModifyIndex,1(a3,d2)
- addq.b #1,ModifyIndex
- NotIndex rts
-
- ExString move.l MySegment,d0 ; Get strings
- lsl.l #2,d0
- addi.l #18,d0
- move.l d0,a0
- move.l km_LoKeyMap(a0),a0
- lea KeyTypes,a1
- moveq #0,d0
- moveq #0,d3
- StrLoop move.b (a1,d0),d1
- andi.b #KCF_STRING,d1
- beq NotStr
-
- move.b (a1,d0),d1
- andi.b #KC_VANILLA,d1
- bne.s .1
- clr d2
- bra.s .index
- .1 cmpi.b #KC_VANILLA,d1
- bne.s .2
- move #14,d2
- bra.s .index
- .2 cmpi.b #KCF_SHIFT,d1
- bne.s .3
- move #2,d2
- bra.s .index
- .3 cmpi.b #KCF_ALT,d1
- bne.s .4
- move #2,d2
- bra.s .index
- .4 cmpi.b #KCF_CONTROL,d1
- bne.s .5
- move #2,d2
- bra.s .index
- .5 move #6,d2
-
- .index move.l (a0,d3),a2 ; Get string descriptor
- lea StringList,a3
- lea StringArea,a4
-
- GetStrLoop lsr #1,d2
- move StringNow,d5 ; Show where string is
- lsl #3,d0
- add d0,d2
- move.b d5,(a3,d2)
- sub d0,d2
- lsr #3,d0
- lsl #1,d2
- lsl #5,d5 ; d5 = Pos in StringArea
- move.b (a2,d2),d6 ; d6 = String length
- tst.b d6
- beq.s FinGotStr
- cmpi.b #31,d6
- bcs.s .okay
- move.b #31,d6
- moveq #0,d7
- .okay move.b 1(a2,d2),d7 ; Get string location
- move d5,-(sp) ; Save d5
- GetString move.b (a2,d7),(a4,d5) ; Get string from keymap
- cmpi.b #1,d6
- beq.s GotString
-
- addq #1,d7
- addq #1,d5
- subq #1,d6
- bra GetString
-
- GotString clr.b 1(a4,d5)
- bsr.s SortStringNow
- move (sp)+,d5 ; Restore d5
- FinGotStr tst d2
- beq.s NotStr
-
- subq #2,d2
- bra GetStrLoop
-
- NotStr addq #1,d0
- addq #4,d3
- cmpi.b #$60,d0
- beq.s EndStr
- cmpi.b #$40,d0
- bne StrLoop
- move d0,-(sp)
- move.l MySegment,d0
- lsl.l #2,d0
- addi.l #18,d0
- move.l d0,a0
- move (sp)+,d0
- move.l km_HiKeyMap(a0),a0 ; Switch to high keymap
- moveq #0,d3
- bra StrLoop
-
- EndStr move.l MySegment,d1 ; Unload keymap
- CALLDOS UnLoadSeg ; and finish routine
- rts
-
- SortStringNow move.l d7,-(sp) ; Finds a free string
- lea StringArea,a5 ; a5 scratch
- moveq #0,d7
- SortLoop tst.b (a5,d7)
- beq.s SoGotOne
- addi #32,d7
- cmpi #8192,d7
- bne SortLoop
- move #$100,StringNow
- bra.s ResSort
- SoGotOne lsr #5,d7
- clr.b StringNow
- move.b d7,StringNow+1
- ResSort move.l (sp)+,d7
- rts
-
- QuitProper move.l Windowhd,a0 ; Requester to check if
- lea ReqText,a1 ; you really want to quit
- lea LReqText,a2
- lea RReqText,a3
- moveq #0,d0
- moveq #0,d1
- move #255,d2
- moveq #53,d3
- CALLINT AutoRequest
-
- tst.l d0
- beq CheckMessage
- moveq #RETURN_OK,d5
- move.l Windowhd,a0 ; Tidy up and exit
- CALLINT ClearMenuStrip
- _NoMenus move.l Windowhd,a0
- CALLINT CloseWindow
- _NoRun move.l _GfxBase,a1
- CALLEXEC CloseLibrary
- _NoGraphics move.l _DOSBase,a1
- CALLEXEC CloseLibrary
- _NoArp move.l _IntuitionBase,a1
- CALLEXEC CloseLibrary
-
- movea.l AslFReq,a0
- cmpa.l #0,a0
- beq.s AslError1
- movea.l _AslBase,a6
- CALLSYS FreeFileRequest
- AslError1 move.l _AslBase,a1
- cmpa.l #0,a1
- beq.s AslError2
- CALLEXEC CloseLibrary
- AslError2 rts ; Au revoir, mes amis!!
-
- NoMenus moveq #RETURN_FAIL,d5 ; DOS error codes
- bra _NoMenus
- NoRun moveq #RETURN_FAIL,d5
- bra _NoRun
- NoGraphics moveq #RETURN_FAIL,d5
- bra _NoGraphics
- NoArp moveq #RETURN_FAIL,d5
- bra _NoArp
- NoIntuition moveq #RETURN_FAIL,d5
- rts
-
- NoArpLib suba.l a0,a0
- lea NoArpErr,a1
- suba.l a2,a2
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move #312,d2
- moveq #83,d3
- CALLINT AutoRequest
- bra NoArp
-
- WindSetUp move.l d0,a0
- move.l wd_UserPort(a0),UserPort
- move.l wd_RPort(a0),RPort
- rts
-
- ClearOut lea CapsTab,a0
- moveq #96,d0
- bsr.s ClearIt
- lea ReptTab,a0
- moveq #96,d0
- bsr.s ClearIt
- lea KeyTypes,a0
- bsr.s ClearIt2
- lea UseDead,a0
- moveq #16,d0
- bsr.s ClearIt
- lea ModIndex,a0
- move #256,d0
- bsr.s ClearIt
- lea StringList,a0
- move #768,d0
- bsr.s ClearIt
- lea DeadTab,a0
- move #768*2,d0
- bsr.s ClearIt
- lea KeyDefs,a0
- move #96*4,d0
- bsr.s ClearIt
- lea StringArea,a0
- move #8192,d0
- bsr.s ClearIt
- clr.b DeadNo
- clr.b ModNo
- bra SortStringNow
-
- ClearIt subq #1,d0
- ClearLoop clr.b (a0,d0)
- tst d0
- beq.s ClearStop
- subq #1,d0
- bra ClearLoop
- ClearStop rts
-
- ClearIt2 moveq #95,d0
- .loop move.b #KCF_NOP,(a0,d0)
- tst d0
- beq.s .stop
- subq #1,d0
- bra .loop
- .stop rts
-
- ARP_Extract lea PathName,a0 ; Extract dir...
- movea.l xFile,a1
- movea.l xDir,a2
- ARP_xLp move.b (a2)+,(a0)+
- bne ARP_xLp
- lea PathName,a0
- bsr _TackOn
- lea PathName,a0
- moveq #0,d5
- ARP_xLp2 tst.b (a0,d5)
- beq.s ARP_xLp3
- addq #1,d5
- cmpi.b #72,d5
- bne ARP_xLp2
- ARP_xLp3 rts
-
- LoadKeyMap moveq #0,d6 ; Needs PathLength in d5,
- move.l #PathName,d1 ; returns d6=0 ok
- CALLDOS LoadSeg
- move.l d0,MySegment
- beq.s DskError ; Problem so exit...
-
- bsr TestKeyMap ; Check integrity
- cmpi #2,d6
- bne.s AddNames
- rts
-
- AddNames lea ModWindText-1,a3
- AddName move.b (a2,d5),d2
- tst.b d2
- bne.s NoStopMod
- bra.s StopMod
-
- NoStopMod move.b d2,1(a3,d1)
- addq #1,d5
- addq #1,d1
- cmpi #8,d1
- bne AddName
-
- StopMod move.b #"»",1(a3,d1)
- clr.b 2(a3,d1)
- tst.l Windowhd
- beq.s StopModF
- move.l Windowhd,a0
- move.l #%0000000001000000,d0
- CALLINT OnMenu
- move.l Windowhd,a0
- lea MainWindowText,a1
- move.l #-1,a2
- CALLSYS SetWindowTitles
- StopModF rts
-
- DskError cmpi.b #1,ErrResponse
- beq.s WBDskErr
- cmpi.b #2,ErrResponse
- beq.s EndDskErr
- tst.l ReturnMsg
- bne.s WBDskErr
-
- CALLDOS Output ; Write out error message
- move.l d0,d4
- move.l d4,d1
- move.l #FileErr1,d2
- move.l #FileErr1End-FileErr1,d3
- CALLSYS Write
- move.l d4,d1
- move.l #PathName,d2
- moveq #0,d3
- move d5,d3
- CALLSYS Write
- move.l d4,d1
- move.l #FileErr2,d2
- move.l #FileErr2End-FileErr2,d3
- CALLSYS Write
- bra.s EndDskErr
-
- WBDskErr suba.l a0,a0
- lea WBNoFile,a1 ; 'No File' requester
- suba.l a2,a2
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move #350,d2
- moveq #62,d3
- CALLINT AutoRequest
- EndDskErr moveq #1,d6
- rts
-
- TestKeyMap move.l d5,d7
- moveq #0,d3
- lsl.l #2,d0
- move.l d0,a0
- adda.l #14,a0
- move.l (a0),a0
-
- subq #1,d5 ; Get keymap name
- moveq #0,d1
- lea PathName,a2
- GetKeyName move.b (a2,d5),d0
- cmpi.b #"/",d0
- beq.s Got1Name
- cmpi.b #":",d0
- beq.s Got1Name
- tst d5
- beq.s GotName
- subq #1,d5
- bra GetKeyName
-
- Got1Name addq #1,d5
- GotName move d5,-(sp) ; Save d5
- GotNameLp move.b (a2,d5),d2
- cmp.b (a0,d3),d2
- bne.s EndName
- addq #1,d5
- tst.b (a0,d3)
- beq ItsOver
- addq #1,d3
- bra GotNameLp
-
- EndName moveq #2,d6
- cmpi.b #1,ErrResponse
- beq.s WBFault
- cmpi.b #2,ErrResponse
- beq.s ItsOver
- tst.l ReturnMsg
- bne.s WBFault
-
- CALLDOS Output ; Write out error message
- move.l d0,d4
- move.l d4,d1
- move.l #IntgErr1,d2
- move.l #IntgErr1End-IntgErr1,d3
- CALLSYS Write
- move.l d4,d1
- move.l #PathName,d2
- moveq #0,d3
- move d7,d3
- CALLSYS Write
- move.l d4,d1
- move.l #IntgErr2,d2
- move.l #IntgErr2End-IntgErr2,d3
- CALLSYS Write
- bra.s ItsOver
-
- WBFault suba.l a0,a0
- lea WBFaultFile,a1 ; 'Incorrect File' requester
- suba.l a2,a2
- lea AbortText,a3
- moveq #0,d0
- moveq #0,d1
- move #342,d2
- moveq #62,d3
- CALLINT AutoRequest
- ItsOver move (sp)+,d5 ; Recover d5
- rts
-
- CheckQual tst.b ChQVal
- beq.s NormCQual
- moveq #0,d0
- move.b MyDefQual,d0
- rts
-
- NormCQual moveq #0,d0 ; Which qualifiers are
- move Gadg89+gg_Flags,d1 ; currently active?
- andi #SELECTED,d1
- beq.s CheckShift
- addq #1,d0
- CheckShift move Gadg90+gg_Flags,d1
- andi #SELECTED,d1
- beq.s CheckAlt
- addq #2,d0
- CheckAlt move Gadg92+gg_Flags,d1
- andi #SELECTED,d1
- beq.s ChecksOver
- addq #4,d0
- ChecksOver rts
-
- GenerateKeys bsr CheckQual
- lsl #2,d0
- lea QualTable,a0
- move.l (a0,d0),NoDeadStore
- lea DQualTab,a0
- move.l (a0,d0),DeadStore
-
- lea IDtoGadget,a0
- lea KeyTypes,a2
- lea KeyDefs,a3
- lea CodetoImage,a4
- lea MapToKeys,a5
- moveq #0,d0
- moveq #0,d1
-
- GenKeyLoop move.l (a0,d0),a1 ; Gadget address in a1
- cmpa.l #0,a1 ; Should we change the image?
- beq.s NotThisOne
-
- moveq #0,d2
- move.b (a5,d1),d2 ; Keycode in d2
-
- move.b (a2,d2),d3 ; Get key type
- andi.b #KCF_STRING,d3
- bne.s NoGrafStr
- moveq #0,d3
- move.b (a2,d2),d3
- andi.b #KCF_DEAD,d3
- bne.s GenDead
- move.b (a2,d2),d3
- cmpi.b #KCF_NOP,d3
- beq.s NoGraf
- andi.b #KC_VANILLA,d3 ; Find which key in each
- moveq #0,d6 ; key definition list
- move.l NoDeadStore,a6
- move.b (a6,d3),d6 ; Get index
- cmpi.b #-1,d6 ; Is it invalid?
- beq.s NoGraf
-
- moveq #0,d5 ; Extract key from the
- move.b d2,d3 ; 'KeyDefs' table
- lsl #2,d3
- sub d6,d3
- move.b 3(a3,d3),d4 ; ASCII value in d4
- DeadASC cmpi.b #32,d4 ; Is it <SPACE
- bcs.s NoGraf
-
- subi.b #32,d4
- moveq #0,d5
- move.b d4,d5
- lsl #2,d5
- move.l (a4,d5),d6 ; Image address in d2
- move.l d6,gg_GadgetRender(a1) ; Phew!
-
- NotThisOne addq #4,d0
- addq #1,d1
- cmpi #88,d1
- bne GenKeyLoop
- rts
-
- NoGrafStr move.l #StrIm,gg_GadgetRender(a1)
- bra NotThisOne
-
- NoGraf move.l #A20,gg_GadgetRender(a1)
- bra NotThisOne
-
- GenDead move.b (a2,d2),d3
- andi.b #KC_VANILLA,d3
- move.l DeadStore,a6
- moveq #0,d7
- move.b (a6,d3),d7 ; Get index
- move.l a0,d6
- lea DeadTab,a0
- move d2,d5
- lsl #4,d5
- add d7,d5
- move.b (a0,d5),d2
- tst.b d2
- beq.s CanDoDead
- cmpi.b #DPF_MOD,d2
- beq.s ModDead
- move.l d6,a0
- bra NoGraf
-
- CanDoDead move.b 1(a0,d5),d4
- move.l d6,a0
- bra DeadASC
-
- ModDead moveq #0,d2
- move.b 1(a0,d5),d2
- mulu #16,d2
- lea DeadIndex,a0
- move.b (a0,d2),d4
- move.l d6,a0
- bra DeadASC
-
- RedrawKeys move.l Windowhd,a0 ; Redo all the keys eg
- lea StrGadg,a1 ; after qualifier change
- moveq #89,d0
- CALLINT RemoveGList
- bra GenerateKeys
-
- ERedrawKeys move.l Windowhd,a0
- lea StrGadg,a1
- moveq #5,d0
- moveq #89,d1
- CALLINT AddGList
-
- lea StrGadg,a0
- move.l Windowhd,a1
- moveq #89,d0
- CALLSYS RefreshGList
- rts
-
- PickUpDead moveq #0,d0 ; Pick out all dead keys
- moveq #0,d1
- lea DeadIDtoGadg,a0
- lea KeyTypes,a2
- lea MapToKeys,a5
-
- DeadKeyLoop move.l (a0,d0),a1
- moveq #0,d2
- move.b (a5,d1),d2
- moveq #0,d3
- move.b (a2,d2),d3
- andi.b #KCF_DEAD,d3 ; Is it KCF_DEAD?
- beq.s FinDeadLoop
-
- move.b (a2,d2),d3
- andi.b #KC_VANILLA,d3
- move.l DeadStore,a6
- moveq #0,d7
- move.b (a6,d3),d7
- lea DeadTab,a4
- move d2,d5
- lsl #4,d5
- add d7,d5
- move.b (a4,d5),d2
- cmp.b DeadByte,d2
- bne.s FinDeadLoop
- move On_Value,gg_Flags(a1)
-
- FinDeadLoop addq #4,d0
- addq #1,d1
- cmpi #88,d1
- bne DeadKeyLoop
- rts
-
- SetUpKeyOn bsr CheckQual
- cmp.b MyDefQual,d0
- beq.s ItsThisOne
- ItsVeryEarly move #GADGHCOMP!GADGDISABLED,StrGadg+gg_Flags
- bra CSIoff
-
- ItsThisOne tst.l MyDefKey
- beq ItsVeryEarly
- move.l MyDefKey,a0
- move gg_Flags(a0),d0
- andi #GADGDISABLED,d0
- bne.s NewFirst
- move gg_Flags(a0),d0
- eori #SELECTED,d0
- move d0,gg_Flags(a0)
- move #GADGHCOMP,StrGadg+gg_Flags
- bra CSIon
-
- NewFirst clr.l MyDefKey
- bra ItsVeryEarly
-
- ActString cmpi #GADGHCOMP,StrGadg+gg_Flags
- beq.s StringOn
- rts
-
- StringOn lea StrGadg,a0 ; If gadget not disabled
- move.l Windowhd,a1 ; then activate it...
- suba.l a2,a2
- CALLINT ActivateGadget
- rts
-
- OnDead lea KeyTypes,a0
- lea CheckTab,a2
- lea MapToKeys,a3
- lea DeadTab,a4
-
- subq #1,d0
- move.b d0,MD_GadgNo
- moveq #0,d2
- moveq #0,d4
- move.b (a3,d0),d4
- move.b d4,MD_KeyType ; Store for later
-
- move.b (a0,d4),d3
- bsr CheckQual
- moveq #0,d2
- move.b (a2,d0),d2 ; Get offset into key
- lsl #4,d4
- move d4,MD_DeadTab ; Store for later
- add d4,d2 ; d2 hold key address
- move d2,MD_DTbPos
-
- andi.b #KCF_DEAD,d3 ; Is this a deadkey?
- beq MakeNewDead
-
- cmpi.b #DPF_DEAD,(a4,d2) ; Is this key dead?
- beq TurnDeadOff
-
- moveq #7,d0
- DeadChLp move.b (a4,d4),d2 ; Is there a dead on this
- cmpi.b #DPF_DEAD,d2 ; physical key?
- beq.s FoundXDead ; Yes
- addq #2,d4
- dbeq d0,DeadChLp
-
- moveq #0,d4
- move.b MD_KeyType,d4
- bsr NewDeadIndex
- bsr.s CommonDead
- bra MakeOldDead
-
- FoundXDead move d4,OldDeadOff
- move.l Windowhd,a0
- lea DeadQuest,a1
- lea LReqText,a2
- lea RReqText,a3
- moveq #0,d0
- moveq #0,d1
- move #445,d2
- moveq #62,d3
- CALLINT AutoRequest
-
- lea KeyTypes,a0 ; Restore pointers
- lea CheckTab,a2
- lea MapToKeys,a3
- moveq #0,d4
- move.b MD_KeyType,d4
-
- tst d0
- bne.s UseOldDead
- bsr NewDeadIndex
- bsr.s CommonDead
- bra.s MakeOldDead
-
- UseOldDead move OldDeadOff,d6
- move.b 1(a4,d6),MD_Index ; Store old deadkey
- bsr.s CommonDead
- bra.s MakeOldDead
-
- CommonDead moveq #0,d4
- move.b MD_KeyType,d4
- move.b (a0,d4),d6
- andi.b #KC_VANILLA,d6
-
- move MD_DeadTab,d4
- move MD_DTbPos,d2
- rts
-
- MakeNewDead bsr CommonDead
- clr.l (a4,d4) ; Clear out deadkey
- clr.l 4(a4,d4)
- clr.l 8(a4,d4)
- clr.l 12(a4,d4)
-
- bsr NewDeadIndex
- moveq #0,d0
- move.b MD_KeyType,d0
- bsr NormToDead
-
- MakeOldDead move.b #DPF_DEAD,(a4,d2) ; Create dead
- move.b MD_Index,1(a4,d2) ; Store its index
-
- DeadRedraw move.l Windowhd,a0 ; Redraw affected key
- lea StrGadg,a1
- moveq #89,d0
- CALLINT RemoveGList
- bsr GenerateKeys
- bsr NoOfDead
- move.l Windowhd,a0
- lea StrGadg,a1
- moveq #5,d0
- moveq #89,d1
- CALLINT AddGList
-
- lea DeadIDtoGadg,a0
- moveq #0,d0
- move.b MD_GadgNo,d0
- lsl #2,d0
- move.l (a0,d0),a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLSYS RefreshGList
-
- cmpi.b #1,d7
- bne.s CheckReturn
- lea Gadg01,a0
- move.l Windowhd,a1
- moveq #88,d0
- CALLSYS RefreshGList
-
- CheckReturn cmpi.b #45,MD_GadgNo
- bne CheckMessage
- lea Gadg87,a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLSYS RefreshGList
- bra CheckMessage
-
- NewDeadIndex lea UseDead,a5 ; Get a new index for
- moveq #1,d0 ; deadkey
- NDIndLoop tst.b (a5,d0)
- beq.s GotNewIndex
- addq #1,d0
- cmpi.b #16,d0
- bne NDIndLoop
- addq.l #4,a7 ; None available
- bra CheckMessage
-
- GotNewIndex move.b #1,(a5,d0)
- move.b d0,MD_Index ; Store and return
- rts
-
- NormToDead lea DeadTab,a4 ; d4 holds index in DeadTab
- lea KeyDefs,a5 ; d5 = d4 ÷ 4
- move d4,d5 ; d6 holds qualifiers
- lsr #2,d5
-
- move.b 3(a5,d5),1(a4,d4) ; Store NOQUAL
- cmpi.b #KC_NOQUAL,d6 ; Is that all?
- beq.s ENtoD
-
- move.b 2(a5,d5),3(a4,d4)
- cmpi.b #KCF_SHIFT,d6
- beq.s ENtoD
- cmpi.b #KCF_ALT,d6
- beq.s ENtoD
- cmpi.b #KCF_CONTROL,d6
- beq.s ENtoD
-
- move.b 1(a5,d5),5(a4,d4)
- move.b (a5,d5),7(a4,d4)
- cmpi.b #KC_VANILLA,d6
- bne.s ENtoD
-
- move.l (a4,d4),8(a4,d4) ; Do VANILLA ctrl keys
- move.l 4(a4,d4),12(a4,d4)
- andi.b #%10011111,9(a4,d4)
- andi.b #%10011111,11(a4,d4)
- andi.b #%10011111,13(a4,d4)
- andi.b #%10011111,15(a4,d4)
-
- ENtoD clr.l (a5,d5) ; Clear old table
- bsr DeadToVan ; Sort out dead
- rts
-
- TurnDeadOff move MD_DTbPos,d2
- moveq #0,d7
- move.b 1(a4,d2),d7 ; Store deadkey index
- andi.b #$0f,d7
- clr (a4,d2) ; Clear out deadkey
-
- moveq #0,d6
- TurnDLoop cmpi.b #DPF_DEAD,(a4,d6) ; Is this dead index
- bne.s TNotDead ; used elsewhere?
- move.b 1(a4,d6),d5
- andi.b #$0f,d5
- cmp.b d5,d7
- beq.s TDeadUsed
- TNotDead addq #2,d6
- cmpi #768*2,d6
- bne TurnDLoop
-
- lea UseDead,a5
- clr.b (a5,d7) ; Clear out old index
-
- TDeadUsed lea KeyTypes,a3
- move d4,d3
- lsr #4,d3
- moveq #7,d0
-
- TDeadChLp move.b (a4,d4),d2
- cmpi.b #DPF_DEAD,d2
- beq DCheckNo
- cmpi.b #DPF_MOD,d2
- beq DCheckNo
- addq #2,d4
- dbeq d0,TDeadChLp
- move MD_DeadTab,d4
-
- bsr D_VanTest
- tst.b d0
- bne LoseSome
-
- DeadToNorm move d4,d5 ; This routine expects
- lsr #2,d5 ; as input a deadkey in
- lea KeyDefs,a5 ; (a4,d4) (Not KC_VANILLA)
- clr.l (a5,d5) ; which it compresses as
- andi.b #KC_VANILLA,(a3,d3) ; much as is possible
-
- cmpi.b #KC_NOQUAL,(a3,d3)
- beq DN_DZero
- cmpi.b #KCF_SHIFT,(a3,d3) ; What is the key size?
- beq DN_One
- cmpi.b #KCF_ALT,(a3,d3)
- beq DN_One
- cmpi.b #KCF_CONTROL,(a3,d3)
- beq DN_One
-
- tst.b 3(a4,d4)
- beq.s DN_TwoA
- tst.b 5(a4,d4)
- beq.s DN_TwoB
- move.b 3(a4,d4),d0
- move.b 1(a4,d4),d1
- cmp.b d0,d1
- beq.s DN_TwoC
- move.b 5(a4,d4),d0
- cmp.b d0,d1
- beq.s DN_TwoD
- bra DN_DTwo
-
- DN_TwoA tst.b 7(a4,d4)
- bne.s DN_DTwo
- move 4(a4,d4),2(a4,d4)
- bra.s DN_Two_Rem3
-
- DN_TwoB tst.b 7(a4,d4)
- bne.s DN_DTwo
- bra.s DN_Two_Rem5
-
- DN_TwoC move.b 7(a4,d4),d0
- move.b 5(a4,d4),d1
- cmp.b d0,d1
- bne.s DN_DTwo
- move 4(a4,d4),2(a4,d4)
- bra.s DN_Two_Rem3
-
- DN_TwoD move.b 7(a4,d4),d0
- move.b 3(a4,d4),d0
- cmp.b d0,d1
- bne.s DN_DTwo
- bra.s DN_Two_Rem5
-
- DN_Two_Rem3 cmpi.b #KCF_ALT+KCF_SHIFT,(a3,d3)
- beq.s DN_Two_R3a
- move.b #KCF_CONTROL,(a3,d3)
- bra.s DN_One
- DN_Two_R3a move.b #KCF_ALT,(a3,d3)
- bra.s DN_One
-
- DN_Two_Rem5 cmpi.b #KCF_ALT+KCF_CONTROL,(a3,d3)
- beq.s DN_Two_R5a
- move.b #KCF_SHIFT,(a3,d3)
- bra.s DN_One
- DN_Two_R5a move.b #KCF_ALT,(a3,d3)
-
- DN_One move.b 3(a4,d4),d1
- tst.b d1
- beq.s DN_OneA
- move.b 1(a4,d4),d0
- cmp.b d0,d1
- bne.s DN_DOne
- DN_OneA move.b #KC_NOQUAL,(a3,d3)
- bra.s DN_DZero
-
- DN_DTwo move.b 7(a4,d4),(a5,d5) ; Transfer from DeadTab
- move.b 5(a4,d4),1(a5,d5) ; to KeyDefs
- DN_DOne move.b 3(a4,d4),2(a5,d5)
- DN_DZero move.b 1(a4,d4),3(a5,d5)
-
- clr.l (a4,d4)
- clr.l 4(a4,d4)
- clr.l 8(a4,d4)
- clr.l 12(a4,d4)
-
- cmpi.b #KCF_SHIFT,(a3,d3)
- beq.s DoVanTest
- cmpi.b #KCF_ALT,(a3,d3)
- beq.s DoVanTest
- cmpi.b #KCF_SHIFT+KCF_ALT,(a3,d3)
- beq.s DoVanTest
- bra DCheckNo
-
- DoVanTest move.l Windowhd,a0 ; What should we do
- lea VanText,a1 ; about CTRL key?
- lea VanPos,a2
- move.l a3,-(sp) ; Save a3
- lea VanNeg,a3
- moveq #0,d0
- moveq #0,d1
- move #397,d2
- move d3,-(sp) ; Save d3
- moveq #62,d3
- CALLINT AutoRequest
- move (sp)+,d3
- move.l (sp)+,a3
- tst.l d0
- beq DCheckNo
- cmpi.b #KCF_SHIFT+KCF_ALT,(a3,d3)
- beq.s VanTest
- move 2(a5,d5),(a5,d5) ; Change type to VANILLA
- VanTest move.b #KC_VANILLA,(a3,d3)
- bra DCheckNo
-
- LoseSome bsr DoLoseReq
- tst.b d0 ; Should we abort?
- beq DLStop
-
- cmpi.b #1,d0 ; Now act on the users
- beq.s DL_S ; prompt in the requester
- cmpi.b #2,d0
- beq.s DL_A
- cmpi.b #3,d0
- beq.s DL_SA
- cmpi.b #4,d0
- beq.s DL_C
- cmpi.b #5,d0
- beq.s DL_SC
- cmpi.b #6,d0
- beq.s DL_AC
-
- move.b #KC_NOQUAL,(a3,d3)
- bra DeadToNorm
- DL_AC move.b #KCF_SHIFT,(a3,d3)
- bra DeadToNorm
- DL_SC move.b #KCF_ALT,(a3,d3)
- move 4(a4,d4),2(a4,d4)
- bra DeadToNorm
- DL_C move.b #KCF_SHIFT+KCF_ALT,(a3,d3)
- bra DeadToNorm
- DL_SA move.b #KCF_CONTROL,(a3,d3)
- move 8(a4,d4),2(a4,d4)
- bra DeadToNorm
- DL_A move.b #KCF_SHIFT+KCF_CONTROL,(a3,d3)
- move.l 8(a4,d4),4(a4,d4)
- bra DeadToNorm
- DL_S move.b #KCF_ALT+KCF_CONTROL,(a3,d3)
- move 4(a4,d4),2(a4,d4)
- move 8(a4,d4),4(a4,d4)
- move 12(a4,d4),6(a4,d4)
- bra DeadToNorm
-
- DLStop move MD_DTbPos,d2 ; Repair deadkey
- move.b #DPF_DEAD,(a4,d2)
- move.b d7,1(a4,d2)
- move.b #1,(a5,d7)
- lea DeadIDtoGadg,a0
- moveq #0,d0
- move.b MD_GadgNo,d0
- lsl #2,d0
- move.l (a0,d0),a0
- ori #SELECTED,gg_Flags(a0)
- bra DeadRedraw
-
- DoLoseReq lea LoseReq,a0
- move.l Windowhd,a1
- CALLINT Request
-
- DLMLoop move.l UserPort,a0 ; Wait for an Intuition
- CALLEXEC WaitPort ; message...
- DLChkMsg move.l UserPort,a0
- CALLEXEC GetMsg
- tst.l d0
- beq DLMLoop
- move.l d0,a1
- move.l im_Class(a1),d2
- move.l im_IAddress(a1),a2
- CALLSYS ReplyMsg
- cmpi.l #GADGETUP,d2
- beq.s DLGadgBit
- bra DLChkMsg
-
- DLGadgBit move gg_GadgetID(a2),d0 ; Which gadget was it?
- cmpi #4,d0
- beq.s DLReqOver1
- cmpi #5,d0
- beq DLReqOver2
-
- cmpi #GADGHCOMP!SELECTED!GADGIMAGE,LsGadg1+gg_Flags
- beq.s DLG_Fin
- cmpi #GADGHCOMP!SELECTED,LsGadg2+gg_Flags
- beq.s DLG_Fin
- cmpi #GADGHCOMP!SELECTED,LsGadg3+gg_Flags
- beq.s DLG_Fin
- lea LsGadg4,a0
- move.l Windowhd,a1
- lea LoseReq,a2
- move #GADGHCOMP!GADGIMAGE!GADGDISABLED,LsGadg4+gg_Flags
- bra.s DLG_Fin2
-
- DLG_Fin move #GADGHCOMP!GADGIMAGE,LsGadg4+gg_Flags
-
- DLG_Fin2 lea LsGadg4,a0
- move.l Windowhd,a1
- lea LoseReq,a2
- moveq #1,d0
- CALLINT RefreshGList
- bra DLChkMsg
-
- DLReqOver1 clr.b d0
- cmpi #GADGHCOMP!GADGIMAGE,LsGadg1+gg_Flags
- beq.s DLReq1
- addq.b #2,d0
- DLReq1 cmpi #GADGHCOMP,LsGadg2+gg_Flags
- beq.s DLReq2
- addq.b #4,d0
- DLReq2 cmpi #GADGHCOMP,LsGadg3+gg_Flags
- beq.s DLReq3
- addq.b #1,d0
- DLReq3 rts
-
- DLReqOver2 clr.b d0
- rts
-
- DCheckNo tst.b DeadNo ; Have we freed the
- beq DeadRedraw ; only available dead?
- clr.b DeadNo
- lea UseDead,a0
- cmpi.l #$00010101,(a0)
- bne.s DCheckPos
- cmpi.l #$01010101,4(a0)
- bne.s DCheckPos
- cmpi.l #$01010101,8(a0)
- bne.s DCheckPos
- cmpi.l #$01010101,12(a0)
- bne.s DCheckPos
- move.b #1,DeadNo
- bra DeadRedraw
-
- DCheckPos bsr GenerateKeys
- bra GGadge
-
- D_VanTest move.b 1(a4,d4),d0 ; Can we remove CTRL?
- move.b 9(a4,d4),d1
- tst.b d0
- beq.s D_VC1
- tst.b d1
- beq.s D_VC1
- cmp.b d0,d1
- bne.s D_VATest
- D_VC1 move.b 3(a4,d4),d0
- move.b 11(a4,d4),d1
- tst.b d0
- beq.s D_VC2
- tst.b d1
- beq.s D_VC2
- cmp.b d0,d1
- bne.s D_VATest
- D_VC2 move.b 5(a4,d4),d0
- move.b 13(a4,d4),d1
- tst.b d0
- beq.s D_VC3
- tst.b d1
- beq.s D_VC3
- cmp.b d0,d1
- bne.s D_VATest
- D_VC3 move.b 7(a4,d4),d0
- move.b 15(a4,d4),d1
- tst.b d0
- beq.s D_VC4
- tst.b d1
- beq.s D_VC4
- cmp.b d0,d1
- bne.s D_VATest
- D_VC4 tst.b 1(a4,d4)
- bne.s D_VC5
- move.b 9(a4,d4),1(a4,d4)
- D_VC5 tst.b 3(a4,d4)
- bne.s D_VC6
- move.b 11(a4,d4),3(a4,d4)
- D_VC6 tst.b 5(a4,d4)
- bne.s D_VC7
- move.b 13(a4,d4),5(a4,d4)
- D_VC7 tst.b 7(a4,d4)
- bne.s D_VC8
- move.b 15(a4,d4),7(a4,d4)
- D_VC8 move.b #KCF_SHIFT+KCF_ALT,(a3,d3)
- clr.b d0
- rts
-
- D_VATest move.b 5(a4,d4),d0 ; Can we remove ALT?
- move.b 1(a4,d4),d1
- tst.b d0
- beq.s D_VA1
- tst.b d1
- beq.s D_VA1
- cmp.b d0,d1
- bne D_VSTest
- D_VA1 move.b 7(a4,d4),d0
- move.b 3(a4,d4),d1
- tst.b d0
- beq.s D_VA2
- tst.b d1
- beq.s D_VA2
- cmp.b d0,d1
- bne.s D_VSTest
- D_VA2 move.b 13(a4,d4),d0
- move.b 9(a4,d4),d1
- tst.b d0
- beq.s D_VA3
- tst.b d1
- beq.s D_VA3
- cmp.b d0,d1
- bne.s D_VSTest
- D_VA3 move.b 15(a4,d4),d0
- move.b 11(a4,d4),d1
- tst.b d0
- beq.s D_VA4
- tst.b d1
- beq.s D_VA4
- cmp.b d0,d1
- bne.s D_VSTest
- D_VA4 tst.b 5(a4,d4)
- bne.s D_VA5
- move.b 5(a4,d4),1(a4,d4)
- D_VA5 tst.b 3(a4,d4)
- bne.s D_VA6
- move.b 7(a4,d4),3(a4,d4)
- D_VA6 tst.b 9(a4,d4)
- bne.s D_VA7
- move.b 13(a4,d4),9(a4,d4)
- D_VA7 move.b 9(a4,d4),5(a4,d4)
- tst.b 11(a4,d4)
- bne.s D_VA8
- move.b 15(a4,d4),11(a4,d4)
- D_VA8 move.b 11(a4,d4),7(a4,d4)
- move.b #KCF_SHIFT+KCF_CONTROL,(a3,d3)
- clr.b d0
- rts
-
- D_VSTest move.b 3(a4,d4),d0 ; Can we remove SHIFT?
- move.b 1(a4,d4),d1
- tst.b d0
- beq.s D_VS1
- tst.b d1
- beq.s D_VS1
- cmp.b d0,d1
- bne D_VEnd
- D_VS1 move.b 7(a4,d4),d0
- move.b 5(a4,d4),d1
- tst.b d0
- beq.s D_VS2
- tst.b d1
- beq.s D_VS2
- cmp.b d0,d1
- bne.s D_VEnd
- D_VS2 move.b 11(a4,d4),d0
- move.b 9(a4,d4),d1
- tst.b d0
- beq.s D_VS3
- tst.b d1
- beq.s D_VS3
- cmp.b d0,d1
- bne.s D_VEnd
- D_VS3 move.b 15(a4,d4),d0
- move.b 13(a4,d4),d1
- tst.b d0
- beq.s D_VS4
- tst.b d1
- beq.s D_VS4
- cmp.b d0,d1
- bne.s D_VEnd
- D_VS4 tst.b 3(a4,d4)
- bne.s D_VS5
- move.b 3(a4,d4),1(a4,d4)
- D_VS5 tst.b 5(a4,d4)
- bne.s D_VS6
- move.b 7(a4,d4),5(a4,d4)
- D_VS6 move.b 5(a4,d4),3(a4,d4)
- tst.b 9(a4,d4)
- bne.s D_VS7
- move.b 11(a4,d4),9(a4,d4)
- D_VS7 move.b 9(a4,d4),5(a4,d4)
- tst.b 13(a4,d4)
- bne.s D_VS8
- move.b 15(a4,d4),13(a4,d4)
- D_VS8 move.b 13(a4,d4),7(a4,d4)
- move.b #KCF_ALT+KCF_CONTROL,(a3,d3)
- clr.b d0
- rts
-
- D_VEnd move.b -1,d0
- rts
-
- DeadToVan move.b (a0,d0),d6 ; Expands deadkey to
- andi.b #KC_VANILLA,d6 ; KC_VANILLA. (a4,d4) holds
- cmpi.b #KC_NOQUAL,d6 ; key, (a0,d0) keytype
- beq DV_NQual
- cmpi.b #KCF_SHIFT,d6
- beq DV_S
- cmpi.b #KCF_ALT,d6
- beq DV_A
- cmpi.b #KCF_CONTROL,d6
- beq.s DV_C
- cmpi.b #KCF_SHIFT+KCF_ALT,d6
- beq.s DV_SA
- cmpi.b #KCF_SHIFT+KCF_CONTROL,d6
- beq.s DV_SC
- cmpi.b #KCF_CONTROL+KCF_ALT,d6
- bne DV_Final
-
- move 6(a4,d4),12(a4,d4)
- move 4(a4,d4),8(a4,d4)
- move 2(a4,d4),4(a4,d4)
- move (a4,d4),2(a4,d4)
- move 4(a4,d4),6(a4,d4)
- move 8(a4,d4),10(a4,d4)
- move 12(a4,d4),12(a4,d4)
- bra DV_Final
-
- DV_SC move.l 4(a4,d4),8(a4,d4)
- move.l (a4,d4),4(a4,d4)
- move.l 8(a4,d4),12(a4,d4)
- bra.s DV_Final
-
- DV_SA move.l (a4,d4),8(a4,d4)
- move.l 4(a4,d4),12(a4,d4)
- bra.s DV_Final
-
- DV_C move 2(a4,d4),8(a4,d4)
- move (a4,d4),2(a4,d4)
- move.l (a4,d4),4(a4,d4)
- move 8(a4,d4),10(a4,d4)
- move.l 8(a4,d4),12(a4,d4)
- bra.s DV_Final
-
- DV_A move 2(a4,d4),4(a4,d4)
- move (a4,d4),2(a4,d4)
- move 4(a4,d4),6(a4,d4)
- move.l (a4,d4),8(a4,d4)
- move.l 4(a4,d4),12(a4,d4)
- bra.s DV_Final
-
- DV_S move.l (a4,d4),4(a4,d4)
- move.l (a4,d4),8(a4,d4)
- move.l (a4,d4),12(a4,d4)
- bra.s DV_Final
-
- DV_NQual move (a4,d4),2(a4,d4)
- move.l (a4,d4),4(a4,d4)
- move.l (a4,d4),8(a4,d4)
- move.l (a4,d4),12(a4,d4)
-
- DV_Final move.b #KCF_DEAD+KC_VANILLA,(a0,d0)
- rts
-
- CancelString moveq #0,d0
- lea KeyTypes,a0
- lea KeysToMap,a1
- CStrLoop move.b (a0,d0),d1
- andi.b #KCF_STRING,d1
- tst.b d1
- bne.s CancelStr
- StrDone addq #1,d0
- cmpi.b #96,d0
- bne CStrLoop
- rts
-
- CancelStr move d0,d1
- lsl #2,d1
- move.l (a1,d1),a2
- cmpa.l #0,a2
- beq StrDone
- move #GADGHCOMP!GADGIMAGE!GADGDISABLED,gg_Flags(a2)
- bra StrDone
-
- NoOfDead moveq #0,d7 ; d7 holds returncode
- lea UseDead,a0
- cmpi.l #$00010101,(a0)
- bne.s NotAllDead
- cmpi.l #$01010101,4(a0)
- bne.s NotAllDead
- cmpi.l #$01010101,8(a0)
- bne.s NotAllDead
- cmpi.l #$01010101,12(a0)
- bne.s NotAllDead
-
- moveq #0,d0
- lea KeysToMap,a0
- NDeadLoop move.l (a0,d0),a1
- cmpa.l #0,a1
- beq.s NotCancelDead
-
- cmpi #GADGHCOMP!GADGIMAGE!SELECTED,gg_Flags(a1)
- beq.s NotCancelDead
- move #GADGHCOMP!GADGIMAGE!GADGDISABLED,gg_Flags(a1)
-
- NotCancelDead addq #4,d0
- cmpi #4*96,d0
- bne NDeadLoop
- move.b #1,d7
- move.b #1,DeadNo
- NotAllDead rts
-
- OnMod lea KeyTypes,a0
- lea CheckTab,a2
- lea MapToKeys,a3
- lea DeadTab,a4
-
- subq #1,d0
- move.b d0,MD_GadgNo
- moveq #0,d2
- moveq #0,d4
- move.b (a3,d0),d4
- move.b d4,MD_KeyType ; Store for later
-
- move.b (a0,d4),d3
- bsr CheckQual
- moveq #0,d2
- move.b (a2,d0),d2 ; Get offset into key
- lsl #4,d4
- move d4,MD_DeadTab ; Store for later
- add d4,d2 ; d2 hold key address
- move d2,MD_DTbPos
-
- andi.b #KCF_DEAD,d3 ; Is this a deadkey?
- beq.s MakeNewMod
-
- cmpi.b #DPF_MOD,(a4,d2) ; Is this key deadable?
- beq TurnModOff
-
- bsr NewModIndex ; This is a physical key
- bsr.s CommonMod ; deadkey already
- bra.s MakeOldMod
-
- CommonMod moveq #0,d4
- move.b MD_KeyType,d4
- move.b (a0,d4),d6
- andi.b #KC_VANILLA,d6
- move MD_DeadTab,d4
- move MD_DTbPos,d2
- rts
-
- MakeNewMod bsr CommonMod
- clr.l (a4,d4) ; Clear out deadkey
- clr.l 4(a4,d4)
- clr.l 8(a4,d4)
- clr.l 12(a4,d4)
-
- bsr.s NewModIndex
- moveq #0,d0
- move.b MD_KeyType,d0
- bsr NormToDead
-
- MakeOldMod lea DeadIndex,a0
- moveq #0,d0
- move.b MD_Index,d0
- lsl #4,d0
- move.b 1(a4,d2),(a0,d0) ; Start modkey
- move.b (a0,d0),1(a0,d0)
- move (a0,d0),2(a0,d0)
- move.l (a0,d0),4(a0,d0)
- move.l (a0,d0),8(a0,d0)
- move.l (a0,d0),12(a0,d0)
- move.b #DPF_MOD,(a4,d2) ; Create mod
- move.b MD_Index,1(a4,d2) ; Store its index
- bra ModRedraw ; Redraw affected key
-
- NewModIndex lea ModIndex,a5 ; Get a new index for
- moveq #0,d0 ; modkey
- NMIndLoop tst.b (a5,d0)
- beq GotNewIndex
- addq #1,d0
- cmpi #256,d0
- bne NMIndLoop
- addq.l #4,a7 ; None available
- bra CheckMessage
-
- TurnModOff move MD_DTbPos,d2
- moveq #0,d7
- move.b 1(a4,d2),d7 ; Store modkey index
- clr.b (a4,d2) ; Clear out modkey
-
- lea DeadIndex,a3
- moveq #0,d6
- move.b d7,d6
- lsl #4,d6
- move.b (a3,d6),1(a4,d2) ; Replace key value
-
- moveq #0,d6
- TurnMLoop cmpi.b #DPF_MOD,(a4,d6) ; Is this dead index
- bne.s TNotMod ; used elsewhere?
- move.b 1(a4,d6),d5
- cmp.b d5,d7
- beq.s TModUsed
- TNotMod addq #2,d6
- cmpi #768*2,d6
- bne TurnMLoop
-
- lea ModIndex,a5
- clr.b (a5,d7) ; Clear out old index
-
- TModUsed lea KeyTypes,a3
- move d4,d3
- lsr #4,d3
- moveq #7,d0
-
- TModChLp move.b (a4,d4),d2
- cmpi.b #DPF_DEAD,d2
- beq MCheckNo
- cmpi.b #DPF_MOD,d2
- beq MCheckNo
- addq #2,d4
- dbeq d0,TModChLp
- move MD_DeadTab,d4
-
- bsr D_VanTest
- tst.b d0
- bne M_LoseSome
-
- ModToNorm move d4,d5 ; This routine expects
- lsr #2,d5 ; as input a deadkey in
- lea KeyDefs,a5 ; (a4,d4) (Not KC_VANILLA)
- clr.l (a5,d5) ; which it compresses as
- andi.b #KC_VANILLA,(a3,d3) ; much as is possible
-
- cmpi.b #KC_NOQUAL,(a3,d3)
- beq MN_DZero
- cmpi.b #KCF_SHIFT,(a3,d3) ; What is the key size?
- beq MN_One
- cmpi.b #KCF_ALT,(a3,d3)
- beq MN_One
- cmpi.b #KCF_CONTROL,(a3,d3)
- beq MN_One
-
- tst.b 3(a4,d4)
- beq.s MN_TwoA
- tst.b 5(a4,d4)
- beq.s MN_TwoB
- move.b 3(a4,d4),d0
- move.b 1(a4,d4),d1
- cmp.b d0,d1
- beq.s MN_TwoC
- move.b 5(a4,d4),d0
- cmp.b d0,d1
- beq.s MN_TwoD
- bra MN_DTwo
-
- MN_TwoA tst.b 7(a4,d4)
- bne.s MN_DTwo
- move 4(a4,d4),2(a4,d4)
- bra.s MN_Two_Rem3
-
- MN_TwoB tst.b 7(a4,d4)
- bne.s MN_DTwo
- bra.s MN_Two_Rem5
-
- MN_TwoC move.b 7(a4,d4),d0
- move.b 5(a4,d4),d1
- cmp.b d0,d1
- bne.s MN_DTwo
- move 4(a4,d4),2(a4,d4)
- bra.s MN_Two_Rem3
-
- MN_TwoD move.b 7(a4,d4),d0
- move.b 3(a4,d4),d0
- cmp.b d0,d1
- bne.s MN_DTwo
- bra.s MN_Two_Rem5
-
- MN_Two_Rem3 cmpi.b #KCF_ALT+KCF_SHIFT,(a3,d3)
- beq.s MN_Two_R3a
- move.b #KCF_CONTROL,(a3,d3)
- bra.s MN_One
- MN_Two_R3a move.b #KCF_ALT,(a3,d3)
- bra.s MN_One
-
- MN_Two_Rem5 cmpi.b #KCF_ALT+KCF_CONTROL,(a3,d3)
- beq.s MN_Two_R5a
- move.b #KCF_SHIFT,(a3,d3)
- bra.s MN_One
- MN_Two_R5a move.b #KCF_ALT,(a3,d3)
-
- MN_One move.b 3(a4,d4),d1
- tst.b d1
- beq.s MN_OneA
- move.b 1(a4,d4),d0
- cmp.b d0,d1
- bne.s MN_DOne
- MN_OneA move.b #KC_NOQUAL,(a3,d3)
- bra.s MN_DZero
-
- MN_DTwo move.b 7(a4,d4),(a5,d5) ; Transfer from DeadTab
- move.b 5(a4,d4),1(a5,d5) ; to KeyDefs
- MN_DOne move.b 3(a4,d4),2(a5,d5)
- MN_DZero move.b 1(a4,d4),3(a5,d5)
-
- clr.l (a4,d4)
- clr.l 4(a4,d4)
- clr.l 8(a4,d4)
- clr.l 12(a4,d4)
-
- cmpi.b #KCF_SHIFT,(a3,d3)
- beq.s M_DoVanTest
- cmpi.b #KCF_ALT,(a3,d3)
- beq.s M_DoVanTest
- cmpi.b #KCF_SHIFT+KCF_ALT,(a3,d3)
- beq.s M_DoVanTest
- bra MCheckNo
-
- M_DoVanTest move.l Windowhd,a0 ; What should we do
- lea VanText,a1 ; about CTRL key?
- lea VanPos,a2
- move.l a3,-(sp) ; Save a3
- lea VanNeg,a3
- moveq #0,d0
- moveq #0,d1
- move #397,d2
- move d3,-(sp) ; Save d3
- moveq #62,d3
- CALLINT AutoRequest
- move (sp)+,d3
- move.l (sp)+,a3
- tst.l d0
- beq MCheckNo
- cmpi.b #KCF_SHIFT+KCF_ALT,(a3,d3)
- beq.s M_VanTest
- move 2(a5,d5),(a5,d5) ; Change type to VANILLA
- M_VanTest move.b #KC_VANILLA,(a3,d3)
- bra MCheckNo
-
- M_LoseSome bsr DoLoseReq
- tst.b d0 ; Should we abort?
- beq MLStop
-
- cmpi.b #1,d0 ; Now act on the users
- beq.s ML_S ; prompt in the requester
- cmpi.b #2,d0
- beq.s ML_A
- cmpi.b #3,d0
- beq.s ML_SA
- cmpi.b #4,d0
- beq.s ML_C
- cmpi.b #5,d0
- beq.s ML_SC
- cmpi.b #6,d0
- beq.s ML_AC
-
- move.b #KC_NOQUAL,(a3,d3)
- bra ModToNorm
- ML_AC move.b #KCF_SHIFT,(a3,d3)
- bra ModToNorm
- ML_SC move.b #KCF_ALT,(a3,d3)
- move 4(a4,d4),2(a4,d4)
- bra ModToNorm
- ML_C move.b #KCF_SHIFT+KCF_ALT,(a3,d3)
- bra ModToNorm
- ML_SA move.b #KCF_CONTROL,(a3,d3)
- move 8(a4,d4),2(a4,d4)
- bra ModToNorm
- ML_A move.b #KCF_SHIFT+KCF_CONTROL,(a3,d3)
- move.l 8(a4,d4),4(a4,d4)
- bra ModToNorm
- ML_S move.b #KCF_ALT+KCF_CONTROL,(a3,d3)
- move 4(a4,d4),2(a4,d4)
- move 8(a4,d4),4(a4,d4)
- move 12(a4,d4),6(a4,d4)
- bra ModToNorm
-
- MLStop move MD_DTbPos,d2 ; Repair deadkey
- move.b #DPF_MOD,(a4,d2)
- move.b d7,1(a4,d2)
- move.b #1,(a5,d7)
- lea DeadIDtoGadg,a0
- moveq #0,d0
- move.b MD_GadgNo,d0
- lsl #2,d0
- move.l (a0,d0),a0
- ori #SELECTED,gg_Flags(a0)
- bra.s ModRedraw
-
- MCheckNo tst.b ModNo ; Have we freed the
- beq.s ModRedraw ; only available mod?
- clr.b ModNo
-
- lea ModIndex,a0
- moveq #0,d0
- MC_Loop cmpi.b #1,(a0,d0)
- bne.s MCheckPos
- addq #1,d0
- cmpi #256,d0
- bne MC_Loop
- move.b #1,ModNo
- bra.s ModRedraw
-
- MCheckPos bsr GenerateKeys
- bra GGadgd
-
- ModRedraw move.l Windowhd,a0 ; Redraw affected key
- lea StrGadg,a1
- moveq #89,d0
- CALLINT RemoveGList
- bsr GenerateKeys
- bsr.s NoOfMod
- move.l Windowhd,a0
- lea StrGadg,a1
- moveq #5,d0
- moveq #89,d1
- CALLINT AddGList
-
- lea DeadIDtoGadg,a0
- moveq #0,d0
- move.b MD_GadgNo,d0
- lsl #2,d0
- move.l (a0,d0),a0
- move.l Windowhd,a1
- moveq #1,d0
- CALLSYS RefreshGList
-
- cmpi.b #1,d7
- bne CheckReturn
- lea Gadg01,a0
- move.l Windowhd,a1
- moveq #88,d0
- CALLSYS RefreshGList
- bra CheckReturn
-
- NoOfMod moveq #0,d7 ; d7 holds returncode
- lea ModIndex,a0
- moveq #0,d0
- NoOfMod_1 cmpi.b #1,(a0,d0)
- bne NotAllDead
- addq #1,d0
- cmpi #256,d0
- bne NoOfMod_1
-
- moveq #0,d0
- lea KeysToMap,a0
- NModLoop move.l (a0,d0),a1
- cmpa.l #0,a1
- beq.s NotCancelMod
-
- cmpi #GADGHCOMP!GADGIMAGE!SELECTED,gg_Flags(a1)
- beq.s NotCancelMod
- move #GADGHCOMP!GADGIMAGE!GADGDISABLED,gg_Flags(a1)
-
- NotCancelMod addq #4,d0
- cmpi #4*96,d0
- bne NModLoop
- move.b #1,d7
- move.b #1,ModNo
- rts
-
- ChangeKString bsr CheckQual ; Should we alter the
- cmp.b MyDefQual,d0 ; key in the small square?
- bne.s ChangeKOver
-
- move MyNewKey,d7
- tst d7
- beq.s ChangeKOver
- bra KeyInString
- ChangeKOver rts
-
- ReqStart cmpi.b #1,MyMode
- bne CheckMessage
- move.l DeadTxt,DDeadTxt
- move.l DeadTxt+4,DDeadTxt+4
- move.b CurrDKey,DCurrDKey
- bra.s DMChkMsg
-
- DMLoop move.l UserPort,a0 ; Wait for an Intuition
- CALLEXEC WaitPort ; message...
- DMChkMsg move.l UserPort,a0
- CALLEXEC GetMsg
- tst.l d0
- beq DMLoop
- move.l d0,a1
- move.l im_Class(a1),d2
- move im_Code(a1),d3
- move im_Qualifier(a1),d4
- move.l im_IAddress(a1),a2
- CALLSYS ReplyMsg
- cmpi.l #RAWKEY,d2
- beq DMKey
- cmpi.l #GADGETUP,d2
- beq.s DMGadg
- bra DMChkMsg
-
- DMGadg cmpi #1,gg_GadgetID(a2)
- beq.s DMEndIt
- cmpi #2,gg_GadgetID(a2)
- beq.s DMQuit
- cmpi #3,gg_GadgetID(a2)
- beq.s DMClear
- bra DMChkMsg
-
- DMEndIt move.l DDeadTxt,DeadTxt
- move.l DDeadTxt+4,DeadTxt+4
- move.b DCurrDKey,CurrDKey
-
- DMQuit move.l DeadTxt,DblGTxt4
- move.l DeadTxt+4,DblGTxt4+4
- move.l LastQualVal,d0
- move.l LastGadgVal,d7
- cmpi.l #-1,d7
- bne.s DMDoSKey
- bsr KI_NoKey
- bra CheckMessage
- DMDoSKey bsr KeyInString2
- bra CheckMessage
-
- DMClear move.l #$20202020,DblGTxt4
- move.l #$20202000,DblGTxt4+4
- lea DblGadg4,a0
- move.l Windowhd,a1
- lea DoubleReq,a2
- moveq #1,d0
- CALLINT RefreshGList
-
- clr.b DCurrDKey
- move.l #$20202020,DDeadTxt
- move.l #$20202000,DDeadTxt+4
- bra DMChkMsg
-
- DMKey cmpi.b #$60,d3
- bcc DMChkMsg
-
- move.l #$2020202d,DblGTxt4
- move.l #$20202000,DblGTxt4+4
-
- lea KeyTypes,a0
- move.b (a0,d3),d0 ; Is key KCF_DEAD?
- andi.b #KCF_DEAD,d0
- beq DMNotDead
-
- moveq #0,d0 ; Analyse qualifiers
- moveq #0,d7
- move.b d4,d0
- andi.b #IEQUALIFIER_LSHIFT,d0
- beq.s DMKey2
- bsr DMShift
- DMKey2 move.b d4,d0
- andi.b #IEQUALIFIER_RSHIFT,d0
- beq.s DMKey3
- bsr DMShift
- DMKey3 move.b d4,d0
- andi.b #IEQUALIFIER_CONTROL,d0
- beq.s DMKey4
- bsr DMControl
- DMKey4 move.b d4,d0
- andi.b #IEQUALIFIER_LALT,d0
- beq.s DMKey5
- bsr DMAlt
- DMKey5 move.b d4,d0
- andi.b #IEQUALIFIER_RALT,d0
- beq.s DMKey6
- bsr DMAlt
-
- DMKey6 lea KeyTab1,a0 ; Analyse key - is it
- moveq #0,d0 ; a special one?
- DMKLoop1 cmp.b (a0,d0),d3
- beq.s DMGotOne
- addq #1,d0
- cmpi.b #KeyTab1End-KeyTab1,d0
- bne DMKLoop1
-
- moveq #0,d0 ; Process normal key
- move.b d3,d0
- lsl #4,d0
- move d0,d1
- addi #16,d1
- lea DeadTab,a0
- DMKLoop2 tst.b (a0,d0)
- beq.s DMGotDef
- cmpi.b #DPF_MOD,(a0,d0)
- beq.s DMGotDef2
- addq #2,d0
- cmp d0,d1
- bne DMKLoop2
- move.b #" ",DblGTxt4+4
- bra.s DMAllProc
-
- DMGotDef move.b 1(a0,d0),DblGTxt4+4
- bra.s DMAllProc
-
- DMGotDef2 moveq #0,d1
- move.b 1(a0,d0),d1
- lsl #4,d1
- lea DeadIndex,a1
- move.b (a1,d1),DblGTxt4+4
- bra.s DMAllProc
-
- DMGotOne mulu #3,d0 ; Get text for key
- lea KeyTab2,a0
- move.b (a0,d0),DblGTxt4+4
- move.b 1(a0,d0),DblGTxt4+5
- move.b 2(a0,d0),DblGTxt4+6
-
- DMAllProc moveq #0,d0 ; Search for deadkey
- move.b d3,d0
- lsl #4,d0
- add d7,d0
- lea DeadTab,a0
- cmpi.b #DPF_DEAD,(a0,d0)
- bne DMNotDead
-
- DMGotDead move.b 1(a0,d0),DCurrDKey
- andi.b #$0f,DCurrDKey
- cmpi.b #" ",DblGTxt4+2
- bne.s DMG_1
- bsr.s DM_Tract2
- bra DMGotDead
- DMG_1 cmpi.b #" ",DblGTxt4+1
- bne.s DMG_2
- bsr.s DM_Tract1
- bra DMG_1
- DMG_2 cmpi.b #" ",DblGTxt4
- bne.s DM_TDone
- bsr.s DM_Tract
- bra DMG_2
-
- DM_TDone cmpi.b #"-",DblGTxt4
- bne.s DM_T2
- bsr.s DM_Tract
-
- DM_T2 lea DblGadg4,a0
- move.l Windowhd,a1
- lea DoubleReq,a2
- moveq #1,d0
- CALLINT RefreshGList
-
- move.l DblGTxt4,DDeadTxt ; Store new key
- move.l DblGTxt4+4,DDeadTxt+4
- bra DMChkMsg
-
- DM_Tract move.b DblGTxt4+1,DblGTxt4
- DM_Tract1 move.b DblGTxt4+2,DblGTxt4+1
- DM_Tract2 move.b DblGTxt4+3,DblGTxt4+2
- move.b DblGTxt4+4,DblGTxt4+3
- move.b DblGTxt4+5,DblGTxt4+4
- move.b DblGTxt4+6,DblGTxt4+5
- move.b #" ",DblGTxt4+6
- rts
-
- DMShift move.b #"S",DblGTxt4
- ori #2,d7
- rts
- DMAlt move.b #"A",DblGTxt4+1
- ori #4,d7
- rts
- DMControl move.b #"C",DblGTxt4+2
- ori #8,d7
- rts
-
- DMNotDead suba.l a0,a0
- CALLINT DisplayBeep
- bra DMChkMsg
-
- CopyToSave lea PathName,a0 ; Store a pathname we
- lea SavePath,a1 ; might need later...
- CopyLoop move.l (a0)+,(a1)+
- cmpa.l #PathName+72,a0
- bne CopyLoop
- rts
-
- Sisters tst.b SisTst
- beq.s SisGo
- rts
-
- SisGo move.b #1,SisTst
- move.l Windowhd,a0
- lea SoM1,a1
- suba.l a2,a2
- lea LucText,a3
- moveq #0,d0
- moveq #0,d1
- move #386,d2
- move #90,d3
- CALLINT AutoRequest
- rts
-
- StrComp moveq #0,d0 ; Compare two strings in a
- moveq #0,d1 ; case sensitive way
- StrCLoop move.b (a0,d0),d2 ; a0 & a1 hold strings...
- cmp.b (a1,d1),d2
- bne.s StrNeg
- tst.b d2
- beq.s StrPos
- addq #1,d0
- addq #1,d1
- bra StrCLoop
- StrPos moveq #0,d0
- rts
- StrNeg moveq #1,d0
- rts
-
- CSIon lea CSIGadg,a0
- move.l Windowhd,a1
- suba.l a2,a2
- CALLINT OnGadget
- rts
-
- CSIoff lea CSIGadg,a0
- move.l Windowhd,a1
- suba.l a2,a2
- CALLINT OffGadget
- rts
-
- _TackOn moveq #0,d0
- moveq #0,d1
- tst.b (a0)
- beq.s .copy
- .loop tst.b (a0,d0)
- beq.s .out
- addq #1,d0
- bra .loop
- .out cmpi.b #":",-1(a0,d0)
- beq.s .copy
- cmpi.b #"/",-1(a0,d0)
- beq.s .copy
- move.b #"/",(a0,d0)
- addq #1,d0
-
- .copy move.b (a1,d1),(a0,d0)
- beq.s .over
- addq #1,d0
- addq #1,d1
- bra .copy
- .over rts
-
- _GADS tst.b OS2
- bne.s .new
- lea Par_Help,a1
- lea Par_Arry,a2
- lea Par_Temp,a3
- CALLDOS GADS
- move.l d0,d7
- rts
-
- .new move.l #Par_Temp,d1
- move.l #Par_Arry,d2
- move.l #OS2Args,d3
- CALLDOS ReadArgs
- CALLSYS IoErr
- move.l d0,d7
- bne.s .errover
-
- move.l Par_Arry,a0
- cmpa.l #0,a0
- beq.s .noover
- tst.b (a0)
- beq.s .noover
- moveq #1,d7
- bra.s .over
-
- .errover neg.l d7
- bra.s .over
- .noover moveq #0,d7
- .over move.l #OS2Args,d1
- CALLSYS FreeArgs
- rts
-
- section Data,data
-
- OS2Args dc.l 0,0,0,0,0,0,Par_Help,0
-
- MainWindow dc.w 0,0,592,128
- dc.b 0,1
- dc.l MENUPICK!GADGETDOWN!GADGETUP!REQSET!RAWKEY!CLOSEWINDOW
- dc.l WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE
- dc.l 0,0,MainWindowText,0,0
- dc.w 0,0,0,0,WBENCHSCREEN
- MainWindowText dc.b "EditKeys v1.2 «"
- ModWindText dc.b "»",0,0,0,0,0,0,0
- EndWindText dc.b 0,0
-
- Gadg0a dc.l Gadg0b
- dc.w 31,95,90,11
- dc.w GADGHCOMP!GADGIMAGE!SELECTED,GADGIMMEDIATE,BOOLGADGET
- dc.l Imagea,0,0,0,0
- dc.w -1
- dc.l 0
-
- Gadg0b dc.l Gadg0c
- dc.w 141,95,90,11
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Imageb,0,0,0,0
- dc.w -2
- dc.l 0
-
- Gadg0c dc.l Gadg0d
- dc.w 251,95,90,11
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Imagec,0,0,0,0
- dc.w -3
- dc.l 0
-
- Gadg0d dc.l Gadg0e
- dc.w 361,95,90,11
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Imaged,0,0,0,0
- dc.w -4
- dc.l 0
-
- Gadg0e dc.l StrGadg
- dc.w 471,95,90,11
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Imagee,0,0,0,0
- dc.w -5
- dc.l 0
-
- StrGadg dc.l Gadg01
- dc.w 192,113,248,8
- dc.w GADGHCOMP!GADGDISABLED,RELVERIFY
- dc.w STRGADGET
- dc.l 0,0,0,0,SpecialInfo
- dc.w 0
- dc.l 0
-
- StrBord1 dc.w 188,111
- dc.b 1,0,0,6
- dc.l StrAry1,StrBord2
- StrAry1 dc.w 0,11,0,0,254,0,254,11,1,11,1,0
-
- StrBord2 dc.w 188,111
- dc.b 1,0,0,2
- dc.l StrAry2,0
- StrAry2 dc.w 255,0,255,11
-
- SpecialInfo dc.l StringBuf,0
- dc.w 0,32,0,0,0,0,0,0
- dc.l 0
- dc.l 0,0
-
- GadgMac MACRO ; This gadget, next gadget,
- Gadg\1 dc.l Gadg\2 ; x pos, y pos, image
- dc.w \3,\4,24,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l \5,0,0,0,0
- dc.w \1
- dc.l 0
- ENDM
-
- GadgMac 01,02,12,16,Image01
-
- Gadg02 dc.l Gadg03
- dc.w 44,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If1,0,0,0,0
- dc.w 2
- dc.l 0
-
- Gadg03 dc.l Gadg04
- dc.w 76,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If2,0,0,0,0
- dc.w 3
- dc.l 0
-
- Gadg04 dc.l Gadg05
- dc.w 108,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If3,0,0,0,0
- dc.w 4
- dc.l 0
-
- Gadg05 dc.l Gadg06
- dc.w 140,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If4,0,0,0,0
- dc.w 5
- dc.l 0
-
- Gadg06 dc.l Gadg07
- dc.w 172,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If5,0,0,0,0
- dc.w 6
- dc.l 0
-
- Gadg07 dc.l Gadg08
- dc.w 211,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If6,0,0,0,0
- dc.w 7
- dc.l 0
-
- Gadg08 dc.l Gadg09
- dc.w 243,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If7,0,0,0,0
- dc.w 8
- dc.l 0
-
- Gadg09 dc.l Gadg10
- dc.w 275,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If8,0,0,0,0
- dc.w 9
- dc.l 0
-
- Gadg10 dc.l Gadg11
- dc.w 307,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If9,0,0,0,0
- dc.w 10
- dc.l 0
-
- Gadg11 dc.l Gadg12
- dc.w 339,16,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l If0,0,0,0,0
- dc.w 11
- dc.l 0
-
- Gadg12 dc.l Gadg13
- dc.w 12,31,31,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Itl,0,0,0,0
- dc.w 12
- dc.l 0
-
- GadgMac 13,14,44,31,A20
- GadgMac 14,15,69,31,A20
- GadgMac 15,16,94,31,A20
- GadgMac 16,17,119,31,A20
- GadgMac 17,18,144,31,A20
- GadgMac 18,19,169,31,A20
- GadgMac 19,20,194,31,A20
- GadgMac 20,21,219,31,A20
- GadgMac 21,22,244,31,A20
- GadgMac 22,23,269,31,A20
- GadgMac 23,24,294,31,A20
- GadgMac 24,25,319,31,A20
- GadgMac 25,26,344,31,A20
- GadgMac 26,27,369,31,Image02
-
- Gadg27 dc.l Gadg28
- dc.w 406,31,30,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Image03,0,0,0,0
- dc.w 27
- dc.l 0
-
- Gadg28 dc.l Gadg29
- dc.w 437,31,30,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Image04,0,0,0,0
- dc.w 28
- dc.l 0
-
- GadgMac 29,30,481,31,A20
- GadgMac 30,31,506,31,A20
- GadgMac 31,32,531,31,A20
- GadgMac 32,33,556,31,A20
-
- Gadg33 dc.l Gadg34
- dc.w 12,42,44,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Image05,0,0,0,0
- dc.w 33
- dc.l 0
-
- GadgMac 34,35,57,42,A20
- GadgMac 35,36,82,42,A20
- GadgMac 36,37,107,42,A20
- GadgMac 37,38,132,42,A20
- GadgMac 38,39,157,42,A20
- GadgMac 39,40,182,42,A20
- GadgMac 40,41,207,42,A20
- GadgMac 41,42,232,42,A20
- GadgMac 42,43,257,42,A20
- GadgMac 43,44,282,42,A20
- GadgMac 44,45,307,42,A20
- GadgMac 45,47,332,42,A20
- GadgMac 47,48,481,42,A20
- GadgMac 48,49,506,42,A20
- GadgMac 49,50,531,42,A20
- GadgMac 50,51,556,42,A20
- GadgMac 51,52,64,53,A20
- GadgMac 52,53,89,53,A20
- GadgMac 53,54,114,53,A20
- GadgMac 54,55,139,53,A20
- GadgMac 55,56,164,53,A20
- GadgMac 56,57,189,53,A20
- GadgMac 57,58,214,53,A20
- GadgMac 58,59,239,53,A20
- GadgMac 59,60,264,53,A20
- GadgMac 60,61,289,53,A20
- GadgMac 61,87,314,53,A20
- GadgMac 87,46,339,53,A20
-
- Gadg46 dc.l Gadg62
- dc.w 357,42,36,21
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE!BOOLEXTEND,BOOLGADGET
- dc.l Image07,0,0,0,Spec46
- dc.w 46
- dc.l 0
-
- Spec46 dc.w BOOLMASK
- dc.l Mask46,0
-
- GadgMac 62,63,425,53,Image08
- GadgMac 63,64,481,53,A20
- GadgMac 64,65,506,53,A20
- GadgMac 65,66,531,53,A20
- GadgMac 66,88,556,53,A20
- GadgMac 88,67,53,64,A20
- GadgMac 67,68,78,64,A20
- GadgMac 68,69,103,64,A20
- GadgMac 69,70,128,64,A20
- GadgMac 70,71,153,64,A20
- GadgMac 71,72,178,64,A20
- GadgMac 72,73,203,64,A20
- GadgMac 73,74,228,64,A20
- GadgMac 74,75,253,64,A20
- GadgMac 75,76,278,64,A20
- GadgMac 76,77,303,64,A20
- GadgMac 77,78,400,64,Image02
- GadgMac 78,79,425,64,Image10
- GadgMac 79,80,450,64,Image11
- GadgMac 80,81,481,64,A20
- GadgMac 81,82,506,64,A20
- GadgMac 82,83,531,64,A20
-
- Gadg83 dc.l Gadg84
- dc.w 89,75,225,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Isp,0,0,0,0
- dc.w 83
- dc.l 0
-
- Gadg84 dc.l Gadg85
- dc.w 481,75,49,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Im0,0,0,0,0
- dc.w 84
- dc.l 0
-
- GadgMac 85,86,531,75,A20
-
- Gadg86 dc.l Gadg89
- dc.w 556,64,24,21
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE,BOOLGADGET
- dc.l Image13,0,0,0,0
- dc.w 86
- dc.l 0
-
- Gadg89 dc.l Gadg90
- dc.w 12,53,27,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE!TOGGLESELECT
- dc.w BOOLGADGET
- dc.l Image06,0,0,0,0
- dc.w 89
- dc.l 0
-
- Gadg90 dc.l Gadg91
- dc.w 12,64,40,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE!TOGGLESELECT
- dc.w BOOLGADGET
- dc.l Ish,0,0,0,0
- dc.w 90
- dc.l 0
-
- Gadg91 dc.l Gadg92
- dc.w 328,64,65,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE!TOGGLESELECT
- dc.w BOOLGADGET
- dc.l Image09,0,0,0,0
- dc.w 91
- dc.l 0
-
- Gadg92 dc.l Gadg93
- dc.w 31,75,27,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE!TOGGLESELECT
- dc.w BOOLGADGET
- dc.l Image12,0,0,0,0
- dc.w 92
- dc.l 0
-
- Gadg93 dc.l CSIGadg
- dc.w 344,75,27,10
- dc.w GADGHCOMP!GADGIMAGE,GADGIMMEDIATE!TOGGLESELECT
- dc.w BOOLGADGET
- dc.l Image12,0,0,0,0
- dc.w 93
- dc.l 0
-
- CSIGadg dc.l 0
- dc.w 452,112,48,10
- dc.w GADGHCOMP!GADGIMAGE!GADGDISABLED,RELVERIFY,BOOLGADGET
- dc.l CSI,0,0,0,0
- dc.w 94
- dc.l 0
-
- SqrText dc.b 1,0,1
- dc.w 168,113
- dc.l NormText,SqrTxt,DeadText
- SqrTxt dc.b " ",0
-
- DeadText dc.b 1,0,1
- dc.w 96,113
- dc.l NormText,DeadTxt,0
- DeadTxt dc.b " ",0
- even
- DDeadTxt dc.b " ",0
- even
-
- SqrBord1 dc.w 162,111
- dc.b 1,0,0,6
- dc.l SqrAry1,SqrBord2
- SqrAry1 dc.w 0,11,0,0,18,0,18,11,1,11,1,0
-
- SqrBord2 dc.w 162,111
- dc.b 1,0,0,2
- dc.l SqrAry2,SqrBord3
- SqrAry2 dc.w 19,0,19,11
-
- SqrBord3 dc.w 91,111
- dc.b 1,0,0,6
- dc.l SqrAry3,SqrBord4
- SqrAry3 dc.w 0,11,0,0,64,0,64,11,1,11,1,0
-
- SqrBord4 dc.w 91,111
- dc.b 1,0,0,2
- dc.l SqrAry4,StrBord1
- SqrAry4 dc.w 63,1,63,11
-
- MyBord1 dc.w 64,53
- dc.b 2,1,0,2
- dc.l MyKeyAry1,MyBord2
- MyKeyAry1 dc.w -25,10,-2,10
-
- MyBord2 dc.w 64,53
- dc.b 3,1,0,4
- dc.l MyKeyAry2,MyBord3
- MyKeyAry2 dc.w -8,1,-5,1,-5,2,-8,2
-
- MyBord3 dc.w 58,85
- dc.b 2,1,0,2
- dc.l MyKeyAry3,SqrBord1
- MyKeyAry3 dc.w 0,0,286,0
-
- MoreText dc.b 0,1,0
- dc.w 62,76
- dc.l ItalFont,MoreTxt,0
- MoreTxt dc.b "A",0
-
- ItalFont dc.l NormFont
- dc.w 8
- dc.b FSF_BOLD!FSF_ITALIC,0
- even
-
- IconWindow dc.w 0,0,80,23
- dc.b 0,1
- dc.l GADGETUP
- dc.l WINDOWDRAG!WINDOWDEPTH
- dc.l IconGadget,0,0,0,0
- dc.w 0,0,0,0,WBENCHSCREEN
-
- IconGadget dc.l 0
- dc.w 2,10,76,12
- dc.w GADGHCOMP,RELVERIFY,BOOLGADGET
- dc.l 0,0,IcnGdgtTxt,0,0
- dc.w 1
- dc.l 0
- IcnGdgtTxt dc.b 1,0,0,0
- dc.w 6,2
- dc.l NormText,IcnGdgtText,0
- IcnGdgtText dc.b "EditKeys",0
- even
-
- ProjectMenu dc.l 0
- dc.w 8,0,84,0,MENUENABLED
- dc.l ProjectName
- dc.l New
- dc.w 0,0,0,0
- ProjectName dc.b "Project",0
- even
-
- New dc.l Open
- dc.w 0,0,80+COMMWIDTH,10
- dc.w HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ
- dc.l 0,NewName,0
- dc.b "N",0
- dc.l 0
- dc.w 0
- NewName dc.b 2,1,0,0
- dc.w 3,1
- dc.l NormText,NewText,0
- NewText dc.b "New",0
- even
-
- Open dc.l Save
- dc.w 0,10,80+COMMWIDTH,10
- dc.w HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ
- dc.l 0,OpenName,0
- dc.b "L",0
- dc.l 0
- dc.w 0
- OpenName dc.b 2,1,0,0
- dc.w 3,1
- dc.l NormText,OpenText,0
- OpenText dc.b "Load",0
- even
-
- Save dc.l SaveAs
- dc.w 0,20,80+COMMWIDTH,10
- dc.w HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ
- dc.l 0,SaveName,0
- dc.b "S",0
- dc.l 0
- dc.w 0
- SaveName dc.b 2,1,0,0
- dc.w 3,1
- dc.l NormText,SaveText,0
- SaveText dc.b "Save",0
- even
-
- SaveAs dc.l About
- dc.w 0,30,80+COMMWIDTH,10
- dc.w HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ
- dc.l 0,SaveAsName,0
- dc.b "A",0
- dc.l 0
- dc.w 0
- SaveAsName dc.b 2,1,0,0
- dc.w 3,1
- dc.l NormText,SaveAsText,0
- SaveAsText dc.b "Save As",0
- even
-
- About dc.l Iconify
- dc.w 0,40,80+COMMWIDTH,10
- dc.w HIGHNONE!ITEMENABLED!ITEMTEXT
- dc.l 0,AboutName,0
- dc.b 0,0
- dc.l AboutSub
- dc.w 0
- AboutName dc.b 2,1,0,0
- dc.w 3,1
- dc.l NormText,AboutText,0
- AboutText dc.b "About",0
- even
-
- Iconify dc.l Quit
- dc.w 0,50,80+COMMWIDTH,10
- dc.w HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ
- dc.l 0,IconifyName,0
- dc.b "E",0
- dc.l 0
- dc.w 0
- IconifyName dc.b 2,1,0,0
- dc.w 3,1
- dc.l NormText,IconifyText,0
- IconifyText dc.b "Sleep",0
- even
-
- Quit dc.l 0
- dc.w 0,60,80+COMMWIDTH,10
- dc.w HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ
- dc.l 0,QuitName,0
- dc.b "Q",0
- dc.l 0
- dc.w 0
- QuitName dc.b 2,1,0,0
- dc.w 3,1
- dc.l NormText,QuitText,0
- QuitText dc.b "Quit",0
- even
-
- AboutSub dc.l AboutSub2
- dc.w 101,-8,305,50
- dc.w HIGHNONE!ITEMENABLED
- dc.l 0,Logo,0
- dc.b 0,0
- dc.l 0
- dc.w 0
-
- AboutSub2 dc.l 0
- dc.w 101,42,305,36
- dc.w HIGHNONE!ITEMENABLED!ITEMTEXT
- dc.l 0,AbtSubNme1,0
- dc.b 0,0
- dc.l 0
- dc.w 0
-
- AbtSubNme1 dc.b 0,1,0,0
- dc.w 29,2
- dc.l NormText,AbtSubTxt1,AbtSubNme2
- AbtSubTxt1 dc.b "Copyright (c) 1991 David Kinder",0
- even
-
- AbtSubNme2 dc.b 0,1,0,0
- dc.w 5,15
- dc.l NormText,AbtSubTxt2,AbtSubNme3
- AbtSubTxt2 dc.b 34,"And a thousand thousand slimy things",0
- even
-
- AbtSubNme3 dc.b 0,1,0,0
- dc.w 13,24
- dc.l NormText,AbtSubTxt3,0
- AbtSubTxt3 dc.b "Lived on; and so did I.",34,0
- even
-
- NormText dc.l NormFont
- dc.w 8
- dc.b 0,0
- NormFont dc.b "topaz.font",0
- even
-
- ReqText dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,ReqTxt,0
- ReqTxt dc.b "Do you really want to quit?",0
- even
-
- NSavText dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,NSavTxt,0
- NSavTxt dc.b "Not enough memory for save buffer!",0
- even
-
- MNewText dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,MNewTxt,0
- MNewTxt dc.b "The current keymap will be lost. Are you sure?",0
- even
-
- LReqText dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,LReqTxt,0
- LReqTxt dc.b "Yes",0
- even
-
- RReqText dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,RReqTxt,0
- RReqTxt dc.b "No",0
- even
-
- DoubleReq dc.l 0
- dc.w 133,15,326,71,0,0
- dc.l DblGadg1,DblBord1,DblText1
- dc.w NOISYREQ
- dc.b 1,0
- dc.l 0
- ds.b 32
- dc.l 0,0
- ds.b 36
-
- DblBord1 dc.w 0,0
- dc.b 2,0,0,6
- dc.l DblAry1,DblBord2
- DblAry1 dc.w 0,70,0,0,325,0,325,70,1,70,1,0
-
- DblBord2 dc.w 0,0
- dc.b 2,0,0,2
- dc.l DblAry2,DblBord3
- DblAry2 dc.w 324,1,324,69
-
- DblBord3 dc.w 131,31
- dc.b 2,0,0,6
- dc.l DblAry3,DblBord4
- DblAry3 dc.w 0,12,0,0,64,0,64,12,1,12,1,0
-
- DblBord4 dc.w 131,31
- dc.b 2,0,0,2
- dc.l DblAry4,0
- DblAry4 dc.w 63,1,63,12
-
- DblText1 dc.b 0,0,0,0
- dc.w 15,14
- dc.l NormText,DblTxt1,DblText2
- DblTxt1 dc.b "Enter deadkey to be used on keyboard.",0
- even
-
- DblText2 dc.b 0,0,0,0
- dc.w 47,34
- dc.l NormText,DblTxt2,DblText3
- DblTxt2 dc.b "Deadkey:",0
- even
-
- DblText3 dc.b 0,0,0,0
- dc.w 107,5
- dc.l NormText,DblTxt3,0
- DblTxt3 dc.b "Select Deadkey",0
- even
-
- DblGadg1 dc.l DblGadg2
- dc.w 16,54,138,11
- dc.w GADGHCOMP,RELVERIFY!ENDGADGET,BOOLGADGET!REQGADGET
- dc.l DblGBord1,0,DblGText1,0,0
- dc.w 1
- dc.l 0
- DblGText1 dc.b 0,0,0,0
- dc.w 5,2
- dc.l NormText,DblGTxt1,0
- DblGTxt1 dc.b "Use this deadkey",0
- even
-
- DblGadg2 dc.l DblGadg3
- dc.w 172,54,138,11
- dc.w GADGHCOMP,RELVERIFY!ENDGADGET,BOOLGADGET!REQGADGET
- dc.l DblGBord1,0,DblGText2,0,0
- dc.w 2
- dc.l 0
- DblGText2 dc.b 0,0,0,0
- dc.w 5,2
- dc.l NormText,DblGTxt2,0
- DblGTxt2 dc.b "Cancel requester",0
- even
-
- DblGadg3 dc.l DblGadg4
- dc.w 260,32,50,11
- dc.w GADGHCOMP,RELVERIFY,BOOLGADGET!REQGADGET
- dc.l DblGBord3,0,DblGText3,0,0
- dc.w 3
- dc.l 0
- DblGText3 dc.b 0,0,0,0
- dc.w 5,2
- dc.l NormText,DblGTxt3,0
- DblGTxt3 dc.b "Clear",0
- even
-
- DblGadg4 dc.l 0
- dc.w 130,32,1,1
- dc.w GADGHNONE,RELVERIFY,BOOLGADGET!REQGADGET
- dc.l 0,0,DblGText4,0,0
- dc.w 0
- dc.l 0
- DblGText4 dc.b 0,1,1,0
- dc.w 5,2
- dc.l NormText,DblGTxt4,0
- DblGTxt4 dc.b " ",0
- even
-
- DblGBord1 dc.w -2,-1
- dc.b 2,0,0,6
- dc.l DblGAry1,DblGBord2
- DblGAry1 dc.w 0,12,0,0,141,0,141,12,1,12,1,0
-
- DblGBord2 dc.w -2,-1
- dc.b 2,0,0,2
- dc.l DblGAry2,0
- DblGAry2 dc.w 140,0,140,11
-
- DblGBord3 dc.w -2,-1
- dc.b 2,0,0,6
- dc.l DblGAry3,DblGBord4
- DblGAry3 dc.w 0,12,0,0,53,0,53,12,1,12,1,0
-
- DblGBord4 dc.w -2,-1
- dc.b 2,0,0,2
- dc.l DblGAry4,0
- DblGAry4 dc.w 52,0,52,11
-
- LoseReq dc.l 0
- dc.w 103,15,365,71,0,0
- dc.l LsGadg1,LsBord1,LoseText1
- dc.w 0
- dc.b 1,0
- dc.l 0
- ds.b 32
- dc.l 0,0
- ds.b 36
-
- LsGadg1 dc.l LsGadg2
- dc.w 72,32,56,11
- dc.w GADGHCOMP!GADGIMAGE,TOGGLESELECT!RELVERIFY
- dc.w BOOLGADGET!REQGADGET
- dc.l Ls2,0,0,0,0
- dc.w 1
- dc.l 0
-
- LsGadg2 dc.l LsGadg3
- dc.w 72+58,32,56,11
- dc.w GADGHCOMP!SELECTED,TOGGLESELECT!RELVERIFY
- dc.w BOOLGADGET!REQGADGET
- dc.l 0,0,0,0,0
- dc.w 2
- dc.l 0
-
- LsGadg3 dc.l LsGadg4
- dc.w 72+116,32,56,11
- dc.w GADGHCOMP,TOGGLESELECT!RELVERIFY
- dc.w BOOLGADGET!REQGADGET
- dc.l 0,0,0,0,0
- dc.w 3
- dc.l 0
-
- LsGadg4 dc.l LsGadg5
- dc.w 11,54,74,11
- dc.w GADGHCOMP!GADGIMAGE,RELVERIFY!ENDGADGET
- dc.w BOOLGADGET!REQGADGET
- dc.l Ls1,0,0,0,0
- dc.w 4
- dc.l 0
-
- LsGadg5 dc.l 0
- dc.w 166,54,186,11
- dc.w GADGHCOMP,RELVERIFY!ENDGADGET,BOOLGADGET!REQGADGET
- dc.l LsGBord1,0,LsGText5,0,0
- dc.w 5
- dc.l 0
- LsGText5 dc.b 0,0,0,0
- dc.w 5,2
- dc.l NormText,LsGTxt5,0
- LsGTxt5 dc.b "Forget the whole thing",0
- even
-
- LsGBord1 dc.w -2,-1
- dc.b 2,0,0,6
- dc.l LsGAry1,LsGBord2
- LsGAry1 dc.w 0,12,0,0,189,0,189,12,1,12,1,0
-
- LsGBord2 dc.w -2,-1
- dc.b 2,0,0,2
- dc.l LsGAry2,0
- LsGAry2 dc.w 188,0,188,11
-
- LsBord1 dc.w 0,0
- dc.b 2,0,0,6
- dc.l LsAry1,LsBord2
- LsAry1 dc.w 0,70,0,0,364,0,364,70,1,70,1,0
-
- LsBord2 dc.w 0,0
- dc.b 2,0,0,2
- dc.l LsAry2,0
- LsAry2 dc.w 363,1,363,69
-
- LoseText1 dc.b 0,0,0,0
- dc.w 47,5
- dc.l NormText,LoseTxt1,LoseText2
- LoseTxt1 dc.b "Some key definitions must be lost.",0
- even
-
- LoseText2 dc.b 0,0,0,0
- dc.w 7,14
- dc.l NormText,LoseTxt2,LoseText3
- LoseTxt2 dc.b "Select type to loose then click on Complete.",0
- even
-
- LoseText3 dc.b 0,0,0,0
- dc.w 23,34
- dc.l NormText,LoseTxt3,0
- LoseTxt3 dc.b "Loose definitions",0
- even
-
- HlpText1 dc.b 0,0,0,0
- dc.w 9,7
- dc.l NormText,HlpTxt1,HlpText2
- HlpTxt1 dc.b "EditKeys allows you to edit keymap files, which"
- dc.b " control what",0
- even
-
- HlpText2 dc.b 0,0,0,0
- dc.w 9,16
- dc.l NormText,HlpTxt2,HlpText3
- HlpTxt2 dc.b "programs 'see' when a key is depressed. To learn"
- dc.b " more about",0
- even
-
- HlpText3 dc.b 0,0,0,0
- dc.w 9,25
- dc.l NormText,HlpTxt3,0
- HlpTxt3 dc.b "keymaps and this program, read the text file"
- dc.b " 'EditKeys.Doc'.",0
- even
-
- IntName INTNAME
- GrafName GRAFNAME
- DosName DOSNAME
- AslLibName AslName
- WBName dc.b "workbench.library",0
- even
- ArpName dc.b "arp.library",0
- even
-
- ArpFileReq dc.l fr_LHail,fr_File,fr_Dir,0
- dc.b 0,0
- dc.l 0,0
- fr_LHail dc.b "Load Keymap",0
- even
- fr_SHail dc.b "Save Keymap",0
- even
- fr_Dir dc.b "DEVS:keymaps"
- ds.b 64-12
- PathName dc.b "DEVS:keymaps/"
- ds.b 128-13
- even
-
- xDir dc.l fr_Dir
- xFile dc.l fr_File
-
- LoadTags dc.l ASL_Hail,fr_LHail,ASL_Dir,fr_Dir,TAG_DONE
- SaveTags dc.l ASL_Hail,fr_SHail,ASL_FuncFlags,FILF_SAVE
- dc.l ASL_Dir,fr_Dir,TAG_DONE
-
- FileErr1 dc.b 27,"[0m",27,"[1m",27,"[33mEditKeys v1.2",10,10
- dc.b 27,"[0mCould not load ",34
- FileErr1End even
-
- FileErr2 dc.b 34,10
- FileErr2End even
-
- IntgErr1 dc.b 27,"[0m",27,"[1m",27,"[33mEditKeys v1.2",10,10
- dc.b 27,"[0m",34
- IntgErr1End even
-
- IntgErr2 dc.b 34," is not a valid keymap!",10
- IntgErr2End even
-
- NoArpErr dc.b 0,1,0,0
- dc.w 9,16
- dc.l NormText,NoArpTxt,NArp1
- NoArpTxt dc.b "Error: Could not open arp.library.",0
- even
- NArp1 dc.b 2,1,0,0
- dc.w 9,27
- dc.l NormText,NArp1T,NArp2
- NArp1T dc.b "Run 'CopyArp' or copy arp.library",0
- even
- NArp2 dc.b 2,1,0,0
- dc.w 9,36
- dc.l NormText,NArp2T,NArp3
- NArp2T dc.b "to the 'libs' directory of your",0
- even
- NArp3 dc.b 2,1,0,0
- dc.w 9,45
- dc.l NormText,NArp3T,KeyHeadText
- NArp3T dc.b "boot disk.",0
- even
-
- WBNoFile dc.b 0,1,0,0
- dc.w 9,16
- dc.l NormText,NoFileTxt,KeyHeadText
- NoFileTxt dc.b "Error: Could not load specified keymap.",0
- even
-
- WBFaultFile dc.b 0,1,0,0
- dc.w 9,16
- dc.l NormText,FaultFileTxt,KeyHeadText
- FaultFileTxt dc.b "Error: Specified file is not a keymap.",0
- even
-
- KeyHeadText dc.b 3,1,0,0
- dc.w 9,5
- dc.l BoldText,KeyHeadTxt,0
- KeyHeadTxt dc.b "EditKeys v1.2",0
- even
-
- BoldText dc.l NormFont
- dc.w 8
- dc.b FSF_BOLD,0
-
- AbortText dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,AbortTxt,0
- AbortTxt dc.b "Abort",0
- even
-
- Par_Help dc.b 27,"[0m",27,"[1m",27,"[33mEditKeys v1.2",10
- dc.b 27,"[0m© 1991 by David Kinder",10,10
- dc.b "Format: EditKeys [<keymap>] [NOMAP]",10
- Par_Modify dc.b 0
- Par_Temp dc.b "KEYMAP,NOMAP/S",0
- even
-
- OpenErr1 dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,NoFileTxt,0
-
- OpenErr2 dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,FaultFileTxt,0
-
- OpenSErr dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,OpSTxt,0
- OpSTxt dc.b "Cannot open keymap for saving.",0
- even
-
- ContText dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,ContTxt,0
- ContTxt dc.b "Continue",0
- even
-
- DeadQuest dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,DQTxt1,DeadQuest2
- DQTxt1 dc.b "This physical key already has a deadkey definition.",0
- even
-
- DeadQuest2 dc.b 0,1,0,0
- dc.w 9,16
- dc.l NormText,DQTxt2,0
- DQTxt2 dc.b "Do you wish the new deadkey to be the same?",0
- even
-
- VanText dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,VanTxt,VanText2
- VanTxt dc.b "This key is undefined for the CTRL qualifier.",0
- even
-
- VanText2 dc.b 0,1,0,0
- dc.w 9,16
- dc.l NormText,VanTxt2,0
- VanTxt2 dc.b "What effect should CTRL have on this key?",0
- even
-
- VanPos dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,VanPTxt,0
- VanPTxt dc.b "Clear bits 5&6",0
- even
-
- VanNeg dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,VanNTxt,0
- VanNTxt dc.b "None",0
- even
-
- EdText dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,EdTxt,EdText2
- EdTxt dc.b "This key cannot be uniquely defined"
- even
-
- EdText2 dc.b 0,1,0,0
- dc.w 9,16
- dc.l NormText,EdTxt2,0
- EdTxt2 dc.b "without losing other definitions.",0
- even
-
- EdPos dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,EdPTxt,0
- EdPTxt dc.b "Modify key",0
- even
-
- NoEdText dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,NoEdTxt,0
- NoEdTxt dc.b "This key cannot be uniquely defined.",0
- even
-
- ZapText1 dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,ZapTxt1,ZapText2
- ZapTxt1 dc.b "I could convert this key from STRING to NORMAL,",0
- even
-
- ZapText2 dc.b 0,1,0,0
- dc.w 9,16
- dc.l NormText,ZapTxt2,ZapText3
- ZapTxt2 dc.b "but I'll have to zap the CONTROL definitions...",0
- even
-
- ZapText3 dc.b 0,1,0,0
- dc.w 9,25
- dc.l NormText,ZapTxt3,0
- ZapTxt3 dc.b "What should I do?",0
- even
-
- ZapNo dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,ZapNoTxt,0
- ZapNoTxt dc.b "Forget it",0
- even
-
- NoDeadSText dc.b 0,1,0,0
- dc.w 9,7
- dc.l NormText,NoDeadSTxt,0
- NoDeadSTxt dc.b "This physical key cannot accept strings.",0
- even
-
- SoM dc.b "The Sisters of Mercy",0
- even
- SoM1 dc.b 2,1,0,0
- dc.w 9,7
- dc.l NormText,SoM1T,SoM2
- SoM1T dc.b 34,"I hear the roar of a big machine",0
- even
- SoM2 dc.b 2,1,0,0
- dc.w 17,16
- dc.l NormText,SoM2T,SoM3
- SoM2T dc.b "Two worlds and in between",0
- even
- SoM3 dc.b 2,1,0,0
- dc.w 17,25
- dc.l NormText,SoM3T,SoM4
- SoM3T dc.b "Love lost, fire at will",0
- even
- SoM4 dc.b 2,1,0,0
- dc.w 17,34
- dc.l NormText,SoM4T,SoM5
- SoM4T dc.b "Dum-dum bullets and shoot to kill, I hear",0
- even
- SoM5 dc.b 2,1,0,0
- dc.w 17,43
- dc.l NormText,SoM5T,SoM6
- SoM5T dc.b "Dive, bombers, and",0
- even
- SoM6 dc.b 2,1,0,0
- dc.w 17,52
- dc.l NormText,SoM6T,SoM7
- SoM6T dc.b "Empire down",0
- even
- SoM7 dc.b 2,1,0,0
- dc.w 17,61
- dc.l NormText,SoM7T,0
- SoM7T dc.b "Empire down",34,0
- even
- LucText dc.b 0,1,0,0
- dc.w 6,3
- dc.l NormText,LucTxt,0
- LucTxt dc.b "Lucretia",0
- even
-
- WBTxt dc.b "EditKeys",0
- even
-
- KeysToMap dc.l Gadg12,Gadg13,Gadg14,Gadg15,Gadg16,Gadg17,Gadg18,Gadg19
- dc.l Gadg20,Gadg21,Gadg22,Gadg23,Gadg24,Gadg25,0,Gadg84
- dc.l Gadg34,Gadg35,Gadg36,Gadg37,Gadg38,Gadg39,Gadg40,Gadg41
- dc.l Gadg42,Gadg43,Gadg44,Gadg45,0,Gadg80,Gadg81,Gadg82
- dc.l Gadg51,Gadg52,Gadg53,Gadg54,Gadg55,Gadg56,Gadg57,Gadg58
- dc.l Gadg59,Gadg60,Gadg61,Gadg87,0,Gadg63,Gadg64,Gadg65
- dc.l Gadg88,Gadg67,Gadg68,Gadg69,Gadg70,Gadg71,Gadg72,Gadg73
- dc.l Gadg74,Gadg75,Gadg76,0,Gadg85,Gadg47,Gadg48,Gadg49
- dc.l Gadg83,Gadg26,Gadg33,Gadg86,Gadg46,Gadg01,Gadg27,0
- dc.l 0,0,Gadg50,0,Gadg62,Gadg78,Gadg79,Gadg77
- dc.l Gadg02,Gadg03,Gadg04,Gadg05,Gadg06,Gadg07,Gadg08,Gadg09
- dc.l Gadg10,Gadg11,Gadg29,Gadg30,Gadg31,Gadg32,Gadg66,Gadg28
-
- MapToKeys dc.b $45,$50,$51,$52,$53,$54,$55,$56
- dc.b $57,$58,$59,$00,$01,$02,$03,$04
- dc.b $05,$06,$07,$08,$09,$0a,$0b,$0c
- dc.b $0d,$41,$46,$5f,$5a,$5b,$5c,$5d
- dc.b $42,$10,$11,$12,$13,$14,$15,$16
- dc.b $17,$18,$19,$1a,$1b,$44,$3d,$3e
- dc.b $3f,$4a,$20,$21,$22,$23,$24,$25
- dc.b $26,$27,$28,$29,$2a,$4c,$2d,$2e
- dc.b $2f,$5e,$31,$32,$33,$34,$35,$36
- dc.b $37,$38,$39,$3a,$4f,$4d,$4e,$1d
- dc.b $1e,$1f,$40,$0f,$3c,$43,$2b,$30
-
- IDtoGadget dc.l 0,0,0,0,0,0,0,0
- dc.l 0,0,0,0,Gadg13,Gadg14,Gadg15,Gadg16
- dc.l Gadg17,Gadg18,Gadg19,Gadg20,Gadg21,Gadg22,Gadg23,Gadg24
- dc.l Gadg25,0,0,0,Gadg29,Gadg30,Gadg31,Gadg32
- dc.l 0,Gadg34,Gadg35,Gadg36,Gadg37,Gadg38,Gadg39,Gadg40
- dc.l Gadg41,Gadg42,Gadg43,Gadg44,Gadg45,0,Gadg47,Gadg48
- dc.l Gadg49,Gadg50,Gadg51,Gadg52,Gadg53,Gadg54,Gadg55,Gadg56
- dc.l Gadg57,Gadg58,Gadg59,Gadg60,Gadg61,0,Gadg63,Gadg64
- dc.l Gadg65,Gadg66,Gadg67,Gadg68,Gadg69,Gadg70,Gadg71,Gadg72
- dc.l Gadg73,Gadg74,Gadg75,Gadg76,0,0,0,Gadg80
- dc.l Gadg81,Gadg82,0,0,Gadg85,0,Gadg87,Gadg88
-
- DeadIDtoGadg dc.l Gadg01,Gadg02,Gadg03,Gadg04,Gadg05,Gadg06,Gadg07,Gadg08
- dc.l Gadg09,Gadg10,Gadg11,Gadg12,Gadg13,Gadg14,Gadg15,Gadg16
- dc.l Gadg17,Gadg18,Gadg19,Gadg20,Gadg21,Gadg22,Gadg23,Gadg24
- dc.l Gadg25,Gadg26,Gadg27,Gadg28,Gadg29,Gadg30,Gadg31,Gadg32
- dc.l Gadg33,Gadg34,Gadg35,Gadg36,Gadg37,Gadg38,Gadg39,Gadg40
- dc.l Gadg41,Gadg42,Gadg43,Gadg44,Gadg45,Gadg46,Gadg47,Gadg48
- dc.l Gadg49,Gadg50,Gadg51,Gadg52,Gadg53,Gadg54,Gadg55,Gadg56
- dc.l Gadg57,Gadg58,Gadg59,Gadg60,Gadg61,Gadg62,Gadg63,Gadg64
- dc.l Gadg65,Gadg66,Gadg67,Gadg68,Gadg69,Gadg70,Gadg71,Gadg72
- dc.l Gadg73,Gadg74,Gadg75,Gadg76,Gadg77,Gadg78,Gadg79,Gadg80
- dc.l Gadg81,Gadg82,Gadg83,Gadg84,Gadg85,Gadg86,Gadg87,Gadg88
-
- Tab___ dc.b 0,0,0,0,0,0,0,0
- TabS__ dc.b 0,1,0,1,0,1,0,1
- Tab_A_ dc.b 0,0,1,2,0,0,1,2
- Tab__C dc.b 0,0,0,0,1,2,2,-1
- TabSA_ dc.b 0,1,1,3,0,1,1,3
- Tab_AC dc.b 0,0,1,2,1,2,3,-1
- TabS_C dc.b 0,1,0,1,1,3,2,-1
- TabSAC dc.b 0,1,1,3,1,3,3,-1
-
- QualTable dc.l Tab___,Tab__C,TabS__,TabS_C
- dc.l Tab_A_,Tab_AC,TabSA_,TabSAC
-
- DTab___ dc.b 0,0,0,0,0,0,0,0
- DTab_A_ dc.b 0,0,2,4,0,0,2,4
- DTab__C dc.b 0,0,0,0,2,4,4,8
- DTabS__ dc.b 0,2,0,2,0,2,0,2
- DTab_AC dc.b 0,0,2,4,2,4,6,12
- DTabSA_ dc.b 0,2,2,6,0,2,2,6
- DTabS_C dc.b 0,2,0,2,2,6,4,10
- DTabSAC dc.b 0,2,2,6,2,6,6,14
-
- DQualTab dc.l DTab___,DTab__C,DTabS__,DTabS_C
- dc.l DTab_A_,DTab_AC,DTabSA_,DTabSAC
-
- CheckTab dc.b 0,8,2,10,4,12,6,14
-
- On_Value dc.w GADGHCOMP!GADGIMAGE!SELECTED
-
- KeyTab1 dc.b $40,$41,$42,$43,$44,$45,$46,$4c,$4d,$4e,$4f,$50,$51
- dc.b $52,$53,$54,$55,$56,$57,$58,$59,$5f
- KeyTab1End even
- KeyTab2 dc.b "Spc","Bck","Tab","Ent","Ret","Esc","Del","Up ","Dwn"
- dc.b "Rgt","Lft","F1 ","F2 ","F3 ","F4 ","F5 ","F6 ","F7 "
- dc.b "F8 ","F9 ","F10","Hlp"
- even
-
- MyMode dc.b 1,0
- LastGadgVal dc.l -1
- KeyTypes dcb.b 96,KCF_NOP
-
- section BSS,BSS
-
- DeadIndex ds.b 4096
- StringArea ds.b 8192
-
- fr_File ds.b 64
- StringBuf ds.b 34
- SavePath ds.b 128
- ArgBuf ds.b 128
-
- CapsTab ds.b 96
- ReptTab ds.b 96
- UseDead ds.b 16
- ModIndex ds.b 256
- StringList ds.b 832
- DeadTab ds.w 768
- KeyDefs ds.l 96
-
- _IntuitionBase ds.l 1
- _GfxBase ds.l 1
- _DOSBase ds.l 1
- _AslBase ds.l 1
- _WorkbenchBase ds.l 1
-
- ReturnMsg ds.l 1
- Windowhd ds.l 1
- UserPort ds.l 1
- RPort ds.l 1
- MySegment ds.l 1
- NoDeadStore ds.l 1
- DeadStore ds.l 1
- MyDefKey ds.l 1
- SaveBuffer ds.l 1
- SaveBuffer2 ds.l 1
- SaveDeadBuf1 ds.l 1
- SaveDeadBuf2 ds.l 1
- LastQualVal ds.l 1
- AslFReq ds.l 1
- MyWBPort ds.l 1
- Par_Arry ds.l 2
- Parms ds.l 2
- MD_DeadTab ds.w 1
- MD_DTbPos ds.w 1
- OldDeadOff ds.w 1
- MyNewKey ds.w 1
- StringNow ds.w 1
- ErrResponse ds.b 1
- ModifyIndex ds.b 1
- DeadByte ds.b 1
- MyDefQual ds.b 1
- MD_Index ds.b 1
- MD_KeyType ds.b 1
- MD_GadgNo ds.b 1
- DeadNo ds.b 1
- ModNo ds.b 1
- ChQVal ds.b 1
- CurrDKey ds.b 1
- DCurrDKey ds.b 1
- SisTst ds.b 1
- OS2 ds.b 1
- Quest ds.b 1
-