home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug047.ark / PROM.ASM < prev    next >
Encoding:
Assembly Source File  |  1984-04-29  |  12.6 KB  |  630 lines

  1. ;
  2. ;*****************************************************************
  3. ;
  4. ;ASSEMBLY NOTES FOR PROM.ASM
  5. ;
  6. ;THIS PROGRAM HAS BEEN SET UP TO RELOCATE ITSELF TO 4200H.
  7. ;THE FOLLOWING PROCEEDURE IS RECOMMENDED IN ORDER TO
  8. ;"LOAD" PROM.ASM :
  9. ;
  10. ;
  11. ;    A>ASM PROM.XXX
  12. ;    A>DDT 
  13. ;    -F100,6000,00
  14. ;    -IPROM.HEX
  15. ;    -R
  16. ;    -M4200,48FF,200
  17. ;    - <CTRL-C>
  18. ;    A>SAVE 8 PROM.COM
  19. ;
  20. ;
  21. ;PROGRAM OPERATION NOTES
  22. ;
  23. ;THESE ROUTINES ARE USED TO LOAD THE 16K BLOCK OF RAM STARTING AT
  24. ;0100H. WHEN USED WITH THIS PROM PROGRAMER PROGRAM THE FOLLOWING
  25. ;ENTRY IS MADE: " A>PROM FILENAME.TYP "
  26. ;IF THE FILE FITS IN A SINGLE EXTENT ON DISK (UP TO 16K BYTES), IT
  27. ;WILL ALL BE LOADED AT THIS TIME.  IF THE FILE TO BE PROGRAMMED IS
  28. ;LARGER THAN 16K, ONE EXTENT AT A TIME MAY BE LOADED INTO RAM BY
  29. ;TYPING THE COMMAND "A>PROM FILENAME.TYP N"  WHERE 'N' IS THE 
  30. ;NUMBER OF THE EXTENT. I.E., N=0 IS THE FIRST 16K BLOCK, N=1
  31. ;IS THE SECOND 16K BLOCK, AND SO ON.
  32. ;THE DEFAULT FOR 'N' IS 0(ZERO) AND DOES NOT NEED TO BE ENTERED
  33. ;IF THE FILE TO BE PROGRAMMED DOES NOT EXCEED 16K BYTES.
  34. ;
  35. ;
  36. ;AFTER THE "FILENAME.TYP" IS LOADED THE PROGRAM ASKS WHICH 1K OR 2K
  37. ;SEGMENT OF THE LOADED 16K (OR LESS) BLOCK IS TO BE TRANSFERRED
  38. ;FROM RAM TO THE PROM.
  39. ;
  40. ;REMEMBER:  2708 PROMS= 1K OR 16 PROMS PER EXTENT; ROM NUMBER = 0-F
  41. ;           2716 PROMS= 2K OR  8 PROMS PER EXTENT; ROM NUMBER = 0-7
  42. ;
  43. ;
  44. ;*****************************************************************
  45. ;
  46. ;
  47. ;
  48. ;THIS PROGRAM INTERFACES CP/M WITH THE SOLID STATE MUSIC..PB1,
  49. ;2708/2716 EPROM PROGRAMMER BOARD.
  50. ;
  51. ;PROGRAMMING ROUTINES COPYRIGHT, 1978, BY:
  52. ;     
  53. ;    SSM, INC.
  54. ;    2116 WALSH AVE.
  55. ;    SANTA CLARA, CA   95050
  56. ;
  57. ;    TELEPHONE: 408-246-2707
  58. ;
  59. ;CP/M INTERFACE ROUTINES ADAPTED BY:
  60. ;
  61. ;    JIM LOOFBOURROW
  62. ;    1324 WEST LIME AVENUE
  63. ;    LOMPOC, CALIFORNIA 93436
  64. ;
  65. ;    TELEPHONE: 805-736-2581 (5-10 PM PST)
  66. ;
  67. ;
  68. ;    CONTROL PORT:  01 = 2708 EPROM
  69. ;                      02 = 2716 EPROM
  70. ;
  71. ;       PROGRAMMING CYCLES:     256 FOR 2708 EPROM
  72. ;                1   FOR 2716 EPROM
  73. ;
  74. ;    PROGRAMMING INSTRUCTIONS
  75. ;
  76. ;    1.  ENSURE PROGRAMMING SOCKETS ARE EMPTY.
  77. ;    2.  SW1 OFF (SWITCH LEVER TO THE RIGHT)
  78. ;    3.  ENSURE RED LED IS OFF
  79. ;    4.  WHEN INSTRUCTED BY THE PROGRAM INSERT EPROM 
  80. ;    5.  2708 IN LEFT............2716 IN RIGHT
  81. ;    6.  WHEN INSTRUCTED BY THE PROGRAM TURN SW1 ON.
  82. ;    7.  PROGRAM THE EPROM
  83. ;    8.  LED SHOULD ILLUMINATE DURING PROGRAMMING CYCLES.
  84. ;    9.  TURN OFF SW-1 WHEN PROGRAMMING FINISHED.
  85. ;      10.  RETURN TO CP/M WITH CONTROL C.
  86. ;
  87. ;
  88. ;
  89. BDOS    EQU    0005H    ;DOS ENTRY POINT
  90. OPENF    EQU    15    ;FILE OPEN
  91. READF    EQU    20    ;READ FUNCTION
  92. CONS    EQU    1    ;READ CONSOLE
  93. BRKF    EQU    11    ;BREAK KEY FUNCTION
  94. TYPEF    EQU    2    ;TYPE FUNCTION
  95. FCB    EQU    5CH    ;FILE CONTROL BLOCK ADDRESS
  96. LF    EQU    0AH    ;LINE FEED
  97. CR    EQU    0DH    ;CARRAIGE RETURN
  98. SPC    EQU    20H    ;SPACE
  99. PBUF    EQU    09H    ;PRINT BUFFER
  100. BUFF    EQU    80H    ;INPUT DISK BUFFER ADDRESS
  101. DMAF    EQU    26    ;DMA FUNCTION
  102. ;
  103. ;
  104. ;  FILE CONTROL BLOCK DEFINITIONS
  105. FCBDN    EQU    FCB+0    ;DISK NAME
  106. FCBFN    EQU    FCB+1    ;FILE NAME
  107. FCBFT    EQU    FCB+9    ;DISK FILE TYPE (3 CHAR'S)
  108. FCBRL    EQU    FCB+12    ;FILE'S CURRENT REEL NUMBER
  109. FCBRC    EQU    FCB+15    ;FILE'S RECORD COUNT (0 TO 128)
  110. FCBCR    EQU    FCB+32    ;CURRENT (NEXT) RECORD NUMBER (0 TO 127)
  111. FCBLN    EQU    FCB+33    ;FCB LENGTH
  112. ;
  113. ;
  114. ;
  115. ;
  116. ;REGISTER USAGE:
  117. ;REG A....PASS DATA FROM MEMORY TO THE PROGRAMMER
  118. ;REG B....REPEATED PROGRAMMING CYCLES
  119. ;REG C....SIZE.  SIZE=256(REG C + 1)
  120. ;REG DE...PROM CARD ADDRESS
  121. ;REG HL...DATA ADDRESS TO BE COPIED
  122. ;
  123. ;
  124. CPM    EQU    0000H    ;RE-ENTRY POINT OF DOS
  125. PROM    EQU    0D000H    ;PROGRAMMING SOCKET
  126. CPORT    EQU    10H    ;PB1 CONTROL PORT
  127. ;
  128. ;
  129. ;
  130. ;
  131. ;START OF PROGRAM
  132. ;
  133. BEGIN:    ORG    100H
  134. MOVE:    LXI    H,200H
  135.     LXI    D,4200H
  136.     LXI    B,700H
  137. ;
  138. MOVE1:  MOV      A,M
  139.     INX    H
  140.     STAX    D
  141.     INX    D
  142.     DCX    B
  143.     MOV    A,B
  144.     ORA    C
  145.     JNZ    MOVE1
  146.     JMP    XFER    ;LOAD DISK FILE TO 16K BUFFER
  147. ;
  148.     ORG    4200H
  149. ;
  150. ;**************************************************************
  151. ;
  152. ;THE FOLLOWING ROUTINES BEGINNING WITH "XFER:" HAVE BEEN EDITED
  153. ;AND ADAPTED FROM A PROGRAM IN THE CP/M USER'S GROUP LIBRARY.
  154. ;THE AUTHOR OF XFER.COM IS AS FOLLOWS:
  155. ;
  156. ;    LAWRENCE E. HUGHES
  157. ;    8080 SOFTWARE DEVELOPMENT CENTER
  158. ;    TALLAHASSEE, FLORIDA   32303
  159. ;
  160. ;**************************************************************
  161. ;
  162. ;
  163.  RCFC     EQU    01                  ;READ CONSOLE
  164.  WCFC     EQU    02                  ;WRITE CONSOLE
  165.  OFFC     EQU    15                  ;OPEN FILE
  166.  RRFC     EQU    20                  ;READ RECORD
  167.  SAFC     EQU    26                  ;SET (DMA) ADDRESS
  168.  FN       EQU    01                  ;FILE NAME
  169.  FT       EQU    09                  ;FILE TYPE
  170.  EX       EQU    12             ;EXTENT
  171.  NR       EQU    32                  ;NEXT RECORD
  172. ;
  173. ;
  174.  XFER:    LXI    SP,STACK+64
  175.           XRA    A              ;DEFAULT TO EXTENT ZERO
  176.           STA    FCB+EX
  177.           LDA    FCB+17         ;CHECK FOR SECOND PARAMETER
  178.           CPI    ' '            ;JUMP IF NOT PRESENT
  179.           JZ     XFER0
  180.           SUI    '0'            ;DECODE IT
  181.           JC     XFER9          ;JUMP IF NOT LEGAL DECIMAL DIGIT
  182.           CPI    10
  183.           JNC    XFER9
  184.           STA    FCB+EX
  185.  XFER0:   LXI    H,0100H        ;SET START OF BUFFER
  186.           SHLD   ADDR
  187.           XRA    A              ;CLEAR SECTOR COUNT
  188.           STA    SCNT
  189.           LXI    D,FCB          ;OPEN USER'S FILE
  190.           CALL   OPEN
  191.           INR    A              ;JUMP IF OK
  192.           JNZ    XFER1
  193.           LXI    H,STR2         ;ELSE PRINT 'FILE NOT FOUND'
  194.           CALL   WASC
  195.           JMP    XFERX          ;AND EXIT
  196.  XFER1:   XRA    A              ;REWIND FILE
  197.           STA    FCB+NR
  198.  XFER2:   LHLD   ADDR           ;DE = CURRENT BUFFER ADDRESS
  199.           MOV    D,H
  200.           MOV    E,L
  201.           CALL   SETDMA         ;SET DMA ADDRESS
  202.           LXI    D,FCB
  203.           CALL   READ           ;READ NEXT SECTOR INTO BUFFER
  204.           DCR    A              ;JUMP IF EOF
  205.           JZ     INIT
  206.           LHLD   ADDR           ;INCREMENT LOAD ADDRESS
  207.           LXI    D,80H
  208.           DAD    D
  209.           SHLD   ADDR
  210.           LDA    SCNT           ;INCREMENT SECTOR COUNT
  211.           INR    A
  212.           STA    SCNT
  213.           CPI    128            ;LOOP IF STILL ROOM IN BUFFER
  214.           JC     XFER2
  215.       CALL   WEOLC
  216.           LXI    H,STR3         ;PRINT BUFFER FULL MSG
  217.           CALL   WASC
  218.       JMP    INIT
  219.  XFER9:   CALL   WEOLC
  220.           LXI    H,STR6
  221.           CALL   WASC
  222.  XFERX:   JMP    CPM          
  223.  
  224.  WASC:    MOV    A,M
  225.           ORA    A
  226.           RZ
  227.           CALL   WACC
  228.           INX    H
  229.           JMP    WASC
  230.  
  231.  OPEN:    MVI    C,OFFC
  232.           JMP    BDOS
  233.       
  234.  SETDMA:  MVI    C,SAFC
  235.           JMP    BDOS
  236.  
  237.  READ:    MVI    C,RRFC
  238.           JMP    BDOS
  239.  
  240.  RACC:    MVI    C,RCFC
  241.           JMP    BDOS
  242.  
  243.  WACC:    PUSH   H
  244.           PUSH   D
  245.           PUSH   B
  246.           MVI    C,WCFC
  247.           MOV    E,A
  248.           CALL   BDOS
  249.           POP    B
  250.           POP    D
  251.           POP    H
  252.           RET
  253.  
  254.  WEOLC:   MVI    A,CR
  255.           CALL   WACC
  256.           MVI    A,LF
  257.           JMP    WACC
  258.  
  259.  WDB:     PUSH   PSW
  260.           PUSH   B
  261.           MVI    C,0
  262.  WDB1:    CPI    100
  263.           JC     WDB2
  264.           INR    C
  265.           SUI    100
  266.           JMP    WDB1
  267.  WDB2:    CALL   WDD
  268.           MVI    C,0
  269.  WDB3:    CPI    10
  270.           JC     WDB4
  271.           INR    C
  272.           SUI    10
  273.           JMP    WDB3
  274.  WDB4:    CALL   WDD
  275.           MOV    C,A
  276.           CALL   WDD
  277.           POP    B
  278.           POP    PSW
  279.           RET
  280.  
  281.  WDD:     PUSH   PSW
  282.           MOV    A,C
  283.           ADI    '0'
  284.           CALL   WACC
  285.           POP    PSW
  286.           RET
  287.  
  288. ;         DATA AREA
  289.  
  290.  STR2:    DB     'FILE NOT FOUND',CR,LF,0
  291.  STR3:    DB     'BUFFER FULL, FURTHER PASSES REQUIRED',CR,LF,0
  292.  STR6:    DB     'ILLEGAL EXTENT NUMBER',CR,LF,0
  293. ;
  294. ;**************************************************************
  295. ;
  296. INIT:    LXI    SP,STACK+64    ;LOAD STACK POINTER
  297. MSG0:    LXI    D,SIGNON
  298.     MVI    C,PBUF
  299.     CALL    BDOS        
  300.     JMP     MSG1
  301. ;
  302. SIGNON: DB    CR,LF,LF
  303.     DB    'PROGRAMMING ROUTINE FOR 2708/2716 EPROMS'
  304.     DB    CR,LF
  305.     DB    'SSM, INC., PB1 PROGRAMMER',CR,LF,LF
  306.     DB    'BY JIM LOOFBOURROW',CR,LF,LF
  307.     DB    '$'
  308. ;
  309. MSG1:    LXI    D,TYPE1
  310.     MVI    C,PBUF
  311.     CALL    BDOS
  312.     JMP    IN0
  313. ;
  314. TYPE1:    DB    CR,LF,'EPROM TYPE:',CR,LF
  315.     DB    '2708 ? (Y,N)',SPC,'$'
  316. ;
  317. IN0:    MVI    C,CONS    ;LOOK AT KEYBOARD
  318.     CALL    BDOS    ;GET RESPONSE
  319.     CPI    ''    ;IS IT CONTROL C
  320.     JZ    CPM
  321.     CPI    'Y'    ;IS IT 2708?
  322.     JZ    FUNC0
  323.     CPI    'N'    ;CHECK TO VERIFY "NO"
  324.     JNZ    MSG1    ;GO BACK IF SOME OTHER
  325.             ;CHARACTER TYPED
  326. MSG2:    LXI    D,TYPE2
  327.     MVI    C,PBUF
  328.     CALL    BDOS
  329.     JMP    IN1
  330. ;
  331. TYPE2:    DB    CR,LF,'2716 ? (Y,N)',SPC,'$'
  332. ;
  333. IN1:    MVI    C,CONS
  334.     CALL    BDOS
  335.     CPI    ''    ;IS IT CONTROL C
  336.     JZ    CPM
  337.     CPI    'Y'
  338.     JZ    FUNC1
  339.     JMP    MSG1
  340. ;
  341. ;
  342. FUNC0:    MVI    A,03H    ;2708 = 03FF H
  343.     STA    FLAG+1
  344.     JMP    MSG4
  345. ;
  346. FUNC1:    MVI    A,07H    ;2716 = 07FF H
  347.     STA    FLAG+1
  348. MSG4:    LXI    D,TYPE4
  349.     MVI    C,PBUF
  350.     CALL    BDOS
  351.     JMP    IN3
  352. ;
  353. TYPE4:    DB    CR,LF,LF
  354.     DB    'ENTER EPROM NUMBER',CR,LF
  355.     DB    'RAM BUFFER 16K MAXIMUM',CR,LF
  356.     DB    '(0-F FOR 2708)',CR,LF
  357.     DB    '(0-7 FOR 2716)',CR,LF
  358.     DB    '(CR) <NO CHANGE>',CR,LF
  359.     DB    '(CONTL C) <TO EXIT>',CR,LF,LF
  360.     DB    '?',SPC,'$'
  361.  
  362. IN3:    MVI    C,CONS
  363.     CALL    BDOS
  364.     CPI    ''
  365.     JZ    CPM
  366.     CPI    0DH    ;IS IT A CR
  367.     JZ    MSG3
  368.     CALL    ASCBIN
  369.     STA    ROMNO
  370. ;
  371. MSG5:    LXI    D,TYPE5
  372.     MVI    C,PBUF
  373.     CALL    BDOS
  374.     JMP    IN4
  375. ;
  376. TYPE5:  DB    CR,LF,LF
  377.     DB    'NUMBER OK ?',SPC,'$'
  378. ;
  379. IN4:    MVI    C,CONS
  380.     CALL    BDOS
  381.     CPI    ''
  382.     JZ    CPM
  383.     CPI    'N'
  384.     JZ    INIT
  385.     CPI    'Y'
  386.     JZ    BLOCK
  387.     JMP    INIT
  388. ;
  389. ASCBIN: ANI    07FH    ;STRIP MSB
  390.     CPI    41H
  391.     JP    ABCDEF    ;JUMP IF GREATER THAN 9
  392.     ANI    0FH
  393.     RET
  394. ABCDEF: ANI    0FH
  395.     ADI    09H
  396.     RET
  397. ;
  398. BLOCK:    LXI    H,RAM
  399.     INX    H
  400.     XRA    A    ;ZERO ACCUM
  401.     MOV    B,A    ;ZERO B
  402.     STA    RAM
  403.     INR    A
  404. ;
  405. BLOCK1:    STA    RAM+1
  406.     LDA    ROMNO
  407.     CMP    B
  408.     JZ    MSG3
  409.     INR    B
  410.     LDA    FLAG+1
  411.     INR    A
  412.     ADD    M
  413.     JMP    BLOCK1
  414. ;
  415. MSG3:    LXI    D,TYPE3
  416.     MVI    C,PBUF
  417.     CALL    BDOS
  418.     JMP    IN2
  419. ;
  420. TYPE3:    DB    CR,LF,LF
  421.     DB    'ENTER FUNCTION:',CR,LF
  422.     DB    'CHECK EPROM IS ERASED........(E)',CR,LF
  423.     DB    'COMPARE EPROM WITH DATA......(C)',CR,LF
  424.     DB    'PROGRAM EPROM................(P)',CR,LF,LF
  425.     DB    '?',SPC,'$'
  426. ;
  427. IN2:    MVI    C,CONS
  428.     CALL    BDOS
  429.     CPI    ''
  430.     JZ    CPM
  431.     CPI    'E'
  432.     JZ    ERASED
  433.     CPI    'C'
  434.     JZ    COMPARE
  435.     CPI    'P'
  436.     JZ    INSTR
  437.     JMP    MSG3
  438. ERASED:    LXI    H,FLAG+1
  439.     MOV    A,M
  440.     CPI    07H
  441.     JZ    E2716
  442.     JMP    E2708
  443. ;
  444. COMPARE:LXI    H,FLAG+1
  445.     MOV    A,M
  446.     CPI    07H
  447.     JZ    V2716
  448.     JMP    V2708
  449. ;
  450. ;
  451. ; PROGRAM THE EPROM
  452. ;
  453. ;
  454. INSTR:    ;GET READY TO BURN EPROM AND
  455.     ;GIVE INSTRUCTIONS
  456. MSG6:    LXI    D,TYPE6
  457.     MVI    C,PBUF
  458.     CALL    BDOS
  459.     JMP    IN5
  460. ;
  461. TYPE6:    DB    CR,LF,LF
  462.     DB    '1.  ENSURE SW-1 OFF.',CR,LF
  463.     DB    '2.  INSERT EPROM:',CR,LF
  464.     DB    '      2708 (LEFT)',CR,LF
  465.     DB    '      2716 (RIGHT)',CR,LF
  466.     DB    '3.  TURN SW-1 ON.',CR,LF
  467.     DB    '4.  ENTER:(CR) $'
  468. ;
  469. IN5:    MVI    C,CONS
  470.     CALL    BDOS
  471.     CPI    ''
  472.     JZ    CPM
  473.     CPI    0DH    ;ASCII FOR CARRIAGE RETURN
  474.     JNZ    INIT
  475.     LXI    H,FLAG+1
  476.     MOV    A,M
  477.     CPI    07H
  478.     JZ    P2716
  479. ;
  480. P2708:    MVI    A,01
  481.     OUT    CPORT        ;PRESET PB1 BOARD
  482. ;
  483. ;SET UP PARAMETERS
  484. ;
  485. ;NUMBER OF PROGRAMMING CYCLES
  486. ;
  487.     MVI    B,0FFH        ;256 CYCLES FOR 2708 EPROM
  488. ;
  489. ;NUMBER OF BYTES = 256(C+1)
  490. ;
  491.     MVI    C,03        ;03=2708 EPROM
  492.     JMP    PROG1    ;GO PROGRAM 2708
  493. ;
  494. ;
  495. P2716:    MVI    A,02
  496.     OUT     CPORT        ;PRESET PB1 BOARD
  497. ;
  498. ;SET UP PARAMETERS
  499. ;
  500. ;NUMBER OF PROGRAMMING CYCLES
  501. ;
  502.     MVI    B,01        ;1 CYCLE FOR 2716 EPROMS
  503. ;
  504. ;NUMBER OF BYTES = 256(C+1)
  505. ;
  506.     MVI    C,07        ;07=2716 EPROMS
  507. ;
  508. ;
  509. ;SET UP ADDRESSES FOR TRANSFER
  510. ;
  511. PROG1:    LXI    D,PROM        
  512.     LHLD    RAM
  513. ;
  514. ;PROGRAM THE EPROM
  515. ;
  516. PROG2:    MOV    A,M
  517.     STAX    D
  518.     INX    D
  519.     INX    H
  520.     MOV    A,D
  521.     ANA    C
  522.     ORA    E
  523.     JNZ    PROG2
  524.     DCR    B
  525.     JNZ    PROG1
  526.     DCX    D
  527.     LDAX    D        ;RESET PB1 BOARD
  528.     LXI    D,TYPE11    ;PROGRAMMING FINISHED
  529.     MVI    C,PBUF
  530.     CALL    BDOS
  531.     JMP    MSG3        ;GO BACK TO START
  532. ;
  533. TYPE11:    DB    CR,LF,07H    ;RING BELL
  534.     DB    '5.  TURN SW-1 OFF'
  535.     DB    CR,LF,LF,'$'
  536. ;
  537. ;
  538. ;ROUTINES FOR CHECKING IF THE EPROM IS ERASED.  
  539. ;
  540. ;
  541. ;
  542. ;
  543. E2708:    MVI    C,03        ;03=2708
  544.     JMP    ERASE
  545. ;
  546. E2716:    MVI    C,07        ;07=2716
  547. ;
  548. ;
  549. ERASE:    LXI    D,PROM        ;PROGRAMMING SOCKET ADDR.
  550. ;
  551. ;
  552. ER1:    LDAX    D        ;READ EPROM
  553.     INX    D
  554.     CPI    0FFH        ;TEST FOR ERASE
  555.     JNZ    MSG7
  556.     MOV    A,D
  557.     ANA    C
  558.     ORA    E        ;DONE YET?
  559.     JNZ    ER1
  560.     JMP    MSG8
  561.     RET
  562. ;ROUTINES FOR VERIFYING THE ORGINAL SOURCE
  563. ;DATA IN MEMORY AGAINST THE EPROM COPY.
  564. ;
  565. ;
  566. V2708:    MVI    C,03
  567.     JMP    VERF
  568. ;
  569. ;
  570. V2716:    MVI    C,07
  571. ;
  572. ;
  573. VERF:    LXI    D,PROM        ;PROGRAMMING SOCKET ADDR.
  574.     LHLD    RAM        ;POINT TO RAM SOURCE
  575. ;
  576. ;
  577. VERF1:    MOV    B,M        ;GET ORIGINAL DATA
  578.     LDAX    D        ;GET EPROM COPY
  579.     INX    D
  580.     INX    H
  581.     CMP    B        ;DATA THE SAME?
  582.     JNZ    MSG9
  583.     MOV    A,D
  584.     ANA    C
  585.     ORA    E
  586.     JNZ    VERF1        ;DO NEXT BYTE
  587.     JMP    MSG10
  588. MSG7:    LXI    D,TYPE7
  589.     MVI    C,PBUF
  590.     CALL    BDOS
  591.     JMP    MSG3
  592. ;
  593. TYPE7:    DB    CR,LF
  594.     DB    'NOT ERASED $'
  595. ;
  596. MSG8:    LXI    D,TYPE8
  597.     MVI    C,PBUF
  598.     CALL    BDOS
  599.     JMP    MSG3
  600. ;
  601. TYPE8:    DB    CR,LF,'ERASED $'
  602. ;
  603. MSG9:    LXI    D,TYPE9
  604.     MVI    C,PBUF
  605.     CALL    BDOS
  606.     JMP    MSG4
  607. ;
  608. TYPE9:    DB    CR,LF,'FAIL COMPARE $'
  609. ;
  610. MSG10:    LXI    D,TYPE10
  611.     MVI    C,PBUF
  612.     CALL    BDOS
  613.     JMP    MSG4
  614. ;
  615. TYPE10:    DB    CR,LF,'COMPARE OK $'
  616. ;
  617. ;   DATA
  618. ;
  619. RAM:    DW    0000H    ;LOCATION OF RAM SOURCE DATA
  620. ROMNO:    DS    1    ;0-F=2708....0-7=2716
  621. FLAG:    DW    03FFH    ;=2708....07FFH=2716
  622. ADDR:    DS    2    ;
  623. SCNT:    DS    1    ;
  624. STACK:    DS    64    ;
  625. ;
  626. ;
  627.     END
  628. ;
  629. ;
  630.