The IFF Interpreter


A program which is able to read iff images via the serial interface with up to 38400 baud (16 Bit RAM required) from an Amiga. Additional RAM required in form of GRAM cards on CRU >1700 and an additional 80 column card.


       AORG >A000
       DEF  START
       REF  VMBR,VSBW,VWTR,VMBW,KSCAN,DSRLNK
TEXT0  TEXT ' Load IFF-Standard from RS232/3 '
       TEXT '                                '
       TEXT '    1:  1200 Baud               '
       TEXT '    2:  9600 Baud               '
       TEXT '    3: 19200 Baud               '
       TEXT '    4: 38400 Baud               '
       TEXT '    5: Leaving Read-Routine     '
       TEXT '                                '
       TEXT ' 8 Databits, No Parity, 1 Stop  '
TEXT1  TEXT 'Running.........'
TEXT2  TEXT '  Form detected '
TEXT3  TEXT '  Bitmap found  '
TEXT4  TEXT '  Color painted '
TEXT5  TEXT '  CRNG skipped  '
TEXT6  TEXT '  Body reached !'
TEXT7  TEXT '            Menue               '
       TEXT '            =====               '
       TEXT '                                '
       TEXT '        Mode Width x Height     '
       TEXT '                                '
       TEXT '         1:  512 x 424          '
       TEXT '         2:  512 x 212          '
       TEXT '         3:  256 x 424          '
       TEXT '         4:  256 x 212          '
       TEXT '                                '
       TEXT '      U: Upper Color-Codes      '
       TEXT '      D: Lower Color-Codes      '
       TEXT '                                '
       TEXT '      L: Load form Disk 3       '
       TEXT '      S: Save on Disk 3         '
       TEXT '                                '
       TEXT '  Left  Mousebotton: New Read   '
       TEXT '  Right Mousebotton: Quit       '
       TEXT '                                '
       TEXT '                                '
       TEXT '                                '
       TEXT '                                '
       TEXT '                                '
       TEXT '   Press  for Action !   '
       EVEN
FORM   BSS  >C           * 4 BYTES 'FORM',LANEGE UND 'ILBM'
BMHD   BSS  >1C          * IMMER 28 BYTES -> 'BMHD' + LAENGE  +20 BYTES
CMAP   BSS  >68          * =====     MAX 32*3 +8 BYTES 'CMAP'+LAENGE
CAMG   BSS  >40          * AWAY, INKORREKT, URSPRUENGLICH NICHT VORGESEHEN
CRNG   BSS  >10          * KOMMT AUS HOLD UND MODIFY
CRNG2  BSS  >10          * IMMER JEWEILS 16 BYTES !
CRNG3  BSS  >10          * =====
CRNG4  BSS  >10          * MAXILMAL VIER
SAVETY BSS  >100
BODY   BSS  >8           * WESENTLICH LAENGER, ABER EIGENTLICHER BODY INS GRAM
X      BSS  >2           * X-VAR FUER PIXEL
Y      BSS  >2           * Y-VAR FUER PIXEL
XOFSET BSS  >2           * OFFSET FUER BILD-MITTE
YOFSET BSS  >2           * DITO
BYTE   BSS  >2           * BYTE-ZAEHLER IN EINEM GRAM-BLOCK
COLOR  BSS  >2           * FARB-PARAMTER FUER PIXEL
SETON  BSS  >2           * FLAG FUER PIXEL
DIRECT BSS  >2           *
MYWS   BSS  >20          * WORKSPACE REGISTER
*------------------------------------------------------------------------------+
START  LWPI MYWS
       LI   12,>1700
       SBO  3            * GRAM AUS
       SBO  5            * VOLLER BEREICH
BEGIN  BLWP @FADEOU
       BLWP @EA
       BLWP @FADEIN
       CLR  @DIRECT
       LI   0,>20
       LI   1,TEXT0
       LI   2,>120
       BLWP @VMBW
       CLR  @>8374
