* screen.asm
* Change screen after changing from resolution a to b
*
* VOID C:screen%(a,b)
*
        section text            ;.text

start   move.w  #3,-(sp)
        trap    #14
        addq.l  #2,sp
        move.l  d0,a0           ;logbase
        move.w  4(sp),d0
        move.w  6(sp),d1
        beq     tolo
        subq.w  #1,d1
        beq.s   tomid
        subq.w  #1,d0
        bmi.s   lohi
        beq.s   mihi
        rts
lohi    move.l  a0,a3
        bsr.s   lomi
        move.l  a3,a0
mihi    move.w  #199,d0         ;200 linex
mihi1   moveq   #39,d1          ;40*2 Words
        move.l  a0,a1ds
mihi2   move.w  (a0)+,(a1)+
        move.w  (a0)+,-(sp)
        dbra    d1,mihi2
        moveq   #39,d1
        move.l  a0,a1
mihi3   move.w  (sp)+,-(a1)
        dbra    d1,mihi3
        dbra    d0,mihi1
        rts
lomi    move.w  #32000/8-1,d0
lomi1   move.l  (a0)+,d6
        move.l  (a0)+,d7
        moveq   #7,d1
lomi2   add.w   d6,d6
        addx.w  d3,d3
        add.w   d7,d7
        addx.w  d3,d3
        dbra    d1,lomi2
        moveq   #7,d1
lomi3   add.w   d6,d6
        addx.w  d5,d5
        add.w   d7,d7
        addx.w  d5,d5
        dbra    d1,lomi3
        swap    d6
        swap    d7
        moveq   #7,d1
lomi4   add.w   d6,d6
        addx.w  d2,d2
        add.w   d7,d7
        addx.w  d2,d2
        dbra    d1,lomi4
        moveq   #7,d1
lomi5   add.w   d6,d6
        addx.w  d4,d4
        add.w   d7,d7
        addx.w  d4,d4
        dbra    d1,lomi5
        movem.w d2/d3/d4/d5,-8(a0)
        dbra    d0,lomi1
        rts
tomid   subq.w  #1,d0
        bmi.s   lomi
        beq.s   mimi
himi    move.w  #199,d0
himi1   moveq   #39,d1          ;40*2 Words
        lea     80(a0),a1
himi2   move.w  -(a1),-(sp)
        dbra    d1,himi2
        lea     80(a0),a1
        moveq   #39,d1
himi3   move.w  (sp)+,(a0)+
        move.w  (a1)+,(a0)+
        dbra    d1,himi3
        dbra    d0,himi1
mimi    rts
tolo    subq.w  #1,d0
        beq.s   milo
        bmi.s   lolo
hilo    move.l  a0,a3
        bsr.s   himi
        move.l  a3,a0
milo    move.w  #32000/8-1,d0
milo1   movem.w (a0),d2/d3/d4/d5
        moveq   #7,d1
milo2   add.w   d2,d2
        addx.w  d6,d6
        add.w   d2,d2
        addx.w  d7,d7
        dbra    d1,milo2
        moveq   #7,d1
milo3   add.w   d4,d4
        addx.w  d6,d6
        add.w   d4,d4
        addx.w  d7,d7
        dbra    d1,milo3
        swap    d6
        swap    d7
        moveq   #7,d1
milo4   add.w   d3,d3
        addx.w  d6,d6
        add.w   d3,d3
        addx.w  d7,d7
        dbra    d1,milo4
        moveq   #7,d1
milo5   add.w   d5,d5
        addx.w  d6,d6
        add.w   d5,d5
        addx.w  d7,d7
        dbra    d1,milo5
        move.l  d6,(a0)+
        move.l  d7,(a0)+
        dbra    d0,milo1
lolo    rts

        end



