10 REM APC - OSBYTE / OSWORD ROUTINES 20 REM ROLAND LEURS (c) 1993-1997 30 ; 40 PASS 2;GOSUB a 50 PASS 1;GOSUB a 60 END 70 ; 80aASM-BEGIN 90 ; 100 .CODE #F900 110 .RAM #7900 120 .OPTION #40 130 ; 140 :LEESBYTE = #FFC5 \ LEES BYTE VAN PC 150 :ZENDBYTE = #FFC8 \ STUUR BYTE NAAR PC 160 :SEM = #CF \ SEMAFOOR VOOR PC-COMMUNICATIE 170 ; 180 :OSBYTE PHA \ MAAK PLAATS OP STACK VOOR OSBYTE ROUTINE 190 PHA 200 PHA \ SAVE REGISTERS 210 TXA 220 PHA 230 TYA 240 PHA 250 TSX \ STACK POINTER NAAR X REGISTER 260 LDA #103,X \ HERSTEL OUDE ACCU 270 BMI OSERROR \ SPRING BIJ VERKEERD COMMANDO 280 CMP @#0F 290 BPL OSERROR 300 ASL A \ VERDUBBEL OSBYTE NUMMER 310 TAY \ WAARDE NAAR INDEXREGISTER 320 SEC \ ZET CARRY VOOR AFTREKKEN 330 LDA OSBTAB,Y \ ZET SPRONG ADRES OP STACK 340 SBC @1 \ TREK ER 1 VAN AF I.V.M. RTS INSTRUKTIE 350 STA #104,X 360 LDA OSBTAB+1,Y 370 SBC @0 380 STA #105,X 390 PLA \ HERSTEL REGISTERS 400 TAY 410 PLA 420 TAX 430 PLA 440 RTS \ VOER OSBYTE ROUTINE UIT (!) 450 :OSERROR JMP #1C83 \ PROBEER EENS DE XMS AANROEPEN 460 ; 470 :OSBTAB .WORD OSBYTE00, OSBYTE01, OSBYTE02, OSBYTE03 480 .WORD OSBYTE04, OSBYTE05, OSBYTE06, OSBYTE07 490 .WORD #FC5D , OSBYTE09, OSBYTE0A, OSBYTE0B 500 .WORD OSBYTE0C, OSBYTE0D, OSBYTE0E 510 ; 520 .CODE #FA19 530 .RAM #7A19 540 :OSBYTE00 PHA \ SAVE REGISTERS 550 TXA 560 PHA 570 TYA 580 PHA 590 PHP 600 JSR #F7D1 \ DRUK VERSIE TEKST AF 610 .AS "Acorn Atom Personal Computer System R65",#EA 620 LDA @#08 \ BEPAAL PROCESSOR MET OSBYTE #08 630 JSR #FFC2 640 LSR A \ PROCESSOR TYPE IN CARRY ZETTEN 650 BCC OSBYTE00A \ SPRING INDIEN NORMALE 6502 660 LDA @CH"C" \ PRINT 'C' BIJ CMOS PROCESSOR 670 JSR #FFF4 680 :OSBYTE00A JSR #F7D1 \ PRINT DE REST VAN DE TEKST 690 .AS "02",#0D,#0A,#0A 700 .AS "Enhanced Pc Operating Systeem v3.11 - " 710 .AS "(c) Roland Leurs 1997",#0D,#0A,#0A,#EA 720 :RESTORE PLP \ HERSTEL REGISTERS 730 PLA 740 TAY 750 PLA 760 TAX 770 PLA 780 RTS \ EINDE ROUTINE 790 ; 800 :OSBYTE01 LDA @11 \ TEST SEMAFOOR 810 JSR #FFC2 820 BCC OSBYTE01A 830 LDA @#00 \ LAAT PC EEN KEYBOARD SCAN DOEN 840 JSR ZENDBYTE 850 LDA @#01 860 JSR ZENDBYTE 870 JSR LEESBYTE \ LEES RESULTAAT 880 PHA 890 JSR LEESBYTE 900 :OSBYTE01B LDA @10 \ WIS SEMAFOOR 910 JSR #FFC2 920 PLA 930 :OSBYTE01A CMP @#71 \ TEST OP ESCAPE TOETS 940 RTS \ EINDE ROUTINE 950 ; 960 :OSBYTE02 JMP #F67F \ FUNCTIE NIET ONDERSTEUND, ERROR 129 970 ; 980 :OSBYTE03 CPX @#00 \ TEST OPDRACHT 990 BEQ LEESVDU \ SPRING INDIEN VDU MODE OPVRAGEN 1000 CPX @80 \ TEST GEVRAAGDE VDU MODE 1010 BEQ INIT80 \ SPRING INDIEN 80 KOLOMS GEVRAAGD 1020 SEC \ ZET CARRY VOOR FOUT INDICATIE 1030 RTS \ EINDE ROUTINE 1040 :INIT80 LDX @3 \ ZET VECTOREN NAAR STANDAARD VDU 1050 :INIT80_1 LDA #FF8B,X 1060 STA #208,X 1070 DEX 1080 BPL INIT80_1 1090 LDA @22 \ NAAR TEKSTMODE 1100 JSR #FFF4 1110 LDA @3 1120 JSR #FFF4 1130 :LEESVDU LDX @#80 \ LEES VDU STATUS CODE 1140 CLC \ ZET CARRY ALS ALLES IN ORDE IS 1150 RTS \ EINDE ROUTINE 1160 ; 1170 :OSBYTE04 PHA \ SAVE REGISTERS 1180 TXA 1190 PHA 1200 TYA 1210 PHA 1220 LDX @00 \ GENEREER WACHTTIJD VAN 1/18e SECONDE 1230 LDY @01 1240 JSR OSBYTE05 1250 PLA \ HERSTEL REGISTERS 1260 TAY 1270 PLA 1280 TAX 1290 PLA 1300 RTS 1310 ; 1320 :OSBYTE05 PHA \ SAVE ACCU 1330 LDA @11 \ TEST SEMAFOOR 1340 JSR #FFC2 1350 BCC OSBYTE05B \ SPRING ALS TOEGANG GEWEIGERD 1360 LDA @#00 \ SOUND COMMANDO NAAR PC 1370 JSR ZENDBYTE 1380 LDA @25 1390 JSR ZENDBYTE 1400 :OSBYTE05A TXA \ TOONHOOGTE NAAR PC 1410 JSR ZENDBYTE 1420 TYA \ TOONDUUR NAAR PC 1430 JSR ZENDBYTE 1440 LDA @10 \ WIS SEMAFOOR 1450 JSR #FFC2 1460 :OSBYTE05B PLA \ HERSTEL ACCU 1470 RTS \ EINDE ROUTINE 1480 ; 1490 :OSBYTE06 JMP (#224) \ SPRING NAAR EXIT VECTOR 1500 ; 1510 :OSBYTE07 PHP \ SAVE PROCESSOR STATUS 1520 CPX @#00 \ EXIT VECTOR OPVRAGEN 1530 BEQ LEESEXIT \ SPRING INDIEN VECTOR OPVRAGEN 1540 STX #225 \ VECTOR WIJZIGEN -> HIGH BYTE 1550 STY #224 \ LOW BYTE 1560 :LEESEXIT LDY #224 \ LEES EXIT VECTOR 1570 LDX #225 1580 PLP \ HERSTEL PROCESSOR STATUS 1590 RTS 1600 ; 1630 ; 1640 :OSBYTE0E LDA @#0B \ ZET SEMAFOOR 1650 JSR #FFC2 1660 BCC OSBYTE0E 1670 LDA @#00 \ KEYSCAN COMMANDO NAAR PC 1680 JSR ZENDBYTE 1690 LDA @#5D 1700 JSR ZENDBYTE 1710 JSR LEESBYTE \ LEES RESULTAAT 1720 PHA 1730 LSR A 1740 BCC OSBYTE0EA 1750 JSR LEESBYTE 1760 TAX \ ASCII WAARDE NAAR X 1770 JSR LEESBYTE 1780 TAY \ SCAN CODE NAAR Y 1790 :OSBYTE0EA LDA @#0A \ WIS SEMAFOOR 1800 JSR #FFC2 1810 PLA 1820 RTS 1830 ; 1840 .CODE #F98E 1850 .RAM #798E 1860 ; 1870 :LABEL0 JSR #FFF4 \ DEZE ROUTINE MOET GESPAARD BLIJVEN 1880 INY 1890 LDA #ED,Y 1900 CMP @#0D 1910 BNE LABEL0 1920 :LABEL1 INY 1930 JSR #F7FD 1940 CPY @#0E 1950 BCC LABEL1 1960 RTS 1970 ; 1980 :OSBYTE09 PHA \ ZET CTRL-G INFORMATIE 1990 LDA @11 \ TEST SEMAFOOR 2000 JSR #FFC2 2010 BCS OSBYTE09A \ SPRING INDIEN TOEGANG GEKREGEN 2020 JMP OSBYTE05B 2030 :OSBYTE09A LDA @#00 2040 JSR ZENDBYTE 2050 LDA @26 2060 JSR ZENDBYTE 2070 JMP OSBYTE05A 2080 ; 2090 :OSBYTE0A PHA \ INIT PC-COMMUNICATIE SEMAFOOR 2100 LDA @#01 2110 STA SEM 2120 PLA 2130 RTS 2140 ; 2150 :OSBYTE0B LSR SEM \ TEST SEMAFOOR 2160 RTS 2170 ; 2180 :OSBYTE0C TXA \ ZET ERRORCODE IN ACCU 2190 PHA \ ZET TWEE MAAL OP STACK 2200 PHA 2210 JMP (#202) \ SPRING NAAR BRK-VECTOR 2220 ; 2230 :OSBYTE0D LDA @#00 \ GEEF COMMANDO AAN PC 2240 JSR ZENDBYTE 2250 LDA @#1B 2260 JSR ZENDBYTE 2270 LDA #00 \ LAADT FOUTCODE 2280 JSR ZENDBYTE 2290 LDA #01 \ TEST OP DIRECT MODE 2300 ORA #02 2310 BEQ LABEL5 2320 JSR #F7D1 \ DRUK TEKST AF 2330 .AS " in regel ",#EA 2340 LDA @#00 \ ZET REGELNUMMER IN BASIC STACK 2350 STA #43 2360 STA #34 2370 LDA #02 2380 STA #25 2390 LDA #01 2400 STA #16 2410 JSR #C589 \ DRUK REGELNUMMER DECIMAAL AF 2420 :LABEL5 JMP #FFED \ EINDE OSBYTE ROUTINE 2430 ; 2440 .CODE #FA08 2450 .RAM #7A08 2460 ; 2470 :LABEL2 INC #00,X 2480 BNE LABEL3 2490 INC #01,X 2500 :LABEL3 LDA #00,X 2510 CMP #02,X 2520 BNE LABEL4 2530 LDA #01,X 2540 CMP #03,X 2550 :LABEL4 RTS 2560 ; 2570 .END 2580 RETURN