********************************
*IF YOU MAKE MODIFICATIONS TO  *
*THIS SOFTWARE AND WOULD LIKE  *
*US TO USE IT IN FUTURE        *
*RELEASES, PLEASE KEEP IN  MIND*
*THAT IT MUST WORK WITH NORMAL *
*PRODUCTION VARIATIONS IN      *
*HARDWARE! PLEASE DON'T TRY TO *
*TIME THINGS SO TIGHT THAT THEY*
*MAY ONLY WORK WITH YOUR       *
*PARTICULAR DIGITIZER!         *
*------------------------------*
*ALSO MAKE SURE YOU HAVE       *
*ENOUGH VIDEO LEVEL INTO THE   *
*DIGITIZER. IF THE SCAN STOPS  *
*OR IS INTERMITTENT YOU EITHER *
*HAVE LOW SYNC TO VIDEO RATIO  *
*OR LOW VIDEO LEVEL.           *
********************************

       NAM   VIDX V0.7

********************************
;0  = 16K
;1  = 32K

MEM    EQU  1

       IFEQ MEM

;--------
;- 16 K -
;--------
       ORG $3B00

       ELSE

;--------
;- 32 K -
;--------
       ORG $7800

       ENDC

********************************

FLAG   EQU  $300

       LBRA ERASE  ERASE & DIGIT
       LBRA XOR    XOR SCR 2 & 1
       LBRA VIDIG  DIGITIZE ONLY
       LBRA RESUME RESUME SCAN
       LBRA ERON   INIT ERR TRAP
       LBRA PRINT1 PRINT DRIVER

ERASE  LDX BSCRN
       LDD #$FFFF
A@     STD ,X++
       CMPX ESCRN
       BLO A@

VIDIG  LDX BSCRN <MEM PNTR
       LEAX -1,X
       STX SCR1
RESUME LDA $FF03 <DISABLE INT
       ANDA #$FE
       STA $FF03

       LDA $FF21
       ANDA #$FE <DISABLE FIRQ
*----------------------------
*NOTE CD INPUT INVERTED
*FALLING EDGE BECOMES RISING
*EDGE AFTER PASSING THROUGH
*339 COMPARATOR !!!
*----------------------------
       ORA #$2   <RISING EDGE
       STA $FF21

       LDA #$7   <LAST LINE CNTR
       STA SCR2

       BSR START <START SCAN

A@     LDY #TABLE
       LDX SCR1
       LEAX +1,X
       STX SCR1
*-----
C@     LDA #%11110111
       STA $FF02
       LDA $FF00
       ANDA #$4    'S KEY
       BEQ ERASE
*-----
       LDA #%11101111
       STA $FF02
       LDA $FF00
       ANDA #$1    'D KEY
       BEQ VIDIG
*-----
       LDA #%11111101
       STA $FF02
       LDA $FF00
       ANDA #$1    'A KEY
       BEQ EXIT
*-----
       BSR SYNC
D@     LDA $FF22   GET RS232
       ANDA #$1    INPUT
       BEQ B@
*-----
********************************
*note black & white routines   *
*must take same time to excute!*
*some code make not look       *
*efficient. it is written to   *
*waste time!!!!                *
********************************
       LDA #$FF    WHITE
       BRA X@
*-----
B@     LDA #$0     BLACK
       BEQ X@
*-----
X@     ORA ,Y      WRITE TO
       ANDA ,X     SCREEN
       STA ,X
*-----
       LDA #$5 VERTICAL SCAN
E@     DECA    SPEED 'DELAY'
       BNE E@
       LEAX +$20,X
       CMPX ESCRN2      -1
       BLS D@
       LEAY +1,Y
       CMPY #ETABLE
       BEQ A@
       LEAX -$1800,X
*-----
       CMPX BSCRN2     +$1F
       BNE C@
       DEC SCR2
       BNE C@
*-----
R@     LDA $FF03
       ORA #$1
       STA $FF03
       RTS
EXIT   LDA #$1
       STA FLAG
       BRA R@

*****************
*RESET DIGITIZER*
*****************
START  LDB #$20
A@     LDA $FF20
       ORA #$2    <RS-232 LOW
       STA $FF20
       BSR DELAY
*-----
       LDA $FF20
       ANDA #$FD  <RS-232 HIGH
       STA $FF20
       BSR DELAY
       DECB
       BNE  A@
*-----
*DELAY HERE TO SKIP
*HORIZONTAL SYNC PULSE
       LDX #$E000
B@     LEAX -1,X
       BNE  B@
       RTS

DELAY  LDA #$80
A@     DECA
       BNE A@
       RTS

SYNC   PSHS X
       LDA $FF20 <RESET FLAG
*-----
A@     LDA $FF00
       ANDA #$1    'A KEY
       BEQ R@
*-----
       LDA $FF21
       ANDA #$80
       BEQ A@
       LDX #$B0  <DELAY TO SKIP
