Jeff Kandles Cooperliste stürzt am orig. A1200 ab.


  • Alchemy
  • 796 Views 13 replies

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Jeff Kandles Cooperliste stürzt am orig. A1200 ab.

    Hi Leute,

    ich ziehe gerade Jeff Kandles ASM Course durch.
    Ich benutze Seka 3.2 und bei Teil 4 ist so ne kleine Cooperliste.

    Leider stürzt es immer ab, so das der Amiga neu startet.

    Ich habe das Prog im Chipram geladen.

    Meine vermutung ist, das es wegen Workbench 3.1 ist, und die OpenLibrary nicht bei -552 liegt.
    Openlibrary = -551

    Eventuell hat es auch mit der Permit = -138 zu tun. Was ja Multitasking wieder erlaubt.

    Leider habe ich nur das Amiga Intern für WB 1.3.

    PS: Wie wir ja wissen, sind tiefere Informationen über den Amiga ja heutzutage Mangelware.

    Nachtrag:

    Ich habe das Listing hier gefunden:

    ; Setting up a simple copperlist ;
    No (c)ode by aLpHa oNe! ; ==============================
    section flashtro,code_c

    move.l 4.w,a6 ; Get base of exec lib
    lea gfxlib(pc),a1 ; Adress of gfxlib string to a1
    jsr -408(a6) ; Call OpenLibrary()
    move.l d0,gfxbase ; Save base of graphics.library

    move.l #cop,$dff080 ; Set new copperlist

    mouse: btst #6,$bfe001 ; Left mouse clicked ?
    bne.b mouse ; No, continue loop!

    move.l gfxbase(pc),a1 ; Base of graphics.library to a1
    move.l 38(a1),$dff080 ; Restore old copperlist
    jsr -414(a6) ; Call CloseLibrary()
    moveq #0,d0 ; Over.. rts ; and out! ; Stuff ; *****

    cop:

    dc.w $0106,$0000,$01fc,$0000 ; AGA compatible
    dc.w $0120,$0000,$0122,$0000 ; Clear spriteptrs
    dc.w $0124,$0000,$0126,$0000
    dc.w $0128,$0000,$012a,$0000
    dc.w $012c,$0000,$012e,$0000
    dc.w $0130,$0000,$0132,$0000
    dc.w $0134,$0000,$0136,$0000
    dc.w $0138,$0000,$013a,$0000
    dc.w $013c,$0000,$013e,$0000
    dc.w $0100,$0200 ; 0 Bitplanes
    dc.w $0180,$0000 ; Color00 = black
    dc.w $0182,$0fff ; Color01 = white
    dc.w $700f,$fffe ; Wait VPos $70
    dc.w $0180,$0f00 ; Color00 = red
    dc.w $d00f,$fffe ; Wait VPos $d0
    dc.w $0180,$0ff0 ; Color00 = yellow
    dc.w $ffff,$fffe

    gfxlib: dc.b "graphics.library",0,0
    gfxbase: dc.l 0

    Ist doch mehr umzuwandeln als gedacht.

    The post was edited 1 time, last by Alchemy ().

  • Hi ogd,

    Aminet.de -> asm-course2.lha

    Der beste Kurs, wo man Amiga Assembler garantiert Kapiert.

    Leider nur für den A500, aber das macht nichts, es macht Spaß und vermitelt viele nützliche Grundlagen, und der Kurs ist nicht langweilig.

    Moment ich kann dir ein Dateianhang geben:
    Asm-Course2.lha

    Viel Spaß.

    PS: Wenn Du noch Philez brauchst wie Seka v3.2, Noiseripper , Soundtraker..... nur DPaint darf ich hier nicht Uppen.
  • Tja, stürzt auch ab, auch die Modifizierte Version die ich für Seka geschrieben habe.
    Depac zeigt nur errors.

    Naja, ...... werde wohl mich länger damit beschäftigen müssen, bis ich was sehe. :wand
  • Da mir der Zugriff verwehrt ist, hier noch mal wegen Jeff Kandles Copperlist.

    Er funktioniert im Original Amiga 500.

    Ist natürlich etwas Ärgerlich, da ich zusehen muss, wie ich es unter AGA zum laufen bekomme.
    Mit nen A500 kann ich nur mit Disketten Arbeiten. :wand

    Naja, vielleicht ergibt sich das, wenn ich mit den A500 in Assembler mehr Erfahrungen sammle.

    PS:Warum mir mein eigenes Thema: Jeff Kandles Cooperliste stürzt am orig. A1200 ab. verwehrt wird, werde ich hoffentlich per PN vom Admin erfahren.
  • Einigkeit, und Recht, und Freiheit....
    Hier sieht man Seka v3.2

    Jetzt nur noch paar bewegende Rasterbalken, nen Logo, Sternenhintergrund und Scrollschrift, und ich habe das, was ich mir seit 20 Jahren vorgenommen habe....

    Ein Intro.... :D

    PS: Ich habe 2 Intern Bücher, eins mit Kaffeeflecken. Das Licht ist ein Teelicht, keine Lampe.
    Leider kann die Digikamera nicht so richtig die Schummrige Atmosphäre einfangen.

    PPS: Selbstverständlich habe ich das nicht nur so abgetippt, sondern auch begriffen was ich so abgetippt habe.

    (Da werden sicherlich bei einigen schöne Erinnerungen wach werden.) :D

    The post was edited 1 time, last by Alchemy ().

  • Alchemy wrote:

    Aminet.de -> asm-course2.lha

    danke, das file schlummert schon seit einiger zeit auf meiner festplatte, sehe ich gerade ...

    Alchemy wrote:

    PS: Wenn Du noch Philez brauchst wie Seka v3.2, Noiseripper , Soundtraker..... nur DPaint darf ich hier nicht Uppen.

    die tools habe ich soweit alle. nochmal danke für das angebot.

    Alchemy wrote:

    Das Licht ist ein Teelicht, keine Lampe. Leider kann die Digikamera nicht so richtig die Schummrige Atmosphäre einfangen.

    wenn da mal deine freundin nicht eifersüchtig wird.
  • Hallo,

    ich habe das Thema hierher verschoben, da der Coder-unter-sich Bereich C64 spezifisch bleiben sollte. Leider sind beim Verschieben Probleme aufgetreten, daher die Unanhmlichkeiten, sorry. Ein Supermoderator hat das dann gefixt.

    Viele Grüße
    hexagon
  • Alchemy, schau mal hier: aminet.net/search?query=demostartup
    Ansonsten kannst Du auch mal den Code im Anhang probieren.

    Source Code

    1. *******************************************************************************
    2. * Program : DemoStartup *
    3. * Version : 3.00 *
    4. * Decription : Startupcode for Demos on all machines *
    5. * Getting the VBR. *
    6. * Saving DMACON. *
    7. * Saving and reseting WB view modes. *
    8. * Owning/Disowning the blitter. *
    9. * Pal/Ntsc/AGA modes. *
    10. * Killing multitasking. *
    11. * Killing interrupts. *
    12. * Author : EPSILON *
    13. * Initial release : ? *
    14. * Last modification : 08.05.93 Draco : ported to ASM-One V1.08a *
    15. *******************************************************************************
    16. ***********************************************************
    17. * Includes
    18. ***********************************************************
    19. incdir "DevpacAm:include/"
    20. include "exec/exec_lib.i"
    21. include "exec/execbase.i"
    22. include "graphics/gfxbase.i"
    23. include "graphics/graphics_lib.i"
    24. include "hardware/custom.i"
    25. ***********************************************************
    26. * Other Macros
    27. ***********************************************************
    28. CALL MACRO
    29. jsr _LVO\1(a6)
    30. ENDM
    31. WaitBlit: macro
    32. tst.w $2-2(a5)
    33. .\@ btst.b #6,$2-2(a5)
    34. bne.s .\@
    35. endm
    36. WRAST: macro ; Wait for a scanline
    37. .\@ move.l $4-2(a5),d0
    38. lsr.l #8,d0
    39. and.w #$1FF,d0
    40. cmp.w #\1,d0
    41. bne.b .\@
    42. endm
    43. ***********************************************************
    44. * Other Equates
    45. ***********************************************************
    46. ***********************************************************
    47. section TheCode,code
    48. bsr.w TakeSystem
    49. bsr.w start
    50. MAIN: btst #6,$BFE001 ; Left button pressed?
    51. bne.w MAIN
    52. bsr.w RestoreSystem
    53. rts
    54. TakeSystem: movea.l 4.w,a6 ; exec base
    55. lea $dff002,a5 ; custom chip base + 2
    56. lea GraphicsName,a1 ; "graphics.library"
    57. moveq #0,d0 ; any version
    58. CALL OpenLibrary ; open it.
    59. move.l d0,gfx_base ; save pointer to gfx base
    60. beq.b .exit ; if we got a NULL, then exit
    61. move.l d0,a6 ; for later callls...
    62. move.l gb_ActiView(a6),OldView ; save old view
    63. move.w #0,a1 ; clears full long-word
    64. CALL LoadView ; Open a NULL view (resets display
    65. ; on any Amiga)
    66. CALL WaitTOF ; Wait twice so that an interlace
    67. CALL WaitTOF ; display can reset.
    68. CALL OwnBlitter ; take over the blitter and...
    69. CALL WaitBlit ; wait for it to finish so we
    70. ; safely use it as we please.
    71. movea.l 4.w,a6 ; exec base
    72. CALL Forbid ; kill multitasking
    73. CALL Disable ; kill interrupts so that we can
    74. ; safely install our own.
    75. .pal: move.w $7c-2(a5),d0 ; AGA register...
    76. cmpi.b #$f8,d0 ; are we AGA?
    77. bne.b .not_aga ; nope.
    78. st AGA ; set the AGA flag.
    79. .not_aga: move.w dmaconr-2(a5),d0 ; old DMACON bits
    80. ori.w #$8000,d0 ; or it set bit for restore
    81. move.w d0,OldDMACon ; save it
    82. .exit: rts
    83. ***********************************************************
    84. RestoreSystem: lea $dff002,a5 ; custom chip base + 2
    85. move.w OldDMACon,dmacon-2(a5) ; restore old dma bits
    86. move.l OldView,a1 ; old Work Bench view
    87. move.l gfx_base,a6 ; gfx base
    88. CALL LoadView ; Restore the view
    89. CALL DisOwnBlitter ; give blitter back to the system.
    90. move.l gb_CopInit(a6),$80-2(a5) ; restore system clist
    91. move.l a6,a1
    92. movea.l 4.w,a6 ; exec base
    93. CALL CloseLibrary
    94. movea.l 4.w,a6 ; exec base
    95. CALL Enable ; restore ints.
    96. CALL Permit ; restart multitasking
    97. rts
    98. ***********************************************************
    99. START: lea $dff002,a5
    100. bsr.b InstallBmaps
    101. bsr.w InstallSprites
    102. move.l #Copper,$80-2(a5) ; New copperlist
    103. move.w #$7FFF,$96-2(a5) ; kill all dma
    104. move.w #$87E0,$96-2(a5) ; turn on what I need
    105. rts
    106. ***********************************************************
    107. InstallBmaps: lea BmapPtrs+2,a0 ; Insert planes in copper
    108. move.l #Bmap+(0*200*40),d0
    109. move.w d0,4(a0)
    110. swap d0
    111. move.w d0,(a0)
    112. move.l #Bmap+(1*200*40),d0
    113. move.w d0,12(a0)
    114. swap d0
    115. move.w d0,8(a0)
    116. move.l #Bmap+(2*200*40),d0
    117. move.w d0,20(a0)
    118. swap d0
    119. move.w d0,16(a0)
    120. move.l #Bmap+(3*200*40),d0
    121. move.w d0,28(a0)
    122. swap d0
    123. move.w d0,24(a0)
    124. move.l #Bmap+(4*200*40),d0
    125. move.w d0,36(a0)
    126. swap d0
    127. move.w d0,32(a0)
    128. move.l #Bmap+(5*200*40),d0
    129. move.w d0,44(a0)
    130. swap d0
    131. move.w d0,40(a0)
    132. rts
    133. ***********************************************************
    134. InstallSprites: move.l #NullSpr,d0 ; Insert sprites in copper
    135. lea SprPtrs+2,a1
    136. move.w d0,4(a1)
    137. move.w d0,12(a1)
    138. move.w d0,20(a1)
    139. move.w d0,28(a1)
    140. move.w d0,36(a1)
    141. move.w d0,44(a1)
    142. move.w d0,52(a1)
    143. move.w d0,60(a1)
    144. swap d0
    145. move.w d0,(a1)
    146. move.w d0,8(a1)
    147. move.w d0,16(a1)
    148. move.w d0,24(a1)
    149. move.w d0,32(a1)
    150. move.w d0,40(a1)
    151. move.w d0,48(a1)
    152. move.w d0,56(a1)
    153. rts
    154. ***********************************************************
    155. section THEDATA,data_c
    156. Copper: ; Display size
    157. dc.l $00920038,$009400D0,$008E2C81,$0090F4C1
    158. ; Bplcon0, bplcon1, and modulos
    159. dc.l $01005200,$01020000,$01080000,$010A0000
    160. ; Sprite pointers
    161. SprPtrs:dc.l $01200000,$01220000,$01240000,$01260000,$01280000,$012A0000
    162. dc.l $012C0000,$012E0000,$01300000,$01320000,$01340000,$01360000
    163. dc.l $01380000,$013A0000,$013C0000,$013E0000
    164. ; colors
    165. dc.l $01800000,$01820003,$01840004,$01860005,$01880006,$018a0007
    166. dc.l $018c0008,$018e0009,$0190000a,$0192000b,$0194000c,$0196000d
    167. dc.l $0198000e,$019a000f,$019c020f,$019e030f,$01a0040f,$01a2050f
    168. dc.l $01a4060f,$01a6070e,$01a8080d,$01aa090c,$01ac0a0b,$01ae0b0a
    169. dc.l $01b00c09,$01b20d08,$01b40e07,$01b60f06,$01b80e35,$01ba0d44
    170. dc.l $01bc0c53,$01be0b62
    171. ; Bit Plane pointers
    172. BmapPtrs:dc.l $00E00000,$00E20000,$00E40000,$00E60000,$00E80000,$00EA0000
    173. dc.l $00EC0000,$00EE0000,$00F00000,$00F20000,$00F40000,$00F60000
    174. dc.l -2,-2
    175. ***********************************************************
    176. section my_bum,data
    177. GraphicsName: GRAFNAME ; name of gfx library
    178. EVEN
    179. ***********************************************************
    180. section thpt,bss_c
    181. gfx_base ds.l 1 ; pointer to graphics base
    182. OldView ds.l 1 ; old Work Bench view addr.
    183. OldDMACon: ds.w 1 ; old dmacon bits
    184. AGA: ds.b 1 ; 0 = ESC/standard, 1 = AGA
    185. even
    186. NullSpr: ds.l 16 ; null sprite data
    187. Bmap: ds.b 8000*5 ; screen buffer
    188. END
    Display All
  • Hallo Hexagon,

    vielleicht wäre mal ne Unterredung mit C64Doc nötig, um eine Amiga Programmierbereich zu öffnen.
    Unter Software ist das etwas unglücklich gewählt.
    Vielleicht sollte man speziell den schon vorhandenen ASM bereich C=64 Bereich nennen.

    PS: Schade das der Amiga hier nicht so "ernst" genommen wird. Wenn ich mein A500 einschalte, dann ist da nur der Unterschied, das beim C=64 die Floppy extern ist, und beim A500 die Floppy schon eingebaut. A500 ist wie der große "Bruder" zum C=64 für mich. Jedenfalls Arbeite ich genauso mit den A500 wie mit den C=64. Diskette rein und los gehts.

    Hi Draco,

    vielen lieben Dank.
    Ich werde mich auf jeden fall mit den Quellcode auseinander setzen.
    Auch wenn ich zurzeit mich voll mit den A500 beschäftige, weil da der Kurs funktioniert, und ich habe ja noch das Amiga Intern.

    Trotz allen ist jede Info über den AGA schon jetzt wichtig für mich.
    Mit den ASMone habe ich mich nicht beschäftigt, aber das kommt noch.

    Mit Macros habe ich bisher wenig erfahrung.
    Ich "hacke" mehr mit direkter Hardwareprogrammierung in den A500.

    Dein fortgeschrittenes Strukturiertes Listing ist sicherlich für die Zukunft vorzuziehen.