TASTE  BLWP @KSCAN
       MOVB @>837C,@>837C
       JEQ  TASTE
       MOVB @>8375,1
       SRL  1,8
       CI   1,>35
       JNE  NOREAD
       B    @PARTWO
NOREAD CI   1,>31
       JLT  TASTE
       CI   1,>34
       JGT  TASTE
       AI   1,>FFCF
       SLA  1,1
       BL   @RS232            * INIT DER RS232/3
       SLA  1,4
       AI   1,>62
       MOV  1,0
       LI   1,>2D00
       BLWP @VSBW
       INC  0
       LI   1,>3E00
       BLWP @VSBW
       LI   0,>180
       LI   1,TEXT1
       LI   2,>10
       BLWP @VMBW
       AI   0,>20
       LI   1,TEXT2
       BLWP @VMBW
       AI   0,>20
       LI   1,TEXT3
       BLWP @VMBW
       AI   0,>20
       LI   1,TEXT4
       BLWP @VMBW
       AI   0,>20
       LI   1,TEXT5
       BLWP @VMBW
       AI   0,>20
       LI   1,TEXT6
       BLWP @VMBW
       SETO @DIRECT
*--------------------------------------------+
*      EINLESEN DER DATEN !                  !
*--------------------------------------------+
       LI   3,FORM                           !
NOFORM BL   @EMPFAN                          !
       JMP  NOFORM                           !
       MOVB 5,*3                             !
       CI   5,>4600                          !
       JNE  NOFORM            * "F" ERKANNT ?!
       INC  3                                !
       LI   4,>B                             !
       BL   @READ                            !
       LI   0,>1A0                           !
       LI   1,>2E00                          !
       BLWP @VSBW                            !
*--------------------------------------------+
       LI   3,BMHD                           !
NOBMHD BL   @EMPFAN                          !
       JMP  NOBMHD                           !
       MOVB 5,*3                             !
       CI   5,>4200                          !
       JNE  NOBMHD            * "B" ERKANNT ?!
       INC  3                                !
       LI   4,>7                             !
       BL   @READ                            !
       AI   0,>20                            !
       BLWP @VSBW                            !
*--------------------------------------------+
       LI   3,BMHD+6                         !
       MOV  *3+,4                            !
       BL   @READ                            !
       LI   3,BMHD+16                        !
       MOVB *3,15                            !
       SRL  15,8         * R15 IST BITPLANES !
*--------------------------------------------+
       LI   3,CAMG                           ! AUS HOLD UNF MODIFY, WIRD
NOCAMG BL   @EMPFAN                          ! GESKIPPED!
       JMP  NOCAMG                           !
       MOVB 5,*3                             !
       CI   5,>4300      * "C" ERKANNT ?     !
       JNE  NOCAMG                           !
       INC  3                                !
NOCAM1 BL   @EMPFAN                          !
       JMP  NOCAM1                           !
       CI   5,>4100      * "A" ERKANNT ?     !
       JEQ  CAMGOK       * -> CAMG !         !
       LI   3,CMAP       * -> IRRTUM, CMAP   !
       LI   4,>434D      * POINTER RICHTEN   !
       MOV  4,*3+        * UND IN CMAP       !
       LI   4,>6         * WEITER.           !
       JMP  CMAPEN                           !
CAMGOK MOVB 5,*3+                            !
       LI   4,>6                             !
       BL   @READ                            !
       LI   3,CAMG+6                         !
       MOV  *3+,4                            !
       BL   @READ        * REST LESEN, IGNORE!
*--------------------------------------------+
       LI   3,CMAP                           !
NOCMAP BL   @EMPFAN                          !
       JMP  NOCMAP                           !
       MOVB 5,*3                             !
       CI   5,>4300                          !
       JNE  NOCMAP            * "C" ERKANNT ?!
       INC  3                                !
       LI   4,>7                             !
CMAPEN BL   @READ                            !
       AI   0,>20                            !
       BLWP @VSBW                            !
*--------------------------------------------+
       LI   3,CMAP+6                         !
       MOV  *3+,4                            !
       BL   @READ                            !
       AI   0,>20                            !
       BLWP @VSBW                            !
