diff --git a/COLORBOUNCE.A b/COLORBOUNCE.A index 5c02458..7ba878f 100644 --- a/COLORBOUNCE.A +++ b/COLORBOUNCE.A @@ -1,20 +1,20 @@ - 400 GR : REM SET COLOR GRAPHICS AREA - 420 HOME : REM CLEAR TEXT AREA - 440 X = 0: REM SET STARTING POSITION OF BACK-AND-FORTH VARIABLE - 460 Y = 5: REM SET STARTING POSITION OF UP-AND-DOWN VARIABLE - 480 XV = 2: REM SET X VELOCITY - 500 YV = 1: REM SET Y VELOCITY - 520 REM CALCULATE NEW POSITION - 540 NX = X + XV:NY = Y + YV - 560 REM IF BALL EXCEEDS SCREEN EDGE, THEN BOUNCE - 580 IF NX > 39 THEN NX = 39:XV = - XV - 600 IF NX < 0 THEN NX = 0:XV = - XV - 620 IF NY > 39 THEN NY = 39:YV = - YV - 640 IF NY < 0 THEN NY = 0:YV = - YV - 660 REM PLOT NEW POSITION - 680 COLOR= 7: PLOT NX,NY - 700 REM ERASE OLD POSITION - 720 COLOR= 0: PLOT X,Y - 740 REM SAVE CURRENT POSITION - 760 X = NX:Y = NY - 780 GOTO 540 +400 GR : REM SET COLOR GRAPHICS AREA +420 HOME : REM CLEAR TEXT AREA +440 X = 0: REM SET STARTING POSITION OF BACK-AND-FORTH VARIABLE +460 Y = 5: REM SET STARTING POSITION OF UP-AND-DOWN VARIABLE +480 XV = 2: REM SET X VELOCITY +500 YV = 1: REM SET Y VELOCITY +520 REM CALCULATE NEW POSITION +540 NX = X + XV:NY = Y + YV +560 REM IF BALL EXCEEDS SCREEN EDGE, THEN BOUNCE +580 IF NX > 39 THEN NX = 39:XV = - XV +600 IF NX < 0 THEN NX = 0:XV = - XV +620 IF NY > 39 THEN NY = 39:YV = - YV +640 IF NY < 0 THEN NY = 0:YV = - YV +660 REM PLOT NEW POSITION +680 COLOR= 7: PLOT NX,NY +700 REM ERASE OLD POSITION +720 COLOR= 0: PLOT X,Y +740 REM SAVE CURRENT POSITION +760 X = NX:Y = NY +780 GOTO 540 diff --git a/apple2e.cpp b/apple2e.cpp index cf81656..827de6c 100644 --- a/apple2e.cpp +++ b/apple2e.cpp @@ -660,7 +660,15 @@ struct DISKIIboard : board_base data = 0; return true; } - virtual void reset(void) {} + virtual void reset(void) + { + driveMotorEnabled[0] = false; // Is this safe? + driveMotorEnabled[1] = false; // Is this safe? + driveSelected = 0; + trackBytesOutOfDate = true; + floppy_activity(0, false); + floppy_activity(1, false); + } }; struct Mockingboard : board_base @@ -1074,6 +1082,9 @@ struct MAINboard : board_base C08X_write_RAM = true; internal_C800_ROM_selected = true; repage_regions("reset"); + for(auto b : boards) { + b->reset(); + } } bool read(int addr, unsigned char &data)