Can I ………?
ANSWER: Yes, you can use an Atari mouse plugged into port 1 while using the digital pins on port 0 as outputs while operating in the Diamond GOS environment.
The answer was needed because I’ve been thinking about writing the control software for some hardware projects to work under the Diamond GOS. As a test, this short program was written to randomly set the outputs to control the LEDs in the Joystick Port Logic Box (JPLB). (See “Out of the Pack” Blog 4/20/2015)
This BASIC program sets up Diamond so that the mouse can be moved around. When the mouse is clicked a random number between 0 and 15 is used to set the pin’s logic state as indicated by the JPLB connected to port 0. When a key on the keyboard is pressed the program exits Diamond and returns you to the READY prompt.
5 REM DIAMOND - PORTTEST.BAS 5/19/2015
10 REM TEST PROGRAM TO SEE IF DIAMOND MOUSE STILL WORKS ON PORT 1 WHEN PORT 0 IS USED FOR OUTPUT
20 REM
100 REM SETUP JOYSTICK PORT#1 (PORT0) FOR OUTPUT
110 POKE 54018,48
120 POKE 54016,15
130 POKE 54018,52
140 POKE 54016,0
149 REM LOAD PAGE 6 DIAMOND LINK
150 CLOSE #1:OPEN #1,4,0,"D:DIABASIC.OBJ":TRAP 180
155 GET #1,A:GET #1,B:GET #1,C:GET #1,D
160 IF A<>255 OR B<>255 THEN 170
165 A=C:B=D:GET #1,C:GET #1,D
170 FOR X=A+B*256 TO C+D*256:GET #1,Y:POKE X,Y:NEXT X
175 GOTO 155
180 W0=1539:W1=1541:W2=1543:W3=1545
182 W4=1547:W5=1549:W6=1551:W7=1553
184 B0=1555:B1=1556:B2=1557:B3=1558
186 B4=1559:B5=1560:B6=1561:B7=1562
188 EVENTTYPE=39571:DIAMOND=1536
200 REM INITILIZE DIAMOND
210 POKE B0,0:X=USR(DIAMOND,0)
300 REM GET EVENT TYPE
310 X=USR(DIAMOND,23)
320 IF PEEK(EVENTTYPE)=0 THEN 310:REM NO EVENT
330 IF PEEK(EVENTTYPE)=5 THEN 400:REM BACKGROUND
340 IF PEEK(EVENTTYPE)=4 THEN 500:REM KEYPRESS
350 GOTO 310
400 REM BACKGROUND EVENT - SEND OUTPUT TO PIN
410 FOR X=1 TO 10:SOUND 0,100,14,8:NEXT X
415 POKE 54016,INT(RND(0)*16)
420 SOUND 0,0,0,0:GOTO 310
500 REM EVENT KEYBOARD - QUIT
510 X=USR(DIAMOND,1)
600 STOP
Line 100-140 Sets the port 0 for output and leaves port1 for mouse input. Diamond does not reset the port settings when initialized. It was also noted that JPLB showed that the logic outputs did not change when the BASIC program was stopped or when going back to the Diamond Desktop. Joystick port operations should be reset before the program ends. The ports will also reset for input if the RESET key is pressed, although you will more than likely have to reboot to use Diamond again.
Line 150-188 This part of the program loads in the machine language program that links the Diamond cartridge routines to BASIC. This is a shortened version of the original code, the line numbers were changed and the Diamond routine number definitions were removed. You’ll need a copy of DIABASIC.OBJ on the specified drive.
Line 210 Initializes the Diamond in High Rez mode. It’s a blank screen with a mouse pointer to move around.
Line 300-350 Checks for an EVENT. No event keep checking. A click of the mouse will change logic levels of port 0. Pressing a key on the keyboard will exit the program.
Line 400-420 Makes a sound to let you know the number changed. A new random number (sometimes the same number) is picked and sent to port 0 for output. Then the sound is turned off. Then back to check for next event.
Line 500-600 Exits the Diamond environment and STOPs the program. It is a good idea to use the quit function to exit Diamond. It can clean up memory and turn off the player graphics used for the mouse.
0 Comments
Recommended Comments
There are no comments to display.