Mercurial > hg > Members > kono > nitros9-code
view level1/modules/co80.asm @ 1553:9f5c9a328fb8
Updated ChangeLogs for next (03.02.02) release (whenever that will be)
author | boisy |
---|---|
date | Mon, 10 May 2004 15:19:10 +0000 |
parents | f3557a63b11c |
children | e19a38f50c3a |
line wrap: on
line source
******************************************************************** * CO80 - WordPak 80-RS co-driver for CCIO * * $Id$ * * Edt/Rev YYYY/MM/DD Modified by * Comment * ------------------------------------------------------------------ * 2 ????/??/?? * From Tandy OS-9 Level One VR 02.00.00 * * 2003/09/22 Rodney Hamilton * recoded dispatch table fcbs nam CO80 ttl WordPak 80-RS co-driver for CCIO * Disassembled 98/08/23 17:58:20 by Disasm v1.6 (C) 1988 by RML ifp1 use defsfile endc tylg set Systm+Objct atrv set ReEnt+rev rev set $00 edition set 2 mod eom,name,tylg,atrv,start,size u0000 rmb 0 size equ . fcb $06 name fcs /CO80/ fcb edition start equ * Init lbra L0022 Write lbra L0083 GetStat lbra L0054 SetStat lbra L007F Term lbra L004A * Init L0022 ldx #$FF78 lda #$06 sta $01,x sta ,x lda #$08 sta $01,x clr ,x lda #$0E sta $01,x clr ,x lbsr L0152 lbsr L0229 ldd #$07D0 lbsr L0189 ldb <$70,u orb #$04 bra L004F * Term L004A ldb <$70,u andb #$FB L004F stb <$70,u clrb rts * GetStat L0054 cmpa #$25 bne L007F ldy $06,y clra ldb <$58,u addb #$20 std $06,y ldb <$59,u addb #$20 std $04,y ldx #$FF78 lda #$0D sta $01,x lbsr L0174 lda ,x lbsr L0174 lda ,x sta $01,y * no operation entry point L007D clrb rts * SetStat L007F ldb #E$UnkSvc coma rts * Write L0083 ldx #$FF78 cmpa #$0E bcs L00B6 cmpa #$1E bcs L007D cmpa #$20 lbcs L01F2 cmpa #$7F bcs L0106 cmpa #$C0 bls L00A6 anda #$1F suba #$01 cmpa #$19 bhi L00B2 bra L0106 L00A6 cmpa #$AA bcs L00B2 ora #$10 anda #$1F cmpa #$1A bcc L0106 L00B2 lda #$7F bra L0106 L00B6 leax >L00C5,pcr lsla ldd a,x leax d,x pshs x ldx #$FF78 rts * display functions dispatch table L00C5 fdb L007D-L00C5 $ffb8 $00:no-op (null) fdb L0152-L00C5 $008d $01:HOME cursor fdb L01A2-L00C5 $00dd $02:CURSOR XY fdb L0179-L00C5 $00b4 $03:ERASE LINE fdb L017B-L00C5 $00b6 $04:ERASE TO EOL fdb L0211-L00C5 $014c $05:CURSOR ON/OFF fdb L0115-L00C5 $0050 $06:CURSOR RIGHT fdb L007D-L00C5 $ffb8 $07:no-op (bel:handled in CCIO) fdb L00E1-L00C5 $001c $08:CURSOR LEFT fdb L00F3-L00C5 $002e $09:CURSOR UP fdb L0121-L00C5 $005c $0A:CURSOR DOWN fdb L0186-L00C5 $00c1 $0B:ERASE TO EOS fdb L0184-L00C5 $00bf $0C:CLEAR SCREEN fdb L0101-L00C5 $003c $0D:RETURN * $08 - cursor left L00E1 ldd <$58,u bne L00E8 clrb rts L00E8 decb bge L00EE ldb #$4F deca L00EE std <$58,u bra L014F * $09 - cursor up L00F3 lda <$58,u beq L00FF deca sta <$58,u lbra L01CC L00FF clrb rts * $0D - move cursor to start of line (carriage return) L0101 clr <$59,u bra L014C L0106 ora <$5A,u pshs a bsr L0174 puls a ldb #$0D stb $01,x sta ,x * $06 - cursor right L0115 inc <$59,u lda <$59,u cmpa #$4F ble L014C bsr L0101 * $0A - cursor down (line feed) L0121 lda <$58,u cmpa #$17 bge L012E inca sta <$58,u bra L014F L012E ldd <$54,u lbsr L01DC ldd <$54,u addd #$0050 bsr L0161 std <$54,u bsr L018E ldd <$54,u bsr L016B lda #$08 sta $01,x stb ,x L014C lda <$58,u L014F lbra L01CC * $01 - home cursor L0152 clr <$58,u clr <$59,u ldd <$54,u std <$56,u lbra L01DC L0161 cmpd #$07D0 blt L016A subd #$07D0 L016A rts L016B lsra rorb lsra rorb lsra rorb lsra rorb rts L0174 lda $01,x bpl L0174 rts * $03 - erase line L0179 bsr L0101 do a CR L017B lda <$58,u inca ldb #80 line length mul bra L0189 * $0C - clear screen L0184 bsr L0152 do home cursor, then erase to EOS * $0B - erase to end of screen L0186 ldd #$0780 L0189 addd <$54,u bsr L0161 L018E bsr L016B bsr L0174 lda #$0B sta $01,x stb ,x lda #$0D sta $01,x lda #$20 sta ,x L01A0 clrb rts * $02 XX YY - move cursor to col XX-32, row YY-32 L01A2 leax >L01B0,pcr ldb #$02 L01A8 stx <$26,u stb <$25,u clrb rts L01B0 ldx #$FF78 lda <$29,u ldb <$28,u subb #$20 blt L01A0 cmpb #$4F bgt L01A0 suba #$20 blt L01A0 cmpa #$17 bgt L01A0 std <$58,u L01CC ldb #$50 mul addb <$59,u adca #$00 addd <$54,u bsr L0161 std <$56,u L01DC pshs b,a bsr L0174 lda #$0A sta $01,x lda ,s+ sta ,x lda #$09 sta $01,x lda ,s+ sta ,x clrb rts L01F2 cmpa #$1F bne L0201 lda <$29,u cmpa #$21 beq L0205 cmpa #$20 beq L020C L0201 comb ldb #E$Write rts L0205 lda #$80 sta <$5A,u clrb rts L020C clr <$5A,u L020F clrb rts * $05 XX - set cursor off/on/color per XX-32 L0211 leax >L0219,pcr ldb #$01 bra L01A8 L0219 ldx #$FF78 lda <$29,u cmpa #$20 cursor code valid? blt L0201 no, error beq L022D cmpa #$2A color code in range? bgt L020F no, ignore L0229 lda #$05 cursor on (all colors=on) bra L022F L022D lda #$45 cursor off L022F ldb #$0C stb $01,x sta ,x clrb rts emod eom equ * end