*--------------------------------------------+
DIFFER BL   @EMPFAN                          ! * ES WERDEN ALLE CHUNKS GESKIPPT,
       JMP  DIFFER                           ! * DIE NICHT MIT B BEGINNEN !
       CI   5,>4200                          !
       JNE  CRGRUN                           !
       LI   3,BODY                           !
       JMP  BODRUN                           !
CRGRUN LI   3,CRNG                           !
       MOVB 5,*3+                            !
       LI   4,>7                             !
       BL   @READ                            !
       LI   3,CRNG+6                         !
       MOV  *3+,4                            !
       BL   @READ                            !
       JMP  DIFFER                           !
*---------------------------+----------------+-------------------------+
*      BODY                 !                                          !
*---------------------------+                                          !
NOBODY BL   @EMPFAN                                                    !
       JMP  NOBODY                                                     !
BODRUN MOVB 5,*3                                                       !
       CI   5,>4200                                                    !
       JNE  NOBODY            * "B" ERKANNT ?                          !
       INC  3                                                          !
       LI   4,>7                                                       !
       BL   @READ                                                      !
       LI   3,BODY+6          * LOW-WORD ANZAHL                        !
       MOV  *3,4                                                       !
       DECT 3                                                          !
       MOV  *3,3              * HIGH-WORD ANZAHL                       !
       MOV  4,4                                                        !
       JEQ  NOINC                                                      !
       INC  3                                                          !
NOINC  AI   0,>20                                                      !
       BLWP @VSBW                                                      !
*---------------------------+                                          !
*    READ MAX 512-KBYTE     ! (MIT MAX 38400 BAUD)                     !
*---------------------------+                                          !
       CLR  0               ! R0 IST ADRESSE                           !
       CLR  1               ! R1 IST BANK                              !
READBL MOVB 0,@>9C22(1)     ! GROMWRT-ADRESS IST OFFSET BANK 8         !
       SWPB 0               !                                          !
       MOVB 0,@>9C22(1)     !                                          !
       SWPB 0               !                                          !
RECEIV BL   @EMPFAN         !                                          !
       JMP  RECEIV          !                                          !
       MOVB 5,@>9C20(1)     !                                          !
       INC  0               !                                          !
       JNC  NOBANK          !                                          !
       AI   1,>4            !                                          !
NOBANK DEC  4               !                                          !
       JNE  READBL          ! ANZAHL IST R3 HIGH-WORD, R4 LOW-WORD     !
       DEC  3               !                                          !
       JNE  READBL          !                                          !
*---------------------------+------------------------------------------+
*      DAS PAINTING KANN BEGINNEN ! (MIT 512*424 PIXELS)               !
*----------------------------------------------------------------------+
PARTWO CLR  0
       LI   1,TEXT7
       LI   2,>300
       BLWP @VMBW
PARTTA BLWP @KSCAN
       MOVB @>837C,@>837C
       JEQ  PARTTA
       MOV  @DIRECT,@DIRECT
       JNE  DONERE
       B    @LOADIN           * KEIN DATEN EMPFANGEN, -> OPTION 5
DONERE BLWP @BITMAP           * DATEN WURDEN GELESEN VON RS232 ->BILD AUFBAUEN
       BLWP @MOUSEI
       BLWP @PATCLR
       LI   0,>1000           * LADEN ALLER 16 (FALLS 16) FARBTAFELN
       LI   2,>10
       LI   3,CMAP+8
COLLOP BLWP @VWTR
       MOVB *3+,4
       MOVB *3+,5
       MOVB *3+,6
       SRL  4,13
       SRL  5,13
       SRL  6,13
       SLA  4,12
       SLA  6,8
       A    6,4
       A    5,4
       MOVB 4,@>8C04
       SWPB 4
       MOVB 4,@>8C04
       INC  0
       DEC  2
       JNE  COLLOP
