LISTING4.TXT: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
(Olivier.jan moved page LISTING4.TXT to LISTING4.TXT/fr: Renaming for language version)
Tag: New redirect
 
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
#REDIRECT [[LISTING4.TXT/fr]]
+
{{Languages|LISTING4.TXT}}
  +
<pre>
  +
  +
**********************************************************************
  +
* *
  +
* 68000 ASSEMBLER COURSE ON ATARI ST *
  +
* *
  +
* by The Fierce Rabbit (from 44E) *
  +
* *
  +
* Second series *
  +
* *
  +
* Listing number 4 *
  +
**********************************************************************
  +
* Program self-modification
  +
INCLUDE "B:\START.S" startup routine
  +
MOVE.L #MESSAGE1,-(SP) introducing
  +
MOVE.W #9,-(SP) the program
  +
TRAP #1
  +
ADDQ.L #6,SP
  +
START MOVE.W #7,-(SP) waiting for a key press
  +
TRAP #1
  +
ADDQ.L #2,SP
  +
CMP.W #" ",D0 space?
  +
BEQ END yes, so goodbye
  +
MOVE.W #$4E71,VARIANT places a NOP (by default)
  +
CMP.W #"A",D0 press 'A'?
  +
BNE HERE no
  +
BSR ROUTINE yes, so long subroutine
  +
BRA START and start over
  +
HERE MOVE.W #$4E75,VARIANT places a RTS instead
  +
BSR ROUTINE of the NOP and goes to subroutine
  +
BRA START then starts over
  +
  +
END MOVE.W #0,-(SP)
  +
TRAP #1
  +
*--------------------------------------------*
  +
ROUTINE MOVE.L #MESSAGE2,-(SP)
  +
MOVE.W #9,-(SP)
  +
TRAP #1
  +
ADDQ.L #6,SP
  +
VARIANT NOP
  +
MOVE.L #MESSAGE3,-(SP)
  +
MOVE.W #9,-(SP)
  +
TRAP #1
  +
ADDQ.L #6,SP
  +
RTS
  +
*--------------------------------------------*
  +
SECTION DATA
  +
MESSAGE1 DC.B 27,"E","Press A for a long message,",13,10
  +
DC.B "space to exit, another key",13,10
  +
DC.B "for a shorter message",13,10,0
  +
EVEN
  +
MESSAGE2 DC.B 13,10,"Here's the short message...",0
  +
EVEN
  +
MESSAGE3 DC.B "Oops, no, it's the long one!!!",0
  +
EVEN
  +
SECTION BSS
  +
DS.L 100
  +
STACK DS.L 1
  +
END
  +
  +
</pre>
  +
Back to [[ASM_Tutorial]]
  +
[[Category: 68000 ASSEMBLY ON ATARI ST Part 1 ]]

Latest revision as of 00:58, 17 December 2023


**********************************************************************
*                                                                    *
*               68000 ASSEMBLER COURSE ON ATARI ST                   *
*                                                                    *
*                   by The Fierce Rabbit (from 44E)                  *
*                                                                    *
*                           Second series                            *
*                                                                    *
*                         Listing number 4                           *
**********************************************************************
* Program self-modification
         INCLUDE   "B:\START.S"      startup routine
         MOVE.L    #MESSAGE1,-(SP)   introducing
         MOVE.W    #9,-(SP)          the program
         TRAP      #1
         ADDQ.L    #6,SP
START    MOVE.W    #7,-(SP)          waiting for a key press
         TRAP      #1
         ADDQ.L    #2,SP
         CMP.W     #" ",D0           space?
         BEQ       END               yes, so goodbye
         MOVE.W    #$4E71,VARIANT    places a NOP (by default)
         CMP.W     #"A",D0           press 'A'?
         BNE       HERE              no
         BSR       ROUTINE           yes, so long subroutine
         BRA       START             and start over
HERE     MOVE.W    #$4E75,VARIANT    places a RTS instead
         BSR       ROUTINE           of the NOP and goes to subroutine
         BRA       START             then starts over

END      MOVE.W    #0,-(SP)
         TRAP      #1
*--------------------------------------------*
ROUTINE  MOVE.L    #MESSAGE2,-(SP)
         MOVE.W    #9,-(SP)
         TRAP      #1
         ADDQ.L    #6,SP
VARIANT  NOP
         MOVE.L    #MESSAGE3,-(SP)
         MOVE.W    #9,-(SP)
         TRAP      #1
         ADDQ.L    #6,SP
         RTS
*--------------------------------------------*
         SECTION DATA
MESSAGE1 DC.B      27,"E","Press A for a long message,",13,10
         DC.B      "space to exit, another key",13,10
         DC.B      "for a shorter message",13,10,0
         EVEN
MESSAGE2 DC.B      13,10,"Here's the short message...",0
         EVEN
MESSAGE3 DC.B      "Oops, no, it's the long one!!!",0
         EVEN
         SECTION BSS
         DS.L      100
STACK    DS.L      1
         END

Back to ASM_Tutorial