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
 
(Replacing content of with translated version)
Tag: Removed redirect
Line 1: Line 1:
  +
**********************************************************************
#REDIRECT [[LISTING4.TXT/fr]]
 
  +
* *
  +
* 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]]
  +
[[Category: 68000 ASSEMBLER on ATARI ST Part 1 ]]

Revision as of 00:52, 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