*---------------------------------------------------------+
*      SHIFT DER DATEN UND FALLS DER FALL, DEKOMPRIMIEREN !
*---------------------------------------------------------+
       LI   0,BMHD+18                        * TEST AUF COMPRESSED
       MOVB *0,0
       SRL  0,8
       JEQ  UNCOM
       LI   0,BODY+4                         * SHIFT FUER COMPRESSED
       MOV  *0+,1                            * BODY-LAENGE HOLEN
       MOV  *0,2
       INC  1
       LI   12,>1700
       SBZ  3
       CLR  3
       CLR  4
       CLR  5
       CLR  6
       CLR  8                                * COUNTER-FLAG -> =0 LANGEN-BYTE
COMLO  MOVB 3,@>9C22(5)                                        <>0 DATEN-BYTE
       SWPB 3
       MOVB 3,@>9C22(5)
       SWPB 3
       MOVB @>9820(5),10
       MOV  8,8                              * LANGEN-BYTE ?
       JNE  COM0                             * FALLS JA, ->CONTER (R7) SETZEN
       MOV  10,7
COM0   INC  3
       JNC  COM1                             * 16-BIT COUNTER-OVERFLOW ?
       AI   5,>4                             * -> NEUE BASISADRESSE
COM1   MOV  8,8                              * LAENGEN-BYTE ?
       JNE  NOTEST                           * FALLS NEIN KEIN COUNTER AUFBEREI.
       SETO 8                                * HIERNACH DANN NUR DATEN-BYTES
       SETO 9                                * R9 IST COUNTER OB NEGTIV/POSITV
       SRA  7,8                              * FALLS R7<0 DANN WIEDERHOLUNG VON
       JLT  COMLOP                           * GLEICHEM DATEN-BYTE!
       CLR  9                                * ->R7 >= 0, ->NAECHSTEN R7 BYTES
COMLOP ABS  7                                * UEBERNEHMEN
       INC  7                                * N+1
       JMP  COM4
NOTEST MOVB 4,@>9C32(6)
       SWPB 4
       MOVB 4,@>9C32(6)
       SWPB 4
       MOVB 10,@>9C30(6)                     * NEUES DATA SCHREIBEN
       INC  4                                * FALLS 16-BIT-COUNTER OVERF.
       JNC  COM2                             * BASIS-ADRESSE ERHOEHEN
       AI   6,>4
COM2   DEC  7                                * COUNTER DEKREMENTIEREN
       JNE  COM3
       CLR  8                                * LAENGEN-BYTE-FLAG LOESCHEN
       CLR  9                                * NEGITV-BYTE LOESCHEN
COM3   MOV  9,9                              * ANGESCHALTET ?
       JNE  NOTEST                           * FALLS JA, GLEICHES DATA SCHREIBEN
COM4   DEC  2                                * MAINLOOP EINS WENIGER
       JNE  COMLO
       DEC  1                                * ZWEITE MAINLOOP, DA COUNTER 32BIT
       JNE  COMLO
       SBO  3
       JMP  CONTIN
UNCOM  LI   0,BODY+4                         * UNCOMPRESSED-TEIL, SIMPLER SHIFT
       MOV  *0+,1                            * R1 IST HIGH-WORD
       MOV  *0,2
       INC  1
       LI   12,>1700
       SBZ  3
       CLR  3
       CLR  4
       CLR  5
       CLR  6
UNCOML MOVB 3,@>9C22(5)
       SWPB 3
       MOVB 3,@>9C22(5)
       SWPB 3
       MOVB @>9820(5),7
       INC  3
       JNC  UNCO1
       AI   5,>4
UNCO1  MOVB 4,@>9C32(6)
       SWPB 4
       MOVB 4,@>9C32(6)
       SWPB 4
       MOVB 7,@>9C30(6)
       INC  4
       JNC  UNCO2
       AI   6,>4
UNCO2  DEC  2
       JNE  UNCOML
       DEC  1
       JNE  UNCOML
       SBO  3
CONTIN CLR  @BYTE                            * HIER GEHTS WEITER IM MAIN !
       LI   0,BMHD+8                         * BERECHNUNG DES OFFSETS FUER
       MOV  *0+,1                            * BILDMITTE
       MOV  *0,2
       SRL  1,1
       LI   3,>100                           * HALBE SCREEN-BREITE
       S    1,3
       MOV  3,@XOFSET
       SRL  2,1
       LI   3,>D4                            * HALBE SCREEN-HOEHE
       S    2,3
       MOV  3,@YOFSET
       CLR  @X
       CLR  @Y
       CLR  14
MAINLO LI   5,MYWS+12                        * MYWS+12 => R6
       MOV  15,4                             * R15 IST ANZ. DER BITPLANES
       LI   12,>1700
       SBZ  3
       MOV  @BYTE,3                          * BYTE-COUNTER
       MOV  14,13                            * R14-BANK NACH R13, DA EVENTUELL
READLN MOVB 3,@>9C32(13)                     * NUR DATENBITS IN GRAM    OVERFLOW
       SWPB 3
       MOVB 3,@>9C32(13)
       SWPB 3
       MOVB @>9830(13),*5                    * SCHREIBT INHALT NACH R15
       INCT 5                                * JETZT POINTER AUF R8
       LI   0,BMHD+8                         * R0 POINTER AUF HOEHE
       MOV  *0,1                             * R3 IST BREITE
       SRL  1,3                              * GETEILT DURCH 8
       A    1,3                              * OVERFLOW???
       JNC  NOOVER                           * JA -> NAECHSTE BANK
       AI   13,>4
NOOVER DEC  4                                * R4 IST BITPLANE-COUNTER
       JNE  READLN                           * R6 ERSTE BYTE DATEN PLANE 1
       SBO  3                                * R7 ERSTE BYTE DATEN PLANE 2
       LI   2,>8                             * R8 ERSTE BYTE DATEN PLANE 3
BYTELO CLR  0                                * R9 ERSTE BYTE DATEN PLANE 4
       CLR  1                                * R10 ERSTE BYTE DATEN PLANE 5
       SLA  6,1                              * (R11 MASKING-BIT)
       JNC  NEXT
       AI   0,>1
NEXT   INC  1
       C    1,15
       JEQ  READY
       SLA  7,1
       JNC  NEXT1
       AI   0,>2
NEXT1  INC  1
       C    1,15
       JEQ  READY
       SLA  8,1
       JNC  NEXT2
       AI   0,>4
NEXT2  INC  1
       C    1,15
       JEQ  READY
       SLA  9,1
       JNC  NEXT3
       AI   0,>8
NEXT3  INC  1
       C    1,15
       JEQ  READY
       SLA  10,1
       JNC  READY
       AI   0,>10
READY  MOV  0,@COLOR
       CLR  @SETON
       MOV  @X,0
       MOV  @Y,1
       A    @XOFSET,0                        * TEST AUF BEREICHSUEBERSCHREITUNG
       JLT  NOPIX
       A    @YOFSET,1
       JLT  NOPIX
       CI   0,>1FF
       JGT  NOPIX
       CI   1,>1A7
       JGT  NOPIX
       BLWP @PIXEL
NOPIX  INC  @X
       DEC  2
       JNE  BYTELO
       INC  @BYTE                            * MAIN-BYTE-COUNTER OVERFLOW?
       JNC  NOSWIT
       AI   14,>4                            * -> BANK ERHOEHEN
NOSWIT LI   0,BMHD+8
       MOV  *0,1
       C    1,@X                             * BILDBREITE ERREICHT ?
       JNE  MAINLO
       SRL  1,3                              * ERRECHNUG DER NEUEN BASIS-ADRESSE
       MPY  15,1                             *
       MOV  2,1                              * BITPLANES*(PIXELANZAHLBREITE/8)
       MPY  @Y,1                             *           * AKTUELLE_ZEILENNUMMER
       MOV  2,@BYTE                          * HIGH-WORD * 4 IST BASIS-BANK
       MOV  1,14
       SLA  14,2
       CLR  @X
       INC  @Y
       LI   0,BMHD+10
       MOV  *0,1
       C    1,@Y                             * ZEILENENDE ERREICHT ?
       JNE  MAINLO
*------------------------------------------------------------------------------*
*      CONVERTIEREN DER VIEDO-FORMATE                                          *
*------------------------------------------------------------------------------*
       CLR  @>8C02
       CLR  @>9C3A
       CLR  @>8C02
       CLR  @>9C3A
       CLR  0
       CLR  1
SAVESX MOVB @>8800,@>9C38(1)  * KOMPLETTES AUSLESEN DER SCREEN
       DEC  0
       JNE  SAVESX
       AI   1,>4
       MOVB 0,@>9C3A(1)
       NOP
       MOVB 0,@>9C3A(1)
       CI   1,>8
       JNE  SAVESX
       LI   0,>0E00
       BLWP @VWTR
TASTE1 BLWP @MOUSE
       MOV  @MLEFT,@MLEFT
       JEQ  NONEW
       B    @BEGIN
NONEW  MOV  @MRIGHT,@MRIGHT
       JEQ  NOQUIT
       BLWP @FADEOU
       BLWP @EA
       BLWP @FADEIN
       LI   12,>1700
       SBZ  5
       SBZ  3
       BLWP @>0000
NOQUIT BLWP @KSCAN
       MOVB @>837C,@>837C
       JEQ  TASTE1
       MOVB @>8375,1
       SRL  1,8
       CI   1,>4C
       JNE  NOLOAD
LOADIN LI   0,DATEI
       BLWP @LOAD
       JMP  TASTE1
NOLOAD CI   1,>53
       JNE  NOSAVE
       LI   0,DATEI
       BLWP @SAVE
       JMP  TASTE1
NOSAVE CI   1,>44
       JNE  NODOWN
       BLWP @DOWN
       JMP  TASTE1
NODOWN CI   1,>55
       JNE  NOUP
       BLWP @UP
       JMP  TASTE1
NOUP   CI   1,>31
       JLT  TASTE1
       CI   1,>34
       JGT  TASTE1
       CI   1,>31
       JNE  NOONE
       BLWP @B5H4
       BLWP @MOUSEI
       JMP  TASTE1
NOONE  CI   1,>32
       JNE  NOTWO
       BLWP @B5H2
       BLWP @MOUSEI
       JMP  TASTE1
NOTWO  CI   1,>33
       JNE  NOTHRE
       BLWP @B2H4
       BLWP @MOUSEI
       JMP  TASTE1
NOTHRE BLWP @B2H2
       BLWP @MOUSEI
       JMP  TASTE1
*----------------------------+-----------------------------+
*      MEHRERE DATEN LESEN   !                             !
*----------------------------+                             !
READ   MOV  4,4                                            !
       JNE  READGO                                         !
       RT                                                  !
READGO MOV  11,10                                          !
READW  BL   @EMPFAN                                        !
       JMP  READW             * PONTER IN R3               !
       MOVB 5,*3+             * ANZAHL IN R4               !
       DEC  4                                              !
       JNE  READW                                          !
       B    *10                                            !
*-------------------+---------+----------------------------+
SENDEN SBO  16      !         !                            !
SEND2  TB   22      !         !         RS232/1-ROUTINEN   !
       JNE  SEND2   ! SENDEN  !                            !
       LDCR 1,8     !         !                            !
       SBZ  16      !         !                            !
       RT           !         !                            !
*-------------------+---------+                            !
EMPFAN TB   21      !         !                            !
       JNE  EMPF1   !         !                            !
       CLR  5       !         !                            !
       STCR 5,8     !         !                            !
       SBZ  18      ! EMPFANG !                            !
       TB   9       !         !                            !
       JEQ  EMPF1   !         !                            !
       INCT 11      !         !                            !
EMPF1  RT           !         !                            !
*-------------------+---------+                            !
BAUD   DATA >01A1        *  1200   FEHLER 0.08 %           !
       DATA >0034        *  9600   FEHLER 0.16 %           !
       DATA >001A        * 19200   FEHLER 0.16 %           !
       DATA >000D        * 38400   FEHLER 0.16 %           !
