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 / CPMUG008.ARK / GO.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  1KB  |  94 lines

  1. ;CONTRIBUTED TO CP/M USERS' GROUP BY:
  2. ;
  3. ;               MEMORY MERCHANTS
  4. ;               1350 BUFFALO ROAD
  5. ;               ROCHESTER NY 14624
  6. ;
  7.  
  8. ;    GO COMMAND ----- JUMPS TO A HEX ADDRESS
  9.  
  10. .I8080
  11. .PABS
  12. .PHEX
  13. .XLINK
  14.  
  15. BDOS    =    05H
  16. CPM    =    0
  17. STACK    =    TEMP+10
  18. TBUFF    =    080H
  19.  
  20. ;    SYNTAX:    GO HHHH<CR> , WHERE 'H' IS A HEX CHARACTER
  21. ;OF LENGTH 0 TO 4 AND <CR> IS A CARRIAGE RETURN.
  22. ;    IE., GO 9CD<CR>  OR  GO F000<CR>
  23.  
  24.     .LOC    100H
  25.  
  26.     LXI    SP,STACK    ;SET STACK
  27.     LXI    H,0
  28.     SHLD    GO.AD        ;CLEAR GO.AD
  29.     LXI    H,TBUFF        ;POINT TO BUFFER
  30.     LDA    TBUFF        ;GET BUFFER COUNTER
  31.     ADD    L        ;GO TO END OF HEX STRING
  32.     MOV    L,A
  33.     INX    H
  34.     PUSH    H
  35.     LXI    H,GO.AD        ;WORK ON LOWER ORDER BYTE OF GO.AD
  36.     SHLD    TEMP
  37.     POP    H
  38.     CALL    ADDR        ;DECODE HEX DIGITS
  39.     PUSH    H
  40.     LXI    H,GO.AD+1    ;WORK ON HIGH ORDER BYTE OF GO.AD
  41.     SHLD    TEMP
  42.     POP    H
  43.     CALL    ADDR
  44.     LHLD    GO.AD
  45.     PCHL
  46.  
  47. ADDR:    CALL    CHECK        ;CHECK FOR END OF HEX DIGITS
  48.     CALL    HEXDIG
  49.     PUSH    H
  50.     LHLD    TEMP
  51.     MOV    M,A
  52.     POP    H
  53.     CALL    CHECK
  54.     CALL    HEXDIG
  55.     RLC
  56.     RLC
  57.     RLC
  58.     RLC
  59.     PUSH    H
  60.     LHLD    TEMP
  61.     ADD    M
  62.     MOV    M,A
  63.     POP    H
  64.     RET
  65.  
  66. CHECK:    DCX    H        ;LOOK AT NEXT HEX DIGIT
  67.     MOV    A,M
  68.     CPI    " "
  69.     RNZ            ;IF SPACE JUMP & GO
  70.     LHLD    GO.AD
  71.     PCHL
  72.  
  73. HEXDIG:    SUI    30H
  74.     JC    HEXERR        ;NOT A HEX DIGIT
  75.     CPI    0AH
  76.     JNC    ..ALPHA
  77.     RET
  78.  
  79. ..ALPHA:
  80.     SUI    07H
  81.     CPI    10H
  82.     JNC    HEXERR        ;NOT A HEX DIGIT
  83.     RET
  84.  
  85. HEXERR:    MVI    C,9
  86.     LXI    D,..MSG
  87.     CALL    BDOS
  88.     JMP    CPM        ;DO A WARM BOOT
  89. ..MSG:    .ASCII    "ERROR IN HEX ADDRESS  $"
  90.  
  91. GO.AD:    .BLKW    1
  92. TEMP:    .BLKW    1
  93.     .END
  94.