home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / crossplatform / converters / unix / crc32.s < prev    next >
Text File  |  1992-05-24  |  3KB  |  226 lines

  1. ;CRC32 VERSION 1.0 FOR THE c-128 AND c-64 BY cRAIG bRUCE 23-mAY-92
  2.  
  3. .MEM
  4. .BANK 15
  5. .ORG $1C01
  6.  
  7. .BYTE $2C,$1C,$0A,$00,$8B,$20,$C2,$28,$36,$35,$35,$33,$34,$29,$B2,$32
  8. .BYTE $33,$20,$A7,$20,$9E,$20,$C2,$28,$34,$35,$29,$AA,$32,$35,$36,$AC
  9. .BYTE $C2,$28,$34,$36,$29,$AA,$37,$31,$3A,$80,$00,$45,$1C,$14,$00,$9E
  10. .BYTE $20,$C2,$28,$34,$33,$29,$AA,$32,$35,$36,$AC,$C2,$28,$34,$34,$29
  11. .BYTE $AA,$37,$31,$00,$00,$00,$00
  12.  
  13. STRINGbASE = 2  ;(2)
  14. CRCaCCUM = 4    ;(4)
  15. FILENAMElEN = 8 ;(1)
  16. DEVICE = 9      ;(1)
  17. CH = 10         ;(1)
  18. ITOAbIN = CRCaCCUM
  19. ITOAbCD = 11    ;(5)
  20. ITOAfLAG = 2    ;(1)
  21.  
  22. CRClOW  = $B7
  23. CRCmID1 = $1D
  24. CRCmID2 = $C1
  25. CRChIGH = $04
  26.  
  27. KERNELsETLFS = $FFBA
  28. KERNELsETNAM = $FFBD
  29. KERNELoPEN   = $FFC0
  30. KERNELcLOSE  = $FFC3
  31. KERNELcHKIN  = $FFC6
  32. KERNELcLRCHN = $FFCC
  33. KERNELcHRIN  = $FFCF
  34. KERNELcHROUT = $FFD2
  35. FILENAME = $200+40
  36.  
  37.    LDA #$60
  38.    STA STRINGbASE
  39.    SEI
  40. JSRlABEL = *
  41.    JSR STRINGbASE
  42.    TSX
  43.    LDA $100,X
  44.    TAY
  45.    DEX
  46.    LDA $100,X
  47.    CLI
  48.    CLC
  49.    ADC #STRINGsTART-JSRlABEL-2
  50.    BCC +
  51.    INY
  52. +  STA STRINGbASE
  53.    STY STRINGbASE+1
  54.    CLC
  55.    BCC ENTRY
  56.  
  57. STRINGsTART = *
  58.  
  59. STARTmSG = *
  60.    .ASC "ENTER NAME OF FILE TO TAKE CRC32 OF:"
  61.    .BYTE 13,0
  62.  
  63. SCANNINGmSG = *
  64.    .BYTE 13,13
  65.    .ASC "SCANNING FILE...  "
  66.    .BYTE 0
  67.  
  68. CRCmSG = *
  69.    .ASC "CRC32 = "
  70.    .BYTE 0
  71.  
  72. ENTRY = *
  73.    LDA 186
  74.    STA DEVICE
  75.    LDY #STARTmSG-STRINGsTART
  76. -  LDA (STRINGbASE),Y
  77.    BEQ +
  78.    JSR KERNELcHROUT
  79.    INY
  80.    BNE -
  81. +  LDY #0
  82. -  JSR KERNELcHRIN
  83.    STA FILENAME,Y
  84.    CMP #13
  85.    BEQ +
  86.    INY
  87.    BNE -
  88. +  STY FILENAMElEN
  89.    LDY #SCANNINGmSG-STRINGsTART
  90. -  LDA (STRINGbASE),Y
  91.    BEQ +
  92.    JSR KERNELcHROUT
  93.    INY
  94.    BNE -
  95.  
  96. ;***OPEN FILE
  97.  
  98. +  LDX #<FILENAME
  99.    LDY #>FILENAME
  100.    LDA FILENAMElEN
  101.    JSR KERNELsETNAM
  102.    LDA #1
  103.    LDX DEVICE
  104.    LDY #2
  105.    JSR KERNELsETLFS
  106.    JSR KERNELoPEN
  107.    BCC +
  108. -  RTS
  109. +  LDX #1
  110.    JSR KERNELcHKIN
  111.    BCS -
  112.    LDX #3
  113.    LDA #0
  114. -  STA CRCaCCUM,X
  115.    DEX
  116.    BPL -
  117.  
  118. ;***SCAN FILE
  119.  
  120. NEXTcHAR = *
  121.    JSR KERNELcHRIN
  122.    STA CH
  123.    LDX #8
  124.  
  125. NEXTbIT = *
  126.    ASL CH
  127.    ROL CRCaCCUM+0
  128.    ROL CRCaCCUM+1
  129.    ROL CRCaCCUM+2
  130.    ROL CRCaCCUM+3
  131.    BCC +
  132.    LDA CRCaCCUM+0 
  133.    EOR #CRClOW
  134.    STA CRCaCCUM+0
  135.    LDA CRCaCCUM+1
  136.    EOR #CRCmID1
  137.    STA CRCaCCUM+1
  138.    LDA CRCaCCUM+2 
  139.    EOR #CRCmID2
  140.    STA CRCaCCUM+2
  141.    LDA CRCaCCUM+3 
  142.    EOR #CRChIGH
  143.    STA CRCaCCUM+3
  144. +  DEX
  145.    BNE NEXTbIT
  146.    BIT $90
  147.    BVC NEXTcHAR
  148.  
  149. ;***CLOSE FILE
  150.  
  151.    JSR KERNELcLRCHN
  152.    LDA #1
  153.    JSR KERNELcLOSE
  154.    LDY #CRCmSG-STRINGsTART
  155. -  LDA (STRINGbASE),Y
  156.    BEQ +
  157.    JSR KERNELcHROUT
  158.    INY
  159.    BNE -
  160.  
  161. ;*** PRINT OUT RESULT
  162.  
  163. +  LDX #4
  164.    LDA #0
  165. -  STA ITOAbCD,X
  166.    DEX
  167.    BPL -
  168.    STA ITOAfLAG
  169.    LDY #32
  170.    SEI
  171.    SED
  172.  
  173.    ITOAnEXTbIT = *
  174.    ASL ITOAbIN+0
  175.    ROL ITOAbIN+1
  176.    ROL ITOAbIN+2
  177.    ROL ITOAbIN+3
  178.    LDX #4
  179. -  LDA ITOAbCD,X
  180.    ADC ITOAbCD,X
  181.    STA ITOAbCD,X
  182.    DEX
  183.    BPL -
  184.    DEY
  185.    BNE ITOAnEXTbIT
  186.    CLD
  187.    CLI
  188.    LDX #0
  189.  
  190. NEXTbCD = *
  191.    LDA ITOAbCD,X
  192.    ;** PRINT FIRST DIGIT
  193.    PHA
  194.    LSR
  195.    LSR
  196.    LSR
  197.    LSR
  198.    CMP ITOAfLAG
  199.    BEQ +
  200.    ORA #$30
  201.    STA ITOAfLAG
  202.    JSR KERNELcHROUT
  203.  
  204.    ;** PRINT SECOND DIGIT
  205. +  PLA
  206.    AND #$0F
  207.    CMP ITOAfLAG
  208.    BEQ +
  209.    ORA #$30
  210.    STA ITOAfLAG
  211.    JSR KERNELcHROUT
  212.  
  213. +  INX
  214.    CPX #5
  215.    BCC NEXTbCD
  216.  
  217. ;*** FINISH UP
  218.  
  219.    LDA ITOAfLAG
  220.    BNE +
  221.    LDA #"0"
  222.    JSR KERNELcHROUT
  223. +  LDA #13
  224.    JSR KERNELcHROUT
  225.    RTS
  226.