RS232  LI   12,>1540                                       !
       SBO  31                * ALLE BITS 14,13,12,11 AN!  !
       LI   15,>8300          * 8 DATENBITS PARRITY=NONE   !
       LDCR 15,8              * 1 STOPBIT //4M-BIT =0      !
       SBZ  13                                             !
       LDCR @BAUD(1),12                                    !
       RT                                                  !
*==========================================================+
B5H4   DATA B5H4WS,B5H4PG           *
B5H4WS BSS  >20                     *
B5H4DA DATA >000A,>0162,>023F,>05F7 * BILDSCHIRM AUF :
       DATA >061E,>0700,>0888,>098E *                  >000000 BIS >00D400
       DATA >0B01,>0E00,>0F00,>122D *            UND   >010000 BIS >01D400
       DATA >0000                   *
B5H4PG LI   1,B5H4DA                * SPRITES, WENN MIT MOUSEI ZUGELASSEN :
B5H4LO MOV  *1+,2                   * (4-CHARS-SPRITES)
       JEQ  B5H4CO                  * CHARS      :     >00F000 BIS >00F800
       ORI  2,>8000                 * COLORS     :     >00F800 BIS >00FA00
       SWPB 2                       * ATTRIBUTES :     >00FA00 BIS >00FA80
       MOVB 2,@>8C02                *
       SWPB 2
       MOVB 2,@>8C02
       JMP  B5H4LO
B5H4CO LI   12,>1700
       SBZ  3
       CLR  @>8C02
       CLR  @>9C3A
       LI   0,>4000
       MOVB 0,@>8C02
       CLR  @>9C3A
       LI   0,>1000
       LI   1,>9838
       LI   2,>8C00
       LI   3,>9C3A
B5H4TR MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       MOVB *1,*2
       DEC  0
       JNE  B5H4TR
       LI   0,>1000
       AI   1,>4
       AI   3,>4
       CLR  *3
       CLR  *3
       CI   1,>9840
       JNE  B5H4TR
       SBO  3
       LI   0,>0E00
       BLWP @VWTR
       RTWP
*==============================================================================*
B5H2   DATA B5H2WS,B5H2PG           *
B5H2WS BSS  >20                     *
B5H2DA DATA >000A,>0162,>021F,>05F7 * BILDSCHIRM AUF :
       DATA >061E,>0700,>0888,>0982 *                  >000000 BIS >00D400
       DATA >0B01,>0E00,>0F00,>122D *
       DATA >0000                   *
B5H2PG LI   1,B5H2DA                * SPRITES, WENN MIT MOUSEI ZUGELASSEN :
B5H2LO MOV  *1+,2                   * (4-CHARS-SPRITES)
       JEQ  B5H2CO                  * CHARS      :     >00F000 BIS >00F800
       ORI  2,>8000                 * COLORS     :     >00F800 BIS >00FA00
       SWPB 2                       * ATTRIBUTES :     >00FA00 BIS >00FA80
       MOVB 2,@>8C02                *
       SWPB 2
       MOVB 2,@>8C02
       JMP  B5H2LO
B5H2CO LI   12,>1700
       SBZ  3
       CLR  @>8C02
       LI   0,>4000
       MOVB 0,@>8C02
       LI   0,>10
       LI   1,>9C3A
       LI   4,>9838
       LI   5,>8C00
       LI   3,>3500
B5H2TR MOVB 3,*1
       SWPB 3
       MOVB 3,*1
       SWPB 3
B5H2T1 MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       DEC  0
       JNE  B5H2T1
       LI   0,>10
       AI   1,>4
       AI   4,>4
       CI   1,>9C42
       JNE  B5H2TR
       AI   3,>100
       LI   1,>9C3A
       LI   4,>9838
       CI   3,>9F00
       JNE  B5H2TR
       SBO  3
       LI   0,>0E00
       BLWP @VWTR
       RTWP
