home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / ST_USER / 1990 / USERNV90.MSA / LISTINGS_STUFF.S < prev    next >
Text File  |  1990-05-24  |  4KB  |  205 lines

  1. ** GENERAL SUBROUTINES (STUFF)
  2.  
  3. *****************************************************************
  4. savestk        ds.l 1
  5. physstore    ds.l 1
  6. logstore    ds.l 1
  7. rezstore    ds.w 1
  8.  
  9. syspal    ds.w 16
  10.  
  11. temp    dc.l 0
  12. temp2    dc.l 0
  13.  
  14. blanklongs
  15.     dc.l 0,0,0,0,0,0,0,0
  16.     dc.l 0,0,0,0,0,0,0,0
  17.  
  18. *****************************************************************
  19. savesysscreen
  20.     move #2,-(sp)            save system physbase
  21.     trap #14
  22.     addq #2,sp
  23.     move.l D0,physstore
  24.  
  25.     move #3,-(sp)            save system logbase
  26.     trap #14
  27.     addq #2,sp
  28.     move.l D0,logstore
  29.  
  30.     move #4,-(sp)            save system rez
  31.     trap #14
  32.     addq #2,sp
  33.     move D0,rezstore
  34.     rts
  35.  
  36. ************
  37. setlowrez
  38.     clr -(sp)            set screen
  39.     move.l currphysbase,-(sp)
  40.     move.l #-1,-(sp)
  41.     move #5,-(sp)
  42.     trap #14
  43.     add #12,sp
  44.     rts
  45.     
  46. ************
  47. restoresysscreen
  48.     move rezstore,-(sp)        restore system screen
  49.     move.l physstore,-(sp)
  50.     move.l logstore,-(sp)
  51.     move #5,-(sp)
  52.     trap #14
  53.     add #12,sp
  54.     rts
  55.  
  56. ************
  57. clearscreen
  58.     lea 32000(A0),A0
  59.     move #122,D7            zero 31980 bytes
  60.     movem.l blanklongs,D0-D6/A1-A6
  61. wpipl0    movem.l D0-D6/A1-A6,-(A0)
  62.     movem.l D0-D6/A1-A6,-(A0)
  63.     movem.l D0-D6/A1-A6,-(A0)
  64.     movem.l D0-D6/A1-A6,-(A0)
  65.     movem.l D0-D6/A1-A6,-(A0)
  66.     dbra D7,wpipl0 
  67.     movem.l D0-D4,-(A0)        zero 20 bytes
  68.     rts
  69.  
  70. ************
  71. gosuper    clr.l -(sp)            go supervisor mode
  72.     move #$20,-(sp)
  73.     trap #1
  74.     addq #6,sp
  75.     move.l D0,savestk
  76.     rts
  77.  
  78. ************
  79. gouser    move.l savestk,-(sp)        return to user mode
  80.     move #$20,-(sp)
  81.     trap #1
  82.     addq #6,sp
  83.     rts    
  84.  
  85. ************
  86. testskey
  87.     move #11,-(sp)            test for key pressed
  88.     trap #1
  89.     addq #2,sp
  90.     rts
  91.  
  92. ************
  93. getskey    move #7,-(sp)            get key press
  94.     trap #1
  95.     addq #2,sp
  96.     rts
  97.  
  98. ************
  99. mouseon    move #8,-(sp)            enable mouse reporting
  100.     move #4,-(sp)
  101.     move #3,-(sp)
  102.     trap #13
  103.     addq.l #6,sp
  104.     dc.w $A009            Line-A show mouse
  105.     rts
  106.  
  107. ************
  108. mouseoff
  109.     move #$12,-(sp)            disable mouse reporting
  110.     move #4,-(sp)
  111.     move #3,-(sp)
  112.     trap #13
  113.     addq.l #6,sp
  114.     dc.w $A00A            Line-A hide mouse
  115.     rts
  116.  
  117. *****************************************************************
  118. decomppc1            ;A0=pc1 src, A1=32000 temp buff
  119.     moveq #0,D2
  120.     movem.l A0-A1,-(sp)
  121.  
  122. **************
  123. ** DECOMPACTION RESULTS IN PLANE BY PLANE, LINE BY LINE DATA
  124.  
  125. gb1    moveq #0,D1
  126.     move.b (A0)+,D1            get byte
  127.     tst.b D1
  128.     bpl cd1
  129.  
  130.     neg.b D1            copy batch
  131.     add D1,D2
  132.     addq #1,D2
  133.     move.b (A0)+,D0
  134. cbl1    move.b D0,(A1)+
  135.     dbra D1,cbl1
  136.     bra echk1
  137.  
  138. cd1    add D1,D2            copy direct
  139.     addq #1,D2
  140. cdl1    move.b (A0)+,(A1)+
  141.     dbra D1,cdl1
  142.  
  143. echk1    cmp #32000,D2
  144.     blo gb1
  145.  
  146. ********************************
  147. ** MERGE 4 PLANES BACK TOGETHER IN ORIGINAL BUFFER SPACE
  148.  
  149.     movem.l (sp)+,A0-A1
  150.     move #199,temp2         200 lines
  151. crscr2    move #4,temp            5 * 4 chunks per line
  152.     move.l A1,A2
  153.  
  154. crscr1    movem.w (A2),D0/D2/D4/D6    get plane 1
  155.     swap D0
  156.     swap D2
  157.     swap D4
  158.     swap D6
  159.     move 40(A2),D0            then plane 2
  160.     move 42(A2),D2
  161.     move 44(A2),D4
  162.     move 46(A2),D6
  163.     movem.w 80(A2),D1/D3/D5/D7    get plane 3
  164.     swap D1
  165.     swap D3
  166.     swap D5
  167.     swap D7
  168.     move 120(A2),D1            then plane 4
  169.     move 122(A2),D3
  170.     move 124(A2),D5
  171.     move 126(A2),D7
  172.     movem.l D0-D7,(A0)        save the lot
  173.     lea 32(A0),A0
  174.     lea 8(A2),A2
  175.     subq #1,temp
  176.     bcc crscr1
  177.  
  178.     lea 160(A1),A1
  179.     subq #1,temp2
  180.     bcc crscr2
  181.     rts
  182.  
  183. *****************************************************************
  184. gen3screens
  185.     move.l #thing,D0        gen 3 screen bases
  186.     and.l #$FFFF00,D0
  187.     add.l #256,D0
  188.     lea screenbases,A0
  189.     move.l D0,(A0)+
  190.     add.l #32000,D0
  191.     move.l D0,(A0)+
  192.     add.l #32000,D0
  193.     move.l D0,(A0)+
  194.  
  195.     move.l screenbases,A0        wipe 3 screens
  196.     bsr clearscreen
  197.     move.l screenbases+4,A0
  198.     bsr clearscreen
  199.     move.l screenbases+8,A0
  200.     bsr clearscreen
  201.     rts
  202.  
  203. *****************************************************************
  204.  
  205.