Advertisement
glokyfull

code to include 'baserou2.s' in code11

Dec 3rd, 2023 (edited)
1,125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DEBUG2  equ 0
  2.  
  3. ;
  4. ; routine de bases
  5. ;
  6.  
  7. ; utilisation
  8. ;   lea rammovem,a0         ; un buffer de 2294 octet
  9. ;   jsr prepclear32000      ; a appeller un fois genere le code d'effacement de 32000 octet
  10. ;  
  11.  
  12. ;  ***********************************************
  13. prepclear32000      ; a appeler qu'une fois
  14. ; a0 = ram de 571*4 movem repveté +4 dernier movem +4 lea +2 rts   2294 octet
  15. ; 14*4=56 32000/56 = 571  reste 24 octet
  16.  
  17.  
  18.     move.l a0,d0
  19.     move.l d0,clrauto1+2
  20.  
  21.     move.w #571-1,d0
  22.     lea instruction,a1
  23.     move.l (a1)+,d1
  24.     move.l d1,(a0)+         ; lea 32000(a0),a0
  25.     move.l (a1)+,d1
  26. .loop   move.l d1,(a0)+
  27.     dbf d0,.loop
  28.     move.l (a1)+,d1
  29.     move.l d1,(a0)+
  30.     move.w #$4e75,(a0)+
  31.     rts
  32.    
  33.  
  34.  
  35. instruction
  36.     lea 32000(a0),a0
  37.     movem.l d0-d7/a1-a6,-(a0)
  38.     movem.l d0-d5,-(a0)
  39.  
  40. clear32000:         ; ne jamais appeler sans avoir au moins une fois appeler prepclear32000
  41. ; a0 = screen           ; avec a0 = buffer de 2294 octets libre
  42.     moveq #0,d0
  43.     move.l d0,d1
  44.     move.l d0,d2
  45.     move.l d0,d3
  46.     move.l d0,d4
  47.     move.l d0,d5
  48.     move.l d0,d6
  49.     move.l d0,d7
  50.     move.l d0,a1
  51.     move.l d0,a2
  52.     move.l d0,a3
  53.     move.l d0,a4
  54.     move.l d0,a5
  55.     move.l d0,a6
  56. clrauto1    jmp $00000000
  57. instruction_movem
  58.  
  59.     movem.l d0,-(a0)
  60.  
  61.     dc.w %1100000000000000
  62.     dc.w %1110000000000000
  63.     dc.w %1111000000000000
  64.     dc.w %1111100000000000
  65.     dc.w %1111110000000000
  66.     dc.w %1111111000000000
  67.     dc.w %1111111100000000
  68.     dc.w %1111111101000000
  69.     dc.w %1111111101100000
  70.     dc.w %1111111101110000
  71.  
  72.     dc.w %1111111101111000
  73.     dc.w %1111111101111100
  74.     dc.w %1111111101111110
  75.  
  76.  
  77. ;prepclear_arbitrary  ; efface un nombre x paire dans d0 element dans a0
  78. ;; a0 = ram ou le code sera genere
  79. ;
  80. ;   lea instruction,a1
  81. ;   move.w (a1),d2
  82. ;   move.w d2,(a0)+
  83. ;   move.w d0,(a0)+    lea x(a0),a0
  84. ;
  85. ;   divu #14*4,d0
  86. ;   move.l d0,d1
  87. ;   swap d1         ; d1 = reste de 14*4
  88. ;   lea instruction_movem,a2
  89. ;
  90. ;   tst.w d1
  91. ;   beq.s .zero
  92. ;   lsr #2,d1       ; d1/4 = nombre de registre
  93. ;   beq.s .word
  94. ;   move.w (a2)+,(a0)+
  95. ;   subq #1,d1
  96.  ;  add.w d1,d1
  97.  ;  add.w d1,d1
  98.  ;   move.w (a2,d1),(a0)+
  99. ;
  100. ;
  101. ;  
  102. ;   14*4 octet
  103. ;   movem.l d0-d7/a1-a6,-(a0)
  104. ;
  105. ;
  106. ;
  107. ;   move.l a0,d0
  108. ;   move.l d0,clrauto2+2
  109. ;
  110. ;   move.w #571-1,d0
  111. ;   lea instruction,a1
  112. ;   move.l (a1)+,d1
  113. ;   move.l d1,(a0)+         ; lea 32000(a0),a0
  114. ;   move.l (a1)+,d1
  115. ;.loop  move.l d1,(a0)+
  116. ;   dbf d0,.loop
  117. ;   move.l (a1)+,d1
  118. ;   move.l d1,(a0)+
  119. ;   move.w #$4e75,(a0)+
  120. ;   rts
  121.  
  122.  
  123. clear1024a0
  124.     movem.l d0-d7/a1-a6,-(sp)
  125.     moveq #0,d0
  126.     move.l d0,d1
  127.     move.l d0,d2
  128.     move.L d0,d3
  129.     move.l d0,d4
  130.     move.l d0,d5
  131.     move.l d0,d6
  132.     move.l d0,d7
  133.     move.l d0,a1
  134.     move.l d0,a2
  135.     move.l d0,a3
  136.     move.l d0,a4
  137.     move.l d0,a5
  138.     move.l d0,a6
  139.     lea 1024(a0),a0
  140.     rept 18
  141.     movem.l d0-d7/a1-a6,-(a0)
  142.     endr
  143.     movem.l d0-d3,-(a0)
  144.     movem.l (sp)+,d0-d7/a1-a6
  145.     rts
  146.  
  147.  
  148. prepclearoneplan
  149. ; a0 = ram 2 moveq d0 + 2 rts +4000*4 move.w d0,dep(a0) = 16004 octet
  150.  
  151.     move.l a0,d0
  152.     move.l d0,clearoneplan+2
  153.     lea .instruction,a1
  154.     move.w (a1)+,d1
  155.     move.w d1,(a0)+
  156.     move.w #3999,d0
  157. .loop   move.l d1,(a0)+
  158.     addq.w #8,d1
  159.     dbf d0,.loop
  160.     move.w #$4e75,(a0)+
  161.    
  162.  
  163. .instruction
  164.     moveq #0,d0
  165.     move.w d0,$0000(a0)
  166.  
  167. clearoneplan:
  168. ; a0 = screen + 2*numero de plan de 0 a 3
  169.     jmp $000000
  170. mjj_sys_init:
  171.     movem.l     d0-d7/a0-a6,-(sp)
  172.  
  173.     clr.l       -(sp)               ; super mode
  174.     move.w      #$20,-(sp)
  175.     trap        #1
  176.     addq.l      #6,sp
  177.     move.l      d0,_mjj_stack
  178.  
  179.     move.w      #$2700,sr           ; disable ints
  180.  
  181.     lea         _mjj_res,a1
  182.  
  183.     move.b      $FFFF8260.W,(a1)+   ; store resolution
  184.     move.b      $FFFF820A.W,(a1)+   ; store frequency
  185.     move.w      $FFFF820E.W,(a1)+   ; store line width
  186.     move.b      $FFFF8265.W,(a1)+   ; store screen shift
  187.     move.b      $44F.W,(a1)+        ; store screen
  188.     move.b      $450.W,(a1)+
  189.     move.b      $451.W,(a1)+
  190.  
  191.     move.b      $FFFFFA07.W,(a1)+   ; store mfp
  192.     move.b      $FFFFFA13.W,(a1)+
  193.     move.b      $FFFFFA09.W,(a1)+
  194.     move.b      $FFFFFA15.W,(a1)+
  195.     move.b      $FFFFFA17.W,(a1)+
  196.     move.b      $FFFFFA19.W,(a1)+
  197.     move.b      $FFFFFA1B.W,(a1)+
  198.     move.b      $FFFFFA1D.W,(a1)+
  199.  
  200.     lea         $100.W,a0
  201.     REPT 16
  202.         move.l  (a0)+,(a1)+         ; store mfp vectors
  203.     ENDR
  204.  
  205.     move.l      $68.W,(a1)+         ; store hbl
  206.     move.l      $70.W,(a1)+         ; store vbl
  207.     move.w      $484.W,(a1)+        ; store keyboard
  208.  
  209.     lea         $FFFF8240.W,a0      ; store & clear palette
  210.     move.w      (a0),d0
  211.     REPT 16
  212.         move.w  (a0),(a1)+
  213.         IFEQ    DEBUG2
  214.         move.w  d0,(a0)+
  215.         ENDC
  216.     ENDR
  217.  
  218. ;   IFNE        FOR_MEGASTE
  219. ;   bsr         _megaste_init
  220. ;   ENDIF
  221.  
  222. ;   IFNE        FOR_FALCON
  223. ;   bsr         _falcon_init
  224. ;   ENDIF
  225.  
  226.     IFEQ        DEBUG2
  227.     clr.b       $FFFFFA07.W         ; disable timers
  228.     clr.b       $FFFFFA13.W
  229.     clr.b       $FFFFFA09.W
  230.     clr.b       $FFFFFA15.W
  231.     ENDC
  232.  
  233.     IFEQ        DEBUG2
  234.     move.b      #2,$FFFF820A.W      ; 50hz
  235.     clr.b       $FFFF8260.W         ; low res
  236.     ENDC
  237.  
  238.     move.l      #mjj_vbl,$70.W      ; setup vbl
  239.  
  240.     move.w      #$2300,sr           ; enable ints
  241.  
  242.     bsr         _disable_mouse      ; bybye mouse
  243.     bsr         _ikbd_flush         ; flush keyboard
  244.  
  245.     movem.l     (sp)+,d0-d7/a0-a6
  246.     rts
  247.  
  248. ;-----------------------------------------------------------------------------
  249. ; mjj_sys_fini : restore sys
  250. ;-----------------------------------------------------------------------------
  251.  
  252. mjj_sys_fini:
  253.     movem.l     d0-d7/a0-a6,-(sp)
  254.  
  255.     bsr         _ikbd_flush         ; flush keyboard
  256.  
  257.     move.w      #$2700,sr           ; disable ints
  258.  
  259.     lea         _mjj_res,a0
  260.  
  261.     move.b      (a0)+,$FFFF8260.W   ; restore resolution
  262.     move.b      (a0)+,$FFFF820A.W   ; restore frequency
  263.     move.w      (a0)+,$FFFF820E.W   ; restore line width
  264.     move.b      (a0)+,$FFFF8265.W   ; restore screen shift
  265.     move.b      (a0)+,$FFFF8201.W   ;
  266.     move.b      (a0)+,$FFFF8203.W   ; restore screen
  267.     move.b      (a0)+,$FFFF820D.W   ;
  268.  
  269.     move.b      (a0)+,$FFFFFA07.W   ; restore mfp
  270.     move.b      (a0)+,$FFFFFA13.W
  271.     move.b      (a0)+,$FFFFFA09.W
  272.     move.b      (a0)+,$FFFFFA15.W
  273.     move.b      (a0)+,$FFFFFA17.W
  274.     move.b      (a0)+,$FFFFFA19.W
  275.     move.b      (a0)+,$FFFFFA1B.W
  276.     move.b      (a0)+,$FFFFFA1D.W
  277.  
  278.     lea         $100.W,a1
  279.     REPT 16
  280.         move.l  (a0)+,(a1)+         ; restore mfp vectors
  281.     ENDR
  282.  
  283.     move.l      (a0)+,$68.W         ; restore hbl
  284.     move.l      (a0)+,$70.W         ; restore vbl
  285.     move.w      (a0)+,$484.W        ; restore keyboard
  286.  
  287.     lea         $FFFF8240.W,a1      ; restore palette
  288.     REPT 8
  289.         move.l  (a0)+,(a1)+
  290.     ENDR
  291.  
  292.     ;IFNE       FOR_MEGASTE
  293.     ;bsr            _megaste_fini
  294.     ;ENDIF
  295.  
  296.     ;IFNE       FOR_FALCON
  297.     ;bsr            _falcon_fini
  298.     ;ENDIF
  299.  
  300.     move.w      #$2300,sr           ; enable ints
  301.  
  302.     bsr         _enable_mouse       ; might be usefull
  303.  
  304.     move.l      _mjj_stack,-(sp)    ; user mode
  305.     move.w      #$20,-(sp)
  306.     trap        #1
  307.     addq.l      #6,sp
  308.  
  309.     movem.l     (sp)+,d0-d7/a0-a6
  310.     rts
  311.  
  312. ;-----------------------------------------------------------------------------
  313. _disable_mouse:
  314. ;-----------------------------------------------------------------------------
  315.     btst        #1,$FFFFFC00.W
  316.     beq.s       _disable_mouse
  317.     move.b      #$12,$FFFFFC02.W
  318.     rts
  319.  
  320. ;-----------------------------------------------------------------------------
  321. _enable_mouse:
  322. ;-----------------------------------------------------------------------------
  323.     btst        #1,$FFFFFC00.W
  324.     beq.s       _enable_mouse
  325.     move.b      #$8,$FFFFFC02.W
  326.     rts
  327.  
  328. ;-----------------------------------------------------------------------------
  329. _ikbd_flush:
  330. ;-----------------------------------------------------------------------------
  331.     bsr         waitvbl
  332.     btst.b      #0,$FFFFFC00.W
  333.     beq.s       .exit
  334.     tst.b       $FFFFFC02.W
  335.     bra.s       _ikbd_flush
  336. .exit:
  337.     rts
  338.  
  339. ;   IFNE        FOR_MEGASTE
  340. ;-----------------------------------------------------------------------------
  341. ;
  342. ;_megaste_init:
  343. ;   cmpi.w      #MCH_MEGASTE,mjj_sysmch
  344. ;   bne.s       .no
  345. ;   move.b      $FFFF8E21.W,_mjj_mste
  346. ;   clr.b       $FFFF8E21.W
  347. ;.no:
  348. ;   rts
  349. ;
  350. ;_megaste_fini:
  351. ;   cmpi.w      #MCH_MEGASTE,mjj_sysmch
  352. ;   bne.s       .no
  353. ;   move.b      _mjj_mste,$FFFF8E21.W
  354. ;.no:
  355. ;   rts
  356. ;
  357. ;-----------------------------------------------------------------------------
  358. ;   ENDC
  359.  
  360. ;   IFNE        FOR_FALCON
  361. ;-----------------------------------------------------------------------------
  362. ;
  363. ;_falcon_init:
  364. ;   cmpi.w      #MCH_FALCON30,mjj_sysmch
  365. ;   blt.s       .no
  366. ;   nop                                 ; TODO
  367. ;.no:
  368. ;   rts
  369. ;
  370. ;_falcon_fini:
  371. ;   cmpi.w      #MCH_FALCON30,mjj_sysmch
  372. ;   blt.s       .no
  373. ;   nop                                 ; TODO
  374. ;.no:
  375. ;   rts
  376. ;
  377. ;;-----------------------------------------------------------------------------
  378. ;   ENDIF
  379.  
  380. mjj_vbl:
  381. ;   jsr     _mjj_vbl_voidfn     ; fn proc;
  382. ;   jsr     _mjj_vbl_voidfn     ; zik proc
  383. ;   st      _mjj_vblflag
  384.  
  385.     addq.l #1,$466.w
  386.     rte
  387.  
  388. ;=============================================================================
  389.                 SECTION BSS
  390. ;=============================================================================
  391.  
  392.  
  393. mjj_sysmch:     ds.w    1
  394. _mjj_stack:     ds.l    1
  395.  
  396. _mjj_res:       ds.b    1           ; screen resolution
  397. _mjj_freq:      ds.b    1           ; screen frequency
  398. _mjj_linew:     ds.w    1           ; screen line width
  399. _mjj_shift:     ds.b    1           ; screen shift
  400. _mjj_scr:       ds.b    3           ; screen ptr
  401. _mjj_mfp:       ds.b    8           ; mfp setup
  402. _mjj_vec:       ds.l    16          ; mfp vectors
  403. _mjj_hbl:       ds.l    1           ; system hbl
  404. _mjj_vbl:       ds.l    1           ; system vbl
  405. _mjj_conterm:   ds.w    1           ; keyboard conf
  406. _mjj_pal:       ds.w    16          ; system palette
  407.  
  408. _mjj_mste:      ds.w    1           ; megaste cache & bus
  409.  
  410.  
  411. ;=============================================================================
  412. ;               END
  413. ;=============================================================================
  414.  
  415. rammovem    ds.b 2294
  416.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement