view 3rdparty/packages/sierra/objs/scrn.asm @ 1029:af4821817d4c

Very minor cleanup
author boisy
date Fri, 07 Mar 2003 17:34:20 +0000
parents df81e388d187
children 4fba97cd762d
line wrap: on
line source

********************************************************************
* SCRN - Kings Quest III screen module
*
* $Id$
*
*       Header for : scrn
*       Module size: $7C5  #1989
*       Module CRC : $F3E370 (Good)
*       Hdr parity : $EA
*       Exec. off  : $0012  #18
*       Data size  : $0000  #0
*       Edition    : $00  #0
*       Ty/La At/Rv: $11 $81
*       Prog mod, 6809 Obj, re-ent, R/O
*
* Ed.    Comments                                       Who YY/MM/DD
* ------------------------------------------------------------------
* 0      Disassembly of original distribution           PWZ 03/03/06
*        Note the header shows a data size of 0
*        called from the sierra module and accesses
*        data set up in that module

         nam   scrn
         ttl   program module       

* Disassembled 00/00/00 00:15:39 by Disasm v1.6 (C) 1988 by RML

         ifp1
         use   os9defs
         endc

tylg     set   Prgrm+Objct   
atrv     set   ReEnt+rev
rev      set   $01

         mod   eom,name,tylg,atrv,start,size

*  equates for common data used in this module

u0012 EQU $0012  map block value (word)
u001C EQU $001C
u001E EQU $001E
u0024 EQU $0024
u002C EQU $002C
u0030 EQU $0030
u0038 EQU $0038
u003E EQU $003E
u0040 EQU $0040
u0041 EQU $0041
u0042 EQU $0042 Sierra process descriptor block
u0043 EQU $0043 Sierra 2nd 8K data block
u0045 EQU $0045 flag for palettes in sierra
u0046 EQU $0046 first byte of hi res screen mem addr
u0047 EQU $0047 second byte of hi res screen mem addr
u007E EQU $007E
u0080 EQU $0080
u0081 EQU $0081
u009E EQU $009E  busy address here
u009F EQU $009F
u00A0 EQU $00A0
u00A1 EQU $00A1
u00A2 EQU $00A2
u00A3 EQU $00A3
u00A4 EQU $00A4
u00A5 EQU $00A5
u00A6 EQU $00A6
u00A7 EQU $00A7
u00A8 EQU $00A8
u00A9 EQU $00A9
u00AA EQU $00AA
u00C0 EQU $00C0
u00C6 EQU $00C6
u00CC EQU $00CC
u00DE EQU $00DE
u00E0 EQU $00E0
u00F6 EQU $00F6
u00F8 EQU $00F8
u00FC EQU $00FC
u00FE EQU $00FE
u00FF EQU $00FF

size     equ   .
name     equ   *
         fcs   /scrn/
         fcb   $00 

* This module is linked to in sierra
* upon entry 
*   a -> type language
*   b -> attributes / revision level
*   x -> address of the last byte of the module name + 1
*   y -> module entry point absolute address 
*   u -> module header absolute address

start    equ   *
         lbra  L015A twiddles with map blocks ??
         lbra  L014C sets up another call to L015A
         lbra  L009C whats in D here ? call screen clear
         lbra  L00B3 sets D to 0000 and call clear screen
         lbra  L00D2
         lbra  L0745
         lbra  L0209
         lbra  L00C5
         lbra  L025D
         lbra  L02A0

* probably was an info directive for an include file
L0030    fcc   'AGI (c) copyright 1988 SIERRA On-Line'
         fcc   'CoCo3 version by Chris Iden'
         fcb   $00
Infosz   equ   *-L0030



* map block check and sets
* u0012 is set in code in L015A sub
* entry:
*      a -> value to be tested

L0071    cmpa  <u0012      check MMU block
         beq   L008B       if block 0  OK to leave
         orcc  #IntMasks   Turn off interrupts 
         sta   <u0012      store the value passed in by a 
         lda   <u0042      get sierra process descriptor map block
         sta   >$FFA9      map it in to $2000-$3FFF
         ldx   <u0043      2nd 8K data block in Sierra
         lda   <u0012      get mmu block num
         sta   ,x          store that 
         stb   $02,x
         std   >$FFA9      Map it into task 1 block 2
         andcc #^IntMasks  turn on interrupts $AF
L008B    rts   