B@     LEAX -1,X <VERTICAL SYNC
       BNE B@
R@     PULS X
       RTS

*---------------

TABLE  FCB $7F,$BF,$DF,$EF
       FCB $F7,$FB,$FD,$FE
ETABLE NOP

SCR1   FCB $0D,$FF
SCR2   FCB 0

*************

XOR    LDX BSCRN
       LDY ESCRN
A@     LDA ,X
       EORA ,Y+
       STA ,X+
       CMPX ESCRN
       BNE A@
ZZEND1 RTS

*-----------------------------*
*      NAM  ON ERROR TRAP     *
*-----------------------------*

X0068  EQU   $68
X00A6  EQU   $A6
X018E  EQU   $18E
X018F  EQU   $18F
LOCERM EQU   $509
RTN    EQU   $ADC0

CKDSK  LDD $C000
       CMPD #'DK
       BEQ D@
;-----
       LDX #$600 <NOT DISK SYS
       STX BSCRN
       LDY #$1E00
       STY ESCRN
       BRA R@
;-----
D@     LDX #$E00 <DISK SYSTEM
       STX BSCRN
       LDY #$2600
       STY ESCRN
;-----
R@     LEAX +$1F,X
       STX BSCRN2
       LEAY -1,Y
       STY ESCRN2
       RTS

BSCRN  FCB 0,0
BSCRN2 FCB 0,0 <BSCRN + $1F
ESCRN  FCB 0,0
ESCRN2 FCB 0,0 <ESCRN - 1

*TURN ERROR TRAP ON
ERON   PSHS CC,A,X
       LEAX C@,PCR
       CMPX X018F
       BEQ  R@
       BSR  CKDSK
       LEAX C@,PCR
       STX  X018F
       LDA  #$7E
       STA  X018E
R@     PULS CC,A,X,PC
*--------------------
C@     PSHS CC,X,Y
       LDX  X0068
       CMPX #$FFFE
       BEQ  A@
       LDX  #$FFFE
       STX  X0068
B@     LEAX BL2,PCR
       STX  X00A6
       LBSR ERMSG
       PULS CC,X,Y
       JMP  RTN
A@     LDB  #3
       PULS CC,X,Y,PC

*------
BL2    FCB  $20
       FCB  $81,$A5
       FCC  "63990"  <= LINE #
       FCB  $84
*------

ERMSG  LDX #M@
       LDY #LOCERM
A@     LDA ,X+
       BEQ R@
       ANDA #$3F
       STA ,Y+
       BRA A@
R@     LDX #$1000  < MSG TIMER
B@     LEAX -1,X
       BNE B@
       RTS
M@     FCB $D3,$D9,$D3,$D4
       FCB $C5,$CD,$A0,$C5
       FCB $D2,$D2,$CF,$D2
       FCB $A0,$A1
ZZEND2 FCB 0

********************************
* C.ITOH 8510 PRINTER DRIVER   *
* ASPECT RATIO 4:3             *
********************************

SCR    FDB 0

*-----
PRINT1 LDA #254  <SEND OUTPUT TO
       STA 111   <PRINTER RS-232
*-----
       LDA   #27
       LBSR  PRINT
       LDA   #$3E   SET UNIDIR
       LBSR  PRINT
*-----
       LDA   #27
       LBSR  PRINT
       LDA   #78  10 CPI
       LBSR  PRINT (96 DOTS/IN)
*-----
       LDA   #27
       LBSR  PRINT
       LDA   #$54  SET LINE FEED
       LBSR  PRINT TO 16/144THS
       LDA   #'1   OF AN INCH
       LBSR  PRINT
       LDA   #'6
       LBSR  PRINT
*-----

       LDX BSCRN2     +$1F

LOOP   STX SCR

       LDA   #13    DO CARRIAGE
       LBSR  PRINT  RETURN.

       LDA #27
       BSR PRINT
       LDA #83
       BSR PRINT
       LDA #'0
       BSR PRINT
       LDA #'1  3      <192/384
       BSR PRINT
       LDA #'9  8
       BSR PRINT
       LDA #'2  4
       BSR PRINT

       LDY #192    384 <192/384

*ABORT IF 'A' KEY PUSHED
LOOP2  LDA #%11111101
       STA $FF02
       LDA $FF00
       ANDA #$1    'A KEY
       BNE B@
       LBRA EXIT
*-----
B@     LDA ,X
       PSHS Y
       LDB #$0
       STB ,X
       LDY #$1
A@     LEAY -1,Y
       BNE A@
       STA ,X
       PULS Y
*---
       COMA
       BSR PRINT
       LEAX +32,X
       LEAY -1,Y
       BNE LOOP2

       LDX SCR
       LEAX -1,X
       CMPX BSCRN
       BHS LOOP

       LDA   #13    END WITH CR.
PRINT  JMP   [$A002]

ZZEND3 NOP

*****
*END*
*****
