From 29e5dee55161a3abdf55a7bf2cc623d04bc3be57 Mon Sep 17 00:00:00 2001 From: Void NV Date: Fri, 10 Apr 2020 20:28:34 -0500 Subject: [PATCH] PIC# -> PIC_#, PIT# -> PIT_# --- ...o => Zenith-latest-2020-04-10-20_27_40.iso | Bin 34803712 -> 34805760 bytes src/Doc/ChangeLog.DD | 8 +++- src/Doc/Comm.CC | 6 +-- src/Doc/HelpIndex.DD | Bin 6932 -> 6930 bytes src/Doc/PIT.DD | 4 +- src/Home/DoDistro.CC | 2 +- src/Home/Test.CC | 19 +++++++++ src/Kernel/KInterrupts.CC | 24 +++++------ src/Kernel/KMain.CC | 4 +- src/Kernel/KMisc.CC | 10 ++--- src/Kernel/KernelA.HH | 40 +++++++++--------- src/Kernel/SerialDev/Keyboard.CC | 4 +- src/Kernel/SerialDev/Mouse.CC | 8 ++-- src/Misc/PCIDevices.DD | 2 +- src/PersonalMenu.DD | Bin 64008 -> 64011 bytes 15 files changed, 78 insertions(+), 53 deletions(-) rename Zenith-latest-2020-04-09-19_42_08.iso => Zenith-latest-2020-04-10-20_27_40.iso (99%) create mode 100644 src/Home/Test.CC diff --git a/Zenith-latest-2020-04-09-19_42_08.iso b/Zenith-latest-2020-04-10-20_27_40.iso similarity index 99% rename from Zenith-latest-2020-04-09-19_42_08.iso rename to Zenith-latest-2020-04-10-20_27_40.iso index f4de202ad5a036994407c680aa3350c8faa58fcf..9ef47c305d4cf004e4e06f6fbeb6c8b751d007db 100644 GIT binary patch delta 43149 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 delta 56282 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∾G- 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 diff --git a/src/Doc/ChangeLog.DD b/src/Doc/ChangeLog.DD index b3202b69..9cb6e88f 100755 --- a/src/Doc/ChangeLog.DD +++ b/src/Doc/ChangeLog.DD @@ -1,4 +1,10 @@ $WW,1$$FG,5$$TX+CX,"ChangeLog"$$FG$ +$IV,1$----04/10/20 07:44:08----$IV,0$ +* $LK,"R",A="MN:R"$("PIC1", "$LK,"PIC_1",A="MN:PIC_1"$"); +* $LK,"R",A="MN:R"$("PIC2", "$LK,"PIC_2",A="MN:PIC_2"$"); +* $LK,"R",A="MN:R"$("PIT0", "$LK,"PIT_0",A="MN:PIT_0"$"); +* $LK,"R",A="MN:R"$("PIT2", "$LK,"PIT_2",A="MN:PIT_2"$"); + $IV,1$----04/09/20 19:33:16----$IV,0$ * Added $LK,"Chess",A="FI:::/Demo/Games/Chess.CC"$ game from Sup1 disc. * $LK,"R",A="MN:R"$("ScanFlags", "$LK,"FlagsScan",A="MN:FlagsScan"$"); @@ -142,7 +148,7 @@ $BK,1$* Zenith 1.0 released.$BK,0$ * Removed the unpolished HPET implementation from the kernel. * $LK,"Enabled the execution of SSE instructions",A="FF:::/Kernel/KStart64.CC,CR4f_OSFXSR"$. No actual SSE implementation in assembler yet, however. * Added definitions for the $MA-X+PU,"various flags",LM="F(\"CR0F_\", \"+lb\");F(\"CR4F_\", \"+lb\");View;"$ in the Control Registers. -* Added definitions for the $MA-X+PU,"PIT",LM="F(\"PIT0\", \"+l-i\");F(\"PIT2\",\"+l-i\");F(\"PIT_CMD\");View;"$, and a $LK,"document",A="FI:::/Doc/PIT.DD"$ describing its usage in the OS. +* Added definitions for the $MA-X+PU,"PIT",LM="F(\"PIT_0\", \"+l-i\");F(\"PIT_2\",\"+l-i\");F(\"PIT_CMD\");View;"$, and a $LK,"document",A="FI:::/Doc/PIT.DD"$ describing its usage in the OS. * Added definition for the $MA-X+PU,"PC speaker",LM="F(\"PCSPKR\");View;"$. * Added definitions for the $MA-X+PU,"PIC",LM="F(\"PIC\",\"-i+lb\");View;"$. * Added $LK,"TimeSet",A="MN:TimeSet"$() as there was no way to set the hardware clock before. diff --git a/src/Doc/Comm.CC b/src/Doc/Comm.CC index c2b82680..d61efdf5 100755 --- a/src/Doc/Comm.CC +++ b/src/Doc/Comm.CC @@ -46,14 +46,14 @@ interrupt U0 IRQComm3() { CommHandler(2); CommHandler(4); - OutU8(PIC1,PIC_EOI); + OutU8(PIC_1,PIC_EOI); } interrupt U0 IRQComm4() { CommHandler(1); CommHandler(3); - OutU8(PIC1,PIC_EOI); + OutU8(PIC_1,PIC_EOI); } U0 CommInit() @@ -93,7 +93,7 @@ public CComm *CommInit8n1(I64 port,I64 baud) OutU8(c->base+UART_MCR,4); OutU8(c->base+UART_IER,0); //Disable all IRQ OutU8(c->base+UART_MCR,0xA); //out2 and rts - OutU8(PIC1_DATA,InU8(PIC1_DATA) & (0xFF-0x18));//Enable 8259 IRQ 3 & 4 + OutU8(PIC_1_DATA,InU8(PIC_1_DATA) & (0xFF-0x18));//Enable 8259 IRQ 3 & 4 OutU8(c->base+UART_IER,1); //RX but no THR empty POPFD diff --git a/src/Doc/HelpIndex.DD b/src/Doc/HelpIndex.DD index b7749a16e37ec7e7325b71bcd1e6d34b8d9de623..780a7fbe4925ab2beff200565cac989ee7a24302 100755 GIT binary patch delta 12 TcmbPYHpy&*InQQGp4)r?9()96 delta 15 WcmbPaHpOg%IS-Sr^Ja6N+k5~h-vrkH diff --git a/src/Doc/PIT.DD b/src/Doc/PIT.DD index be6a02ae..ac56a3b9 100755 --- a/src/Doc/PIT.DD +++ b/src/Doc/PIT.DD @@ -2,11 +2,11 @@ $WW,1$The $FG,2$Programmable Interval Timer$FG$ has two purposes: Generate inter It has 3 channels: -$LK,"Channel 0",A="MN:PIT0"$ can generate an interrupt, IRQ 0, at a defined frequency. We set it up in $LK,"TimerInit",A="MN:TimerInit"$(), and use it in $LK,"SysTimerRead",A="MN:SysTimerRead"$(). +$LK,"Channel 0",A="MN:PIT_0"$ can generate an interrupt, IRQ 0, at a defined frequency. We set it up in $LK,"TimerInit",A="MN:TimerInit"$(), and use it in $LK,"SysTimerRead",A="MN:SysTimerRead"$(). Channel 1 was used historically to refresh the DRAM, but now it is obsolete as the hardware does this itself. Channel 1 is useless and might not even be implemented anymore on modern machines. -$LK,"Channel 2",A="MN:PIT2"$'s output is connected to the PC speaker. +$LK,"Channel 2",A="MN:PIT_2"$'s output is connected to the PC speaker. The Command port is used to control each of these 3 channels. The relevant $LK,"flags",A="MN:PIT_CMDF_OPMODE_RATE_GEN"$ are defined. diff --git a/src/Home/DoDistro.CC b/src/Home/DoDistro.CC index 6ea6c3ea..7963822d 100755 --- a/src/Home/DoDistro.CC +++ b/src/Home/DoDistro.CC @@ -1,6 +1,6 @@ //Make Your own Distro by #include-ing this file. -#define STD_DISTRO_DVD_CONFIG "TB\nScale2Mem(2048,0x40000)\nT \n\n1024\n768\n\n\n" +#define STD_DISTRO_DVD_CONFIG "TB\nScale2Mem(2048,0x40000)\nT \n\n640\n480\n\n\n" U0 MakeMyISO(U8 *_out_iso_filename) {//Does everything with current drive. diff --git a/src/Home/Test.CC b/src/Home/Test.CC new file mode 100644 index 00000000..5071790f --- /dev/null +++ b/src/Home/Test.CC @@ -0,0 +1,19 @@ +U0 (*fp_test)(); + +interrupt U0 Test() +{ + "nigger\n"; +} + +U0 Main() +{ + IntEntrySet(I_USER, &Test); + + INT I_USER + + fp_test = IntEntryGet(I_USER); + + U(fp_test); +} + +Main; \ No newline at end of file diff --git a/src/Kernel/KInterrupts.CC b/src/Kernel/KInterrupts.CC index 3aefcfb5..b552ad08 100755 --- a/src/Kernel/KInterrupts.CC +++ b/src/Kernel/KInterrupts.CC @@ -128,22 +128,22 @@ U8 *IntEntrySet(I64 irq,U0 (*fp_new_handler)(),I64 type=IDTET_IRQ,I64 dpl=0) U0 IntsInit() {//Init 8259 - OutU8(PIC1,0x11); //IW1 - OutU8(PIC2,0x11); //IW1 - OutU8(PIC1_DATA,0x20); //IW2 - OutU8(PIC2_DATA,0x28); //IW2 - OutU8(PIC1_DATA,0x04); //IW3 - OutU8(PIC2_DATA,0x02); //IW3 - OutU8(PIC1_DATA,0x0D); //IW4 - OutU8(PIC2_DATA,0x09); //IW4 - OutU8(PIC1_DATA,0xFA); //Mask all but IRQ0 (timer) and IRQ2 Cascade. - OutU8(PIC2_DATA,0xFF); + OutU8(PIC_1,0x11); //IW1 + OutU8(PIC_2,0x11); //IW1 + OutU8(PIC_1_DATA,0x20); //IW2 + OutU8(PIC_2_DATA,0x28); //IW2 + OutU8(PIC_1_DATA,0x04); //IW3 + OutU8(PIC_2_DATA,0x02); //IW3 + OutU8(PIC_1_DATA,0x0D); //IW4 + OutU8(PIC_2_DATA,0x09); //IW4 + OutU8(PIC_1_DATA,0xFA); //Mask all but IRQ0 (timer) and IRQ2 Cascade. + OutU8(PIC_2_DATA,0xFF); } interrupt U0 IntNop() {//Make unplanned IRQs stop by all means! - OutU8(PIC2,PIC_EOI); - OutU8(PIC1,PIC_EOI); + OutU8(PIC_2,PIC_EOI); + OutU8(PIC_1,PIC_EOI); *(dev.uncached_alias + LAPIC_EOI)(U32 *) = 0; } diff --git a/src/Kernel/KMain.CC b/src/Kernel/KMain.CC index d38e0185..3bd0d4a6 100755 --- a/src/Kernel/KMain.CC +++ b/src/Kernel/KMain.CC @@ -106,8 +106,8 @@ U0 SysGrInit() U0 TimerInit() {//See $LK,"::/Doc/PIT.DD",A="FI:::/Doc/PIT.DD"$. OutU8(PIT_CMD, PIT_CMDF_CHANNEL0 | PIT_CMDF_OPMODE_RATE_GEN | PIT_CMDF_ACCESS_WORD); - OutU8(PIT0,SYS_TIMER0_PERIOD); - OutU8(PIT0,SYS_TIMER0_PERIOD >> 8); + OutU8(PIT_0,SYS_TIMER0_PERIOD); + OutU8(PIT_0,SYS_TIMER0_PERIOD >> 8); } U0 Reboot(Bool format_ramdisks=FALSE) diff --git a/src/Kernel/KMisc.CC b/src/Kernel/KMisc.CC index 844b74db..c3e0a2f8 100755 --- a/src/Kernel/KMisc.CC +++ b/src/Kernel/KMisc.CC @@ -15,7 +15,7 @@ U0 IntCore0TimerHandler(CTask *) LBtr(&sys_semas[SEMA_SYS_TIMER],0); for (i=1;icatch_except=TRUE; } IntEntrySet(0x21,&IRQKbd); - OutU8(PIC1_DATA,InU8(PIC1_DATA)&~2); + OutU8(PIC_1_DATA,InU8(PIC_1_DATA)&~2); } U0 KbdHandler() diff --git a/src/Kernel/SerialDev/Mouse.CC b/src/Kernel/SerialDev/Mouse.CC index 200fc92b..4c47b03b 100755 --- a/src/Kernel/SerialDev/Mouse.CC +++ b/src/Kernel/SerialDev/Mouse.CC @@ -90,8 +90,8 @@ U0 MouseHardPacketRead() interrupt U0 IRQMouseHard() { CLD - OutU8(PIC2,PIC_EOI); - OutU8(PIC1,PIC_EOI); + OutU8(PIC_2,PIC_EOI); + OutU8(PIC_1,PIC_EOI); mouse_hard.irqs_working=TRUE; if (mouse_hard.install_in_progress || !mouse_hard.installed) { kbd.reset=TRUE; @@ -312,13 +312,13 @@ Bool MouseHardDriverInstall(I64 dummy=0) //can be spawned no_warn dummy; I64 i; mouse_hard.install_in_progress=TRUE; - OutU8(PIC2_DATA,InU8(PIC2_DATA)|0x10); + OutU8(PIC_2_DATA,InU8(PIC_2_DATA)|0x10); mouse_hard.installed=mouse_hard.irqs_working=FALSE; IntEntrySet(0x2C,&IRQMouseHard); for(i=0;i<5;i++) mouse_hard.bttns[i]=0; if (i=MouseHardReset) - OutU8(PIC2_DATA,InU8(PIC2_DATA)&~0x10); + OutU8(PIC_2_DATA,InU8(PIC_2_DATA)&~0x10); KbdMouseReset; mouse_hard.install_attempts++; mouse_hard.installed=mouse_hard.event=i; diff --git a/src/Misc/PCIDevices.DD b/src/Misc/PCIDevices.DD index 4dd267ee..445b4c1a 100755 --- a/src/Misc/PCIDevices.DD +++ b/src/Misc/PCIDevices.DD @@ -7158,7 +7158,7 @@ A009 CCSI PCI20-5-485 5 Mbit ARCnet A00A CCSI PCI20-5-485D 5 Mbit ARCnet A00B CCSI PCI20-5-485X 5 Mbit ARCnet - A00C CCSI PIC20-5-FOG-ST 5 Mbit ARCnet + A00C CCSI PIC_20-5-FOG-ST 5 Mbit ARCnet A00D CCSI PCI20-5-FOG-SMA 5 Mbit ARCnet A00E COM200C22 ARCNET A201 CCSI PCI22-485 10 Mbit ARCnet diff --git a/src/PersonalMenu.DD b/src/PersonalMenu.DD index 746683ad12da1fd517d86d9dc299cc62aa4d47ca..da2c853905285490c0bb229991423fe9656c4960 100755 GIT binary patch delta 23 fcmeD9!rc9ZdBblOW(5U>&3{;=m^O>DfBpmjc6JGu delta 21 dcmeDF!rbwNdBblOM$XOuSfrRXOR|6Z1ORCQ2}1w?