* 16 marker bytes for some thing
L008C    fcb   $00
         fcb   $11
         fcb   $22
         fcb   $33
         fcb   $44
         fcb   $55
         fcb   $66
         fcb   $77
         fcb   $88
         fcb   $99
         fcb   $AA
         fcb   $BB   
         fcb   $CC
         fcb   $DD
         fcb   $EE
         fcb   $FF


* Clears the area allocated to the screen in sierra
* entry:
*      d -> value to be written to screen
*      x -> may contain a value so we save it
* exit:
*      d -> preserved 
*      x -> restored to initial value
*      u -> contains starting address of the screen

L009C    pshs  x         save the x values as this routine uses it
L009E    ldu   #$D800    end address of high res screen
         ldx   #$7800    Scrn is from $6000 to $D800
L00A4    std   ,--u      set it to value passed us in d & dec d
         leax  -$02,x    decrement x 
         bne   L00A4     keep going till all of screen is cleared
         puls  x         restore x`
         rts             move on

* Loads D to clear screen
L00AD    ldd   #$0000    zeros screen bytes
         bsr   L009C     go clear it
         rts   

L00B3    bsr   L00AD     clear the screen 
         ldd   #$A8A0
         pshs  d
         ldd   #$00A7
         pshs  d
         lbsr  L015A
         leas  $04,s
         rts   

L00C5    lda   >$024E
         tfr   a,b
         bsr   L009C
         ldd   #$0000    clears value at u0040
         std   <u0040
         rts   
         
L00D2    ldd   $06,s
         pshs  d
         ldd   $06,s
         pshs  d
         ldd   $06,s
         pshs  d
         lbsr  L01D4
         leas  $06,s
         clra  
         ldb   $06,s
         pshs  d
         lda   #$01
         ldb   $07,s
         subb  #$02
         pshs  d
         ldd   $06,s
         inca  
         decb  
         pshs  d
         lbsr  L01D4
         leas  $06,s
         clra  
         ldb   $06,s
         pshs  d
         lda   $06,s
         suba  #$04
         ldb   #$01
         pshs  d
         ldd   $06,s
         adda  $09,s
         suba  #$02
         subb  #$02
         pshs  d
         lbsr  L01D4
         leas  $06,s
         clra  
         ldb   $06,s
         pshs  d
         lda   #$01
         ldb   $07,s
         subb  #$02
         pshs  d
         ldd   $06,s
         inca  
         subb  $08,s
         addb  #$02
         pshs  d
         lbsr  L01D4
         leas  $06,s
         clra  
         ldb   $06,s
         pshs  d
         lda   $06,s
         suba  #$04
         ldb   #$01
         pshs  d
         ldd   $06,s
         inca  
         subb  #$02
         pshs  d
         lbsr  L01D4
         leas  $06,s
         rts   

L014C    ldd   $04,s
         pshs  d
         ldd   $04,s
         pshs  d
         lbsr  L015A
         leas  $04,s
         rts   

* first call in module is here
* who put what on the stack for us ?
L015A    pshs  y            save our y  module entry abs addr

         ldd   $04,s     
         sta   <u0047   
         incb          
         subb  $06,s  
         lda   #$A0 
         mul            
         addd  <u0046  
         tfr   d,x     
         addd  <u002C  
         tfr   d,y    
         leax  <$40,x       
         ldd   $06,s
         std   <u009E

         ldb   #$A0
         subb  <u009F
         clra  
         std   <u00A0
         sta   <u0012       twiddle with the map block value

         orcc  #IntMasks    turn off interrupts $50
         lda   <u0042
         sta   >$FFA9       second block in task 1
         cmpx  #$A000
         bcs   L0192

         ldd   <u001E
         leax  >-$8000,x
         bra   L0198
L0192    ldd   <u001C
         leax  >-$4000,x
L0198    ldu   <u0043
         sta   ,u
         stb   $02,u
         std   >$FFA9        second block in task 1
         andcc #^IntMasks    turn on ints $AF

         leau  >L008C,pcr    point u to the  sequential data bytes
L01A7    ldb   <u009F
L01A9    lda   ,x+
         anda  #$0F
         lda   a,u
         sta   ,y+
         decb  
         bne   L01A9
         dec   <u009E
         beq   L01D1         pull our y and exit routine
         ldd   <u00A0
         leay  d,y
         abx   
         cmpx  #$6000
         bcs   L01A7

         orcc  #IntMasks     turn off interrupts $50
         lda   <u0042
         sta   >$FFA9        second block in task 1
         ldd   <u001E
         leax  >-$4000,x
         bra   L0198
L01D1    puls  y
         rts   


L01D4    ldd   $02,s
         sta   <u0047
         incb  
         subb  $04,s
         lda   #$A0
         mul   
         addd  <u0046        Hi res screen mem address ($6000)
         addd  <u002C
         tfr   d,x
         ldd   $04,s
         std   <u009E
         ldb   #$A0
         subb  <u009F
         stb   <u00A0
         leau  >L008C,pcr
         lda   $07,s
         anda  #$0F
         lda   a,u

L01F8    ldb   <u009F
L01FA    sta   ,x+
         decb  
         bne   L01FA

         dec   <u009E
         beq   L0208
         ldb   <u00A0
         abx   
         bra   L01F8
L0208    rts   


L0209    leas  -$04,s
         ldd   $0A,s
         std   $02,s
         ldd   $08,s
         std   ,s
         lda   $07,s
         lsla  
         lsla  
         lsla  
         ldb   #$A0
         mul   
         std   <u00A2
         clra  
         ldb   $01,s
         lslb  
         lslb  
         ldu   <u00A2
         leau  >$6000,u
         ldb   $02,s
         lslb  
         lslb  
         lslb  
         lda   #$A0
         mul   
         leax  d,u
         lda   $03,s
         lsla  
         lsla  
         lsla  
         ldb   $01,s
         subb  ,s
         lslb  
         lslb  
         addb  #$03
L023F    pshs  b,a
L0241    lda   b,u
         sta   b,x
         decb  
         bpl   L0241
         puls  b,a
         leau  >$00A0,u
         leax  >$00A0,x
         cmpx  #$D800
         bcc   L025A
         deca  
         bne   L023F
L025A    leas  $04,s
         rts   



L025D    leas  -$04,s
         ldx   $06,s
         ldu   ,x
L0263    stu   ,s
         beq   L029D
         ldu   $04,u
         stu   $02,s
         pshs  u
         lbsr  L02A0
         leas  $02,s
         ldu   $02,s
         lda   $01,u
         cmpa  ,u
         bne   L0297
         ldd   $03,u
         cmpd  <$1A,u
         bne   L028C
         lda   <$25,u
         ora   #$40
         sta   <$25,u
         bra   L0297
L028C    std   <$1A,u
         lda   <$25,u
         anda  #$BF
         sta   <$25,u
L0297    ldu   ,s
         ldu   ,u
         bra   L0263
L029D    leas  $04,s
         rts   


L02A0    lda   >$0100
         lbeq  L0344
         ldu   $02,s
         ldd   $08,u
         lbsr  L0071
         ldx   <$10,u
         ldd   ,x
         std   <u00A0
         ldd   <$14,u
         lbsr  L0071
         ldx   <$12,u
         ldd   ,x
         std   <u009E
         ldd   <$10,u
         std   <$12,u
         ldd   $08,u
         std   <$14,u
         lda   $04,u
         ldb   <u00A1
         cmpa  <$1B,u
         bcs   L02E1
         sta   <u00A3
         stb   <u00A4
         lda   <$1B,u
         ldb   <u009F
         bra   L02EC
L02E1    ldb   <$1B,u
         stb   <u00A3
         ldb   <u009F
         stb   <u00A4
         ldb   <u00A1
L02EC    stb   <u00A8
         inca  
         suba  <u00A8
         ldb   <u00A3
         incb  
         subb  <u00A4
         stb   <u00A7
         cmpa  <u00A7
         bcs   L02FE
         lda   <u00A7
L02FE    nega  
         adda  <u00A3
         inca  
         sta   <u00A4
         lda   $03,u
         ldb   <u00A0
         cmpa  <$1A,u
         bhi   L0318
         sta   <u00A2
         stb   <u00A9
         lda   <$1A,u
         ldb   <u009E
         bra   L0323
L0318    ldb   <$1A,u
         stb   <u00A2
         ldb   <u009E
         stb   <u00A9
         ldb   <u00A0
L0323    stb   <u00AA
         adda  <u00AA
         sta   <u00A6
         lda   <u00A2
         adda  <u00A9
         cmpa  <u00A6
         bhi   L0333
         lda   <u00A6
L0333    suba  <u00A2
         sta   <u00A5
         ldd   <u00A4
         pshs  b,a
         ldd   <u00A2
         pshs  b,a
         lbsr  L015A
         leas  $04,s
L0344    rts   

* This jumbled mass of bytes disassembles 
* but looks like a data block
* or probably a bit map ??? 
* L0345 - L0745 is 1024 bytes of data

L0345    fcb   $00,$00,$00,$00
         fcb   $00,$00,$00,$00
         fcb   $7E,$81,$A5,$81
         fcb   $BD,$99,$81,$7E
         fcb   $7E,$FF,$DB,$FF
         fcb   $C3,$E7,$FF,$7E
         fcb   $6C,$FE,$FE,$FE
         fcb   $7C,$38,$10,$00
         fcb   $10,$38,$7C,$FE
         fcb   $7C,$38,$10,$00
         fcb   $38,$7C,$38,$FE
         fcb   $FE,$7C,$38,$7C
         fcb   $10,$10,$38,$7C
         fcb   $FE,$7C,$38,$7C
         fcb   $00,$00,$18,$3C
         fcb   $3C,$18,$00,$00
         fcb   $FF,$FF,$E7,$C3
         fcb   $C3,$E7,$FF,$FF
         fcb   $00,$3C,$66,$42
         fcb   $42,$66,$3C,$00
         fcb   $FF,$C3,$99,$BD
         fcb   $BD,$99,$C3,$FF
         fcb   $0F,$07,$0F,$7D
         fcb   $CC,$CC,$CC,$78
         fcb   $3C,$66,$66,$66
         fcb   $3C,$18,$7E,$18
         fcb   $3F,$33,$3F,$30
         fcb   $30,$70,$F0,$E0
         fcb   $7F,$63,$7F,$63
         fcb   $63,$67,$E6,$C0
         fcb   $99,$5A,$3C,$E7
         fcb   $E7,$3C,$5A,$99
         fcb   $80,$E0,$F8,$FE
         fcb   $F8,$E0,$80,$00
         fcb   $02,$0E,$3E,$FE
         fcb   $3E,$0E,$02,$00
         fcb   $18,$3C,$7E,$18
         fcb   $18,$7E,$3C,$18
         fcb   $66,$66,$66,$66
         fcb   $66,$00,$66,$00
         fcb   $7F,$DB,$DB,$7B
         fcb   $1B,$1B,$1B,$00
         fcb   $3E,$63,$38,$6C
         fcb   $6C,$38,$CC,$78
         fcb   $00,$00,$00,$00
         fcb   $7E,$7E,$7E,$00
         fcb   $18,$3C,$7E,$18
         fcb   $7E,$3C,$18,$FF
         fcb   $18,$3C,$7E,$18
         fcb   $18,$18,$18,$00
         fcb   $18,$18,$18,$18
         fcb   $7E,$3C,$18,$00
         fcb   $00,$18,$0C,$FE
         fcb   $0C,$18,$00,$00
         fcb   $00,$30,$60,$FE
         fcb   $60,$30,$00,$00
         fcb   $00,$00,$C0,$C0
         fcb   $C0,$FE,$00,$00
         fcb   $00,$24,$66,$FF
         fcb   $66,$24,$00,$00
         fcb   $00,$18,$3C,$7E
         fcb   $FF,$FF,$00,$00
         fcb   $00,$FF,$FF,$7E
         fcb   $3C,$18,$00,$00
         fcb   $00,$00,$00,$00
         fcb   $00,$00,$00,$00
         fcb   $30,$78,$78,$30
         fcb   $30,$00,$30,$00
         fcb   $6C,$6C,$6C,$00
         fcb   $00,$00,$00,$00
         fcb   $6C,$6C,$FE,$6C
         fcb   $FE,$6C,$6C,$00
         fcb   $30,$7C,$C0,$78
         fcb   $0C,$F8,$30,$00
         fcb   $00,$C6,$CC,$18
         fcb   $30,$66,$C6,$00
         fcb   $38,$6C,$38,$76
         fcb   $DC,$CC,$76,$00
         fcb   $60,$60,$C0,$00
         fcb   $00,$00,$00,$00
         fcb   $18,$30,$60,$60
         fcb   $60,$30,$18,$00
         fcb   $60,$30,$18,$18
         fcb   $18,$30,$60,$00
         fcb   $00,$66,$3C,$FF
         fcb   $3C,$66,$00,$00
         fcb   $00,$30,$30,$FC
         fcb   $30,$30,$00,$00 
         fcb   $00,$00,$00,$00
         fcb   $00,$30,$30,$60
         fcb   $00,$00,$00,$FC
         fcb   $00,$00,$00,$00
         fcb   $00,$00,$00,$00
         fcb   $00,$30,$30,$00
         fcb   $06,$0C,$18,$30
         fcb   $60,$C0,$80,$00
         fcb   $7C,$C6,$CE,$DE
         fcb   $F6,$E6,$7C,$00
         fcb   $30,$70,$30,$30
         fcb   $30,$30,$FC,$00
         fcb   $78,$CC,$0C,$38
         fcb   $60,$CC,$FC,$00
         fcb   $78,$CC,$0C,$38
         fcb   $0C,$CC,$78,$00
         fcb   $1C,$3C,$6C,$CC
         fcb   $FE,$0C,$1E,$00
         fcb   $FC,$C0,$F8,$0C
         fcb   $0C,$CC,$78,$00
         fcb   $38,$60,$C0,$F8
         fcb   $CC,$CC,$78,$00
         fcb   $FC,$CC,$0C,$18
         fcb   $30,$30,$30,$00
         fcb   $78,$CC,$CC,$78
         fcb   $CC,$CC,$78,$00
         fcb   $78,$CC,$CC,$7C
         fcb   $0C,$18,$70,$00
         fcb   $00,$30,$30,$00
         fcb   $00,$30,$30,$00
         fcb   $00,$30,$30,$00
         fcb   $00,$30,$30,$60
         fcb   $18,$30,$60,$C0
         fcb   $60,$30,$18,$00
         fcb   $00,$00,$FC,$00
         fcb   $00,$FC,$00,$00
         fcb   $60,$30,$18,$0C
         fcb   $18,$30,$60,$00
         fcb   $78,$CC,$0C,$18
         fcb   $30,$00,$30,$00
         fcb   $7C,$C6,$DE,$DE
         fcb   $DE,$C0,$78,$00
         fcb   $30,$78,$CC,$CC
         fcb   $FC,$CC,$CC,$00
         fcb   $FC,$66,$66,$7C
         fcb   $66,$66,$FC,$00
         fcb   $3C,$66,$C0,$C0
         fcb   $C0,$66,$3C,$00
         fcb   $F8,$6C,$66,$66
         fcb   $66,$6C,$F8,$00
         fcb   $FE,$62,$68,$78
         fcb   $68,$62,$FE,$00
         fcb   $FE,$62,$68,$78
         fcb   $68,$60,$F0,$00
         fcb   $3C,$66,$C0,$C0
         fcb   $CE,$66,$3E,$00
         fcb   $CC,$CC,$CC,$FC
         fcb   $CC,$CC,$CC,$00
         fcb   $78,$30,$30,$30
         fcb   $30,$30,$78,$00
         fcb   $1E,$0C,$0C,$0C
         fcb   $CC,$CC,$78,$00
         fcb   $E6,$66,$6C,$78
         fcb   $6C,$66,$E6,$00
         fcb   $F0,$60,$60,$60
         fcb   $62,$66,$FE,$00
         fcb   $C6,$EE,$FE,$FE
         fcb   $D6,$C6,$C6,$00
         fcb   $C6,$E6,$F6,$DE
         fcb   $CE,$C6,$C6,$00
         fcb   $38,$6C,$C6,$C6
         fcb   $C6,$6C,$38,$00
         fcb   $FC,$66,$66,$7C
         fcb   $60,$60,$F0,$00
         fcb   $78,$CC,$CC,$CC
         fcb   $DC,$78,$1C,$00
         fcb   $FC,$66,$66,$7C
         fcb   $6C,$66,$E6,$00
         fcb   $78,$CC,$E0,$70
         fcb   $1C,$CC,$78,$00
         fcb   $FC,$B4,$30,$30
         fcb   $30,$30,$78,$00
         fcb   $CC,$CC,$CC,$CC
         fcb   $CC,$CC,$FC,$00
         fcb   $CC,$CC,$CC,$CC
         fcb   $CC,$78,$30,$00
         fcb   $C6,$C6,$C6,$D6
         fcb   $FE,$EE,$C6,$00
         fcb   $C6,$C6,$6C,$38
         fcb   $38,$6C,$C6,$00
         fcb   $CC,$CC,$CC,$78
         fcb   $30,$30,$78,$00
         fcb   $FE,$C6,$8C,$18
         fcb   $32,$66,$FE,$00
         fcb   $78,$60,$60,$60
         fcb   $60,$60,$78,$00
         fcb   $C0,$60,$30,$18
         fcb   $0C,$06,$02,$00
         fcb   $78,$18,$18,$18
         fcb   $18,$18,$78,$00
         fcb   $10,$38,$6C,$C6
         fcb   $00,$00,$00,$00
         fcb   $00,$00,$00,$00
         fcb   $00,$00,$00,$FF
         fcb   $30,$30,$18,$00
         fcb   $00,$00,$00,$00
         fcb   $00,$00,$78,$0C
         fcb   $7C,$CC,$76,$00
         fcb   $E0,$60,$60,$7C
         fcb   $66,$66,$DC,$00
         fcb   $00,$00,$78,$CC
         fcb   $C0,$CC,$78,$00
         fcb   $1C,$0C,$0C,$7C
         fcb   $CC,$CC,$76,$00
         fcb   $00,$00,$78,$CC
         fcb   $FC,$C0,$78,$00
         fcb   $38,$6C,$60,$F0
         fcb   $60,$60,$F0,$00
         fcb   $00,$00,$76,$CC
         fcb   $CC,$7C,$0C,$F8
         fcb   $E0,$60,$6C,$76
         fcb   $66,$66,$E6,$00
         fcb   $30,$00,$70,$30
         fcb   $30,$30,$78,$00
         fcb   $0C,$00,$0C,$0C
         fcb   $0C,$CC,$CC,$78
         fcb   $E0,$60,$66,$6C
         fcb   $78,$6C,$E6,$00
         fcb   $70,$30,$30,$30
         fcb   $30,$30,$78,$00
         fcb   $00,$00,$CC,$FE
         fcb   $FE,$D6,$C6,$00
         fcb   $00,$00,$F8,$CC
         fcb   $CC,$CC,$CC,$00
         fcb   $00,$00,$78,$CC
         fcb   $CC,$CC,$78,$00
         fcb   $00,$00,$DC,$66
         fcb   $66,$7C,$60,$F0
         fcb   $00,$00,$76,$CC
         fcb   $CC,$7C,$0C,$1E
         fcb   $00,$00,$DC,$76
         fcb   $66,$60,$F0,$00
         fcb   $00,$00,$7C,$C0
         fcb   $78,$0C,$F8,$00
         fcb   $10,$30,$7C,$30
         fcb   $30,$34,$18,$00
         fcb   $00,$00,$CC,$CC
         fcb   $CC,$CC,$76,$00
         fcb   $00,$00,$CC,$CC
         fcb   $CC,$78,$30,$00
         fcb   $00,$00,$C6,$D6
         fcb   $FE,$FE,$6C,$00
         fcb   $00,$00,$C6,$6C
         fcb   $38,$6C,$C6,$00
         fcb   $00,$00,$CC,$CC
         fcb   $CC,$7C,$0C,$F8
         fcb   $00,$00,$FC,$98
         fcb   $30,$64,$FC,$00
         fcb   $1C,$30,$30,$E0
         fcb   $30,$30,$1C,$00
         fcb   $18,$18,$18,$00
         fcb   $18,$18,$18,$00
         fcb   $E0,$30,$30,$1C
         fcb   $30,$30,$E0,$00
         fcb   $76,$DC,$00,$00
         fcb   $00,$00,$00,$00
         fcb   $00,$10,$38,$6C
         fcb   $C6,$C6,$FE,$00

L0745    leas  -$02,s
         pshs  y
         ldx   $06,s
         ldu   #$024E
         lda   <u0040
         lsla  
         lsla  
         lsla  
         ldb   #$A0
         mul   
         tfr   d,y
         clra  
         ldb   <u0041
         lslb  
         lslb  
         addd  #$6000
         leay  d,y
L0762    tst   ,x
         lbeq  L07B0
         ldb   ,x+
         stx   $06,s
         leax  >L0345,pcr
         lslb  
         abx   
         abx   
         abx   
         abx   
         lda   #$08
         sta   $02,s
L0779    ldb   ,x+
         lda   #$04
         sta   $03,s
L077F    sex   
         lda   a,u
         anda  #$F0
         sta   ,y
         lslb  
         sex   
         lda   a,u
         anda  #$0F
         ora   ,y
         ora   <u0045 flag for palettes set in sierra
         sta   ,y+
         lslb  
         dec   $03,s
         bne   L077F
         lda   <u0045 flag for palettes set in sierra
         beq   L079E
         coma  
         sta   <u0045 flag for palettes set in sierra
L079E    leay  >$009C,y
         dec   $02,s
         bne   L0779
         ldx   $06,s
         inc   <u0041
         leay  >-$04FC,y
         bra   L0762
L07B0    puls  y
         leas  $02,s
         rts   

L07B5    fcb   $00,$00,$00,$00
         fcb   $00,$00,$00,$00
L07BD    fcc   /scrn/
L07C1    fcb   $00                

         emod
eom      equ   *