Advanced Interdisciplinary Projects Lab(AIPLab) 討論區

Please login or register.

請輸入帳號, 密碼以及預計登入時間

新聞:

[慶賀]恭喜張清貿醫師升任北榮傳醫科主治醫師-20170201

作者 主題: [公告] SICTEST.ASM  (閱讀 6145 次)

admin

  • 管理員
  • Hero Member
  • *****
  • 文章: 1721
    • 檢視個人資料
[公告] SICTEST.ASM
« 於: 五月 01, 2009, 05:28:03 pm »
TEST     START   1000              TEST PROGRAM FOR SIC SOFTWARE
FIRST    STL     RETADR            SAVE RETURN ADDRESS
CLOOP    JSUB    RDREC             READ INPUT RECORD
         LDA     LENGTH            TEST FOR EOF (LENGTH = 0
         COMP    ONE                 PLUS EOL OR EOF)
         JEQ     ENDFIL            EXIT IF EOF FOUND
         JSUB    WRREC             WRITE OUTPUT RECORD
         J       CLOOP             LOOP
ENDFIL   LDA     EOF               INSERT END OF FILE MARKER
         STA     BUFFER
         LDA     THREE             SET LENGTH = 3
         STA     LENGTH
         JSUB    WRREC             WRITE EOF
         LDL     RETADR            GET RETURN ADDRESS
         RSUB                      RETURN TO CALLER
EOF      BYTE    C'EOF'
THREE    WORD    3
ZERO     WORD    0
ONE      WORD    1
FIVE     WORD    5
RETADR   RESW    1
LENGTH   RESW    1
BUFFER   RESB    4096              4096-BYTE BUFFER AREA
.
.       SUBROUTINE TO READ RECORD INTO BUFFER
.
RDREC    LDX     ZERO              CLEAR LOOP COUNTER
         LDA     ZERO              CLEAR A TO ZERO
RLOOP    TD      INPUT             TEST INPUT DEVICE
         JEQ     RLOOP             LOOP UNTIL READY
         RD      INPUT             READ CHARACTER INTO REGISTER A
         COMP    FIVE              TEST FOR EOL OR EOF
         JLT     EXIT              EXIT LOOP IF FOUND
         STCH    BUFFER,X          STORE CHARACTER IN BUFFER
         TIX     MAXLEN            LOOP UNLESS MAX LENGTH
         JLT     RLOOP                 HAS BEEN REACHED
EXIT     STCH    BUFFER,X          STORE EOL/EOF IN BUFFER
         STX     LENGTH            SAVE RECORD LENGTH
         LDA     LENGTH            MODIFY RECORD LENGTH TO INCLUDE
         ADD     ONE                 EOL OR EOF
         STA     LENGTH
         RSUB                      RETURN TO CALLER
INPUT    BYTE    X'F3'             CODE FOR INPUT DEVICE
MAXLEN   WORD    4096
.
.       SUBROUTINE TO WRITE RECORD FROM BUFFER
.
WRREC    LDX     ZERO              CLEAR LOOP COUNTER
WLOOP    TD      OUTPUT            TEST OUTPUT DEVICE
         JEQ     WLOOP             LOOP UNTIL READY
         LDCH    BUFFER,X          GET CHARACTER FROM BUFFER
         WD      OUTPUT            WRITE CHARACTER
         TIX     LENGTH            LOOP UNTIL ALL CHARACTERS
         JLT     WLOOP                HAVE BEEN WRITTEN
         RSUB                      RETURN TO CALLER
OUTPUT   BYTE    X'06'             CODE FOR OUTPUT DEVICE
         END     FIRST
已記錄
 

SimplePortal Classic 2.0.5