home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug035.ark / CHECKOUT.FAS < prev    next >
Text File  |  1984-04-29  |  4KB  |  150 lines

  1. ; 7 SEPT 79.
  2. ;
  3. ;
  4. ; THIS PROGRAM EXERCISES ALL THE FELIX OPS; IT DOESN'T
  5. ; CLAIM TO CAREFULLY SEE THAT THEY ALL DO EVERYTHING THEY
  6. ; CLAIM TO DO....
  7. ; YOU SHOULD HAVE DOODLED TWO OBJECTS (1,2 ) TO
  8. ; GO WITH IT, UNLESS THIS FILE IS OF TYPE &(HAVING
  9. ; OBJECTS ALREADY WITH IT.)
  10. ;
  11. ; MOSHELL 1 SEPT 79.
  12. ;
  13. ; FIRST CHECK INPARM, TYPE BY TYPE. 
  14. ;
  15.     PRINT    SWRMSG    ;ASK FOR SOME INPUTS FOR CHECKS.
  16.     MOVE    ?CONSOLE,.TYPE2
  17. ;
  18. ; INPAR CHECKS:
  19. ;
  20.     MOVE    #31H,!CONSOLE    ;TYPE 1 (8 BIT CONSTANT)
  21.     MOVE    .TYPE2,!CONSOLE    ;TYPE 2 (8 BIT VARIABLE)
  22.     MOVE    !SWREG,!CONSOLE    ;TYPE 3 (8 BIT VARIABLE)
  23.     MOVE    35H,!CONSOLE    ;TYPE 5 (16 BIT CONSTANT)
  24.     MOVE    TYPE4,R1
  25.     MOVE    [R1],!CONSOLE    ;TYPE 4 (ARRAY INDEXED BY REG ).
  26.     MOVE    @TYPE6,!CONSOLE    ;TYPE 6 (16 BIT VARIABLE)
  27.     MOVE    #37H,R1        ;
  28.     MOVE    R1,!CONSOLE    ;TYPE 7 (PLAIN REGISTER)
  29.     ADD    %1,R1,!CONSOLE    ;TYPE 0 (5-BIT CONST;PRINTS '8')
  30. ;
  31.     JUMP    OUTCHK
  32. ;
  33. TYPE2:    DB    "2"
  34. SWRMSG:    DB    "INPARM-CHECK:   SET HEX 33 IN SWITCH REGISTER",CR,LF
  35.     DB    "THEN TYPE A '2',PLEASE.",CR,LF
  36.     DB    "PROGRAM SHOULD PRINT '212354678'. ANY MISSING",CR,LF
  37.     DB    "NUMBER MEANS THAT INPARM-MODE DIDN'T WORK.",CR,LF,STOP
  38. TYPE4:    DB    "4"
  39. TYPE6:    DW    36H
  40. ;
  41. OUTCHK:    PRINT    OTYPE37
  42.     MOVE    %0,%1    ;THREE ILLEGAL MOVES
  43.     MOVE    %0,#1    ;INTO CONSTANTS SHOULD
  44.     MOVE    %0,=1    ;PRODUCE 3 ERRORS.
  45.     MOVE    32H,.OTYPE2
  46.     MOVE    .OTYPE2,!CONSOLE    ;TYPE 2
  47.     MOVE    OTYPE4,R4
  48.     MOVE    34H,[R4]
  49.     MOVE    [R4],!CONSOLE    ;TYPE 4
  50.     MOVE    36H,@OTYPE6
  51.     MOVE    @OTYPE6,!CONSOLE    ;TYPE 6
  52.     PRINT    NOTSCREEN
  53.     JUMP    UNSCREEN
  54. ;
  55. OTYPE6: DW    36H
  56. OTYPE37:DB    "OUTPARM CHECK:   TYPES 3,7 ARE OK",CR,LF
  57.     DB    "AS USED IN INPARM CHECK. TYPES 0,1,5",CR,LF
  58.     DB    "SHOULD NOW PRODUCE ERROR MESSAGES.",CR,LF,STOP
  59. OTYPE2:    DS    1
  60. OTYPE4:    DW    0
  61. NOTSCREEN:    DB    "NOW THE CONDITIONAL JUMPS,CALL/RET/PUSH/POP",CR,LF
  62.     DB    "AND OTHER NON-SCREEN OPS ARE TESTED.",CR,LF,STOP
  63. ;
  64. ; THIS LAST IS ALSO A CHALLENGE TO FASM - NO COMMA BEFORE CR.
  65. ;
  66. UNSCREEN: COMP    %5,%6
  67. ;
  68. ; NOW THAT IN/OUTPAR ARE OK,WE CHECK SOME 
  69. ; NON-SCREEN OPS FIRST. ONLY 'TRACE' CAN TELL
  70. ; YOU WHICH ONES WORK AND WHICH ONE DOESN'T. 
  71. ;
  72.     JNZ    NZOK
  73.     HALT
  74. NZOK:    COMPU    %3,%3    ;SHOULD SET 'Z' FLAG.
  75.     JZ    ZOK
  76.     HALT
  77. ZOK:    SUB    %3,%1,R1; SHOULD CLEAR MINUS & CARRY FLAGS.
  78.     JPL    NMOK
  79.     HALT
  80. NMOK:    JNC    NCOK
  81.     HALT
  82. NCOK:    SUB    %1,%3,R1    ;SHOULD SET MINUS&CARRY FLAGS.
  83.     JMI    MOK
  84.     HALT
  85. MOK:    JC    COK
  86.     HALT
  87. COK:    CALL    DUMMY    ;TEST CALL,PUSH,POP,RETURN
  88.     JUMP    SCRNTEST
  89. DUMMY:    PUSH    R1
  90.     POP    R2
  91.     COMP    R1,R2
  92.     JZ    GOBACK
  93.     PRINT    PPERROR
  94.     HALT
  95. PPERROR:    DB    "PUSH OR POP ERROR.",CR,LF,STOP
  96. GOBACK:    RETURN
  97. ;
  98. ; NOW WE WORK OUT ALL THE SCREEN-ORIENTED OPS.
  99. ; WE SLOW THE SYSTEM DOWN SO YOU CAN SEE IT.
  100. ;
  101. SCRNTEST:    DELAY    250
  102.     ONLIST    2,1,5    ;TURN OBJ. 5 ON;
  103.     SHOW    ;(IT WASN'T DOODLED).THIS CHECKS
  104.         ;TO SEE IF FELIX-'NULLOBJ' NULLED ALL
  105.         ;THE OBJECTS OUT AS IT SPOZED TO.
  106.     ONLIST    1,1
  107.     SHOW
  108.     NEWBACK    0
  109.     SHOW
  110.     POSIT    1,20,20    ;CENTER OBJECT 1
  111.     SHOW
  112.     FLY    1,10,10
  113.     SHOW    ;CHECK OUT OPS ONE BY ONE....
  114.     SPIN    1,2
  115.     SHOW
  116.     SETANGL    1,0
  117.     SHOW
  118.     DIST    1,2,!SWREG    ;SHOW DIST RESULTS.
  119.     WHERE    1,R1,R2
  120.     BACKGRND    1
  121.     SHOW
  122.     FLY    1,-10,-20
  123.     SHOW
  124.     PUT    %10,%10,#RED
  125.     GET    %10,%10,!SWREG
  126.     SHOW
  127.     DELAY    0    ;SPEED US BACK UP.
  128. ;
  129.     PRINT    SCALEMSG
  130. RESTRY:    RESCALE    JS1X,?SWREG
  131.     RESCALE    JS1Y,?SWREG
  132.     FLY    1,?JS1X,?JS1Y
  133.     SHOW
  134.     COMP    ?BUTTONS,0
  135.     JZ    RESTRY
  136. ;
  137.     RECOLOR    1,9    ;IT OUGHTA TURN RED HERE.
  138.     PUT    %10,%10,#RED
  139.     GET    %10,%10,R1    ;I OUGHTA CHECK THESE BUT
  140.     OBJW    9,5,0        ;AM SIMPLY OUT OF TIME.
  141.     OBJW    9,5,R1
  142.     PRINT    HOORAY
  143.     HALT
  144. ;
  145. SCALEMSG:    DB    "WIGGLE JOYSTICK & SET SCALE IN SWITCHES.",CR,LF
  146.     DB    "HIT ANY BUTTON TO END.",CR,LF,STOP
  147. ;
  148. HOORAY:    DB    "FELIX HAS PASSED ALL THE TESTS.",CR,LF,STOP
  149.     END
  150.