*==============================================================================*
B2H4   DATA B2H4WS,B2H4PG           *
B2H4WS BSS  >20                     *
B2H4DA DATA >0006,>0162,>023F,>05F7 * BILDSCHIRM AUF :
       DATA >061E,>0700,>0888,>098E *                  >000000 BIS >006A00
       DATA >0B01,>0E00,>0F00,>122D *            UND   >008000 BIS >00EA00
       DATA >0000                   *
B2H4PG LI   1,B2H4DA                * SPRITES, WENN MIT MOUSEI ZUGELASSEN :
B2H4LO MOV  *1+,2                   * (4-CHARS-SPRITES)
       JEQ  B2H4CO                  * CHARS      :     >00F000 BIS >00F800
       ORI  2,>8000                 * COLORS     :     >00F800 BIS >00FA00
       SWPB 2                       * ATTRIBUTES :     >00FA00 BIS >00FA80
       MOVB 2,@>8C02                *
       SWPB 2
       MOVB 2,@>8C02
       JMP  B2H4LO
B2H4CO LI   12,>1700
       SBZ  3
       CLR  @>8C02
       LI   0,>4000
       MOVB 0,@>8C02
       LI   0,>8
       LI   1,>9C3A
       LI   4,>9838
       LI   5,>8C00
       LI   3,>0040
B2H4TR MOVB 3,*1
       SWPB 3
       MOVB 3,*1
       SWPB 3
B2H4T1 MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       DEC  0
       JNE  B2H4T1
       AI   3,>100
       LI   0,>8
       CI   3,>D440
       JNE  B2H4TR
       LI   0,>0E02
       BLWP @VWTR
       LI   3,>40
       MOVB 3,@>8C02
       SWPB 3
       MOVB 3,@>8C02
       SWPB 3
       LI   0,>8
       AI   1,>4
       AI   4,>4
       CI   1,>9C42
       JNE  B2H4TR
       SBO  3
       LI   0,>0E00
       BLWP @VWTR
       RTWP
*==============================================================================*
B2H2   DATA B2H2WS,B2H2PG           *
B2H2WS BSS  >20                     *
B2H2DA DATA >0006,>0162,>021F,>05F7 * BILDSCHIRM AUF :
       DATA >061E,>0700,>0888,>0982 *                  >000000 BIS >006A00
       DATA >0B01,>0E00,>0F00,>122D *
       DATA >0000                   *
B2H2PG LI   1,B2H2DA                * SPRITES, WENN MIT MOUSEI ZUGELASSEN :
B2H2LO MOV  *1+,2                   * (4-CHARS-SPRITES)
       JEQ  B2H2CO                  * CHARS      :     >00F000 BIS >00F800
       ORI  2,>8000                 * COLORS     :     >00F800 BIS >00FA00
       SWPB 2                       * ATTRIBUTES :     >00FA00 BIS >00FA80
       MOVB 2,@>8C02                *
       SWPB 2
       MOVB 2,@>8C02
       JMP  B2H2LO
B2H2CO LI   12,>1700
       SBZ  3
       CLR  @>8C02
       LI   0,>4000
       MOVB 0,@>8C02
       LI   0,>8
       LI   1,>9C3A
       LI   4,>9838
       LI   5,>8C00
       LI   3,>3540
B2H2TR MOVB 3,*1
       SWPB 3
       MOVB 3,*1
       SWPB 3
B2H2T1 MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       MOVB *4,*5
       DEC  0
       JNE  B2H2T1
       LI   0,>8
       AI   1,>4
       AI   4,>4
       CI   1,>9C42
       JNE  B2H2TR
       AI   3,>100
       LI   1,>9C3A
       LI   4,>9838
       CI   3,>9F40
       JNE  B2H2TR
       SBO  3
       LI   0,>0E00
       BLWP @VWTR
       RTWP
*==============================================================================+
       COPY "WDS1.IFF.BS/S"
       END  START
    

eMail:Koplien@TU-Harburg.d400.DE

© Dr. Henry Koplien