home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / OSBORNE / OSBWS4.LBR / BLINK.AZM / BLINK.ASM
Assembly Source File  |  2000-06-30  |  2KB  |  58 lines

  1. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  2. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  3. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  4. ;
  5. ; BLINK.ASM
  6. ;
  7. ; from WSCUST13.ASM by Gerry Werth
  8. ;
  9. ; This routine worked with WS v3.30.
  10. ; -- I have no idea if it can be used on WS4
  11. ;
  12. ; The following is adapted from WSPATCH by Lee Swordy as modified by
  13. ; Jim Woolley.  Self Patch for BIOS location, and correction for use
  14. ; with eighth-bit HILITE hardware reverse video, added by Gerry Werth.
  15. ; This routine blinks the cursor.
  16.  
  17. org    BLDIV        ; Diversion from WS Console Input Routine
  18.                 ; Call should be preceeded by 01h,00h
  19.                 ; Look with EDFILE, DU, or DDT.
  20.     call    BLPATCH        ; address of blink patch
  21.     ;
  22. org    MORPAT        ; Start of Patch Space
  23.     ;
  24. BLRATE    equ    (BLINKR+1)*100h
  25. BLPATCH    cpi    06h        ; is this an Input from Console Call ?
  26.     jnz    BLRETN1        ; No:  Return to WS
  27.     push    h
  28.     lda    0002h        ; load accumulator with HI byte of BIOS
  29.     sta    CLBL+2        ; store it below
  30.     lhld    CURSOR        ; get BIOS +0E5Ah cursor pointer
  31.     mov    a,m        ; get the character
  32.     sta    BLCHAR+1    ; save it for exit (set bit 8 correctly)
  33. TIMSET    lxi    d,BLRATE    ; Blink Rate Timer
  34. LOOP3    push    d
  35. CLBL    call    0006h        ; BIOS+6 call to get console status
  36.     pop    d
  37.     ora    a
  38.     jnz    BLRETN2        ; return to WS if Character ready
  39.     dcr    e
  40.     jnz    LOOP3
  41.     dcr    d
  42.     jnz    LOOP3        ; Decrement timer and loop until ready
  43. CPTR    lhld    CURSOR        ; get BIOS +0E5Ah cursor pointer
  44.     mov    a,m
  45.     xri    80h        ; Toggle Cursor (Underline On/Off)
  46.     mov    m,a
  47.     jmp    TIMSET        ; Restart Timer
  48. ;
  49. BLRETN2    lhld    CURSOR        ; Cursor pointer
  50. BLCHAR    mvi    m,00h        ; restore original value of char
  51.     pop    h
  52.     mvi    a,06        ; Restore 'A' contents
  53. BLRETN1    jmp    BLCIP        ; WS instruction call that Diversion replaced
  54.             ; use JMP instead of CALL to save space for RET.
  55.     ;
  56. ;
  57. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  58.