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 / SIMTEL / CPMUG / CPMUG006.ARK / TMAP.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  70 lines

  1. ;TARBELL MAP FOR CP/M
  2. ;PRINTS FIRST 11 CHARS READ
  3. CONST    EQU    11    ;FUNCTION TO CHECK CONSOLE STAT
  4. WRCON    EQU    2    ;WRITE CONSOLE CHAR
  5. PRINT    EQU    9    ;PRINT BUFFER FUNCTION
  6. BDOS    EQU    5    ;BDOS ENTRY POINT
  7.     ORG    100H    ;TO TPA BASE
  8.     CALL    START
  9.     DB    'TMAP 09/10/77',0DH,0AH,'$'
  10. START    POP    D
  11.     MVI    C,PRINT
  12.     CALL    BDOS
  13. NEXT    MVI    B,8+3    ;# OF CHRS TO PRINT
  14.     MVI    A,10H    ;GET TARBELL RESET CHAR
  15.     OUT    6EH    ;RESET TARBELL
  16.     LXI    H,BUFF    ;INIT
  17.     SHLD    ADDR    ;BUFFER ADDR
  18. CHAR    PUSH    B    ;SAVE COUNT
  19.     MVI    C,CONST    ;FUNCTION TO CHECK CONSOLE STAT
  20.     CALL    BDOS    ;CHECK CONSOLE
  21.     DCR    A    ;WAS IT READY?
  22.     JZ    FINIS    ;YES, EXIT
  23.     POP    B    ;GET COUNT BACK
  24.     IN    6EH    ;READ STATUS
  25.     ANI    10H    ;READY?
  26.     JNZ    CHAR    ;NO
  27.     IN    6FH    ;READ TARBELL CHAR
  28.     CPI    ' '    ;VALID ASCII?
  29.     JC    GOT5    ;NO
  30.     CPI    'Z'+1
  31.     JNC    GOT5
  32.     LHLD    ADDR    ;STORE
  33.     MOV    M,A    ;CHR IN BUFF
  34.     INX    H
  35.     SHLD    ADDR
  36.     DCR    B    ;MORE CHARS?
  37.     JNZ    CHAR    ;YES
  38. ;GOT 11 VALID ASCII CHARS - PRINT THEM
  39. SHOW    LXI    D,BUFF    ;POINT TO BUFF
  40.     MVI    C,PRINT    ;FUNCTION TO PRINT
  41.     CALL    BDOS    ;PRINT THE FILENAME
  42.     CALL    CRET    ;TYPE C/R
  43.     JMP    NEXT    ;DO IT AGAIN
  44. ;CHECK IF 5 CHARS READ (FOR OLD TAPE MAP)
  45. GOT5    MOV    A,B    ;GET COUNT
  46.     CPI    7
  47.     JNC    NEXT    ;NOT 5
  48. ;GOT 5 - STORE $ IN BUFFER AFTER 5TH CHAR
  49.     MVI    A,'$'
  50.     STA    BUFF+5
  51.     JMP    SHOW
  52. ;ABORT
  53. FINIS    POP    B    ;RESET STACK
  54.     RET
  55. ;ROUTINE TO TYPE C/R
  56. CRET    MVI    A,0DH    ;GET C/R
  57.     CALL    TYPE
  58.     MVI    A,0AH    ;GET L/F
  59. ;ROUTINE TO TYPE CHAR IN A
  60. TYPE    PUSH    B    ;SAVE B (ONLY)
  61.     MOV    E,A    ;CHR MUST BE IN E
  62.     MVI    C,WRCON ;C HAS FUNCTION
  63.     CALL    BDOS    ;PRINT THE CHAR
  64.     POP    B    ;RESTORE B
  65.     RET
  66. ADDR    DW    BUFF    ;CURRENT CHAR POINTER
  67. BUFF    DS    11    ;STORE NAME HERE
  68.     DB    '$'    ;END DELIMITER FOR CONSOLE PRINT
  69.     END    100H
  70.