home *** CD-ROM | disk | FTP | other *** search
- ;*********************************************
- ;* Rewritten PresetEditor for Protracker Pro *
- ;* ASM= ASM One/Oma *
- ;* CPU= Any *
- ;* Ver= 1991 Amiga Freelancers PT1.1 *
- ;* 1996 TEC Design debugged and impr. *
- ;* 1.2.96 = reworked text outputs (debug) *
- ;* 2.2.96 = debugged dbf loops *
- ;* 6.2.96 = debugged insertpreset for use *
- ;* spaces in filenames *
- ;* 12.3.96 = reworked whole screen design *
- ;*********************************************
-
-
- ;-------------------- PED ---------------------
- PresetEditor: CLR.B RawKeyCode
- CMP.B #4,CurrScreen
- BNE.S startmeup
- JMP PED_Exit
-
- startmeup: JSR TopExit ;included
- JSR WaitForButtonUp
- MOVE.B #4,CurrScreen
- ;SF ScopeEnable
- ST NoSampleInfo
- BSR.B SwapPresEdScreen
- BSR.W DctMainScr1_7
- BEQ.W pedexi2
-
- PED_Refresh: CLR.W PED_Action
- PED_Refresh2: MOVEA.L TextBplPtr(PC),A0
- MOVE.W #$0987,D0
- pedloop: CLR.L (A0)+
- DBRA D0,pedloop
- JSR SetNormalPtrCol
- BSR.W ShowPEDnumbers
- BSR.W ShowPresetNames
- BSR.W PED_OneDown
- BSR.W PED_OneUp
- RTS
-
- SwapPresEdScreen:
- MOVE.L DecompMemPtr,D0
- BEQ.B speds2
- MOVEA.L D0,A1
- BSR.B speds3
- JMP FreeDecompMem
-
- speds2: LEA PresetEdData,A0
- JSR Decompact
- BNE.B speds3
- RTS
-
- speds3: LEA zeropoint,A0
- MOVEQ #1,D2
- MOVEQ #0,D3
- spesloop1:
- MOVE.W #$04C3,D0
- spesloop2:
- MOVE.L (A0),D1
- MOVE.L (A1),(A0)+
- ADDI.W #4,D3
- CMPI.W #$0028,D3
- BNE.B spesloop3
- LEA $0028(A0),A0
- MOVEQ #0,D3
- spesloop3:
- MOVE.L D1,(A1)+
- DBRA D0,spesloop2
- LEA $29E0(A0),A0
- DBRA D2,spesloop1
- MOVEQ #-1,D0
- RTS
-
- ;-------------- rewritten for mousetable ------------
- CheckPresEdGadgs:
- MOVEM.W (MouseX2),D0/D1
- LEA PEDGadgData,A0
- JSR ConvMousTabl
- TST.W D2
- BEQ.W peddygto
-
- CMP.W #$11,D2
- BEQ.W PED_Exit
-
- CMP.W #01,D2
- BEQ.W CheckPEDnames ;hit a filename
- CMP.W #02,D2
- BEQ.W PED_GotoPLST
- CMP.W #03,D2
- BEQ.W PED_DeleteDisk
- CMP.W #04,D2
- BEQ.W PED_Delete
- CMP.W #05,D2
- BEQ.W PED_Insert
- CMP.W #06,D2
- BEQ.W PED_AddPathGadg
- CMP.W #07,D2
- BEQ.W PED_ClearPLST
- CMP.W #08,D2
- BEQ.W PED_EnterPath
- CMPI.W #09,D2
- BEQ.W PED_Print
- CMPI.W #$0A,D2
- BEQ.W WritePLST
- CMPI.W #$0B,D2
- BEQ.S xLoadPLST
-
- CMP.W #$0F,D2
- BEQ.W PED_Bottom
- CMP.W #$0D,D2
- BEQ.W PED_OneDown
- CMP.W #$10,D2
- BEQ.S PED_Exit
- CMP.W #$0C,D2
- BEQ.W PED_OneUp
- CMP.W #$0E,D2
- BEQ.W PED_Top
- CMP.W #$12,D2
- BEQ.W PED_Disk
-
- peddygto:
- JSR ChkMainright
- RTS
-
- xLoadPLST: BSR.W LoadPLST
- MOVE.W #1,PEDPos
- BRA.W PED_Refresh
-
- PED_GotoPLST: BSR.B PED_Exit
- BRA.W PLST
-
- PED_Exit:
- MOVE.L #$FFFFFFFF,lbL001AFC
- MOVE.L #$FFFFFFFF,lbL001B00
- MOVE.L #$FFFFFFFF,lbL001B04
- CMPI.W #$FFFF,lbW000E14
- JSR WaitForButtonUp
- BSR.W PLSTCheckNum
- BSR.W SwapPresEdScreen
- MOVEA.L TextBplPtr(PC),A0
- MOVE.W #$0987,D0
- pedeloop:
- CLR.L (A0)+
- DBRA D0,pedeloop
- CLR.B RawKeyCode
- pedexi2:
- JSR DisplayMainAll
- RTS
- PED_AddPathGadg:
- TST.L PLSTmem
- BNE.B pedawok
- BSR.W AllocPLST
- TST.L PLSTmem
- BEQ.W PLSTMemErr
- pedawok:
- MOVEA.L DOSBase(PC),A6
- MOVE.L #PEdDefaultPath,D1
- MOVEQ #-2,D2
- JSR -$0054(A6) ;lock Dir
- MOVE.L D0,FileLock
- BEQ.W UnlockReadPath
- JSR SetDiskPtrCol
- LEA AddingPathText(PC),A0
- BSR.W ShowStatusText
- MOVEA.L DOSBase(PC),A6
- MOVE.L FileLock(PC),D1
- MOVE.L #FileInfoBlock,D2
- JSR -$0066(A6) ;Examine
- TST.L D0
- BPL.W UnlockReadPath
- TST.L FIB_EntryType
- BPL.B CheckPathDirName
- BSR.W AddPreset
- BRA.S IsPLSTFull
-
- CheckPathDirName:
- CMP.B #'-',FIB_FileName+2
- BNE.S IsPLSTFull
- MOVE.B FIB_FileName+3,SndDiskNum0
- MOVE.B FIB_FileName+4,SndDiskNum1
- BSR.W ShowPEDnumbers
- IsPLSTFull:
- MOVE PresetTotal(PC),D0
- CMP MaxPLSTEntries,D0
- BCS.S ReadPathNext
- BSR.W PLSTisFull
- BRA.W ReadPathEnd
-
- ReadPathNext:
- MOVEA.L DOSBase(PC),A6
- MOVE.L FileLock(PC),D1
- MOVE.L #FileInfoBlock,D2
- JSR -$006C(A6) ;ExNext
- TST.L D0
- BPL.W ReadPathEnd
- BTST #2,$00DFF016
- BEQ.W ReadPathEnd
- TST.L FIB_EntryType
- BPL.B IsPLSTFull
- CMPI.L #'.inf',FIB_FileName
- BEQ.B IsPLSTFull
- CMP.L #'.inf',FIB_FileName+4
- BEQ.B IsPLSTFull
- LEA FIB_FileName,A0
- MOVEQ #$1C,D0
-
- ckcou: CMP.B #$2E,(A0)+
- BEQ.W CouldBeInfo
- DBRA D0,ckcou
-
- rpnskip:
- CLR PresetRepeat
- MOVE #1,PresetReplen
- LEA PEdDefaultPath,A0 ;get pointer to samples
- JSR CopyPath
- LEA FIB_FileName,A0
-
- ;--------- raw test ok, now check for IFF
- rpncpfn:
- MOVE.B (A0)+,(A1)+
- BNE.B rpncpfn
- MOVE.L #FileName,D1
- MOVE.L #$000003ED,D2
- MOVEA.L DOSBase(PC),A6
- JSR -$001E(A6) ;open
- MOVE.L D0,FileHandle
- BEQ.B rpnskp2
- MOVE.L D0,D1
- LEA chkiffbuffer(PC),A2
- CLR.L (A2)
- MOVE.L A2,D2
- MOVEQ #12,D3
- JSR -$002A(A6) ;read
- CMPI.L #'FORM',(A2)
- BNE.B rpnclse
- CMPI.L #'8SVX',8(A2)
- BNE.B rpnclse
- rpnvhdr:
- MOVE.L FileHandle(PC),D1
- MOVE.L A2,D2
- MOVEQ #4,D3
- JSR -$002A(A6) ;read
- TST.L D0
- BEQ.B rpnclse ;read error
- CMPI.L #'VHDR',(A2)
- BNE.B rpnvhdr
- MOVE.L FileHandle(PC),D1
- MOVE.L A2,D2
- MOVEQ #12,D3
- JSR -$002A(A6)
- MOVE.L 8(A2),D0
- BEQ.B rpnclse
- LSR.L #1,D0
- MOVE.W D0,PresetReplen
- MOVE.L 4(A2),D0
- LSR.L #1,D0
- MOVE.W D0,PresetRepeat
- rpnclse:
- MOVE.L FileHandle(PC),D1
- JSR -$0024(A6) ;close
-
-
- ;----------- both used, for IFF AND RAW -----------
- rpnskp2: BSR.S AddPreset
- BSR.W ShowPEDnumbers ;refresh preset numbers
- BRA.W IsPLSTFull
-
- chkiffbuffer: dc.l 0,0,0
-
- CouldBeInfo: CMP.B #$69,(A0)+
- BNE.W rpnskip
- CMP.B #$6E,(A0)+
- BNE.W rpnskip
- CMP.B #$66,(A0)+
- BNE.W rpnskip
- CMP.B #$6F,(A0)+
- BNE.W rpnskip
- CMP.B #0,(A0)+
- BNE.W rpnskip
- BRA.W IsPLSTFull
-
- ReadPathEnd: MOVE.L DOSBase(PC),A6
- MOVE.L FileLock(PC),D1
- BEQ.S rpeskip
- JSR -$005A(A6) ;unlock
- rpeskip: JSR SetNormalPtrCol
- BSR.W ShowPresetNames
- BRA.W ShowAllRight
-
- UnlockReadPath: MOVE.L DOSBase(PC),A6
- MOVE.L FileLock(PC),D1
- BEQ.B urpend
- JSR -$005A(A6) ;unlock
- urpend: JMP SetErrorPtrCol
-
- ;----------------------------------------------- add one PLST entry ----
- AddPreset: LEA PedDefaultVol(PC),A0
- LEA PresetName(PC),A1
- MOVEQ #21,D0 ;#5
- clearme: CLR.B (A1)+
- DBRA D0,clearme
-
- LEA PresetName(PC),A1
- MOVEQ #5,D0 ;disk ST-XX
-
- loopos MOVE.B (A0)+,(A1)+
- DBRA D0,loopos
-
- LEA FIB_FileName,A0
- MOVEQ #14,D0 ,name 16 letters
-
- aploop2: MOVE.B (A0)+,D1
- BEQ.S aploop3
- MOVE.B D1,(A1)+
- DBRA D0,aploop2
-
- aploop3: CLR.B (A1)
-
- MOVE.L FIB_FileSize,D0
- CMP.L #$0000FFFE,D0
- BLS.S apskip2
- MOVE.W #$FFFE,D0
-
- apskip2: LSR #1,D0 ;getme
- MOVE D0,PresetLength
- CLR PresetFineTune
- LEA PresetName(PC),A6
- BSR.W PED_CheckAdd ;check if real
- ADDQ #1,PresetTotal
- ADD.L #30,MaxPLSTOffset
- RTS
-
-
- PED_Insert: TST.L PLSTmem
- BNE.S pediwok
- BSR.W AllocPLST
- TST.L PLSTmem
- BEQ.W PLSTMemErr
- pediwok:
- MOVE.W PresetTotal(PC),D0
- CMP.W MaxPLSTEntries2,D0
- BHS.W PLSTisFull
- LEA InsertPsetText(PC),A0
- LEA PresetName(PC),A1
- MOVEQ #39,D0
- pediloop:
- MOVE.B (A0)+,(A1)+
- DBRA D0,pediloop
- PossibleEdit:
- JSR StorePtrCol
- JSR SetWaitPtrCol
- MOVE.L TextBplPtr(PC),A0
- LEA $2320(A0),A0 ;koordinates, 2320*2
- MOVEQ #59,D0
- pediloop2:
- ;CLR.L (A0)+
- ;DBRA D0,pediloop2
- LEA EnterDataText(PC),A0
- BSR.W ShowStatusText ;status message
- MOVE.W #63,LineCurY ;set cursor
- LEA PresetName(PC),A6
- MOVEQ #3,D7
- MOVE.B #4,EnterTextFlag
- ShowPsetText:
- LEA PresetName+3(PC),A0
- MOVEQ #37,D0 ;length
- MOVE.W #2321*2-1,D1 ;#$1221,D1 ;koordinates
- BSR.W ShowText3 ;print to edit samplenametext
- MOVE.W D7,D0
- SUBQ.W #3,D0
- ASL.W #3,D0
- ADDI.W #12,D0
- MOVE.W D0,LineCurX
- JSR UpdateLineCurPos
- pediwaitkey:
- JSR DoKeyBuffer
- MOVE.B RawKeyCode(PC),D0
- BEQ.B pediwaitkey
- JSR CheckLAmigaKeys
- BTST #7,D0 ;wait delay
- BNE.B pediwaitkey
- CLR.B RawKeyCode
- ANDI.W #$00FF,D0
- CMPI.B #$45,D0
- BEQ.W PED_ESCkey
- CMPI.B #$41,D0
- BEQ.W PED_BKspaceKey
- CMPI.B #$44,D0
- BEQ.W PED_ReturnKey
- CMPI.B #$4F,D0
- BEQ.W PED_LeftArrowKey
- CMPI.B #$4E,D0
- BEQ.W PED_RightArrowKey
- CMPI.B #$40,D0
- BHI.B pediwaitkey
- CMPI.W #$0028,D7
- BEQ.B pediwaitkey
- CMPI.W #$0016,D7
- BEQ.B pediwaitkey
-
- tst keymapmem
- beq.s itk5
- move.l keymapmem,A0
- bra.s itk6
-
- itk5: LEA UnShiftedKeymap(PC),A0
- itk6: TST.W ShiftKeyStatus
- BEQ.B ShiftKeySkip
-
- TST keymapmem
- beq.s itk7
- move.l keymapmem,A0
- add.l #65,A0
- bra.s ShiftKeySkip
- itk7:
- LEA ShiftedKeymap(PC),A0
- ;------
- ShiftKeySkip:
- MOVE.B (A0,D0.W),D1
- BEQ.W pediwaitkey
- CMPI.W #6,D7
- BCS.B ShiftedKeySkip2
- CMPI.W #$0019,D7
- BCS.B PED_PrintChar
- ShiftedKeySkip2:
- CMPI.B #$30,D1
- BCS.W pediwaitkey
- CMPI.B #$66,D1
- BHI.W pediwaitkey
- CMPI.B #$39,D1
- BLS.B PED_PrintChar
- CMPI.B #$61,D1
- BCC.B PED_PrintChar
- BRA.W pediwaitkey
-
- PED_PrintChar:
- MOVE.B D1,(A6,D7.W)
- BRA.W PED_RightArrowKey
-
- PED_ReturnKey:
- CMPI.B #' ',(PsetNameText)
- BEQ.B PED_ESCkey
- LEA PsetVolText,A0
- LEA fitutexttab+32(PC),A1
- MOVE.B (A0)+,D1
- LSL.W #8,D1
- MOVE.B (A0),D1
- MOVEQ #15,D0
- vofloop:
- CMP.W -(A1),D1
- BEQ.B vofound
- DBRA D0,vofloop
- MOVEQ #0,D0
- vofound:
- MOVE.W D0,PresetFineTune
- LEA PsetLenText(PC),A0
- BSR.W HexToInteger
- LSR.W #1,D0
- MOVE.W D0,PresetLength
- LEA PsetRepeatText(PC),A0
- BSR.W HexToInteger
- LSR.W #1,D0
- MOVE.W D0,PresetRepeat
- LEA PsetReplenText(PC),A0
- BSR.W HexToInteger
- LSR.W #1,D0
- MOVE.W D0,PresetReplen
- BSR.W PED_CheckAdd
- ADDQ.W #1,PresetTotal
- PED_ESCkey:
- CLR.W LineCurX
- MOVE.W #$010E,LineCurY
- JSR UpdateLineCurPos
- BSR.W ShowPresetNames
- BSR.W ShowPEDnumbers
- BSR.W ShowAllRight
- CLR.B EnterTextFlag
- JMP RestorePtrCol
-
- PED_BKspaceKey:
- CMPI.W #$0017,D7
- BCC.B pedbsend
- CMPI.W #6,D7
- BLS.B pedbsend
- SUBQ.W #1,D7
- MOVE.B #$20,(A6,D7.W)
- pedbsend:
- BRA.W ShowPsetText
-
- PED_LeftArrowKey:
- SUBQ.W #1,D7
- CMPI.W #2,D7
- BLS.B pedlakskip2
- CMPI.W #5,D7
- BEQ.B pedlakskip
- CMPI.W #$0016,D7
- BEQ.B pedlakskip
- CMPI.W #$0019,D7
- BEQ.B pedlakskip
- CMPI.W #$001E,D7
- BEQ.B pedlakskip
- CMPI.W #$0023,D7
- BEQ.B pedlakskip
- BRA.W ShowPsetText
-
- pedlakskip:
- SUBQ.W #1,D7
- BRA.W ShowPsetText
-
- pedlakskip2:
- MOVEQ #3,D7
- BRA.W ShowPsetText
-
- PED_RightArrowKey:
- ADDQ.W #1,D7
- CMPI.W #5,D7
- BEQ.B pedrakskip
- CMPI.W #$0016,D7
- BEQ.B pedrakskip
- CMPI.W #$0019,D7
- BEQ.B pedrakskip
- CMPI.W #$001E,D7
- BEQ.B pedrakskip
- CMPI.W #$0023,D7
- BEQ.B pedrakskip
- CMPI.W #$0028,D7
- BCC.B pedrakskip3
- BRA.W ShowPsetText
-
- pedrakskip:
- ADDQ.W #1,D7
- BRA.W ShowPsetText
-
- pedrakskip3:
- MOVEQ #$27,D7
- BRA.W ShowPsetText
-
- ;------------- check addpreset
- PED_CheckAdd: ;23 length
- MOVEQ #$17,D0 ;max length of sample name in PED list
- pedcaloop:
- SUBQ.W #1,D0 ;-1
- CMP.B #' ',0(A6,D0.W) ;space ?
- BEQ.B pedcaloop ;yep, one back
- CLR.B 1(A6,D0.W)
- MOVEA.L PLSTmem(PC),A5
- SUB #30,A5 ;fix
- LEA 30(A5),A5
- pedccnextloop:
- MOVEQ #6,D0
- TST.B 6(A5)
- BEQ.S PED_AddPreset
- PED_ConvertLoop:
- MOVE.B (A5,D0.W),D2
- BNE.S PED_ConvertCase
- TST.B (A6,D0.W)
- BNE.S PED_ConvertCase
- CLR.B 6(A5)
- SUBQ #1,PresetTotal
- BRA.S PED_AddPreset
-
- PED_ConvertCase:
- CMP.B #'A',D2
- BCS.S pedccskip
- CMP.B #'Z',D2
- BHI.S pedccskip
- ADD.B #32,D2
- pedccskip:
- MOVE.B 0(A6,D0.W),D1
- ;CMP.B #' ',D1
- ;BEQ.S pedccskip3
- CMP.B #'A',D1
- BCS.S pedccskip2
- CMP.B #'Z',D1
- BHI.S pedccskip2
- ADD.B #32,D1
- pedccskip2:
- CMP.B D2,D1
- BEQ.S pedccnext
- BHI.S pedccskip3
- BRA.S PED_AddPreset
-
- pedccnext:
- ADDQ #1,D0
- CMP.W #$0016,D0
- BNE.B PED_ConvertLoop
- pedccskip3:
- LEA 30(A5),A5
- BRA.B pedccnextloop
-
- PED_AddPreset:
- TST.B 6(A5) ;file already in PLST?
- BEQ.S pedapskip ;yep, skip it
- MOVE.L PLSTmem(PC),A1
- SUB #30,A1 ;fix!
- MOVE PresetTotal(PC),D0
- BEQ.S pedapskip
- MULU #30,D0
- ADDA.L D0,A1
- LEA 30(A1),A1
- CLR.B 31(A1)
- pedaploop:
- MOVE (A1),30(A1)
- SUBQ.L #2,A1
- CMP.L A1,A5
- BLS.B pedaploop
- pedapskip:
- MOVEQ #21,D0
- pedaploop2:
- MOVE.B (A6,D0.W),D1
- ADD.B #32,D1 ;fix
- CMP.B #'A',D1
- BCS.S pedapskip2
- CMP.B #'Z',D1
- ;BHI pedapskip2
- ;ADD.B #32,D1 ;fix
- pedapskip2:
- SUB.B #32,D1 ;fix
- ;CMP.B #' ',D1 ;space?
- ;BNE.S pedapskip3
- CMP.B #$00,D1 ;fix
- BNE.S pedapskip3 ;fix
- MOVEQ #0,D1
- pedapskip3:
- MOVE.B D1,(A5,D0.W)
- DBRA D0,pedaploop2
- MOVE.W PresetLength(PC),$0016(A5)
- MOVE.B PresetFineTune+1(PC),$0018(A5)
- MOVE.B #$40,$0019(A5)
- MOVE.W PresetRepeat(PC),$001A(A5)
- MOVE.W PresetReplen(PC),$001C(A5)
- RTS
-
- HexToInteger: MOVEQ #0,D0
- BSR.S Single_hti
- LSL #8,D1
- LSL #4,D1
- OR D1,D0
- BSR.S Single_hti
- LSL #8,D1
- OR D1,D0
-
- HexToInteger2: BSR.S Single_hti
- LSL #4,D1
- OR D1,D0
- BSR.S Single_hti
- OR D1,D0
- RTS
-
- Single_hti: MOVEQ #0,D1
- MOVE.B (A0)+,D1
- CMP.B #$60,D1
- BCS.S shtiskip
- SUB.B #$20,D1
-
- shtiskip: SUB.B #$30,D1
- CMP.B #9,D1
- BLS.S reet
- SUBQ.B #7,D1
- reet: RTS
-
- PED_Delete: JSR SetDeletePtrCol
- MOVE.W #1,PED_Action
- LEA SelectEntryText(PC),A0
- BRA.W ShowStatusText
-
- PED_ClearPLST: LEA ClearPLSTText,A0
- JSR AreYouSure
- BEQ.B PED_ClearPLST2
- RTS
-
- PED_ClearPLST2: BSR.W FreePLST
- BRA.W PED_Refresh
-
- ClearPLSTText: dc.b 10,10,10,' Clear the PLST?',0,0
-
- PED_Print:
- LEA PrintPLSTText,A0
- JSR AreYouSure
- BEQ.B PED_Print2
- RTS
-
- PED_Print2:
- JSR StorePtrCol
- MOVEA.L DOSBase,A6
- MOVE.L #PrintPath,D1
- MOVE.L #$000003EE,D2
- JSR -$001E(A6) ;Open
- MOVE.L D0,FileHandle
- BEQ.W CantOpenFile
- JSR SetDiskPtrCol
- MOVE.L D0,D1
- MOVE.L #PsetPLSTtext,D2
- MOVEQ #$38,D3
- JSR -$0030(A6) ;Write
- LEA PrintingPLSTText(PC),A0
- BSR.W ShowStatusText
- CLR.W PsetNumTemp
- pedpmainloop:
- MOVE.W PsetNumTemp(PC),D0
- LEA PsetPrtNumText(PC),A0
- BSR.W IntToDecASCII ;2 jumps
- MOVEA.L PLSTmem(PC),A0
- SUB #30,A0 ;fix
- MOVE.W PsetNumTemp(PC),D0
- MULU.W #30,D0
- ADDA.L D0,A0
- MOVE.L A0,PsetPtrTemp
- LEA PsetPrtNameText(PC),A1
- MOVEA.L A1,A2
- MOVEQ #$13,D1
- FillSpaceLoop:
- MOVE.B #' ',(A2)+
- DBRA D1,FillSpaceLoop
- MOVEQ #$13,D1
- pedploop:
- TST.B (A0)
- BEQ.B pedpskip
- MOVE.B (A0)+,(A1)+
- DBRA D1,pedploop
- pedpskip:
- MOVEA.L PsetPtrTemp(PC),A1
- MOVE.W $0016(A1),D0
- LEA PsetPrtLenText(PC),A0
- BSR.W IntToHexASCII
- MOVEA.L PsetPtrTemp(PC),A1
- MOVE.W $001A(A1),D0
- LEA PsetPrtRepeatText(PC),A0
- BSR.W IntToHexASCII
- MOVEA.L PsetPtrTemp(PC),A1
- MOVE.W $001C(A1),D0
- ADD.W D0,D0
- LEA PsetPrtRepLenText(PC),A0
- BSR.B IntToHexASCII
- MOVE.L FileHandle(PC),D1
- MOVE.L #PsetPrtNumText,D2
- MOVEQ #$35,D3
- JSR -$0030(A6) ;Write
- BTST #2,$00DFF016
- BEQ.B AbortPLSTPrint
- ADDQ.W #1,PsetNumTemp
- MOVE.W PsetNumTemp(PC),D0
- CMP.W PresetTotal(PC),D0
- BNE.W pedpmainloop
- BRA.B pedpend
-
- AbortPLSTPrint:
- LEA OprAbortedText(PC),A0
- BSR.W ShowStatusText
- JSR SetErrorPtrCol
- pedpend:
- MOVE.L FileHandle(PC),D1
- JSR -$0024(A6) ;close
- BSR.W ShowAllRight
- JMP RestorePtrCol
-
- IntToDecASCII:
- MOVEQ #3,D3
- MOVE.L #$000003E8,D2
- itdloop:
- EXT.L D0
- DIVU.W D2,D0
- ADDI.B #$30,D0
- MOVE.B D0,(A0)+
- DIVU.W #10,D2
- SWAP D0
- DBRA D3,itdloop
- RTS
-
- IntToHex2:
- MOVEQ #1,D2
- BRA.B ithaloop
-
- IntToHexASCII:
- MOVEQ #3,D2
- ithaloop:
- MOVE.W D0,D1
- ANDI.B #15,D1
- CMPI.B #10,D1
- BCS.B ithaskip
- ADDQ.B #7,D1
- ithaskip:
- ADDI.B #'0',D1
- MOVE.B D1,-(A0)
- ROR.W #4,D0
- DBRA D2,ithaloop
- RTS
-
- WritePLST:
- LEA SavePLSTText,A0
- JSR AreYouSure
- BEQ.B WritePLST2
- RTS
-
- WritePLST2:
- JSR StorePtrCol
- JSR SetDiskPtrCol
- LEA SavingPLSTText(PC),A0
- BSR.W ShowStatusText
- LEA PTPath,A0
- JSR CopyPath
- LEA PLSTName(PC),A0
- MOVEQ #4,D0
- dsploop:
- MOVE.B (A0)+,(A1)+
- DBRA D0,dsploop
- MOVE.L #FileName,D1
- MOVE.L #$000003EE,D2
- MOVEA.L DOSBase,A6 ;DOSBase
- JSR -$001E(A6) ;Open
- MOVE.L D0,D7
- BEQ.W CantOpenFile
- MOVE.L D0,D1
- MOVE.L PLSTmem(PC),D2
- MOVE.W PresetTotal(PC),D3
- MULU.W #$001E,D3
- JSR -$0030(A6) ;Write
- MOVE.L D7,D1
- JSR -$0024(A6) ;Close
- BSR.W ShowAllRight
- JMP RestorePtrCol
-
- CheckPEDnames:
- BSR.W PED_PsetHit ,check the clicked filename
- CLR PED_Action
- JSR SetNormalPtrCol
- RTS
-
-
- PED_OneUp:
- SUBQ.W #1,PEDPos
- TST.W ShiftKeyStatus
- BNE.B poup2
- JSR Wait_4000
- BTST #2,$00DFF016
- BNE.B pedouskip
- poup2:
- SUBQ.W #7,PEDPos
- pedouskip:
- CMP.W #1,PEDPos ;fix
- BGE.B ShowPresetNames
- PED_Top:
- MOVE.W #1,PEDPos
- BRA.B ShowPresetNames
-
- PED_OneDown:
- CMP.W #9,PresetTotal
- BCS.B ShowPresetNames
- JSR Wait_4000
- ADDQ.W #1,PEDPos
- TST.W ShiftKeyStatus
- BNE.B podn2
- BTST #2,$00DFF016
- BNE.B pedodskip
- podn2:
- ADDQ.W #7,PEDPos
- pedodskip:
- MOVE.W PresetTotal,D0
- SUBI.W #10,D0
- CMP.W PEDPos,D0
- BCC.B ShowPresetNames
- pedodsx:
- MOVE.W D0,PEDPos
- BRA.B ShowPresetNames
-
- PED_Bottom:
- MOVE.W PresetTotal(PC),D0
- SUBI.W #11,D0
- BMI.B PED_Top
- ADDQ.W #1,D0
- BRA.B pedodsx
-
- ShowPresetNames:
- BSR.W DctMainScr1_7
- CMP.W #0,PresetTotal ;plst empty?
- BEQ.S mekka ;yes
-
- MOVE.W #2321,D6 ;old #$1221 y-position global list
- MOVEQ #9,D7 ; max line numbers
- MOVE.L PLSTmem(PC),D0
- SUB #30,D0 ;fix
- BNE.B ShowPresetNames2
- mekka: RTS
-
- ShowPresetNames2:
- MOVEA.L D0,A5
- MOVE.W PEDPos(PC),D0
- MULU.W #30,D0
- ADDA.L D0,A5
- spndploop:
- TST.B (A5)
- BNE.B spndploop2
- RTS
-
- spndploop2:
- LEA PresetNameText,A1
- MOVEQ #$15,D0
- spnloop:
- MOVE.B #' ',(A1)+ ;empty string
- DBRA D0,spnloop
- MOVEA.L A5,A0
- ADDQ.L #3,A0
- LEA -$0016(A1),A1
- spnloop2:
- MOVE.B (A0)+,D0
- BEQ.B DisplayPreset
- MOVE.B D0,(A1)+
- BRA.B spnloop2
-
- fitutexttab:
- dc.b ' 0+1+2+3+4+5+6+7-8-7-6-5-4-3-2-1'
-
- ;--------- output for PED listview --------------------
-
- DisplayPreset:
- MOVE #19,TextLength
- LEA PresetNameText,A0 ;sample name text
- MOVE D6,D1
- MULU #2,D1 ;fix offset*2 new for 3.30
- SUB #1,D1
- MOVE D1,TextOffset
- BSR.W ShowText2 ;fix old Showtext3
-
- ADD #20,D6
- MOVE D6,TextOffset
- MOVEQ #0,D0
- MOVE.B 24(A5),D0
- AND.B #$0F,D0
- ADD D0,D0
- LEA fitutexttab(PC,D0.W),A0
-
- MOVE #2,TextLength ;length
- MOVE D6,D1 ;fix new
- MULU #2,D1 ;fix new
- SUB #21,D1 ;fix new
- MOVE D1,TextOffset ;fix new
-
- BSR.W ShowText2 ;fix sample finetune text
- MOVE 22(A5),D0
- ADD D0,D0
- MOVE D0,WordNumber
- ADDQ #1,TextOffset
- BSR.W PrintHexWord ;sample length text
- MOVE 26(A5),D0
- ADD D0,D0
- MOVE D0,WordNumber
- ADDQ #1,TextOffset
- BSR.W PrintHexWord ;sample repeat text
- MOVE 28(A5),D0
- ADD D0,D0
- MOVE D0,WordNumber
- ADDQ #1,TextOffset
- BSR.W PrintHexWord ;sample replen text
- ADDI.W #$00DC,D6
- LEA $001E(A5),A5
- DBRA D7,spndploop
- RTS
-
- PED_EnterPath:
- MOVE #$12,D1
- JSR StorePtrCol
- JSR SetWaitPtrCol
- CLR.L EditMode
- LEA PEdDefaultPath,A6 ;old 6
- JSR UpdateLineCurPos
- MOVE.L A6,TextEndPtr
- MOVE.L A6,ShowTextPtr
- ADD.L #31,TextEndPtr
- MOVE.W #20,TextLength
-
- MOVE.L #178*2-18,A4 ;fix x-position entertext
-
- JSR GetTextLine
- CLR.L TextEndPtr
- JMP RestorePtrCol
-
- PED_Disk:
- JSR StorePtrCol
- JSR SetWaitPtrCol
- CLR.L EditMode
- CLR.B SndDiskNum0
- CLR.B SndDiskNum1
- LEA SndDiskNum0(PC),A6
- MOVE.L A6,TextEndPtr
- MOVE.L A6,ShowTextPtr
- ADDQ.L #2,TextEndPtr
- MOVE.W #2,TextLength
- MOVEA.L #$000004C5,A4
- MOVE.B #3,EnterTextFlag
- JSR GetTextLine
- LEA SndDiskNum0(PC),A6
- MOVE.B #':',2(A6)
- CLR.B EnterTextFlag
- CLR.L TextEndPtr
- JMP RestorePtrCol
-
- ShowPEDnumbers:
- MOVE.W PresetTotal,WordNumber
- MOVE.W #$0835,TextOffset
- BSR.W Print4DecDigits ;preset numbers
- LEA PEdDefaultPath,A0 ;PEdDefaultPath
- MOVE.W #$0152,D1
- MOVEQ #$14,D0
- BSR.W ShowText3 ;default path
- LEA PedDefaultVol,A0
- MOVE.W #$04C2,D1
- MOVEQ #6,D0
- BRA.W ShowText3
-
- PED_PsetHit: CMP #1,PresetTotal ;PLST empty ?
- BEQ.S pedphend
-
- MOVE MouseX2(PC),D0
- MOVE D1,D0
- SUB #59,D0
- DIVU #6,D0
- MOVE.L D0,D1
- SWAP D1
- CMP #5,D1
- BEQ.S pedphend
- MOVE D0,D2
-
- ADD PEDPos(PC),D2
- CMP PresetTotal(PC),D2 ;how many
- BHI.S pedphend
- MULU #30,D0 ;xposition mem
- MOVE.L PLSTmem(PC),A5
- ADD.L D0,A5
- MOVE PEDPos(PC),D0
- SUB #1,D0
- MULU #30,D0
- ADD.L D0,A5
- TST PED_Action
- BEQ.S PED_CopyName
- CMP.W #1,PED_Action
- BEQ.S PED_DoDelete
- pedphend: RTS
-
- PED_CopyName: LEA PresetName(PC),A0
- MOVEQ #21,D0
-
- pedcnloop: MOVE.B (A5)+,D1
- BNE.S pedcnskip
- MOVE.B #' ',D1
- pedcnskip:
- MOVE.B D1,(A0)+
- DBRA D0,pedcnloop
- MOVEQ #0,D0
- MOVE.B 2(A5),D0
- ANDI.B #$0F,D0
- ADD.W D0,D0
- LEA fitutexttab(PC),A1
- LEA (A1,D0.W),A1
- LEA PsetVolText,A0
- MOVE.B #' ',-1(A0)
- MOVE.B (A1)+,(A0)+
- MOVE.B (A1),(A0)
- MOVE.W (A5),D0
- ADD.W D0,D0
- LEA 6(A0),A0
- BSR.W IntToHexASCII
- MOVE.W 4(A5),D0
- ADD.W D0,D0
- LEA 9(A0),A0
- BSR.W IntToHexASCII
- LEA 9(A0),A0
- MOVE.W 6(A5),D0
- ADD.W D0,D0
- BSR.W IntToHexASCII
- BRA.W PossibleEdit
-
- PED_DoDelete:
- CLR.W PED_Action
- LEA DeletePresetText,A0
- JSR AreYouSure
- BEQ.B PED_DoDelete2
- RTS
-
- PED_DoDelete2:
- MOVEA.L PLSTmem(PC),A1
- MOVE.W PresetTotal(PC),D0
- MULU.W #$001E,D0
- ADDA.L D0,A1
- pedddloop:
- MOVE 30(A5),(A5)
- ADDQ.L #2,A5
- CMP.L A5,A1
- BHI.S pedddloop
- CLR.B (A5)
- SUBQ #1,PresetTotal
- SUB.L #30,MaxPLSTOffset
- MOVE PEDPos(PC),D0
- ADD #9,D0
- CMP PresetTotal(PC),D0
- BHI.S pedddskip
- SUBQ #1,PEDPos
-
- pedddskip:
- BSR.W ShowPEDnumbers
- BSR.W PED_OneUp
- BSR.W ShowPresetNames
- JSR SetNormalPtrCol
- JSR StorePtrCol
- RTS
-
- ;sepc: JMP SetErrorPtrCol ;not used
-
- PLSTisFull:
- LEA PLSTFullText(PC),A0
- BSR.W ShowStatusText
- JMP SetErrorPtrCol
-
- PED_DeleteDisk:
- LEA DelDiskText(PC),A0
- MOVE.B SndDiskNum0(PC),10(A0)
- MOVE.B SndDiskNum1(PC),11(A0)
- JSR AreYouSure
- BEQ.B PED_DelDD2
- RTS
-
- PED_DelDD2:
- JSR StorePtrCol
- JSR SetWaitPtrCol
- MOVEA.L PLSTmem(PC),A0
- MOVEA.L A0,A1
- MOVE.W PresetTotal(PC),D0
- MULU.W #$001E,D0
- ADDA.L D0,A1
- MOVE.L SndDiskNum0-1(PC),D1 ;SndDiskNum0-1
- MOVE.L #$FF5F5FFF,D2
- AND.L D2,D1
- peddslo:
- MOVE.L 2(A0),D0
- AND.L D2,D0
- CMP.L D1,D0
- BNE.B peddsno
- MOVEA.L A0,A2
- peddslp:
- MOVE.W $001E(A0),(A0)+
- CMPA.L A1,A0
- BCS.B peddslp
- SUBQ.W #1,PresetTotal
- SUBI.L #30,MaxPLSTOffset
- MOVEA.L A2,A0
- BRA.B peddsn1
-
- peddsno:
- LEA 30(A0),A0
- peddsn1:
- CMPA.L A1,A0
- BCS.B peddslo
- MOVE.W #1,PEDPos
- BSR.W ShowPEDnumbers
- BSR.W ShowPresetNames
- JMP RestorePtrCol
-
- DelDiskText:
- dc.b 'Delete ST-.. ?',0,0
-