Also zu Basic kann ich nichts sagen. Ich denke, die Servosteuerung sollte in Assembler geschrieben werden.
Ich mache das bei einem PIC wie folgt:

In der Totzeit (18 ms, wo keine Servos aktiv sind) werden die Abschaltzeiten der einzelnen Servos berechnet, (Z.B. Servo 1 nach 1,9 ms, Servo 2 nach 1.2 ms, Servo 3 nach 1.8 ms, Servo 4 nach 1.8 ms).

Diese Werte werden jetzt nach aufsteigender Zeit sortiert:
(1.2 - Servo 2), (1.8 - Servo 3 und Servo 4), (1.9 Servo 1)

Jetzt berechne ich nur die Differenzen bis zum Ausschalten des jeweils nächsten Servos (Startwert ist 0.0 ms):
(S2 - 1.2) , (S3 & S4 - 06), (S1 - 0.1)

Diese Werte schreibe ich in eine zweispaltige Tabelle. 1. Wert ist ein Bitmap aller auszuschaltenden Servos. 2. Wert ist die Zeit bis zum Ausschalten der nächsten Servos.
0x00 | 1.2 ; Start, noch keine Servos ausschalten, 1.2 ms warten
0x02 | 0.6 ; S2 ausschalten, 0.6 ms warten
0x0c | 0.1 : S3 und S4 abschalten (Bits 3 und 4), 0.1 ms warten
0x01 | 0.0 : S1 abschalten und fertig

Die Interrupt-Routine kriegt einen Pointer auf die erste Zeile der Tabelle als Parameter.
Meine Timer-Interrupt-Routine macht jetzt folgendes (nachdem sie einmal zum Zeitpunkt 0ms angestoßen wurde);
XOR Spalte 1 der Tabelle mit den Ausgabe-Ports der Servos.
Setze nächsten Timer-Interupt auf den Wert der Spalte 2 der Tabelle.
Erhöhe Zeilen-Pointer in die Tabelle um 1.

Vorteile:
- Die Interrupt-Routine ist extrem schnell.
- Es können mehrere Servos gleichzeitig ausgeschaltet werden, da immer 8 Bit am Port gleichzeitig gekippt werden können.
- Die Anzahl der Servos ist hauptsächlich durch die Anzahl der Ports beschränkt.

Nachteile:
Etwas RAM-Verbrauch durch die angelegte Tabelle.

Ist softwaretechnisch ein ziemlicher Aufwand, das Ganze elegant und effizient hinzubekommen, funktioniert aber tadellos.