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 / BYTEMOV.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  4KB  |  242 lines

  1. ;----------------------------------------------------
  2. ;
  3. ; BYTESAVER EPROM PROGRAMMER CONTROL PROGRAM
  4. ;
  5. ; VERSION 0.2 - 10 SEP 77
  6. ;
  7. ; COPYRIGHT 1977
  8. ;
  9. ; JEFFREY W. SHOOK
  10. ; P. O. BOX 185
  11. ; ROCKY POINT, NEW YORK 11778
  12. ;
  13. ;-----------------------------------------------------
  14.  
  15. ; SYMBOL DEFINITIONS
  16.  
  17. BDOS    EQU    5    ; CP/M BDOS ENTRY POINT
  18. RCON    EQU    1
  19. WCONB    EQU    9
  20. CR    EQU    0DH    ; ASCII CARRIAGE RETURN
  21. LF    EQU    0AH    ; ASCII LINE FEED
  22. STATL    EQU    0FFH    ; IMSAI CONSOLE STATUS LED'S
  23. BYTSAV    EQU    0E000H    ; BYTESAVER START ADDRESS
  24. NPASS    EQU    128    ; NUMBER OF PROGRAMMING PASSES
  25.             ; THIS VALUE FOR BYTESAVER WITH
  26.             ; 1.0 MSEC. PROGRAM PULSE
  27. BEGDAT    EQU    1000H    ; START OF DATA FOR EPROMS
  28.  
  29. ; MAIN PROGRAM CODE
  30.  
  31.     ORG    100H    ; CP/M STARTS EXECUTION HERE
  32.  
  33.     LXI    H,0    ; SAVE CP/M STACK
  34.     DAD    SP
  35.     SHLD    SPSAV
  36.     LXI    SP,STACK
  37.  
  38.     MVI    A,0FFH    ; CLEAR CONSOLE STATUS LED'S
  39.     OUT    STATL
  40.     CALL    PTITLE    ; PRINT TITLE
  41.     CALL    RANGE    ; GET EPROM ADDRESS RANGE
  42.     CALL    ERASED    ; CHECK IF PROMS ERASED
  43. PROG:    CALL    PROGRM    ; BURN IN EPROMS
  44.     CALL    COMPAR    ; CHECK IF TRANSFER CORRECT
  45.     ORA    A    ; CHECK IF EPROMS CORRECT
  46.     JNZ    GOCPM
  47.     MVI    C,WCONB    ; TRY PROGRAMMING AGAIN?
  48.     LXI    D,MSG1
  49.     CALL    BDOS
  50.     JMP    NEXT1
  51.  
  52. MSG1:    DB    'TRY AGAIN ? ',CR,LF,'$'
  53.  
  54. NEXT1:    CALL    INCH
  55.     CPI    'Y'
  56.     JZ    PROG
  57.  
  58. GOCPM:    LHLD    SPSAV    ; RETURN TO CP/M
  59.     SPHL
  60.     JMP    BDOS
  61.  
  62. ; FUNCTION SUBROUTINES
  63.  
  64. PTITLE:    MVI    C,WCONB    ; PRINT PROGRAM TITLE
  65.     LXI    D,MSG2
  66.     CALL    BDOS
  67.     JMP    NEXT2
  68.  
  69. MSG2:    DB    CR,LF,CR,LF
  70.     DB    'BYTMOV VERSION 0.2',CR,LF,'$'
  71.  
  72. NEXT2:    RET
  73.  
  74. RANGE:LXI    D,MSG3
  75.     CALL    PRTMSG
  76.     JMP    NEXT3
  77.  
  78. MSG3:    DB    CR,LF,'EPROM SOCKET POSITION (0 - 7)',CR,LF
  79.     DB    'FIRST? ','$'
  80.  
  81. NEXT3:    CALL    INHEX
  82.     JC    RANGE
  83.     CPI    8
  84.     JNC    RANGE
  85.     MVI    L,0
  86.     MOV    H,A
  87.     DAD    H
  88.     DAD    H
  89.     LXI    D,BYTSAV
  90.     DAD    D
  91.     SHLD    BEGPRM
  92.  
  93.     LXI    D,MSG4
  94.     CALL    PRTMSG
  95.     JMP    NEXT4
  96.  
  97. MSG4:    DB    CR,LF,'LAST ? ','$'
  98.  
  99. NEXT4:    CALL    INHEX
  100.     JC    RANGE
  101.     CPI    8
  102.     JNC    RANGE
  103.     INR    A
  104.     MOV    H,A
  105.     MVI    L,0
  106.     DAD    H
  107.     DAD    H
  108.     LXI    D,BYTSAV
  109.     DAD    D
  110.     SHLD    ENDPRM
  111.     RET
  112.  
  113. ERASED:    LHLD    BEGPRM
  114. ERASE1:    MOV    A,M
  115.     CPI    0FFH
  116.     JNZ    ERASE2
  117.     INX    H
  118.     LDA    ENDPRM+1
  119.     CMP    H
  120.     JNZ    ERASE1
  121.     LXI    D,MSG5
  122.     JMP    ERASE3
  123.  
  124. ERASE2:    LXI    D,MSG6
  125. ERASE3:    CALL    PRTMSG
  126.     RET
  127.  
  128. MSG5:    DB    CR,LF,CR,LF
  129.     DB    'EPROMS ARE ERASED.',CR,LF,'$'
  130. MSG6:    DB    CR,LF,CR,LF
  131.     DB    'EPROMS NOT ERASED!',CR,LF,'$'
  132.  
  133.  
  134. PROGRM:    LXI    D,MSG7
  135.     CALL    PRTMSG
  136.     CALL    INCH
  137.     CPI    CR
  138.     JNZ    PROGRM
  139.     LXI    D,MSG8
  140.     CALL    PRTMSG
  141.     LXI    B,NPASS
  142.     MOV    A,B
  143.     CMA
  144.     OUT    STATL
  145. PROGR2:    PUSH    B
  146.     LXI    D,BEGDAT
  147.     LHLD    BEGPRM
  148. PROGR3:    LDAX    D
  149.     MOV    M,A
  150.     INX    D
  151.     INX    H
  152.     LDA    ENDPRM+1
  153.     CMP    H
  154.     JNZ    PROGR3
  155.  
  156.     POP    B    ; GET PASS COUNT
  157.     DCX    B
  158.     MOV    A,C    ; DSIPLAY COUNT ON STATUS LIGHTS
  159.     CMA
  160.     OUT    STATL
  161.     MOV    A,B    ; CHECK FOR PASSES = 0
  162.     ORA    C
  163.     JNZ    PROGR2    ; LOOP IF NOT LAST PASS
  164.     LXI    D,MSG9
  165.     CALL    PRTMSG
  166. PROGR5:    CALL    INCH
  167.     CPI    CR
  168.     JNZ    PROGR5
  169.     RET
  170.  
  171. MSG7:    DB    CR,LF
  172.     DB    'TURN PROGRAM POWER ON',CR,LF
  173.     DB    'TYPE CR TO CONTINUE ','$'
  174. MSG8:    DB    CR,LF,CR,LF
  175.     DB    'PROGRAMMING NOW IN PROGRESS',CR,LF
  176.     DB    'PLEASE WAIT 2 MINUTES PER EPROM'
  177.     DB    CR,LF,CR,LF,'$'
  178. MSG9:    DB    'PROGRAMMING COMPLETE',CR,LF
  179.     DB    'TURN PROGRAM POWER OFF',CR,LF
  180.     DB    'TYPE CR TO CONTINUE',CR,LF,'$'
  181.  
  182. COMPAR:    LXI    D,BEGDAT
  183.     LHLD    BEGPRM
  184. COMPA1:    LDAX    D
  185.     CMP    M
  186.     JNZ    COMPA2
  187.     INX    H
  188.     INX    D
  189.     LDA    ENDPRM+1
  190.     CMP    H
  191.     JNZ    COMPA1
  192.     LXI    D,MSG10
  193.     MVI    A,0FFH    ; MARK CORRECT
  194.     PUSH    PSW
  195.     JMP    COMPA3
  196.  
  197. COMPA2    LXI    D,MSG11
  198.     MVI    A,0    ; MARK ERROR
  199.     PUSH    PSW
  200. COMPA3:    CALL    PRTMSG
  201.     POP    PSW    ; GET SUCCESS CODE
  202.     RET
  203.  
  204. MSG10:    DB    'EPROMS CORRECTLY PROGRAMMED',CR,LF,'$'
  205. MSG11:    DB    'EPROM COMPARE ERROR!',CR,LF,'$'
  206.  
  207.  
  208. PRTMSG:    MVI    C,WCONB    ; PRINT MESSAGE ON CONSOLE
  209.     CALL    BDOS
  210.     RET
  211.  
  212. INHEX:    CALL    INCH
  213.     SBI    '0'
  214.     JC    INHEX2
  215.     CPI    10
  216.     JC    INHEX1
  217.     SBI    '@'-'9'
  218. INHEX1:    CPI    16
  219.     JNC    INHEX2
  220.     ORA    A
  221.     RET
  222.  
  223. INHEX2:    XRA    A
  224.     STC
  225.     RET
  226.  
  227. INCH:    PUSH B ! PUSH D ! PUSH H
  228.     MVI    C,RCON
  229.     CALL    BDOS
  230.     POP H ! POP D ! POP B
  231.     RET
  232.  
  233. ; STORAGE ALLOCATIONS
  234.  
  235. BEGPRM:    DS    2    ; EPROM START ADDRESS
  236. ENDPRM:    DS    2    ; EPROM END ADDRESS
  237. SPSAV:    DS    2    ; CP/M STACK POINTER
  238.     DS    128    ; PROGRAM STACK AREA
  239. STACK:    DS    2
  240.  
  241.     END
  242.