ramytamer

SIC

Dec 25th, 2014
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. TEST START 1000 TEST PROGRAM FOR SIC SOFTWARE
  2. FIRST STL RETADR SAVE RETURN ADDRESS
  3. CLOOP JSUB RDREC READ INPUT RECORD
  4. LDA LENGTH TEST FOR EOF (LENGTH = 0
  5. COMP ONE PLUS EOL OR EOF)
  6. JEQ ENDFIL EXIT IF EOF FOUND
  7. JSUB WRREC WRITE OUTPUT RECORD
  8. J CLOOP LOOP
  9. ENDFIL LDA =C'EOF' INSERT END OF FILE MARKER
  10. STA BUFFER
  11. LDA THREE SET LENGTH = 3
  12. STA LENGTH
  13. JSUB WRREC WRITE EOF
  14. LDL RETADR GET RETURN ADDRESS
  15. RSUB RETURN TO CALLER
  16. LTORG
  17. * =C'EOF'
  18. THREE WORD 3
  19. ZERO WORD 0
  20. ONE WORD 1
  21. FIVE WORD 5
  22. RETADR RESW 1
  23. LENGTH RESW 1
  24. BUFFER RESB 4096 4096-BYTE BUFFER AREA
  25. .
  26. . SUBROUTINE TO READ RECORD INTO BUFFER
  27. .
  28. RDREC LDX ZERO CLEAR LOOP COUNTER
  29. LDA ZERO CLEAR A TO ZERO
  30. RLOOP TD =X'F3' TEST INPUT DEVICE
  31. JEQ RLOOP LOOP UNTIL READY
  32. RD =X'F3' READ CHARACTER INTO REGISTER A
  33. COMP FIVE TEST FOR EOL OR EOF
  34. JLT EXIT EXIT LOOP IF FOUND
  35. STCH BUFFER STORE CHARACTER IN BUFFER
  36. TIX MAXLEN LOOP UNLESS MAX LENGTH
  37. JLT RLOOP HAS BEEN REACHED
  38. EXIT STCH BUFFER STORE EOL/EOF IN BUFFER
  39. STX LENGTH SAVE RECORD LENGTH
  40. LDA LENGTH MODIFY RECORD LENGTH TO INCLUDE
  41. ADD ONE EOL OR EOF
  42. STA LENGTH
  43. RSUB RETURN TO CALLER
  44. LTORG
  45. * =X'F3' CODE FOR INPUT DEVICE
  46. LEN WORD 4096
  47. MAXLEN EQU LEN
  48. .
  49. . SUBROUTINE TO WRITE RECORD FROM BUFFER
  50. .
  51. WRREC LDX ZERO CLEAR LOOP COUNTER
  52. WLOOP TD =X'06' TEST OUTPUT DEVICE
  53. JEQ WLOOP LOOP UNTIL READY
  54. LDCH BUFFER GET CHARACTER FROM BUFFER
  55. WD =X'06' WRITE CHARACTER
  56. TIX LENGTH LOOP UNTIL ALL CHARACTERS
  57. JLT WLOOP HAVE BEEN WRITTEN
  58. RSUB RETURN TO CALLER
  59. END FIRST
  60. * =X'06' CODE FOR OUTPUT DEVICE
Advertisement
Add Comment
Please, Sign In to add comment