Subversion Repositories pentevo

Rev

Rev 639 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 29.03.2014 savelij
  3.  
  4.                 include ../../../rom/macros.a80
  5.                 include ../../../rom/global_vars.a80
  6.                 include zmodem_h.a80
  7.                 include filexfer_h.a80
  8.  
  9. DEBUG           EQU 0
  10.  
  11.                 IF MEMTYPE=PROFI
  12. SPEED           EQU BAUD115200
  13.                 ELSEIF MEMTYPE=PENT22
  14. SPEED           EQU BAUD19200
  15.                 ELSE
  16. SPEED           EQU BAUD57600
  17.                 ENDIF
  18.  
  19. zmblkmax        EQU 0X4000                      ;РАЗМЕР БУФЕРА ПРИЕМА
  20.  
  21.                 ORG 0X6000
  22.                 DI
  23.                 LD (OLD_SP),SP
  24.                 CALL CRC16_INIT
  25. RESTART         LD HL,0X4000
  26.                 LD DE,0X4001
  27.                 LD BC,0X1800
  28.                 LD (HL),L
  29.                 LDIR
  30.                 LD BC,0X2FF
  31.                 LD (HL),WHITE
  32.                 LDIR
  33.                 LD HL,TXT_PROGNAME
  34.                 CALL PRINT_MSG
  35.                 LD HL,TXT_INFO
  36.                 CALL PRINT_MSG
  37. ;               CALL CRC32_INIT
  38.                 IF DEBUG=0
  39.                 CALL RS232_INIT
  40.                 ENDIF
  41.  
  42.                 CALL ZRECV
  43.                 INC A
  44.                 JR NZ,EXIT
  45. HEADER_ERR      LD HL,TXT_HEADERERR
  46.                 CALL PRINT_MSG
  47.                 LD HL,TXT_ANYKEY
  48.                 CALL PRINT_MSG
  49.                 CALL BREAKRECV1
  50.                 LD SP,(OLD_SP)
  51.                 JR RESTART
  52.  
  53. ;ПРИНУДИТЕЛЬНЫЙ ВЫХОД В ERS
  54. EXIT            IF MEMTYPE=PROFI
  55.                 LD BC,0X7FFD
  56.                 XOR A
  57.                 OUT (C),A
  58.                 JP 0
  59.                 ELSEIF MEMTYPE=PENT22
  60.                 LD BC,0XEFF7
  61.                 LD A,8
  62.                 OUT (C),A
  63.                 LD HL,EXIT1
  64.                 LD DE,0X3D2F-(EXIT2-EXIT1)
  65.                 PUSH DE
  66.                 LD BC,EXIT2-EXIT1
  67.                 LDIR
  68.                 RET
  69.  
  70. EXIT1           LD HL,0
  71.                 PUSH HL
  72.                 LD BC,0X7FFD
  73.                 OUT (C),L
  74.                 LD BC,0XEFF7
  75.                 OUT (C),L
  76. EXIT2
  77.                 ELSE
  78.                 PEC_ON SHADOW_BF
  79.                 LD HL,0X79ED
  80.                 LD (0XFFFE),HL
  81.                 LD BC,0XBC77
  82.                 LD A,2
  83.                 JP 0XFFFE
  84.                 ENDIF
  85.  
  86.                 include zmodem.a80
  87.                 include zrecv.a80
  88.                 include crc.a80
  89.                 include memory.a80
  90.                 include cmp_fileext.a80
  91.                 include print.a80
  92.                 include hex2dec.a80
  93.  
  94.                 IF DEBUG=0
  95.                 include rs232.a80
  96.                 ELSE
  97.  
  98. ADR_PEREDACHA   EQU 0X5000
  99.  
  100. PRIEM           DB 0x72,0x7A,0x0D,0x2A,0x2A,0x18,0x42,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x0D,0x8A,0x11
  101.                 include proba_bin.a80
  102.                 DB 0x2A,0x2A,0x18,0x42,0x30,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x32,0x64,0x0D,0x8A
  103.                 DB 0x4f,0x4f
  104.  
  105. RS232_READ      PUSH HL
  106.                 LD HL,PRIEM
  107. TADR_PRIEM      EQU $-2
  108.                 LD A,(HL)
  109.                 INC HL
  110.                 LD (TADR_PRIEM),HL
  111.                 POP HL
  112. RS232_WRITEBUF  RET
  113.  
  114. RS232_WRITE     PUSH HL
  115.                 LD HL,ADR_PEREDACHA
  116. TADR_PEREDACHA  EQU $-2
  117.                 LD (HL),A
  118.                 INC HL
  119.                 LD (TADR_PEREDACHA),HL
  120.                 POP HL
  121.                 RET
  122.                 ENDIF
  123.  
  124. TXT_PROGNAME    DB 0,0,"*** RS232 loader for "
  125.                 IF MEMTYPE=PROFI
  126.                 DB "Profi"
  127.                 ELSEIF MEMTYPE=PENT22
  128.                 DB "Pent2.2"
  129.                 ELSE
  130.                 DB "PentEvo"
  131.                 ENDIF
  132.                 DB " ***",0
  133. TXT_INFO        DB 0,2,"Received files: "
  134.                 IF MEMTYPE=PROFI
  135.                 DZ "TRD"
  136.                 ELSEIF MEMTYPE=PENT22
  137.                 DZ "TRD"
  138.                 ELSE
  139.                 DZ "TAP, TRD"
  140.                 ENDIF
  141. TXT_BREAKRECV   DB 0,16,"Received file not supported",0
  142. TXT_HEADERERR   DB 0,16,"Header not support",0
  143. TXT_FILENAME    DB 0,8,"Filename: "
  144. TXT_NAME        DB "                       ",0
  145. TXT_FILESIZE    DB 0,10,"Filesize:",0
  146. TXT_SIZE        DB 9,10
  147. TXT_SIZERECV    DB "       /"
  148. TXT_FULLSIZE    DB "       "
  149. TXT_FULLSIZE_   EQU $-1
  150.                 DB " bytes",0
  151. TXT_ANYKEY      DB 0,22,"Press any key for RESTART",0
  152. ETXT_PROGNAME
  153.  
  154. EXT_FILE        EQU $                   ;1 НОМЕР РАСШИРЕНИЯ ПРИНИМАЕМОГО ФАЙЛА
  155. OLD_SP          EQU EXT_FILE+1          ;2
  156. TXT_DEC         EQU OLD_SP+2            ;A
  157. Not8bit         EQU TXT_DEC+0X0A        ;1
  158. ztrans          EQU Not8bit+1           ;1
  159. zmanag          EQU ztrans+1            ;1
  160. zconv           EQU zmanag+1            ;1
  161. zmrtype         EQU zconv+1             ;1
  162. rxframeind      EQU zmrtype+1           ;1
  163. rxtype          EQU rxframeind+1        ;1
  164. prev_rxtype     EQU rxtype+1            ;1
  165. rxhdr           EQU prev_rxtype+1       ;4
  166. txhdr           EQU rxhdr+4             ;4
  167. rxbytes         EQU txhdr+4             ;4
  168. tryzhdrtype     EQU rxbytes+4           ;1
  169. zctlesc         EQU tryzhdrtype+1       ;1
  170. totl_bytes      EQU zctlesc+1           ;4
  171. rxcount         EQU totl_bytes+4        ;2
  172. attn            EQU rxcount+2           ;ZATTNLEN+1
  173. ZRECVF2_TRIES   EQU attn+ZATTNLEN+1     ;1
  174. ZRECVF3_TRIES   EQU ZRECVF2_TRIES+1     ;1
  175. ZRECVF_N        EQU ZRECVF3_TRIES+1     ;1
  176. CRC16_WORD      EQU ZRECVF_N+1          ;2
  177. ADR_BUFRECV     EQU CRC16_WORD+2        ;2
  178. TEK_PAGE        EQU ADR_BUFRECV+2       ;1
  179.  
  180.                 IF DEBUG=1
  181. zmbuff          EQU 0X4000                      ;АДРЕС БУФЕРА ПРИЕМА
  182.                 ELSE
  183. zmbuff          EQU TEK_PAGE+1          ;80
  184.                 ENDIF
  185.  
  186. CRC16_TABLE     EQU zmbuff+0X80+LOW (-(zmbuff+0X80))    ;200
  187. CRC32_TABLE     EQU CRC16_TABLE+0X200   ;400
  188.