changeset 1739:fc04a0042413

Driver provided by Roy Justus
author boisy
date Fri, 07 Jan 2005 14:04:29 +0000
parents afae4d350682
children 7969f759a6a9
files level1/modules/wordpakii.asm
diffstat 1 files changed, 1070 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/wordpakii.asm	Fri Jan 07 14:04:29 2005 +0000
@@ -0,0 +1,1070 @@
+         nam   WordPakII
+         ttl   os9 device driver    
+
+* Disassembled 2005/01/06 19:47:27 by Disasm v1.5 (C) 1988 by RML
+
+         ifp1
+         use   defsfile
+         use   cciodefs
+         endc
+
+tylg     set   Drivr+Objct   
+atrv     set   ReEnt+rev
+rev      set   $01
+
+CO80     equ   0
+SIZEX    equ   80
+SIZEY    equ   24
+
+         mod   eom,name,tylg,atrv,start,size
+         rmb   $1D
+V.PIA    rmb   2
+         rmb   $BB-$1D-2
+size     equ   .
+
+         fcb   $07 
+
+name     
+         IFEQ   CO80
+         fcs   /WordPakII/
+         ELSE
+         fcs   /CO80/
+         ENDC
+         fcb   $05 
+
+         fcc   /(C) 1985 PBJ, Inc./
+
+* WordPak Initialization Values
+WPIV     fcb   $6E		R0
+         fcb   $50		R1
+         fcb   $56		R2
+         fcb   $18 		R3
+         fcb   $1A 		R4
+         fcb   $00 		R5
+         fcb   $18 		R6
+         fcb   $19 		R7
+         fcb   $78		R8
+         fcb   $09 		R9
+L0034    fcb   $60 `		R10
+         fcb   $09 		R11
+         fcb   $00 		R12
+         fcb   $00 		R13
+         fcb   $00 		R14
+         fcb   $00 		R15
+         fcb   $00 		R16
+         fcb   $00 		R17
+         fcb   $00 		R18
+         fcb   $00 		R19
+         fcb   $10 		R20
+
+start    bra   INIT
+         nop   
+         IFEQ  CO80
+         lbra  READ
+         ENDC
+         lbra  WRITE
+         bra   GETSTAT
+         nop   
+         lbra  SETSTAT
+         IFEQ  CO80
+         lbra  TERM
+         ELSE
+         rts
+         ENDC
+
+INIT
+         IFEQ  CO80
+         pshs  dp,cc		save DP and CC
+         orcc  #IntMasks	mask interrupts
+         clra  
+         tfr   a,dp		set DP to 0
+         stu   <D.KbdSta	save off statics ptr
+         nop   
+         nop   
+         nop   
+         nop   
+         leax  >IRQSVC,pcr	point to IRQ routine
+         stx   <D.AltIRQ	save as alternate IRQ
+         ldx   #PIA0Base	get base address of PIA0
+         stx   <V.PIA,u		save off in statics
+         clrb  			now D = 0
+         std   <$27,u
+         std   <$29,u
+         std   <$2B,u
+         std   <$2D,u
+* Initialize PIA here
+         sta   $01,x
+         sta   ,x
+         sta   $03,x
+         comb  			B = $FF
+         stb   $02,x
+         stb   <$20,u
+         stb   <$21,u
+         stb   <$22,u
+         lda   #$34
+         sta   $01,x
+         lda   #$3F
+         sta   $03,x
+         lda   $02,x
+         ENDC
+* Initialize WordPak Hardware
+         clra  
+         leax  <WPIV,pcr	point to initialization values
+L0097    ldb   ,x+
+         std   [<V.PORT,u]	write to WP hardware
+         inca
+         cmpa  #$14
+         bcs   L0097
+         IFEQ  CO80
+         ldb   ,x
+         stb   <$31,u
+         ldx   V.PORT,u		get port address
+         lda   #64
+         sta   $04,x		???
+         lbsr  ClrScr		clear screen
+         lda   <L0034,pcr
+         sta   <$3A,u
+         puls  pc,dp,cc
+         ELSE
+         rts
+         ENDC
+
+
+GETSTAT
+         IFEQ  CO80
+         cmpa  #SS.Ready
+         bne   L00C9
+         lda   <$2E,u
+         suba  <$2D,u
+         lbne  L0181
+         ldb   #E$NotRdy
+         bra   L00F5
+L00C9    cmpa  #SS.EOF
+         lbeq  L0181
+         ldx   R$Y,y
+         cmpa  #SS.Joy
+         lbeq  L03C4
+         cmpa  #SS.Cursr
+         beq   CURSR
+         cmpa  #SS.ScSiz
+         beq   SCSIZ
+         cmpa  #$83
+         beq   L00F8
+         cmpa  #$84
+         beq   L0106
+         cmpa  #$86
+         beq   L0117
+         cmpa  #$87
+         beq   L0101
+         cmpa  #$88
+         beq   L00FC
+         ENDC
+SETSTAT  ldb   #E$UnkSvc
+L00F5    orcc  #Carry
+         rts   
+L00F8    lda   #$7F
+         bra   L0102
+L00FC    lda   <$31,u
+         bra   L0102
+L0101    clra  
+L0102    sta   $01,x
+         bra   L0127
+
+L0106    ldd   #80*256+24
+         bra   L0125
+
+SCSIZ    ldd   #SIZEX
+         std   R$X,x
+         ldd   #SIZEY
+         std   R$Y,x
+         bra   L0127
+
+L0117    ldb   <$3A,u
+         bsr   L0129
+         andb  #$0F
+         bne   L0124
+         ldb   #$01
+         bra   L0125
+L0124    clrb  
+L0125    std   R$A,x
+L0127    clrb  
+         rts   
+L0129    pshs  x,b
+         clra  
+         leax  >L083C,pcr
+         andb  #$60
+L0132    cmpb  ,x+
+         beq   L013B
+         inca  
+         cmpa  #$03
+         bcs   L0132
+L013B    puls  x,b
+         rts   
+
+CURSR    clrb  
+         pshs  b
+         ldd   <$34,u
+L0144    cmpd  <$32,u
+         beq   L0151
+         subd  #SIZEX
+         inc   ,s
+         bra   L0144
+L0151    puls  b
+         addb  #$20
+         clra  
+         std   $06,x
+         ldd   <$36,u
+         subd  <$34,u
+         addb  #$20
+         clra  
+         std   $04,x
+         lbsr  L05C2
+         anda  #$7F
+         sta   $01,x
+         ldx   <$36,u
+         lbra  L056A
+
+         IFEQ  CO80
+TERM
+         pshs  cc
+         orcc  #IRQMask
+         ldd   >D.Clock			get original clock pointer
+         std   >D.AltIRQ		save as alternate IRQ
+         puls  pc,cc
+
+L017C    incb  
+         cmpb  #$7F
+         bls   L0182
+L0181    clrb  
+L0182    rts   
+
+* Interrupt Service Routine
+IRQSVC   ldu   >D.KbdSta		get IRQ static ptr in U
+         ldx   <V.PIA,u
+         lda   $03,x			get IRQ status bit
+         bmi   L0191			branch if set
+         jmp   [>D.AltIRQ]		else continue on
+L0191    lda   $02,x
+         lda   #$FF
+         sta   $02,x
+         lda   ,x
+         coma  
+         anda  #$03
+         bne   L01A7
+         clr   $02,x
+         lda   ,x
+         coma  
+         anda  #$7F
+         bne   L01C8
+L01A7    ldd   #$FFFF
+         std   <$20,u
+         std   <$22,u
+L01B0    ldd   #$1E05
+         std   <$2F,u
+L01B6    lda   >$00A0
+         beq   L01C4
+         deca  
+         sta   >$00A0
+         bne   L01C4
+         sta   >$FF40
+L01C4    jmp   [>D.Clock]
+L01C8    bsr   L0217
+         bpl   L01D0
+         bcs   L01B6
+         bra   L01B0
+L01D0    cmpa  #$1F
+         bne   L01D9
+         com   <$27,u
+         bra   L01B6
+L01D9    ldb   <$2D,u
+         leax  <$3B,u
+         abx   
+         bsr   L017C
+         cmpb  <$2E,u
+         beq   L01EA
+         stb   <$2D,u
+L01EA    sta   ,x
+         beq   L020A
+         cmpa  V.PCHR,u		pause character?
+         bne   L01FA
+         ldx   V.DEV2,u
+         beq   L020A
+         sta   $08,x
+         bra   L020A
+L01FA    ldb   #S$Intrpt
+         cmpa  V.INTR,u		interrupt character?
+         beq   L0206
+         ldb   #S$Abort
+         cmpa  V.QUIT,u		quit character?
+         bne   L020A
+L0206    lda   V.LPRC,u
+         bra   L020E
+L020A    ldb   #S$Wake
+         lda   V.WAKE,u
+L020E    beq   L0213
+         os9   F$Send   
+L0213    clr   V.WAKE,u
+         bra   L01B6
+L0217    clra  
+         clrb  
+         sta   <$1F,u
+         std   <$28,u
+         coma  
+         sta   <$24,u
+         sta   <$25,u
+         sta   <$26,u
+         deca  
+         sta   $02,x
+L022C    lda   ,x
+         coma  
+         anda  #$7F
+         beq   L023F
+         ldb   #$FF
+L0235    incb  
+         lsra  
+         bcc   L023B
+         bsr   L0286
+L023B    cmpb  #$06
+         bcs   L0235
+L023F    inc   <$1F,u
+         orcc  #Carry
+         rol   $02,x
+         bcs   L022C
+         bsr   L02C1
+         bmi   L0285
+         beq   L0268
+         suba  #$1A
+         bhi   L0268
+         adda  #$1A
+         ldb   <$29,u
+         bne   L0267
+         adda  #$40
+         ldb   <$28,u
+         eorb  <$27,u
+         andb  #$01
+         bne   L0267
+         adda  #$20
+L0267    rts   
+L0268    ldb   #$03
+         mul   
+         lda   <$28,u
+         beq   L0273
+         incb  
+         bra   L027A
+L0273    lda   <$29,u
+         beq   L027A
+         addb  #$02
+L027A    pshs  x
+         leax  >L0344,pcr
+         clra  
+         lda   d,x
+         puls  x
+L0285    rts   
+
+L0286    pshs  b
+         lslb  
+         lslb  
+         lslb  
+         addb  <$1F,u
+         cmpb  #$31
+         bne   L0297
+         inc   <$29,u
+         puls  pc,b
+L0297    cmpb  #$37
+         bne   L02A0
+         com   <$28,u
+         puls  pc,b
+L02A0    pshs  x
+         leax  <$24,u
+         bsr   L02AB
+         puls  x
+         puls  pc,b
+L02AB    pshs  a
+         lda   ,x
+         bpl   L02B5
+         stb   ,x
+         puls  pc,a
+L02B5    lda   $01,x
+         bpl   L02BD
+         stb   $01,x
+         puls  pc,a
+L02BD    stb   $02,x
+         puls  pc,a
+L02C1    pshs  y,x,b
+         leax  <$20,u
+         ldb   #$03
+         pshs  b
+L02CA    leay  <$24,u
+         ldb   #$03
+         lda   ,x
+         bmi   L0322
+L02D3    cmpa  ,y
+         bne   L0319
+         tst   <$23,u
+         bpl   L02EB
+         sta   <$23,u
+         pshs  b
+         ldd   #$1E05
+         std   <$2F,u
+         puls  b
+         bra   L0301
+L02EB    cmpa  <$23,u
+         beq   L02F9
+         sta   <$23,u
+         ldd   #$1E05
+         std   <$2F,u
+L02F9    tst   <$2F,u
+         beq   L0307
+         dec   <$2F,u
+L0301    clr   ,y
+         com   ,y
+         bra   L0322
+L0307    dec   <$30,u
+         beq   L0312
+         orcc  #Negative+Carry
+L030E    leas  $01,s
+         puls  pc,y,x,b
+L0312    ldb   #$05
+         stb   <$30,u
+         bra   L030E
+L0319    leay  $01,y
+         decb  
+         bne   L02D3
+         lda   #$FF
+         sta   ,x
+L0322    leax  $01,x
+         dec   ,s
+         bne   L02CA
+         leas  $01,s
+         leax  <$24,u
+         lda   #$03
+L032F    ldb   ,x+
+         bpl   L033A
+         deca  
+         bne   L032F
+         orcc  #Negative
+         puls  pc,y,x,b
+L033A    leax  <$20,u
+         lbsr  L02AB
+         tfr   b,a
+         puls  pc,y,x,b
+         ENDC
+
+L0344    fdb   $4060,$000c,$1c13,$0a1a,$1208,$1810
+         fdb   $0919,$1120,$2020,$3030,$1f31,$217c,$3222,$0033
+         fdb   $237e,$3424,$0035,$2500,$3626,$0037,$275e,$3828
+         fdb   $5b39,$295d,$3a2a,$003b,$2b00,$2c3c,$7b2d,$3d5f
+         fdb   $2e3e,$7d2f,$3f5c,$0d0d,$0d00,$0000,$0503
+         fcb   $1b
+
+         IFEQ  CO80
+READ     leax  <$3B,u
+         ldb   <$2E,u
+         orcc  #IntMasks
+         cmpb  <$2D,u
+         beq   L03A8
+         abx   
+         lda   ,x
+         lbsr  L017C
+         stb   <$2E,u
+         andcc #^(IntMasks+Carry)
+         rts   
+L03A8    lda   V.BUSY,u
+         sta   V.WAKE,u
+         andcc #^IntMasks
+         ldx   #$0000
+         os9   F$Sleep  
+         clr   V.WAKE,u
+         ldx   >D.Proc
+         ldb   <$36,x
+         beq   READ
+         cmpb  #$03
+L03C0    bhi   READ
+         coma  
+         rts   
+         ENDC
+
+L03C4    pshs  u,y,cc
+         orcc  #IntMasks
+         ldu   <V.PIA,u
+         lda   #$FF
+         sta   $02,u
+         ldb   ,u
+L03D1    ldy   $04,x
+         beq   L03DC
+         andb  #$02
+         beq   L03E1
+         bra   L03E0
+L03DC    andb  #$01
+         beq   L03E1
+L03E0    clra  
+L03E1    sta   $01,x
+         lda   $03,u
+         ora   #$08
+         ldy   $04,x
+         bne   L03EE
+         anda  #$F7
+L03EE    sta   >$FF03
+         lda   $01,u
+         anda  #$F7
+         bsr   L040B
+         std   $04,x
+         lda   $01,u
+         ora   #$08
+         bsr   L040B
+         pshs  b,a
+         ldd   #$003F
+         subd  ,s++
+         std   $06,x
+         clrb  
+         puls  pc,u,y,cc
+L040B    sta   $01,u
+         clrb  
+         bsr   L041A
+         bsr   L041A
+         bsr   L041A
+         bsr   L041A
+         lsrb  
+         lsrb  
+         clra  
+         rts   
+L041A    pshs  b
+         lda   #$7F
+         tfr   a,b
+L0420    lsrb  
+         cmpb  #$03
+         bhi   L042C
+         lsra  
+         lsra  
+         tfr   a,b
+         addb  ,s+
+         rts   
+L042C    addb  #$02
+         andb  #$FC
+         pshs  b
+         sta   >PIA1Base
+         tst   ,u
+         bpl   L043D
+         adda  ,s+
+         bra   L0420
+L043D    suba  ,s+
+         bra   L0420
+
+L0441    fcb   $02
+         fdb   ClrScr-*	$0276
+         fcb   $05
+         fdb   Do05-*	$0258
+         fcb   $06
+         fdb   Do06-*	$03b3
+         fcb   $09
+         fdb   Do09-*	$0222
+         fcb   $0b
+         fdb   Do0B-*	$0209
+         fcb   $0F
+         fdb   Do0F-*	$01fe
+         fcb   $13
+         fdb   Do13-*	$0283
+         fcb   $14
+         fdb   Do14-*	$0339
+         fcb   $19
+         fdb   Do19-*	$023f
+         fcb   $1b
+         fdb   DoESC-*	$0095
+         fcb   $80
+
+L0460    fcb   $01
+         fdb   DoH01-*	$01ee
+         fcb   $02
+         fdb   DoH02-*	$032c
+         fcb   $03
+         fdb   DoH03-*	$0232
+         fcb   $04
+         fdb   DoH04-*	$0233
+         fcb   $05
+         fdb   DoH05-*	$008c
+         fcb   $06
+         fdb   DoH06-*	$01fd
+         fcb   $09
+         fdb   DoH09-*	$01e4
+         fcb   $0b
+         fdb   DoH0B-*	$0261
+         fcb   $0c
+         fdb   ClrScr-*	$023f
+         fcb   $1b
+         fdb   DoESC-*	$0076
+         fcb   $80
+
+L047F    fcb   $41
+         fdb   Do41-*	$021d
+         fcb   $42
+         fdb   Do42-*	$0254
+         fcb   $45
+         fdb   Do45-*	$02c2
+         fcb   $46
+         fdb   Do46-*	$02e5
+         fcb   $47
+         fdb   Do47-*	$0287
+         fcb   $48
+         fdb   Do48-*	$0264
+         fcb   $53
+         fdb   Do53-*	$0058
+         fcb   $56
+         fdb   Do56-*	$037f
+         fcb   $58
+         fdb   Do58-*	$0056
+         fcb   $57
+         fdb   Do57-*	$004b
+         fcb   $76
+         fdb   Do76-*	$037d
+         fcb   $80
+
+WRITE
+         IFEQ  CO80
+         fcb   $6D,$C8,$2C
+         lbne  L079C
+         ldx   <$36,u
+         tst   <$2A,u
+         bne   L04FD
+         ENDC
+         cmpa  #C$SPAC		space?
+         lbcc  L053A		branch if >=
+         cmpa  #C$CR		carriage return?
+         lbeq  L0557		branch if equal
+         cmpa  #C$LF		line feed?
+         lbeq  L055C		branch if equal
+         cmpa  #C$BSP		backspace?
+         lbeq  L056A		branch if equal
+         tst   V.TYPE,u		look at type
+         bmi   L04D2		branch if hi-bit set
+         leay  >L0441,pcr
+         bra   L04D6
+L04D2    leay  >L0460,pcr
+L04D6    cmpa  ,y+
+         beq   L04E2
+         leay  $02,y
+         tst   ,y
+         bpl   L04D6
+         bra   L0555
+L04E2    ldd   ,y
+         jmp   d,y
+
+Do57
+         lda   #$57
+         bra   L04F4
+
+Do53     lda   #$53
+         bra   L04F4
+
+Do58     lda   #$58
+         bra   L04F4
+
+DoESC    lda   #$1B
+L04F4    sta   <$2A,u
+L04F7    clrb  
+         rts   
+
+DoH05
+Do01     lda   #$05
+         bra   L04F4
+
+L04FD    ldb   <$2A,u
+         clr   <$2A,u
+         tst   V.TYPE,u		get type byte
+         bmi   L0513		branch if hi-bit set
+         cmpb  #$2E
+         lbeq  L0807
+         cmpa  #$2E
+         beq   L04F4
+         clrb  
+         rts   
+
+L0513    cmpb  #$05
+         beq   L04F7
+         cmpb  #$57
+         lbeq  L0822
+         cmpb  #$53
+         lbeq  L07F2
+         cmpb  #$58
+         bne   L0534
+         suba  #$20
+         ble   L0555
+         cmpa  #$10
+         bhi   L0555
+         sta   <$31,u
+         bra   L0555
+L0534    leay  >L047F,pcr
+         bra   L04D6
+L053A    bsr   L05A1
+         leax  $01,x
+         stx   <$36,u
+         bsr   L058C
+         ldx   <$34,u
+         leax  <$50,x
+         cmpx  <$36,u
+         bhi   L0555
+L054E    stx   <$34,u
+         bsr   L05CD
+L0553    bsr   L0587
+L0555    clrb  
+         rts   
+
+L0557    ldx   <$34,u
+         bra   L0582
+L055C    leax  <$50,x
+         stx   <$36,u
+         ldx   <$34,u
+         leax  <$50,x
+         bra   L054E
+L056A    cmpx  <$34,u
+         bhi   L0580
+         ldy   <$34,u
+         cmpy  <$32,u
+         beq   L0555
+         leay  <-$50,y
+         sty   <$34,u
+L0580    leax  -$01,x
+L0582    stx   <$36,u
+         bra   L0553
+L0587    ldx   <$36,u
+L058A    bsr   L0591
+L058C    lda   #$0E
+         bsr   L0593
+         rts   
+L0591    lda   #$12
+L0593    pshs  x
+         ldb   ,s+
+         std   [<V.PORT,u]
+         inca  			increment A
+         ldb   ,s+
+         std   [<V.PORT,u]
+         rts   
+L05A1    tst   <$2B,u
+         beq   L05AA
+         ora   #$80
+         bra   L05AC
+L05AA    anda  #$7F
+L05AC    bsr   L05B7
+         pshs  x
+         ldx   $01,u
+         sta   $03,x
+         puls  x
+         rts   
+L05B7    ldb   #$1F
+         stb   [<V.PORT,u]
+L05BC    tst   [<V.PORT,u]
+         bpl   L05BC
+         rts   
+L05C2    bsr   L05B7
+         pshs  x
+         ldx   $01,u
+         lda   $03,x
+         puls  x
+L05CC    rts   
+L05CD    ldd   <$34,u
+         subd  <$32,u
+         cmpd  #$0780
+         bmi   L05CC
+         lbsr  L06AE
+         ldx   <$32,u
+         leax  <$50,x
+         cmpx  #$5000
+         bmi   L05F3
+         ldx   #SIZEX*SIZEY-SIZEX
+         stx   <$34,u
+         stx   <$36,u
+         ldx   #$0000
+L05F3    stx   <$32,u
+         ldy   $01,u
+         leay  $04,y
+         ldb   <$31,u
+         cmpb  #$10
+         beq   L062A
+         negb  
+         andb  #$0F
+         lda   #$C0
+L0607    pshs  b
+         pshs  b
+         ldb   #$20
+         inca  
+         cmpa  #$CA
+         beq   L0628
+L0612    bitb  [<V.PORT,u]
+         bne   L0612
+L0617    bitb  [<V.PORT,u]
+         beq   L0617
+         sta   ,y
+         dec   ,s
+         bne   L0612
+         puls  b
+         puls  b
+         bra   L0607
+L0628    leas  $02,s
+L062A    tfr   x,d
+         tfr   a,b
+         lda   #$0C
+         pshs  b,a
+         tfr   x,d
+         lda   #$0D
+         pshs  b,a
+         ldb   #$20
+L063A    bitb  [<V.PORT,u]
+         beq   L063A
+         puls  x,b,a
+         stx   [<V.PORT,u]
+         std   [<V.PORT,u]
+         lda   #$40
+         sta   ,y
+         lbsr  L0587
+         rts   
+
+
+DoH01
+Do0F
+         ldx   <$32,u
+         stx   <$34,u
+         bra   L0693
+
+DoH09
+Do0B
+         ldx   <$34,u
+         cmpx  <$32,u
+         bls   L0696
+         leax  <-$50,x
+         stx   <$34,u
+         ldx   <$36,u
+         leax  <-$50,x
+         bra   L0693
+
+DoH06
+Do09
+         ldd   <$34,u
+         addd  #SIZEX-1
+         cmpd  <$36,u
+         bhi   L068E
+         ldx   <$32,u
+         leax  >SIZEX*SIZEY-SIZEX,x
+         cmpx  <$34,u
+         beq   L0696
+         ldx   <$34,u
+         leax  <$50,x
+         stx   <$34,u
+L068E    ldx   <$36,u
+         leax  $01,x
+L0693    stx   <$36,u
+L0696    lbra  L0553
+
+DoH03
+Do19
+         bsr   L06AE
+         clrb  
+         rts   
+
+Do41
+DoH04
+Do05
+         bsr   L06A1
+         clrb  
+         rts   
+L06A1    ldd   <$34,u
+         addd  #SIZEX
+         subd  <$36,u
+         tfr   d,y
+         bra   L06B5
+L06AE    ldx   <$34,u
+         ldy   #SIZEX
+L06B5    lbra  L0768
+Do02
+ClrScr   ldx   <$32,u
+         ldy   #2048
+         bsr   L06E6
+         ldx   #$0000
+         stx   <$32,u
+         stx   <$34,u
+         stx   <$36,u
+         lda   #$0C
+         lbsr  L0593
+         lbsr  L058A
+         clrb  
+         rts   
+
+Do42
+DoH0B
+Do13
+         ldd   <$32,u
+         addd  #2048
+         subd  <$36,u
+         tfr   d,y
+         bsr   L06E6
+         bra   L0696
+L06E6    lbsr  L0591
+L06E9    lda   #$20
+L06EB    lbsr  L05A1
+         leay  -$01,y
+         bne   L06EB
+         rts   
+
+Do48
+         ldx   <$34,u
+         tfr   x,y
+         leax  <$4F,x
+         pshs  x
+L06FD    leax  $08,y
+         bsr   L0733
+         cmpx  ,s
+         bcc   L0709
+         leay  $01,y
+         bra   L06FD
+L0709    leas  $02,s
+         ldy   #$0008
+         bsr   L06E9
+         bra   L0696
+
+Do47
+         ldy   <$34,u
+         leay  <$4F,y
+L071A    leax  -$08,y
+         bsr   L0733
+         cmpx  <$34,u
+         bls   L0727
+         leay  -$01,y
+         bra   L071A
+L0727    ldx   <$34,u
+         ldy   #$0008
+         bsr   L06E6
+         lbra  L0553
+L0733    lbsr  L0591
+         lbsr  L05C2
+         pshs  a
+         exg   x,y
+         lbsr  L0591
+         puls  a
+         lbsr  L05AC
+         exg   x,y
+         rts   
+
+Do45     ldy   <$32,u
+         leay  >$077F,y
+L0750    leax  <-$50,y
+         bsr   L0733
+         cmpx  <$34,u
+         bls   L075E
+         leay  -$01,y
+         bra   L0750
+L075E    ldx   <$34,u
+         stx   <$36,u
+L0764    ldy   #SIZEX
+L0768    lbsr  L06E6
+         lbra  L0553
+
+Do46     ldy   <$32,u
+         leay  >SIZEX*SIZEY-SIZEX,y
+         pshs  y
+         ldy   <$34,u
+L077C    leax  <$50,y
+         bsr   L0733
+         cmpy  ,s
+         bcc   L078A
+         leay  $01,y
+         bra   L077C
+L078A    leas  $02,s
+         tfr   y,x
+         bra   L0764
+
+DoH02
+Do14
+         ldb   #$58
+         tst   V.TYPE,u
+         bmi   L0797
+         incb  
+L0797    stb   <$2C,u
+         clrb  
+         rts   
+
+L079C    suba  #$20
+         ldb   <$2C,u
+         tst   V.TYPE,u
+         bpl   L07B1
+         cmpb  #$58
+         bne   L07AD
+         bsr   L07C6
+         bra   L07F0
+L07AD    bsr   L07B9
+         bra   L07D5
+L07B1    cmpb  #$59
+         bne   L07D3
+         bsr   L07B9
+         bra   L07F0
+L07B9    cmpa  #$17
+         bls   L07BF
+         lda   #$17
+L07BF    sta   <$38,u
+         dec   <$2C,u
+         rts   
+L07C6    cmpa  #$4F
+         bls   L07CC
+         lda   #$4F
+L07CC    sta   <$39,u
+         inc   <$2C,u
+         rts   
+L07D3    bsr   L07C6
+L07D5    lda   <$38,u
+         ldb   #$50
+         mul   
+         ldx   <$32,u
+         leax  d,x
+         stx   <$34,u
+         ldb   <$39,u
+         abx   
+         stx   <$36,u
+         lbsr  L0587
+         clr   <$2C,u
+L07F0    clrb  
+         rts   
+L07F2    suba  #$20
+         beq   L0802
+         deca  
+         beq   L0801
+         bra   L0805
+
+Do06     clra  
+         tst   <$2B,u
+         bne   L0802
+L0801    coma  
+L0802    sta   <$2B,u
+L0805    clrb  
+         rts   
+
+L0807    suba  #$30
+         cmpa  #$04
+         bhi   L083A
+         leax  <L083F,pcr
+         ldb   a,x
+         bra   L0832
+
+Do56     ldb   #$F0
+         andb  <$3A,u
+         bra   L0832
+
+Do76     ldb   #$08
+         orb   <$3A,u
+         bra   L0832
+L0822    suba  #$20
+         cmpa  #$03
+         bhi   L083A
+         leax  <L083C,pcr
+         ldb   <$3A,u
+         andb  #$9F
+         orb   a,x
+L0832    stb   <$3A,u
+         lda   #$0A
+         std   [<V.PORT,u]
+L083A    clrb  
+         rts   
+
+L083C    neg   <$60
+         nega  
+L083F    fcb   $20,$60,$00,$68,$08
+
+         emod
+eom      equ   *
+         end