home *** CD-ROM | disk | FTP | other *** search
-
- XREF SysRequest,Request,TypeAsk,TitelBitmap
- XDEF _DCScrBase,TopazName
-
- ;*********************************************************
- ;** _ _ **
- ;** /| \ DELUXE CHANGER V1.0 / |\ **
- ;** /_|_/ (C) 1990/91 BY ANDREAS RÖPKE \_|_\ **
- ;** / | \ THIS IS PUBLIC DOMAIN SOFTWARE / | \ **
- ;** **
- ;** MADE WITH THE A68K ASSEMBLER & AMIGA 500 1.3 **
- ;** WORK WITH KICKSTART 2.0 UNCERTAIN **
- ;** **
- ;*********************************************************
-
- INCLUDE exec/exec_lib.i
- INCLUDE intuition/intuition_lib.i
- INCLUDE libraries/dos_lib.i
- INCLUDE graphics/graphics_lib.i
- INCLUDE help.i
-
- SECTION "Startup",CODE
-
- Start move.l 4,a6 ;DOS-Basis finden
- lea $17a(a6),a0 ;und merken
- lea DOSName,a1
- CALLSYS FindName
- move.l d0,_DOSBase
- move.l $114(a6),a4 ;Aufruf von diesem Task ?
- tst.l $ac(a4)
- bne.s FromCLI
- lea 92(a4),a0
- CALLSYS WaitPort
- lea 92(a4),a0
- CALLSYS GetMsg
- move.l d0,-(sp)
- jsr DeluxeStart
- CALLEXEC Forbid
- move.l (sp)+,a1
- CALLSYS ReplyMsg
- bra EndAll
- FromCLI CALLSYS Forbid
- PEEKL Start-4,SegmentPtr
- clr.l Start-4
- move.l #ProcessName,d1
- moveq.l #9,d2
- move.l #DeluxeStart-4,d3
- asr.l #2,d3
- move.l #3000,d4
- CALLDOS CreateProc
- EndAll moveq.l #0,d0
- rts
-
- SECTION "Main",CODE
-
- DeluxeStart
- bsr GetLibs
- SADD DCScreen,a0
- CALLPC _IntuitionBase,OpenScreen
- beq NoScr
- POKEL d0,_DCScrBase
- PEEKL _DCScrBase,a0
- lea $2c(a0),a0
- SADD Colors,a1
- moveq.l #4,d0
- CALLPC _GfxBase,LoadRGB4
- SADD DCWindow,a0
- CALLPC _IntuitionBase,OpenWindow
- beq NoWind
- POKEL d0,_DCWindBase
- move.l d0,a1
- POKEL $32(a1),_DCWindRast
- POKEL $56(a1),_DCWindUser
- bsr MakeTop
- DCWait PEEKL _DCWindUser,a0
- CALLEXEC WaitPort
- PEEKL _DCWindUser,a0
- CALLSYS GetMsg
- move.l d0,a1
- move.l $14(a1),d4
- move.l $1c(a1),a4
- CALLSYS ReplyMsg
- cmpi.b #$40,d4
- beq.s GadUp
- bra DCWait
- GadUp cmpi.w #"QU",$26(a4)
- beq.s DCQuit
- cmpi.w #"LD",$26(a4)
- bne.s NoLD
- bsr Load
- bra DCWait
- NoLD cmpi.w #"CV",$26(a4)
- bne.s NoCV
- bsr Convert
- bra DCWait
- NoCV cmpi.w #"SV",$26(a4)
- bne.s DCWait
- bsr Save
- bra DCWait
- DCQuit PEEKL _DCWindBase,a0
- CALLPC _IntuitionBase,CloseWindow
- NoWind PEEKL _DCScrBase,a0
- CALLPC _IntuitionBase,CloseScreen
- NoScr bsr ASCBufTest
- bsr FileBufTest
- tst.l SegmentPtr
- beq.s WasWork
- CALLEXEC Forbid
- PEEKL SegmentPtr,d1
- CALLPC _DOSBase,UnLoadSeg
- WasWork moveq.l #0,d0
- rts
-
- SegmentPtr ds.l 1
-
- *** File laden
-
- Load bsr FileBufTest
- SADD LoadTitel,a0
- jsr Request
- beq NoLoad
- move.l d0,d1
- move.l #1005,d2
- CALLPC _DOSBase,Open
- bne ScrOK
- SADD ErrNoFile,a0
- jsr SysRequest
- bra NoLoad
- ScrOK move.l d0,d6
- move.l d6,d1
- moveq.l #0,d2
- moveq.l #1,d3
- CALLSYS Seek
- move.l d6,d1
- moveq.l #0,d2
- moveq.l #-1,d3
- CALLSYS Seek
- POKEL d0,FileLenght
- moveq.l #1,d1
- CALLEXEC AllocMem
- bne ScrBufferOK
- SADD ErrNoMem,a0
- jsr SysRequest
- bra NoScrBuffer
- ScrBufferOK
- POKEL d0,FileBuffer
- move.l d6,d1
- PEEKL FileBuffer,d2
- PEEKL FileLenght,d3
- CALLPC _DOSBase,Read
- SADD DoneIt,a0
- jsr SysRequest
- NoScrBuffer
- move.l d6,d1
- CALLPC _DOSBase,Close
- NoLoad rts
-
- *** File nach ASC konvertieren
-
- Convert bsr ASCBufTest
- tst.l FileBuffer
- bne.s OKConv
- SADD ErrEmpty,a0
- jsr SysRequest
- bra NoConv
- OKConv jsr TypeAsk
- cmpi.w #"CL",d7
- beq NoConv
- POKEL d0,ASCLenght
- move.l #1!$10000,d1
- CALLEXEC AllocMem
- bne.s MemGot
- SADD ErrNoMem,a0
- jsr SysRequest
- bra NoConv
- MemGot POKEL d0,ASCBuffer
- PEEKL FileLenght,d5
- PEEKL FileBuffer,a2
- PEEKL ASCBuffer,a3
- divu #16,d5
- tst.w d5
- beq NoMore16
- subq.w #1,d5
- LineLoop
- PEEKL ASCBuffer,d0
- add.l ASCLenght(pc),d0
- sub.l #100,d0
- cmpa.l d0,a3
- bls Enough
- SADD ErrNoBuffer,a0
- jsr SysRequest
- bra NoConv
- Enough bsr ConstructFront
- move.w #7,d4
- ConLoop bsr ConstructPrefix
- move.w (a2)+,d2
- bsr D2ToHex
- cmpi.w #0,d4
- beq NoKomma
- move.b #44,(a3)+
- NoKomma dbra d4,ConLoop
- dbra d5,LineLoop
- NoMore16
- swap d5
- tst.w d5
- beq NoEnd
- addq.l #1,d5
- lsr.w #1,d5
- subq.l #1,d5
- bsr ConstructFront
- EndLoop bsr ConstructPrefix
- move.w (a2)+,d2
- bsr D2ToHex
- cmpi.w #0,d5
- beq LastByte
- move.b #44,(a3)+
- LastByte
- dbra d5,EndLoop
- NoEnd suba.l ASCBuffer(pc),a3
- move.l a3,ASCLast
- SADD DoneIt,a0
- jsr SysRequest
- NoConv rts
-
- ConstructPrefix
- cmpi.w #"AS",d7
- bne NoAss2
- move.b #"$",(a3)+
- bra Ques2
- NoAss2 cmpi.w #"CS",d7
- bne Ques2
- move.b #"0",(a3)+
- move.b #"x",(a3)+
- Ques2 rts
-
- ConstructFront
- cmpi.w #"BS",d7
- bne NoBas1
- SADD BasicFront,a0
- CopyBas move.b (a0)+,(a3)+
- cmpi.b #0,(a0)
- bne.s CopyBas
- bra Ques1
- NoBas1 cmpi.w #"AS",d7
- bne NoAss1
- SADD AssFront,a0
- AssCopy move.b (a0)+,(a3)+
- cmpi.b #0,(a0)
- bne.s AssCopy
- bra Ques1
- NoAss1 move.b #10,(a3)+
- move.b #9,(a3)+
- Ques1 rts
-
- *** wandelt d2 nach Hex-ASC
-
- D2ToHex moveq.w #3,d1
- D2Next rol.w #4,d2
- move.w d2,d3
- and.b #$f,d3
- add.b #48,d3
- cmp.b #58,d3
- bcs D2Out
- addq.b #7,d3
- D2Out move.b d3,(a3)+
- dbra d1,D2Next
- rts
-
- *** Save
-
- Save tst.l ASCBuffer
- bne.s OKSave
- SADD ErrEmpty,a0
- jsr SysRequest
- bra NoSave
- OKSave SADD SaveTitel,a0
- jsr Request
- beq NoSave
- move.l d0,d1
- move.l #1006,d2
- CALLPC _DOSBase,Open
- bne SaveFileOK
- SADD ErrNoFile,a0
- jsr SysRequest
- bra NoSave
- SaveFileOK
- move.l d0,-(sp)
- move.l (sp),d1
- PEEKL ASCBuffer,d2
- PEEKL ASCLast,d3
- CALLSYS Write
- move.l (sp)+,d1
- CALLSYS Close
- SADD DoneIt,a0
- jsr SysRequest
- NoSave rts
-
- *** Buffer-Test & Speicher freigeben
-
- FileBufTest
- tst.l FileBuffer
- beq FileBufEmpty
- PEEKL FileBuffer,a1
- PEEKL FileLenght,d0
- CALLEXEC FreeMem
- POKEL #0,FileBuffer
- FileBufEmpty
- rts
-
- ASCBufTest
- tst.l ASCBuffer
- beq ASCBufEmpty
- PEEKL ASCBuffer,a1
- PEEKL ASCLenght,d0
- CALLEXEC FreeMem
- POKEL #0,ASCBuffer
- ASCBufEmpty
- rts
-
- *** Titel Image/Border/Text ausgeben
-
- MakeTop PEEKL _DCWindRast,a0
- SADD TitelImage,a1
- moveq.l #0,d0
- moveq.l #0,d1
- CALLPC _IntuitionBase,DrawImage
- PEEKL _DCWindRast,a0
- SADD Border0,a1
- moveq.l #0,d0
- moveq.l #0,d1
- CALLSYS DrawBorder
- PEEKL _DCWindRast,a0
- SADD TitelText,a1
- moveq.l #0,d0
- moveq.l #0,d1
- CALLSYS PrintIText
- rts
-
- *** Library-Zeiger suchen und merken
-
- GetLibs move.l 4,a6
- lea $17a(a6),a0
- SADD IntName,a1
- CALLSYS FindName
- POKEL d0,_IntuitionBase
- lea $17a(a6),a0
- SADD GrafName,a1
- CALLSYS FindName
- POKEL d0,_GfxBase
- rts
-
- IntName INTNAME
- DOSName DOSNAME
- GrafName GRAFNAME
- _IntuitionBase ds.l 1
- _DOSBase ds.l 1
- _GfxBase ds.l 1
-
- *** Data-Teil
-
- DCScreen dc.w 0,0,640,200,2
- dc.b 0,1
- dc.w $8000,1
- dc.l Topaz8,0,0,0
- Colors dc.w $888,0,$fff,$555
- DCWindow dc.w 0,0,640,200
- dc.b -1,-1
- dc.l 8!$40,$800!$1000!$10000,DCGad0,0,0
- _DCScrBase dc.l 0,0
- dc.w 0,0,0,0,15
- _DCWindBase ds.l 1
- _DCWindRast ds.l 1
- _DCWindUser ds.l 1
- DCGad0 dc.l DCGad1
- dc.w 20,68,600,23,2,1,1
- dc.l Border2,Border4,DCText0,0,0
- dc.w "LD"
- dc.l 0
- DCText0 dc.b 1,0,0,0
- dc.w 300-16*4,8
- dc.l 0,DCBytes0,0
- TEXT DCBytes0,<"LOAD BINARY FILE">
- DCGad1 dc.l DCGad2
- dc.w 20,101,600,23,2,1,1
- dc.l Border2,Border4,DCText1,0,0
- dc.w "CV"
- dc.l 0
- DCText1 dc.b 1,0,0,0
- dc.w 300-19*4,8
- dc.l 0,DCBytes1,0
- TEXT DCBytes1,<"CONVERT BINARY FILE">
- DCGad2 dc.l DCGad3
- dc.w 20,134,600,23,2,1,1
- dc.l Border2,Border4,DCText2,0,0
- dc.w "SV"
- dc.l 0
- DCText2 dc.b 1,0,0,0
- dc.w 300-15*4,8
- dc.l 0,DCBytes2,0
- TEXT DCBytes2,<"SAVE ASCII FILE">
- DCGad3 dc.l 0
- dc.w 20,167,600,23,2,1,1
- dc.l Border2,Border4,DCText3,0,0
- dc.w "QU"
- dc.l 0
- DCText3 dc.b 1,0,0,0
- dc.w 300-4*4,8
- dc.l 0,DCBytes3,0
- TEXT DCBytes3,<"QUIT">
-
- *** Titel-Strukturen
-
- TitelImage dc.w 320-17*8,13,17*16,25,1
- dc.l TitelBitmap
- dc.b 1,0
- dc.l 0
- TitelText dc.b 1,0,0,0
- dc.w 320-60*4,43
- dc.l 0,TitelBytes,0
- TEXT TitelBytes,<"(C) WRITTEN 1990/91 BY ANDREAS RÖPKE PUBLIC DOMAIN SOFTWARE">
- LoadTitel dc.b 1,0,0,0
- dc.w 160-14*4,0
- dc.l 0,LoadBytes,0
- TEXT LoadBytes,<"FILE TO LOAD ?">
- SaveTitel dc.b 1,0,0,0
- dc.w 160-14*4,0
- dc.l 0,SaveBytes,0
- TEXT SaveBytes,<"FILE TO SAVE ?">
- DoneIt dc.b 1,0,0,0
- dc.w 140-20*4,0
- dc.l 0,DoneItBytes,0
- TEXT DoneItBytes,<"I`VE DONE IT, MASTER">
-
- *** Fehler
-
- ErrEmpty dc.b 1,0,0,0
- dc.w 140-15*4,0
- dc.l 0,ErrNoLoadBytes,0
- TEXT ErrNoLoadBytes,<"BUFFER IS EMPTY">
- ErrNoFile dc.b 1,0,0,0
- dc.w 140-15*4,0
- dc.l 0,ErrNoFileBytes,0
- TEXT ErrNoFileBytes,<"CAN`T OPEN FILE">
- ErrNoMem dc.b 1,0,0,0
- dc.w 140-21*4,0
- dc.l 0,ErrNoMemBytes,0
- TEXT ErrNoMemBytes,<"CAN`T ALLOCATE MEMORY">
- ErrNoBuffer dc.b 1,0,0,0
- dc.w 140-21*4,0
- dc.l 0,ErrNoBBytes,0
- TEXT ErrNoBBytes,<"SORRY, BUFFER IS FULL">
-
- *** Fonts
-
- Topaz8 dc.l TopazName
- dc.w 8
- dc.b 0,1
- TEXT TopazName,"topaz.font"
-
- *** Borders
-
- Border0 dc.w 20,10
- dc.b 2,0,0,3
- dc.l Pairs0,Border1
- Pairs0 dc.w 599,0,0,0,0,43
- Border1 dc.w 20,10
- dc.b 1,0,0,3
- dc.l Pairs1,0
- Pairs1 dc.w 0,44,599,44,599,1
- Border2 dc.w 0,0
- dc.b 2,0,0,3
- dc.l Pairs24,Border3
- Border3 dc.w 0,0
- dc.b 1,0,0,3
- dc.l Pairs35,0
- Border4 dc.w 0,0
- dc.b 1,0,0,3
- dc.l Pairs24,Border5
- Border5 dc.w 0,0
- dc.b 2,0,0,3
- dc.l Pairs35,0
- Pairs24 dc.w 599,0,0,0,0,21
- Pairs35 dc.w 0,22,599,22,599,1
-
- BasicFront dc.b 10,"DATA ",0
- AssFront dc.b 10,9,9,"dc.w",9,0
- even
-
- ASCBuffer ds.l 1
- ASCLenght ds.l 1
- ASCLast ds.l 1
- FileBuffer ds.l 1
- FileLenght ds.l 1
-
- TEXT ProcessName,<"DeluxeChanger V1.0">
-
- END
-
-
-