changeset 667:dddca251ecf8

Moved from level2v3/CMDS
author boisy
date Thu, 26 Dec 2002 22:55:33 +0000
parents 21e8bbf8d074
children 707d46fced97
files 3rdparty/packages/basic09/gfx2.asm
diffstat 1 files changed, 1060 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/3rdparty/packages/basic09/gfx2.asm	Thu Dec 26 22:55:33 2002 +0000
@@ -0,0 +1,1060 @@
+********************************************************************
+* gfx2 - CoCo 3 graphics subroutine module
+*
+* $Id$
+*
+* Ed.    Comments                                       Who YY/MM/DD
+* ------------------------------------------------------------------
+*   2    Original Tandy distribution version
+
+         nam   gfx2
+         ttl   CoCo 3 graphics subroutine module
+
+* Disassembled 02/07/06 13:10:09 by Disasm v1.6 (C) 1988 by RML
+
+         ifp1
+         use   os9defs
+         endc
+
+tylg     set   Sbrtn+Objct   
+atrv     set   ReEnt+rev
+rev      set   $01
+
+         mod   eom,name,tylg,atrv,start,size
+
+u0000    rmb   0
+size     equ   .
+
+name     fcs   /gfx2/
+         fcb   $02 
+
+FuncTbl  fdb   DWSet-FuncTbl
+         fcc   "DWSet"
+         fcb   $FF 
+         fdb   Select-FuncTbl
+         fcc   "Select"
+         fcb   $FF 
+         fdb   OWSet-FuncTbl
+         fcc   "OWSet"
+         fcb   $FF 
+         fdb   OWEnd-FuncTbl
+         fcc   "OWEnd"
+         fcb   $FF 
+         fdb   DWEnd-FuncTbl
+         fcc   "DWEnd"
+         fcb   $FF 
+         fdb   CWArea-FuncTbl
+         fcc   "CWArea"
+         fcb   $FF 
+         fdb   DefBuff-FuncTbl
+         fcc   "DefBuff"
+         fcb   $FF 
+         fdb   KillBuff-FuncTbl
+         fcc   "KillBuff"
+         fcb   $FF 
+         fdb   GPLoad-FuncTbl
+         fcc   "GPLoad"
+         fcb   $FF 
+         fdb   Get-FuncTbl
+         fcc   "Get"
+         fcb   $FF 
+         fdb   Put-FuncTbl
+         fcc   "Put"
+         fcb   $FF 
+         fdb   Pattern-FuncTbl
+         fcc   "Pattern"
+         fcb   $FF 
+         fdb   Logic-FuncTbl
+         fcc   "Logic"
+         fcb   $FF 
+         fdb   DefCol-FuncTbl
+         fcc   "DefCol"
+         fcb   $FF 
+         fdb   Palette-FuncTbl
+         fcc   "Palette"
+         fcb   $FF 
+         fdb   Color-FuncTbl
+         fcc   "Color"
+         fcb   $FF 
+         fdb   Border-FuncTbl
+         fcc   "Border"
+         fcb   $FF 
+         fdb   ScaleSw-FuncTbl
+         fcc   "ScaleSw"
+         fcb   $FF 
+         fdb   DWProtSw-FuncTbl
+         fcc   "DWProtSw"
+         fcb   $FF 
+         fdb   GCSet-FuncTbl
+         fcc   "GCSet"
+         fcb   $FF 
+         fdb   Font-FuncTbl
+         fcc   "Font"
+         fcb   $FF 
+         fdb   TCharSw-FuncTbl
+         fcc   "TCharSw"
+         fcb   $FF 
+         fdb   BoldSw-FuncTbl
+         fcc   "BoldSw"
+         fcb   $FF 
+         fdb   PropSw-FuncTbl
+         fcc   "PropSw"
+         fcb   $FF 
+         fdb   SetDPtr-FuncTbl
+         fcc   "SetDPtr"
+         fcb   $FF 
+         fdb   Point-FuncTbl
+         fcc   "Point"
+         fcb   $FF 
+         fdb   Line-FuncTbl
+         fcc   "Line"
+         fcb   $FF 
+         fdb   Box-FuncTbl
+         fcc   "Box"
+         fcb   $FF 
+         fdb   Bar-FuncTbl
+         fcc   "Bar"
+         fcb   $FF 
+         fdb   PutGC-FuncTbl
+         fcc   "PutGC"
+         fcb   $FF 
+         fdb   Fill-FuncTbl
+         fcc   "Fill"
+         fcb   $FF 
+         fdb   Circle-FuncTbl
+         fcc   "Circle"
+         fcb   $FF 
+         fdb   Draw-FuncTbl
+         fcc   "Draw"
+         fcb   $FF 
+         fdb   Ellipse-FuncTbl
+         fcc   "Ellipse"
+         fcb   $FF 
+         fdb   Arc-FuncTbl
+         fcc   "Arc"
+         fcb   $FF 
+         fdb   CurHome-FuncTbl
+         fcc   "CurHome"
+         fcb   $FF 
+         fdb   CurXY-FuncTbl
+         fcc   "CurXY"
+         fcb   $FF 
+         fdb   ErLine-FuncTbl
+         fcc   "ErLine"
+         fcb   $FF 
+         fdb   ErEOLine-FuncTbl
+         fcc   "ErEOLine"
+         fcb   $FF 
+         fdb   CurOff-FuncTbl
+         fcc   "CurOff"
+         fcb   $FF 
+         fdb   CurOn-FuncTbl
+         fcc   "CurOn"
+         fcb   $FF 
+         fdb   CurRgt-FuncTbl
+         fcc   "CurRgt"
+         fcb   $FF 
+         fdb   Bell-FuncTbl
+         fcc   "Bell"
+         fcb   $FF 
+         fdb   CurLft-FuncTbl
+         fcc   "CurLft"
+         fcb   $FF 
+         fdb   CurUp-FuncTbl
+         fcc   "CurUp"
+         fcb   $FF 
+         fdb   CurDwn-FuncTbl
+         fcc   "CurDwn"
+         fcb   $FF 
+         fdb   ErEOWndw-FuncTbl
+         fcc   "ErEOWndw"
+         fcb   $FF 
+         fdb   Clear-FuncTbl
+         fcc   "Clear"
+         fcb   $FF 
+         fdb   CrRtn-FuncTbl
+         fcc   "CrRtn"
+         fcb   $FF 
+         fdb   ReVOn-FuncTbl
+         fcc   "ReVOn"
+         fcb   $FF 
+         fdb   ReVOff-FuncTbl
+         fcc   "ReVOff"
+         fcb   $FF 
+         fdb   UndlnOn-FuncTbl
+         fcc   "UndlnOn"
+         fcb   $FF 
+         fdb   UndlnOff-FuncTbl
+         fcc   "UndlnOff"
+         fcb   $FF 
+         fdb   BlnkOn-FuncTbl
+         fcc   "BlnkOn"
+         fcb   $FF 
+         fdb   BlnkOff-FuncTbl
+         fcc   "BlnkOff"
+         fcb   $FF 
+         fdb   InsLin-FuncTbl
+         fcc   "InsLin"
+         fcb   $FF 
+         fdb   DelLin-FuncTbl
+         fcc   "DelLin"
+         fcb   $FF 
+         fcb   $00 
+L0200    fcc   "OFF"
+         fcb   $FF 
+         fcb   $00 
+         fcc   "AND"
+         fcb   $FF 
+         fcb   $01 
+         fcc   "OR"
+         fcb   $FF 
+         fcb   $02 
+         fcc   "XOR"
+         fcb   $FF 
+         fcb   $03 
+         fcb   $00 
+L0214    fcc   "OFF"
+         fcb   $FF 
+         fcb   $00 
+         fcc   "ON"
+         fcb   $FF 
+         fcb   $01 
+         fcb   $00 
+
+start    leas  <-$21,s
+         clr   ,s
+         ldd   <$23,s
+         beq   L0289
+         tsta  
+         bne   L0289
+         ldd   [<$25,s]
+         ldx   <$27,s
+         leax  -$01,x
+         beq   L023B
+         leax  -$01,x
+         bne   L023D
+         tfr   b,a
+L023B    sta   ,s
+L023D    leau  >FuncTbl,pcr
+L0241    ldy   ,u++
+         beq   L0285
+         tst   ,s
+         bne   L024F
+         ldx   <$25,s
+         bra   L0252
+L024F    ldx   <$29,s
+L0252    lda   ,x+
+         eora  ,u+
+         anda  #$DF
+         beq   L0262
+         leau  -$01,u
+L025C    tst   ,u+
+         bpl   L025C
+         bra   L0241
+L0262    tst   -$01,u
+         bpl   L0252
+         tfr   y,d
+         leay  >FuncTbl,pcr
+         leay  d,y
+         leax  $01,s
+         lda   #$1B
+         sta   ,x+
+         tst   ,s
+         bne   L027D
+         leau  <$29,s
+         bra   L0280
+L027D    leau  <$2D,s
+L0280    ldd   <$23,s
+         jmp   ,y
+L0285    ldb   #$30
+         bra   L028B
+L0289    ldb   #$38
+L028B    coma  
+         leas  <$21,s
+         rts   
+
+DWSet    lda   #$20
+         pshs  x,b,a
+         ldx   $02,u
+         cmpx  #$0002
+         bne   L029F
+         ldd   [,u]
+         bra   L02A1
+L029F    lda   [,u]
+L02A1    puls  x,b,a
+         beq   L02D1
+         bmi   L02D1
+         tst   ,s
+         beq   L02AF
+         cmpb  #$0A
+         bra   L02B1
+L02AF    cmpb  #$09
+L02B1    lbne  L0289
+         sta   ,x+
+         lbsr  L088D
+         bra   L02DF
+
+Select   lda   #$21
+L02BE    tst   ,s
+         beq   L02C6
+         cmpb  #$02
+         bra   L02C8
+L02C6    cmpb  #$01
+L02C8    bne   L0289
+         sta   ,x+
+         lbra  L08A1
+
+OWSet    lda   #$22
+L02D1    tst   ,s
+         beq   L02D9
+         cmpb  #$09
+         bra   L02DB
+L02D9    cmpb  #$08
+L02DB    bne   L0289
+         sta   ,x+
+L02DF    lbsr  L088D
+         lbsr  L088D
+         lbsr  L088D
+L02E8    lbsr  L088D
+         lbsr  L088D
+         lbsr  L088D
+         lbsr  L088D
+         lbra  L08A1
+
+OWEnd    lda   #$23
+         bra   L02BE
+
+DWEnd    lda   #$24
+         bra   L02BE
+
+CWArea   lda   #$25
+         tst   ,s
+         beq   L0309
+         cmpb  #$06
+         bra   L030B
+L0309    cmpb  #$05
+L030B    lbne  L0289
+         sta   ,x+
+         bra   L02E8
+
+DefBuff  lda   #$29
+         tst   ,s
+         beq   L031D
+         cmpb  #$05
+         bra   L031F
+L031D    cmpb  #$04
+L031F    lbne  L0289
+         sta   ,x+
+         lbsr  L088D
+         lbsr  L088D
+         lbra  L0387
+
+KillBuff lda   #$2A
+L0330    tst   ,s
+         beq   L0338
+         cmpb  #$04
+         bra   L033A
+L0338    cmpb  #$03
+L033A    lbne  L0289
+         sta   ,x+
+         lbsr  L088D
+         lbsr  L088D
+         lbra  L08A1
+
+GPLoad   lda   #$2B
+         tst   ,s
+         beq   L0353
+         cmpb  #$08
+         bra   L0355
+L0353    cmpb  #$07
+L0355    lbne  L0289
+         sta   ,x+
+         lbsr  L088D
+         lbsr  L088D
+         lbsr  L088D
+         bra   L0381
+
+Get      lda   #$2C
+         tst   ,s
+         beq   L0370
+         cmpb  #$08
+         bra   L0372
+L0370    cmpb  #$07
+L0372    lbne  L0289
+         sta   ,x+
+         lbsr  L088D
+         lbsr  L088D
+         lbsr  L0845
+L0381    lbsr  L0845
+L0384    lbsr  L0845
+L0387    lbsr  L0845
+         lbra  L08A1
+
+Put      lda   #$2D
+         tst   ,s
+         beq   L0397
+         cmpb  #$06
+         bra   L0399
+L0397    cmpb  #$05
+L0399    lbne  L0289
+         sta   ,x+
+         lbsr  L088D
+         lbsr  L088D
+         bra   L0384
+
+Pattern  lda   #$2E
+         bra   L0330
+
+Logic    lda   #$2F
+         tst   ,s
+         beq   L03B5
+         cmpb  #$03
+         bra   L03B7
+L03B5    cmpb  #$02
+L03B7    lbne  L0289
+         sta   ,x+
+         pshs  y,x,b,a
+         leay  >L0200,pcr
+L03C3    ldx   ,u
+         lbsr  L0811
+         bcs   L03D5
+         ldx   $02,s
+         sta   ,x+
+         stx   $02,s
+         puls  y,x,b,a
+         lbra  L08A1
+L03D5    puls  y,x,b,a
+         lbra  L0289
+
+DefCol   lda   #$30
+         lbra  L02BE
+
+Palette  lda   #$31
+         lbra  L0330
+
+Color    tst   ,s
+         bne   L03E9
+         incb  
+L03E9    cmpb  #$03
+         beq   L03F8
+         cmpb  #$04
+         beq   L03FC
+         cmpb  #$05
+         beq   L0406
+         lbra  L0289
+L03F8    bsr   L0418
+         bra   L0415
+L03FC    bsr   L0418
+         ldb   #$1B
+         stb   ,x+
+         bsr   L041F
+         bra   L0415
+L0406    bsr   L0418
+         ldb   #$1B
+         stb   ,x+
+         bsr   L041F
+         ldb   #$1B
+         stb   ,x+
+         lbsr  L0439
+L0415    lbra  L08A1
+L0418    lda   #$32
+         sta   ,x+
+         lbra  L088D
+L041F    lda   #$33
+         sta   ,x+
+         lbra  L088D
+
+Border   tst   ,s
+         beq   L042E
+         cmpb  #$03
+         bra   L0430
+L042E    cmpb  #$02
+L0430    lbne  L0289
+         bsr   L0439
+         lbra  L08A1
+L0439    lda   #$34
+         sta   ,x+
+         lbra  L088D
+         rts   
+
+ScaleSw  lda   #$35
+L0443    tst   ,s
+         beq   L044B
+         cmpb  #$03
+         bra   L044D
+L044B    cmpb  #$02
+L044D    lbne  L0289
+         sta   ,x+
+         pshs  y,x,b,a
+         leay  >L0214,pcr
+         lbra  L03C3
+
+DWProtSw lda   #$36
+         bra   L0443
+
+GCSet    lda   #$39
+         lbra  L0330
+
+Font     lda   #$3A
+         lbra  L0330
+
+TCharSw  lda   #$3C
+         bra   L0443
+
+BoldSw   lda   #$3D
+         bra   L0443
+
+PropSw   lda   #$3F
+         bra   L0443
+
+SetDPtr  tst   ,s
+         beq   L047E
+         cmpb  #$04
+         bra   L0480
+L047E    cmpb  #$03
+L0480    lbne  L0289
+         bsr   L0489
+         lbra  L08A1
+L0489    pshs  a
+         lda   #$40
+         sta   ,x+
+         lbsr  L085D
+         lbsr  L085D
+         puls  pc,a
+
+Point    lda   #$42
+         tst   ,s
+         beq   L04A1
+         cmpb  #$04
+         bra   L04A3
+L04A1    cmpb  #$03
+L04A3    lbne  L0289
+         sta   ,x+
+         lbsr  L0845
+         lbsr  L0845
+         lbra  L08A1
+
+Line     lda   #$46
+L04B4    tst   ,s
+         bne   L04B9
+         incb  
+L04B9    cmpb  #$04
+         beq   L04CB
+         cmpb  #$06
+         beq   L04C4
+         lbra  L0289
+L04C4    lbsr  L0489
+         ldb   #$1B
+         stb   ,x+
+L04CB    sta   ,x+
+         lbsr  L0845
+         lbsr  L0845
+         lbra  L08A1
+
+Box      lda   #$48
+         bra   L04B4
+
+Bar      lda   #$4A
+         bra   L04B4
+
+PutGC    lda   #$4E
+         tst   ,s
+         beq   L04E8
+         cmpb  #$04
+         bra   L04EA
+L04E8    cmpb  #$03
+L04EA    lbne  L0289
+         bra   L04CB
+
+Fill     lda   #$4F
+         tst   ,s
+         bne   L04F7
+         incb  
+L04F7    cmpb  #$02
+         beq   L0509
+         cmpb  #$04
+         beq   L0502
+         lbra  L0289
+L0502    lbsr  L0489
+         ldb   #$1B
+         stb   ,x+
+L0509    sta   ,x+
+         lbra  L08A1
+
+Circle   lda   #$50
+         tst   ,s
+         bne   L0515
+         incb  
+L0515    cmpb  #$03
+         beq   L0527
+         cmpb  #$05
+         beq   L0520
+         lbra  L0289
+L0520    lbsr  L0489
+         ldb   #$1B
+         stb   ,x+
+L0527    sta   ,x+
+         lbsr  L0845
+         lbra  L08A1
+
+Draw     tst   ,s
+         beq   L053E
+         cmpb  #$05
+         beq   L0549
+         cmpb  #$03
+         beq   L055F
+         lbra  L0289
+L053E    cmpb  #$04
+         beq   L0549
+         cmpb  #$02
+         beq   L055F
+         lbra  L0289
+L0549    pshs  u,x
+         leas  -$02,s
+         ldd   #$1B40
+         std   ,x++
+         lbsr  L0875
+         lbsr  L0875
+         lbsr  L0708
+         leas  $02,s
+         bra   L0561
+L055F    pshs  u,x
+L0561    ldu   ,u
+         leas  -$02,s
+         clr   $01,s
+         clr   ,s
+L0569    lda   ,u+
+         anda  #$DF
+         cmpa  #$41
+         beq   L05A6
+         cmpa  #$42
+         beq   L05AD
+         cmpa  #$55
+         beq   L05CA
+         cmpa  #$4E
+         beq   L05D1
+         cmpa  #$53
+         lbeq  L0614
+         cmpa  #$45
+         lbeq  L0649
+         cmpa  #$57
+         lbeq  L0659
+         lda   -$01,u
+         cmpa  #$2C
+         beq   L0569
+         cmpa  #$FF
+         bne   L05A1
+         leas  $02,s
+         puls  u,x
+         leas  <$21,s
+         rts   
+L05A1    leas  $06,s
+         lbra  L0289
+L05A6    lbsr  L066C
+         std   ,s
+         bra   L0569
+L05AD    ldd   #$1B41
+         std   ,x++
+L05B2    lbsr  L066C
+         std   ,x++
+         lda   ,u+
+         cmpa  #$2C
+         bne   L05A1
+         lbsr  L066C
+         std   ,x++
+         lbsr  L06BD
+         lbsr  L0708
+         bra   L0569
+L05CA    ldd   #$1B45
+         std   ,x++
+         bra   L05B2
+L05D1    ldd   #$1B47
+         std   ,x++
+         lda   ,u
+         anda  #$DF
+         cmpa  #$45
+         beq   L05F1
+         cmpa  #$57
+         beq   L05FF
+         ldd   #$0000
+         std   ,x++
+         lbsr  L066C
+         lbsr  L0703
+         std   ,x++
+         bra   L060B
+L05F1    leau  $01,u
+         lbsr  L066C
+         std   ,x++
+         lbsr  L0703
+         std   ,x++
+         bra   L060B
+L05FF    leau  $01,u
+         lbsr  L066C
+         lbsr  L0703
+         std   ,x++
+         std   ,x++
+L060B    lbsr  L06BD
+         lbsr  L0708
+         lbra  L0569
+L0614    ldd   #$1B47
+         std   ,x++
+         lda   ,u
+         anda  #$DF
+         cmpa  #$45
+         beq   L0630
+         cmpa  #$57
+         beq   L063A
+         ldd   #$0000
+         std   ,x++
+         bsr   L066C
+         std   ,x++
+         bra   L060B
+L0630    leau  $01,u
+         bsr   L066C
+         std   ,x++
+         std   ,x++
+         bra   L060B
+L063A    leau  $01,u
+         bsr   L066C
+         std   $02,x
+         lbsr  L0703
+         std   ,x++
+         leax  $02,x
+         bra   L060B
+L0649    ldd   #$1B47
+         std   ,x++
+         bsr   L066C
+         std   ,x++
+         ldd   #$0000
+         std   ,x++
+         bra   L060B
+L0659    ldd   #$1B47
+         std   ,x++
+         bsr   L066C
+         lbsr  L0703
+         std   ,x++
+         ldd   #$0000
+         std   ,x++
+         bra   L060B
+L066C    ldd   #$0000
+         pshs  u,b,a
+         ldb   ,u
+         cmpb  #$2D
+         bne   L0679
+         leau  $01,u
+L0679    clra  
+         ldb   ,u
+         subb  #$30
+         bcs   L069E
+         cmpb  #$09
+         bhi   L069E
+         pshs  b,a
+         ldd   $02,s
+         lslb  
+         rola  
+         lslb  
+         rola  
+         lslb  
+         rola  
+         pshs  b,a
+         ldd   $04,s
+         lslb  
+         rola  
+         addd  ,s++
+         addd  ,s++
+         std   ,s
+         leau  $01,u
+         bra   L0679
+L069E    cmpu  $02,s
+         lbeq  L06B8
+         lda   [<$02,s]
+         cmpa  #$2D
+         bne   L06B3
+         puls  b,a
+         lbsr  L0703
+         bra   L06B5
+L06B3    puls  b,a
+L06B5    leas  $02,s
+         rts   
+L06B8    leas  $0C,s
+         lbra  L0289
+L06BD    ldd   $02,s
+         beq   L0702
+         subd  #$0001
+         beq   L06D2
+         subd  #$0001
+         beq   L06E3
+         subd  #$0001
+         beq   L06F3
+         bra   L0702
+L06D2    ldd   -$02,x
+         lbsr  L0703
+         pshs  b,a
+         ldd   -$04,x
+         std   -$02,x
+         puls  b,a
+         std   -$04,x
+         bra   L0702
+L06E3    ldd   -$04,x
+         lbsr  L0703
+         std   -$04,x
+         ldd   -$02,x
+         lbsr  L0703
+         std   -$02,x
+         bra   L0702
+L06F3    ldd   -$04,x
+         lbsr  L0703
+         pshs  b,a
+         ldd   -$02,x
+         std   -$04,x
+         puls  b,a
+         std   -$02,x
+L0702    rts   
+L0703    nega  
+         negb  
+         sbca  #$00
+         rts   
+L0708    pshs  y,x
+         tfr   x,d
+         subd  $08,s
+         tfr   d,y
+         ldx   $08,s
+         lda   $0C,s
+         bne   L0717
+         inca  
+L0717    os9   I$Write  
+         puls  y,x
+         ldx   $04,s
+         rts   
+
+Ellipse  lda   #$51
+         lbra  L04B4
+
+Arc      lda   #$52
+         tst   ,s
+         beq   L0735
+         cmpb  #$0A
+         beq   L0740
+         cmpb  #$08
+         beq   L0747
+         lbra  L0289
+L0735    cmpb  #$09
+         beq   L0740
+         cmpb  #$07
+         beq   L0747
+         lbra  L0289
+L0740    lbsr  L0489
+         ldb   #$1B
+         stb   ,x+
+L0747    sta   ,x+
+         lbsr  L0845
+         lbsr  L0845
+         lbsr  L0845
+         lbsr  L0845
+         lbsr  L0845
+         lbsr  L0845
+         lbra  L08A1
+
+CurHome  lda   #$01
+         bra   L07C3
+
+CurXY    lda   #$02
+         tst   ,s
+         beq   L076C
+         cmpb  #$04
+         bra   L076E
+L076C    cmpb  #$03
+L076E    lbne  L0289
+         sta   -$01,x
+         bsr   L077B
+         bsr   L077B
+         lbra  L08A1
+L077B    pshs  y,b,a
+         ldd   [,u++]
+         adda  #$20
+         sta   ,x+
+         pulu  y
+         leay  -$01,y
+         beq   L0793
+         leay  -$01,y
+         lbne  L08BA
+         addb  #$20
+         stb   -$01,x
+L0793    puls  pc,y,b,a
+
+ErLine   lda   #$03
+         bra   L07C3
+
+ErEOLine lda   #$04
+         bra   L07C3
+
+CurOff   lda   #$05
+         sta   -$01,x
+         lda   #$20
+         bra   L07EE
+
+CurOn    lda   #$05
+         sta   -$01,x
+         lda   #$21
+         bra   L07EE
+
+CurRgt   lda   #$06
+         bra   L07C3
+
+Bell     lda   #$07
+         bra   L07C3
+
+CurLft   lda   #$08
+         bra   L07C3
+
+CurUp    lda   #$09
+         bra   L07C3
+
+CurDwn   lda   #$0A
+         bra   L07C3
+
+ErEOWndw lda   #$0B
+L07C3    leax  -$01,x
+         lbra  L02BE
+
+Clear    lda   #$0C
+         bra   L07C3
+
+CrRtn    lda   #$0D
+         bra   L07C3
+
+ReVOn    lda   #$1F
+         sta   -$01,x
+         lda   #$20
+         bra   L07EE
+
+ReVOff   lda   #$1F
+         sta   -$01,x
+         lda   #$21
+         bra   L07EE
+
+UndlnOn  lda   #$1F
+         sta   -$01,x
+         lda   #$22
+         bra   L07EE
+
+UndlnOff lda   #$1F
+         sta   -$01,x
+         lda   #$23
+L07EE    lbra  L02BE
+
+BlnkOn   lda   #$1F
+         sta   -$01,x
+         lda   #$24
+         bra   L07EE
+
+BlnkOff  lda   #$1F
+         sta   -$01,x
+         lda   #$25
+         bra   L07EE
+
+InsLin   lda   #$1F
+         sta   -$01,x
+         lda   #$30
+         bra   L07EE
+
+DelLin   lda   #$1F
+         sta   -$01,x
+         lda   #$31
+         bra   L07EE
+L0811    pshs  x
+L0813    lda   ,y+
+         beq   L0841
+L0817    eora  ,x+
+         anda  #$DF
+         bne   L082F
+         tst   ,y
+         bpl   L0827
+         tst   ,x
+         bmi   L083B
+         bra   L082F
+L0827    tst   ,x
+         bmi   L082F
+         lda   ,y+
+         bra   L0817
+L082F    leay  -$01,y
+L0831    tst   ,y+
+         bpl   L0831
+         ldx   ,s
+         leay  $01,y
+         bra   L0813
+L083B    lda   $01,y
+         andcc #^Carry
+         bra   L0843
+L0841    orcc  #Carry
+L0843    puls  pc,x
+L0845    pshs  y,b,a
+         ldd   [,u++]
+         pulu  y
+         leay  -$01,y
+         bne   L0855
+         clr   ,x+
+         sta   ,x+
+         bra   L085B
+L0855    leay  -$01,y
+         bne   L08BA
+         std   ,x++
+L085B    puls  pc,y,b,a
+L085D    pshs  y,b,a
+         ldd   [,u++]
+         pulu  y
+         leay  -$01,y
+         bne   L086D
+         clr   ,x+
+         sta   ,x+
+         bra   L0873
+L086D    leay  -$01,y
+         bne   L08BE
+         std   ,x++
+L0873    puls  pc,y,b,a
+L0875    pshs  y,b,a
+         ldd   [,u++]
+         pulu  y
+         leay  -$01,y
+         bne   L0885
+         clr   ,x+
+         sta   ,x+
+         bra   L088B
+L0885    leay  -$01,y
+         bne   L08C2
+         std   ,x++
+L088B    puls  pc,y,b,a
+L088D    pshs  y,b,a
+         ldd   [,u++]
+         sta   ,x+
+         pulu  y
+         leay  -$01,y
+         beq   L089F
+         leay  -$01,y
+         bne   L08BA
+         stb   -$01,x
+L089F    puls  pc,y,b,a
+L08A1    bsr   L08A7
+         leas  <$21,s
+         rts   
+L08A7    tfr   x,d
+         leax  $03,s
+         pshs  x
+         subd  ,s++
+         tfr   d,y
+         lda   $02,s
+         bne   L08B6
+         inca  
+L08B6    os9   I$Write  
+         rts   
+L08BA    leas  $06,s
+         bra   L08C4
+L08BE    leas  $09,s
+         bra   L08C4
+L08C2    leas  $0F,s
+L08C4    lbra  L0289
+
+         emod
+eom      equ   *
+         end
+