home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug006.ark / CKSUM.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  106 lines

  1. ;CHECKSUM ANY CP/M FILE
  2.     ORG    100H
  3.     JMP    START
  4. ID    DB    'CKSUM AS OF 7/20/77',0DH,0AH,'$'
  5. ;INIT LOCAL STACK
  6. START    LXI    H,0
  7.     DAD    SP
  8.     SHLD    STACK
  9.     LXI    SP,STACK
  10. ;PRINT ID MESSAGE
  11.     LXI    D,ID
  12.     MVI    C,PRINT
  13.     CALL    BDOS
  14. ;OPEN THE FILE
  15.     LXI    D,FCB
  16.     MVI    C,OPEN
  17.     CALL    BDOS
  18.     INR    A
  19.     JNZ    LINE
  20.     CALL    ERXIT
  21.     DB    '++FILE NOT FOUND$'
  22. ERXIT    POP    D    ;GET MSG
  23.     MVI    C,PRINT
  24.     CALL    BDOS
  25. EXIT    LHLD    STACK
  26.     SPHL        ;RESTORE STACK
  27.     RET
  28. ;OPENED OK
  29. LINE    MVI    A,0DH
  30.     CALL    TYPE
  31.     MVI    A,0AH
  32.     CALL    TYPE
  33.     MVI    B,16    ;# OF HEX PER LINE
  34. LOOP    PUSH    B    ;SAVE DIGIT COUNT
  35.     CALL    FREAD
  36.     ORA    A
  37.     JNZ    CKERR
  38.     LXI    H,80H
  39.     XRA    A
  40. CKSLP    ADD    M
  41.     INR    L
  42.     JNZ    CKSLP
  43.     CALL    XOB
  44.     POP    B
  45.     DCR    B
  46.     JNZ    LOOP
  47.     JMP    LINE
  48. ;NON-ZERO DISK RETURN CODE
  49. CKERR    DCR    A
  50.     JZ    EOF
  51.     CALL    ERXIT
  52.     DB    '*++DISK READ ERROR$'
  53. EOF    CALL    ERXIT
  54.     DB    0DH,0AH,'++EOF$'
  55. XOB    PUSH    PSW
  56.     RAR
  57.     RAR
  58.     RAR
  59.     RAR
  60.     CALL    NIBBL
  61.     POP    PSW
  62.     CALL    NIBBL
  63.     MVI    A,' '
  64.     CALL    TYPE
  65.     RET
  66. NIBBL    ANI    0FH
  67.     CPI    10
  68.     JC    ISNUM
  69.     ADI    7
  70. ISNUM    ADI    '0'
  71. TYPE    PUSH    B
  72.     PUSH    D
  73.     PUSH    H
  74.     MOV    E,A
  75.     MVI    C,WRCON
  76.     CALL    BDOS
  77.     POP    H
  78.     POP    D
  79.     POP    B
  80.     RET
  81. ;FILE READ
  82. FREAD    LXI    D,FCB
  83.     MVI    C,READ
  84.     CALL    BDOS
  85.     RET        ;PROG SHOULD CHECK STAT
  86.     DS    30
  87. STACK    DS    2
  88. ;
  89. ; BDOS EQUATES (VERSION 3)
  90. ;
  91. RDCON    EQU    1
  92. WRCON    EQU    2
  93. PRINT    EQU    9
  94. OPEN    EQU    15    ;0FFH=NOT FOUND
  95. CLOSE    EQU    16    ;   "    "
  96. SRCHF    EQU    17    ;   "    "
  97. SRCHN    EQU    18    ;   "    "
  98. DELT    EQU    19    ;NO RET CODE
  99. READ    EQU    20    ;0=OK, 1=EOF
  100. WRITE    EQU    21    ;0=OK, 1=ERR, 2=?, 0FFH=NO DIR SPC
  101. MAKE    EQU    22    ;0FFH=BAD
  102. REN    EQU    23    ;0FFH=BAD
  103. STDMA    EQU    26
  104. BDOS    EQU    5
  105. FCB    EQU    5CH
  106.