home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / UNIFLEX / UNIFLEX / UniFLEX_Std.Utils1.tar.Z / UniFLEX_Std.Utils1.tar / utils1 / cmp < prev    next >
Text File  |  1981-09-01  |  2KB  |  142 lines

  1.  opt pag,nol
  2.  ttl Simple Compare file to core
  3.  lib sysdef
  4.  opt lis
  5.  pag
  6.  
  7.  org 0
  8.  
  9. cmp ldd 0,s get cnt
  10.  cmpd #3
  11.  lbne exit
  12.  ldd 4,s get file name
  13.  std iopn2
  14.  sys ind,iopn open file
  15.  lbes exit
  16.  std ffd save file desc
  17.  ldd 6,s get core name
  18.  std iopn2
  19.  sys ind,iopn open core
  20.  lbes exit
  21.  std cfd save file desc
  22.  ldd ffd
  23.  sys seek,0,24,0 skip bin header
  24. cmp4 ldd ffd get file desc
  25.  sys read,info,4 read in 4 byte header
  26.  lbes exit
  27.  cmpd #0 eof?
  28.  lbeq exit
  29.  ldd info get count
  30.  lbeq exit
  31.  std ird2 save count
  32.  ldd ffd get file desc
  33.  sys ind,ird read block
  34.  lbes exit error?
  35.  ldd info+2 get address
  36.  addd #4096 add in ublock
  37.  std isk2
  38.  ldd cfd
  39.  sys ind,isk do seek
  40.  ldd info
  41.  std ird22
  42.  ldd cfd
  43.  sys ind,ird21
  44.  bes exit
  45.  ldy info get count
  46.  ldx #buf1
  47.  ldu #buf2
  48. loop lda 0,x+
  49.  cmpa 0,u+
  50.  bne err
  51. cont leay -1,y
  52.  bne loop
  53.  bra cmp4
  54. err pshs a,x,y,u
  55.  ldd info get count
  56.  subd 3,s sub offset
  57.  addd info+2 add in address
  58.  pshs d
  59.  ldx #adrl
  60.  lda 0,s
  61.  bsr pthex
  62.  lda 1,s
  63.  bsr pthex
  64.  puls d
  65.  lda 0,s
  66.  ldx #shldl
  67.  bsr pthex
  68.  lda -1,u
  69.  ldx #isl
  70.  bsr pthex
  71.  ldd #1
  72.  sys write,oline,OLSIZ
  73.  puls a,x,y,u
  74.  bra cont
  75. exit sys term
  76.  
  77.  
  78. * pthex
  79.  
  80. pthex pshs a save char
  81.  lsra get hi part
  82.  lsra
  83.  lsra
  84.  lsra
  85.  bsr chex do char
  86.  sta 0,x+ save result
  87.  puls a get byte
  88.  bsr chex do char conv
  89.  sta 0,x+ save result
  90.  rts return
  91.  
  92. * chex
  93.  
  94. chex anda #$f mask lo bits
  95.  ora #$30 make ascii
  96.  cmpa #$39 is it digit
  97.  bls chex2
  98.  adda #7 make letter
  99. chex2 rts return
  100.  
  101.  
  102. erm fcc 'No compare!'
  103. ESIZ equ *-erm
  104.  
  105. iopn fcb open
  106. iopn2 fdb 0,0
  107. isk fcb seek
  108.  fdb 0
  109. isk2 fdb 0,0
  110. ird fcb read
  111.  fdb buf1
  112. ird2 fdb 0
  113. ird21 fcb read
  114.  fdb buf2
  115. ird22 fdb 0
  116.  
  117. ffd fdb 0
  118. cfd fdb 0
  119. fcnt fdb 0
  120. ccnt fdb 0
  121. info fdb 0,0
  122.  
  123. oline fcc 'Address = '
  124. adrl fdb 0,0
  125.  fcc '   file = '
  126. shldl fdb 0
  127.  fcc '   core = '
  128. isl fdb 0
  129.  fcb $d
  130.  
  131. OLSIZ equ *-oline
  132.  
  133.  
  134.  org $1000
  135. buf1 equ *
  136.  org $2000
  137. buf2 equ *
  138.  org $2fff
  139.  fcb 0
  140.  
  141.  end cmp
  142.