home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug014.ark / PUT.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  177 lines

  1. ;CONTRIBUTED TO CP/M USERS' GROUP BY:
  2. ;
  3. ;               MEMORY MERCHANTS
  4. ;               1350 BUFFALO ROAD
  5. ;               ROCHESTER NY 14624
  6. ;
  7.  
  8. .I8080
  9. .PABS
  10. .PHEX
  11. .XLINK
  12. .LOC    100H
  13.  
  14. TBUFF    =    080H
  15. TFCB    =    05CH
  16. BDOS    =      5H
  17. CPM    =      0H
  18.  
  19. BEGIN:    LXI    H,0
  20.     SHLD    LOADAD
  21.     DAD    SP
  22.     SHLD    OSTACK
  23.     LXI    SP,STACK
  24.     XRA    A
  25.     STA    EXEC
  26.     STA    HEX.AD
  27.     LXI    H,TBUFF+2
  28.     LXI    D,FILE.NM
  29. ..LOOP:    MOV    A,M
  30.     STAX    D
  31.     CPI    " "
  32.     JZ    HEXAD
  33.     INX    H
  34.     INX    D
  35.     JMP    ..LOOP
  36. HEXAD:    LXI    D,HEX.AD+1
  37.     INX    H
  38. ..LOOP:    MOV    A,M
  39.     STAX    D
  40.     CPI    " "
  41.     JZ    GO
  42.     PUSH    H
  43.     LXI    H,HEX.AD+5
  44.     MOV    A,D
  45.     CMP    H
  46.     JNZ    ..GO.ON
  47.     MOV    A,E
  48.     CMP    L
  49.     JNZ    ..GO.ON
  50.     POP    H
  51.     JMP    GO
  52. ..GO.ON:
  53.     POP    H
  54.     INX    H
  55.     INX    D
  56.     JMP    ..LOOP
  57. GO:    INX    H
  58.     MOV    A,M
  59.     CPI    "G"
  60.     JNZ    NOGO
  61.     MVI    A,0FFH
  62.     STA    EXEC
  63. NOGO:    LXI    H,HEX.AD+2
  64. ..LOOP:    MOV    A,M
  65.     CPI    " "
  66.     JZ    HEX
  67.     INX    H
  68.     JMP    ..LOOP
  69. HEXDIG:    SUI    30H
  70.     JC    HEXERR
  71.     CPI    0AH
  72.     JNC    ..ALPHA
  73.     RET
  74. ..ALPHA:    
  75.     SUI    07H
  76.     CPI    10H
  77.     JNC    HEXERR
  78.     RET
  79. HEX:    DCX    H
  80.     MOV    A,M
  81.     CALL    HEXDIG
  82.     STA    LOADAD
  83.     DCX    H
  84.     MOV    A,M
  85.     ORA    A
  86.     JZ    OPEN
  87.     CALL    HEXDIG
  88.     RLC
  89.     RLC
  90.     RLC
  91.     RLC
  92.     MOV    B,A
  93.     LDA    LOADAD
  94.     ADD    B
  95.     STA    LOADAD
  96.     DCX    H
  97.     MOV    A,M
  98.     ORA    A
  99.     JZ    OPEN
  100.     CALL    HEXDIG
  101.     STA    LOADAD+1
  102.     DCX    H
  103.     MOV    A,M
  104.     ORA    A
  105.     JZ    OPEN
  106.     CALL    HEXDIG
  107.     RLC
  108.     RLC
  109.     RLC
  110.     RLC
  111.     MOV    B,A
  112.     LDA    LOADAD+1
  113.     ADD    B
  114.     STA    LOADAD+1
  115. OPEN:    MVI    C,15
  116.     LXI    D,TFCB
  117.     CALL    BDOS
  118.     CPI    0FFH
  119.     JZ    FINDERR
  120.     LHLD    LOADAD
  121.     SHLD    LOAD
  122.     XCHG
  123.     CALL    SETDMA
  124. ..READ:    MVI    C,20
  125.     LXI    D,TFCB
  126.     CALL    BDOS
  127.     ORA    A
  128.     JNZ    ENDFILE
  129.     LHLD    LOAD
  130.     LXI    D,0080H
  131.     DAD    D
  132.     SHLD    LOAD
  133.     XCHG
  134.     CALL    SETDMA
  135.     JMP    ..READ
  136. SETDMA:    MVI    C,26
  137.     CALL    BDOS
  138.     RET
  139. CLOSE:
  140. ENDFILE:
  141.     MVI    C,16
  142.     LXI    D,TFCB
  143.     CALL    BDOS
  144.     LDA    EXEC
  145.     ORA    A
  146.     JZ    CPM
  147.     LHLD    LOADAD
  148.     PCHL
  149.  
  150. HEXERR:    MVI    C,9
  151.     LXI    D,..MSG
  152.     CALL    BDOS
  153.     LHLD    OSTACK
  154.     SPHL
  155.     JMP    CPM
  156. ..MSG:    .ASCIS    "ERROR IN HEX ADDRESS  $"
  157.  
  158. FINDERR:
  159.     MVI    C,9
  160.     LXI    D,..MSG
  161.     CALL    BDOS
  162.     LHLD    OSTACK
  163.     SPHL
  164.     JMP    CPM
  165. ..MSG:    .ASCIS    "OPEN ERROR ***** CAN NOT FIND FILE  $"
  166.  
  167. OSTACK:    .BLKW    1
  168. EXEC:    .BLKB    1
  169. HEX.AD:    .BLKB    6
  170. FILE.NM:
  171.     .BLKB    13
  172. LOADAD:    .BLKW    1
  173. LOAD:    .BLKW    10
  174. STACK:    .BLKB    1
  175.  
  176.     .END
  177.