diff --git a/ZealOS-2021-09-19-01_53_08.iso b/ZealOS-2021-09-21-02_47_38.iso similarity index 99% rename from ZealOS-2021-09-19-01_53_08.iso rename to ZealOS-2021-09-21-02_47_38.iso index e6876f1f..bed13bec 100755 Binary files a/ZealOS-2021-09-19-01_53_08.iso and b/ZealOS-2021-09-21-02_47_38.iso differ diff --git a/docs/Doc/MemoryOverview.DD.html b/docs/Doc/MemoryOverview.DD.html index 494ab91f..76f59d1a 100755 --- a/docs/Doc/MemoryOverview.DD.html +++ b/docs/Doc/MemoryOverview.DD.html @@ -43,7 +43,7 @@ body {background-color:#fef1f0;} kernel memory in other operating systems. See SysCAlloc(), SysMAlloc(), SysMAllocIdent() and SysStrNew(). All of the regular page tables are marked, "cached". When accessing hardware, however, you need uncached page table. The -lowest 4Gig addresses have an alias to access hardware located toward the top of mapped space, 0x01C4A00000. See +lowest 4Gig addresses have an alias to access hardware located toward the top of mapped space, 0x01D7800000. See dev.uncached_alias. During an extended powered-on session of ZealOS, in theory, memory will become fragmented, requiring a reboot. It has never @@ -71,13 +71,13 @@ body {background-color:#fef1f0;} 0xF0000000. PCI devices are supported, so Mem32DevAlloc() flaws could become an issue. 0x0080000000-~0x00DFFFFFFF - 0x0100000000-~0x01C49FFFFF + 0x0100000000-~0x01D77FFFFF Data Heap mem. (The physical memory that exists in this range is data heap.) - 0x01C4A00000- 0x02C49FFFFF + 0x01D7800000- 0x02D77FFFFF Uncached alias of first 4Gig. (For 32-bit device access.) - - 0x02C49FFFFF + - 0x02D77FFFFF 64-bit devices are alloced with Mem64DevAlloc() counting backward. diff --git a/docs/Home/Net/Drivers/Run.CC.html b/docs/Home/Net/Drivers/Run.CC.html index 2d7e33e2..149382a7 100755 --- a/docs/Home/Net/Drivers/Run.CC.html +++ b/docs/Home/Net/Drivers/Run.CC.html @@ -34,46 +34,58 @@ body {background-color:#fef1f0;} #define PCIV_E1000 0x8086 #define PCID_82545EM 0x100F -U0 NetDriverInclude(U8 *driver) -{ - U8 *filename = MStrPrint(__DIR__ "/%s", driver); + +#define PCIV_VIRTIO 0x1AF4 +//#define PCID_VIRTIO_NET 0x1000 - ExeFile(filename); - Free(filename); -} +U0 NetDriverInclude(U8 *driver) +{ + U8 *filename = MStrPrint(__DIR__ "/%s", driver); -U0 NetDriverInit() -{ - CPCIDev *net_driver_pci = PCIDevFind(PCIC_NETWORK); - Bool found = FALSE; - - switch (net_driver_pci->vendor_id) - { - case PCIV_PCNET: - switch (net_driver_pci->device_id) - { - case PCID_PCNET: - NetDriverInclude("PCNet"); - found = TRUE; - break; - } - break; - - case PCIV_E1000: - switch (net_driver_pci->device_id) - { - case PCID_82545EM: - NetDriverInclude("E1000"); - found = TRUE; - break; - } - break; - } - - if (!found) - throw('NET'); -} - -NetDriverInit; + ExeFile(filename); + Free(filename); +} + +U0 NetDriverInit() +{ + CPCIDev *net_driver_pci = PCIDevFind(PCIC_NETWORK); + Bool found = FALSE; + + switch (net_driver_pci->vendor_id) + { + case PCIV_PCNET: + switch (net_driver_pci->device_id) + { + case PCID_PCNET: + NetDriverInclude("PCNet"); + found = TRUE; + break; + } + break; + + case PCIV_E1000: + switch (net_driver_pci->device_id) + { + case PCID_82545EM: + NetDriverInclude("E1000"); + found = TRUE; + break; + } + break; + + case PCIV_VIRTIO: + NetDriverInclude("VirtIONet"); + found = TRUE; + break; + } + + if (!found) + { + ClassRep(net_driver_pci); + throw('NODRIVER'); + } +} + +NetDriverInit; diff --git a/docs/Home/Net/Drivers/VirtIONet.CC.html b/docs/Home/Net/Drivers/VirtIONet.CC.html new file mode 100755 index 00000000..3f86f182 --- /dev/null +++ b/docs/Home/Net/Drivers/VirtIONet.CC.html @@ -0,0 +1,345 @@ + + + + + + + + +
+/*
+    VirtIO Net driver ported from alec's Erythros.
+*/
+
+//
+// PCI virtio I/O registers.
+//
+
+#define VIRTIO_PCI_HOST_FEATURES 0  // Features supported by the host
+#define VIRTIO_PCI_GUEST_FEATURES 4 // Features activated by the guest
+#define VIRTIO_PCI_QUEUE_PFN 8      // PFN for the currently selected queue
+#define VIRTIO_PCI_QUEUE_SIZE 12 // Queue size for the currently selected queue
+#define VIRTIO_PCI_QUEUE_SEL 14  // Queue selector
+#define VIRTIO_PCI_QUEUE_NOTIFY 16 // Queue notifier
+#define VIRTIO_PCI_STATUS 18       // Device status register
+#define VIRTIO_PCI_ISR 19          // Interrupt status register
+#define VIRTIO_PCI_CONFIG 20       // Configuration data block
+
+//
+// PCI virtio status register bits
+//
+
+#define VIRTIO_CONFIG_S_ACKNOWLEDGE 1
+#define VIRTIO_CONFIG_S_DRIVER 2
+#define VIRTIO_CONFIG_S_DRIVER_OK 4
+#define VIRTIO_CONFIG_S_FAILED 0x80
+
+//
+// Ring descriptor flags
+//
+
+#define VRING_DESC_F_NEXT 1     // Buffer continues via the next field
+#define VRING_DESC_F_WRITE 2    // Buffer is write-only (otherwise read-only)
+#define VRING_DESC_F_INDIRECT 4 // Buffer contains a list of buffer descriptors
+
+class @virtio_queue_buf {
+  U64 address;
+  U32 length;
+  U16 flags;
+  U16 next;
+};
+class @virtio_avail {
+  U16 flags;
+  U16 index;
+  U16 ring[256];
+  U16 int_index;
+};
+class @virtio_used_item {
+  U32 index;
+  U32 length;
+};
+class @virtio_used {
+  U16 flags;
+  U16 index;
+  @virtio_used_item ring[256];
+  U16 int_index;
+};
+class @virtio_queue {
+  @virtio_queue_buf buffers[256];
+  @virtio_avail available;
+  U8 padding[3578];
+  @virtio_used used;
+};
+
+class @virtio_avail_buf {
+  U32 index;
+  U64 address;
+  U32 length;
+};
+
+class @virtio_buf_info {
+  U8 *buffer;
+  U64 size;
+  U8 flags;
+
+  // If the user wants to keep same buffer as passed in this struct, use "true".
+  // otherwise, the supplied buffer will be copied in the queues' buffer
+  Bool copy;
+};
+
+"virtio ";
+
+//
+// PCI VirtIO Net
+//
+
+I64 rx_buffer_ptr = 0;
+I64 tx_buffer_ptr = 0;
+I64 rx_buffer_count = 255;
+I64 tx_buffer_count = 256;
+U64 rx_buffers = MAlloc(ETHERNET_FRAME_SIZE * rx_buffer_count);
+U64 tx_buffers = MAlloc(ETHERNET_FRAME_SIZE * tx_buffer_count);
+
+class @virtio_net {
+  U16 port;
+  U8 mac[6];
+  @virtio_queue *rq;
+  @virtio_queue *sq;
+  I64 rq_size;
+  I64 rq_index;
+  I64 sq_size;
+  I64 sq_index;
+  I64 rx_packets;
+  I64 rx_bytes;
+  I64 tx_packets;
+  I64 tx_bytes;
+};
+
+class @virtio_net_header {
+  U8 flags;
+  U8 gso_type;
+  U16 header_length;
+  U16 gso_size;
+  U16 checksum_start;
+  U16 checksum_offset;
+};
+
+@virtio_net VirtioNet;
+MemSet(&VirtioNet, 0, sizeof(@virtio_net));
+
+@virtio_net_header *def_pkt_hdr = CAlloc(sizeof(@virtio_net_header));
+
+static I64 @virtio_net_alloc_tx_packet(U8 **buffer_out, I64 length/*, I64 flags*/) {
+  // FIXME: validate length
+//  flags = flags;
+  I64 sq_idx = VirtioNet.sq->available.index % 256;
+  I64 sq_idx2 = sq_idx % 128;
+  I64 index = tx_buffer_ptr;
+  tx_buffer_ptr = (tx_buffer_ptr + 1) & (tx_buffer_count - 1);
+  *buffer_out = tx_buffers + index * ETHERNET_FRAME_SIZE;
+
+  VirtioNet.sq->buffers[sq_idx2 * 2].address = def_pkt_hdr;
+  VirtioNet.sq->buffers[sq_idx2 * 2].length = sizeof(@virtio_net_header);
+  VirtioNet.sq->buffers[sq_idx2 * 2].flags = VRING_DESC_F_NEXT;
+  VirtioNet.sq->buffers[sq_idx2 * 2].next = (sq_idx2 * 2) + 1;
+  VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].address = *buffer_out;
+  VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].length = length;
+  VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].flags = NULL;
+  VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].next = 0;
+  VirtioNet.sq->available.ring[sq_idx] = sq_idx2 * 2;
+
+  VirtioNet.sq->available.index++;
+
+  VirtioNet.tx_packets++;
+  VirtioNet.tx_bytes += length;
+
+  return index;
+}
+
+static I64 @virtio_net_finish_tx_packet(I64) {
+  OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_NOTIFY, 1);
+  return 0;
+}
+
+U8 *loopback_frame = MAlloc(ETHERNET_FRAME_SIZE);
+I64 loopback_length = 0;
+
+I64 EthernetFrameAllocate(U8 **buffer_out, U8 *src_addr, U8 *dst_addr,
+                       U16 ethertype, I64 length/*, I64 flags*/) {
+
+  U8 *frame;
+
+  // APAD_XMT doesn't seem to work in VirtualBox, so we have to pad the frame
+  // ourselves
+  if (length < 46)
+    length = 46;
+
+  I64 index;
+
+  if (!MemCompare(dst_addr, &VirtioNet.mac, 6)) {
+    frame = loopback_frame;
+    loopback_length = length;
+    index = I64_MAX;
+  } else {
+    index = @virtio_net_alloc_tx_packet(&frame, 14 + length/*, flags*/);
+    if (index < 0)
+      return index;
+  }
+
+  MemCopy(frame + 0, dst_addr, 6);
+  MemCopy(frame + 6, src_addr, 6);
+  frame[12] = (ethertype >> 8);
+  frame[13] = (ethertype & 0xff);
+
+  *buffer_out = frame + 14;
+  return index;
+}
+
+I64 EthernetFrameFinish(I64 index) {
+  if (index == I64_MAX && loopback_frame && loopback_length) {
+    NetQueuePush(loopback_frame, loopback_length);
+    loopback_length = 0;
+    return 0;
+  }
+  return @virtio_net_finish_tx_packet(index);
+}
+
+U8 *EthernetMACGet() { return &VirtioNet.mac; }
+
+I64 @virtio_net_init() {
+  I64 i, j;
+
+  // Scan for device
+  j = PCIClassFind(0x020000, 0);
+  if (j < 0) {
+    "\nVirtio-net device not found.\n";
+    return -1;
+  }
+  VirtioNet.port = PCIReadU32(j.u8[2], j.u8[1], j.u8[0], 0x10) & 0xFFFFFFFC;
+  for (i = 0; i < 6; i++) {
+    VirtioNet.mac[i] = InU8(VirtioNet.port + VIRTIO_PCI_CONFIG + i);
+  }
+
+  // Reset Device
+  OutU8(VirtioNet.port + VIRTIO_PCI_STATUS, 0);
+
+  // Found Driver
+  OutU8(VirtioNet.port + VIRTIO_PCI_STATUS,
+        InU8(VirtioNet.port + VIRTIO_PCI_STATUS) | VIRTIO_CONFIG_S_ACKNOWLEDGE |
+            VIRTIO_CONFIG_S_DRIVER);
+
+  // Set up receive queue
+  OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SEL, 0);
+  VirtioNet.rq_size = InU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SIZE); // 256
+  VirtioNet.rq = CAllocAligned(sizeof(@virtio_queue), 4096, Fs->code_heap);
+  OutU32(VirtioNet.port + VIRTIO_PCI_QUEUE_PFN, VirtioNet.rq / 4096);
+
+  // Set up send queue
+  OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SEL, 1);
+  VirtioNet.sq_size = InU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SIZE); // 256
+  VirtioNet.sq = CAllocAligned(sizeof(@virtio_queue), 4096, Fs->code_heap);
+  OutU32(VirtioNet.port + VIRTIO_PCI_QUEUE_PFN, VirtioNet.sq / 4096);
+
+  for (i = 0; i < 128; i++) {
+    VirtioNet.rq->buffers[i * 2].address = CAlloc(sizeof(@virtio_net_header));
+    VirtioNet.rq->buffers[i * 2].length = sizeof(@virtio_net_header);
+    VirtioNet.rq->buffers[i * 2].flags = VRING_DESC_F_NEXT | VRING_DESC_F_WRITE;
+    VirtioNet.rq->buffers[i * 2].next = (i * 2) + 1;
+    VirtioNet.rq->buffers[(i * 2) + 1].address = CAlloc(ETHERNET_FRAME_SIZE);
+    VirtioNet.rq->buffers[(i * 2) + 1].length = ETHERNET_FRAME_SIZE;
+    VirtioNet.rq->buffers[(i * 2) + 1].flags = VRING_DESC_F_WRITE;
+    VirtioNet.rq->buffers[(i * 2) + 1].next = 0;
+    VirtioNet.rq->available.ring[i] = i * 2;
+    VirtioNet.rq->available.ring[i + 128] = i * 2;
+  }
+  VirtioNet.rq->available.index = 1;
+
+  // Init OK
+  OutU8(VirtioNet.port + VIRTIO_PCI_STATUS,
+        InU8(VirtioNet.port + VIRTIO_PCI_STATUS) | VIRTIO_CONFIG_S_DRIVER_OK);
+  OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_NOTIFY, 0);
+  "\x1b[33mVirtio-net device detected, MAC address "
+  "%02x:%02x:%02x:%02x:%02x:%02x\x1b[0m\n",
+      VirtioNet.mac[0], VirtioNet.mac[1], VirtioNet.mac[2], VirtioNet.mac[3],
+      VirtioNet.mac[4], VirtioNet.mac[5];
+}
+
+"virtio-net ";
+@virtio_net_init;
+
+/*
+U0 @virtio_net_handle_net_fifo_entry(CNetFifoEntry *e) {
+  CEthFrame l2_frame;
+
+  if (EthernetFrameParse(&l2_frame, e->frame, e->length) < 0)
+    return;
+
+  CL3Protocol *l3 = l3_protocols;
+
+  while (l3) {
+    if (l3->ethertype == l2_frame.ethertype) {
+      l3->handler(&l2_frame);
+      break;
+    }
+    l3 = l3->next;
+  }
+}
+*/
+U0 @virtio_net_handler_task() {
+  I64 idx_used, idx_rec;
+  I64 i, j;
+  @virtio_used_item *item;
+  U8 *buffer;
+  I64 length;
+  while (1) {
+    idx_rec = VirtioNet.rq_index;
+    idx_used = VirtioNet.rq->used.index;
+
+    if (idx_used < idx_rec) {
+      idx_used += 0x10000;
+    }
+
+    if (idx_rec != idx_used && idx_used) {
+
+      j = 0;
+      for (i = idx_rec; i < idx_used; i++) {
+        item = VirtioNet.rq->used.ring;
+        buffer = VirtioNet.rq->buffers[item[i % 256].index + 1];
+        length = item[i % 256].length;
+        NetQueuePush(buffer, length - 10);
+        j++;
+        VirtioNet.rx_packets++;
+        VirtioNet.rx_bytes += length - 10;
+      }
+      VirtioNet.rq_index = idx_used % 0x10000;
+      VirtioNet.rq->available.index += j;
+      OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_NOTIFY, 0);
+    }
+    CNetQueueEntry *e = NetQueuePull;
+    if (e) {
+//      @virtio_net_handle_net_fifo_entry(e);
+    }
+    Sleep(30);
+  }
+}
+
+Spawn(&@virtio_net_handler_task,, "Virtio-net");
+ diff --git a/docs/Home/Net/Drivers/index.html b/docs/Home/Net/Drivers/index.html index 16cb945d..ac4aa004 100755 --- a/docs/Home/Net/Drivers/index.html +++ b/docs/Home/Net/Drivers/index.html @@ -31,8 +31,9 @@ body {background-color:#fef1f0;} ../ E1000.CC PCNet.CC -Run.CC - +Run.CC +VirtIONet.CC + diff --git a/docs/Home/Net/Tests/HostTest0.CC.html b/docs/Home/Net/Tests/HostTest0.CC.html index 43d48e2a..b004dba3 100755 --- a/docs/Home/Net/Tests/HostTest0.CC.html +++ b/docs/Home/Net/Tests/HostTest0.CC.html @@ -34,7 +34,15 @@ body {background-color:#fef1f0;} Host("bitchute.com"); "Host(\"github.com\");\n"; Host("github.com"); - -DNSRep; -ARPRep; +"Host(\"soundcloud.com\");\n"; +Host("soundcloud.com"); +"Host(\"wiki.osdev.org\");\n"; +Host("wiki.osdev.org"); +"Host(\"archive.org\");\n"; +Host("archive.org"); +"Host(\"git.checksum.fail\");\n"; +Host("git.checksum.fail"); + +DNSRep; +ARPRep; diff --git a/docs/index.html b/docs/index.html index ab08377d..95d21197 100755 --- a/docs/index.html +++ b/docs/index.html @@ -51,10 +51,10 @@ body {background-color:#fef1f0;} /Compiler/Compiler 007FFAB230 0001 00000403D8 Module Public /Kernel/Kernel 0000007C00 0001 000002EFE0 Module Public -AAA 01BC000900 0000 OpCode -AAD 01BC0008A8 0000 OpCode -AAM 01BC000850 0000 OpCode -AAS 01BC0007F8 0000 OpCode +AAA 01CEE00900 0000 OpCode +AAD 01CEE008A8 0000 OpCode +AAM 01CEE00850 0000 OpCode +AAS 01CEE007F8 0000 OpCode AAT_ADD_U16 2 0005 0000000008 DefineStr AAT_ADD_U32 4 0009 0000000008 DefineStr AAT_ADD_U64 6 0009 0000000008 DefineStr @@ -112,8 +112,8 @@ body {background-color:#fef1f0;} ACf_INIT_IN_PROGRESS 0 000B 0000000008 DefineStr ACf_LAST_WAS_KEYMAP 1 000B 0000000008 DefineStr ACos 007FEDC1A8 0001 0000000070 Funct Public -ADC 01BC003C08 0054 OpCode -ADD 01BC003A60 00EE OpCode +ADC 01CEE03C08 0054 OpCode +ADD 01CEE03A60 00EE OpCode AH 0000000104 0022 Reg AHCIAtaBlksRW 0000023B88 0009 00000002CE Funct AHCIAtaBlksRead 0000023E58 000E 00000000AB Funct @@ -235,7 +235,7 @@ body {background-color:#fef1f0;} AKW_USE64 84 0002 0000000008 DefineStr AL 0000000100 0067 Reg ALIGN 0000000040 0009 AsmKeyWord -AND 01BC0038B8 0032 OpCode +AND 01CEE038B8 0032 OpCode AOTGlobalsResolve 007FFB5A40 0003 ExportSysSym Imm AOTLocalsResolve 007FFB5910 0005 ExportSysSym Imm AOTStoreCodeU32 007FFB5180 0003 ExportSysSym Imm @@ -299,7 +299,7 @@ body {background-color:#fef1f0;} ARGT_XMM128 54 0002 0000000008 DefineStr ARGT_XMM32 52 0002 0000000008 DefineStr ARGT_XMM64 53 0002 0000000008 DefineStr -ARPL 01BC000788 0000 OpCode +ARPL 01CEE00788 0000 OpCode ARf_CSPRITE_INS_CLIP 1 0004 0000000008 DefineStr ARf_CSPRITE_PTS_RECTANGLES 5 0004 0000000008 DefineStr ARf_FLOODFILL 0 0004 0000000008 DefineStr @@ -480,21 +480,21 @@ body {background-color:#fef1f0;} BOOT_SRC_RAM 2 000D 0000000008 DefineStr BOOT_SRC_ROM 1 0005 0000000008 DefineStr BOOT_STACK_SIZE BLK_SIZE 0025 0000000010 DefineStr -BOUND 01BC000710 0000 OpCode +BOUND 01CEE00710 0000 OpCode BP 0000000205 0001 Reg -BPT 01BBFFF748 0000 OpCode +BPT 01CEDFF748 0000 OpCode BPlf_LOCKED 0 0008 0000000008 DefineStr BROWN 6 000F 0000000008 DefineStr -BSF 01BC000698 0000 OpCode -BSR 01BC000620 0000 OpCode -BSWAP 01BC0005B8 0002 OpCode +BSF 01CEE00698 0000 OpCode +BSR 01CEE00620 0000 OpCode +BSWAP 01CEE005B8 0002 OpCode BSpline2 007FFA9C28 0007 000000073F Funct Public BSpline3 007FED2228 0007 00000009F2 Funct Public -BT 01BC0004E0 0053 OpCode -BTC 01BC000408 0000 OpCode +BT 01CEE004E0 0053 OpCode +BTC 01CEE00408 0000 OpCode BTF_DONT_FREE 1 0005 0000000008 DefineStr -BTR 01BC000330 0010 OpCode -BTS 01BC000258 0012 OpCode +BTR 01CEE00330 0010 OpCode +BTS 01CEE00258 0012 OpCode BTTN_BORDER 2 000D 0000000008 DefineStr BX 0000000203 0045 Reg Bcd2Binary 0000011A32 0004 ExportSysSym Imm @@ -558,51 +558,51 @@ body {background-color:#fef1f0;} C32_EFLAGS 000001ECB5 0007 ExportSysSym Imm C32_ESI 000001ECAD 0007 ExportSysSym Imm C32_RSP 000001ECB9 0004 ExportSysSym Imm -C:/Doc/AutoComplete.DD 01BBEE5B30 0000 HelpFile Public -C:/Doc/Bit.DD 01BBEF9078 0001 HelpFile Public -C:/Doc/Boot.DD 01BBEE5A18 0000 HelpFile Public -C:/Doc/Ctrls.DD 01BB477130 0000 HelpFile Public -C:/Doc/D3.DD 01BBEECED0 0001 HelpFile Public -C:/Doc/Date.DD 01BBEA60D0 0000 HelpFile Public -C:/Doc/DebugFunSeg.DD 01BBECEB20 0000 HelpFile Public -C:/Doc/Define.DD 01BBECCC08 0000 HelpFile Public -C:/Doc/Directives.DD 01BBEA2500 0000 HelpFile Public -C:/Doc/DolDoc.DD 01BB4D2C28 0000 HelpFile Public -C:/Doc/FileLowLevel.DD 01BBEC60A8 0000 HelpFile Public -C:/Doc/Frame.DD 01BBEBCFD8 0000 HelpFile Public -C:/Doc/GRFiles.DD 01BBE28130 0000 HelpFile Public -C:/Doc/Hash.DD 01BBEC0070 0000 HelpFile Public -C:/Doc/HeapDebug.DD 01BB0F30D8 0000 HelpFile Public -C:/Doc/HelpSystem.DD 01BB215A20 0000 HelpFile Public -C:/Doc/InFile.DD 01BB29D4C0 0000 HelpFile Public -C:/Doc/Install.DD 01BBEBAD40 0000 HelpFile Public -C:/Doc/Job.DD 01BBEB5BD8 0000 HelpFile Public -C:/Doc/KeyDev.DD 01BBEB59E0 0000 HelpFile Public -C:/Doc/Lex.DD 01BBEA1A30 0000 HelpFile Public -C:/Doc/Menus.DD 01BB4AAEA0 0000 HelpFile Public -C:/Doc/Messages.DD 01BBEAF290 0000 HelpFile Public -C:/Doc/Mouse.DD 01BBEADE50 0000 HelpFile Public -C:/Doc/MultiCore.DD 01BBEE8758 0001 HelpFile Public -C:/Doc/ODE.DD 01BBE61CC0 0000 HelpFile Public -C:/Doc/Once.DD 01BB2B11A0 0000 HelpFile Public -C:/Doc/PIT.DD 01BBFBB198 0001 HelpFile Public -C:/Doc/Pags.DD 01BBF3FD00 0001 HelpFile Public -C:/Doc/Profiler.DD 01BB21F080 0000 HelpFile Public -C:/Doc/Queue.DD 01BBEF2490 0001 HelpFile Public -C:/Doc/Sound.DD 01BBEA9CA0 0000 HelpFile Public -C:/Doc/Sprite.DD 01BB542718 0000 HelpFile Public -C:/Doc/StdOutTask.DD 01BBECB418 0000 HelpFile Public -C:/Doc/Streams.DD 01BBEA93B8 0000 HelpFile Public -C:/Doc/Streams.DD 01BBEA94F8 0000 HelpFile Public -C:/Doc/TextBase.DD 01BBE27818 0000 HelpFile Public -C:/Doc/TimeCycles.DD 01BBEE5F78 0001 HelpFile Public -C:/Doc/TimeDate.DD 01BBEA6C98 0000 HelpFile Public -C:/Doc/TimeJiffy.DD 01BBEA5740 0000 HelpFile Public -C:/Doc/Transform.DD 01BBE1A320 0000 HelpFile Public -C:/Doc/Windows.DD 01BB4A6190 0000 HelpFile Public +C:/Doc/AutoComplete.DD 01CECE5B30 0000 HelpFile Public +C:/Doc/Bit.DD 01CECF9078 0001 HelpFile Public +C:/Doc/Boot.DD 01CECE5A18 0000 HelpFile Public +C:/Doc/Ctrls.DD 01CE277130 0000 HelpFile Public +C:/Doc/D3.DD 01CECECED0 0001 HelpFile Public +C:/Doc/Date.DD 01CECA60D0 0000 HelpFile Public +C:/Doc/DebugFunSeg.DD 01CECCEB20 0000 HelpFile Public +C:/Doc/Define.DD 01CECCCC08 0000 HelpFile Public +C:/Doc/Directives.DD 01CECA2500 0000 HelpFile Public +C:/Doc/DolDoc.DD 01CE2D2C28 0000 HelpFile Public +C:/Doc/FileLowLevel.DD 01CECC60A8 0000 HelpFile Public +C:/Doc/Frame.DD 01CECBCFD8 0000 HelpFile Public +C:/Doc/GRFiles.DD 01CEC28130 0000 HelpFile Public +C:/Doc/Hash.DD 01CECC0070 0000 HelpFile Public +C:/Doc/HeapDebug.DD 01CDEF30D8 0000 HelpFile Public +C:/Doc/HelpSystem.DD 01CE015A20 0000 HelpFile Public +C:/Doc/InFile.DD 01CE09D4C0 0000 HelpFile Public +C:/Doc/Install.DD 01CECBAD40 0000 HelpFile Public +C:/Doc/Job.DD 01CECB5BD8 0000 HelpFile Public +C:/Doc/KeyDev.DD 01CECB59E0 0000 HelpFile Public +C:/Doc/Lex.DD 01CECA1A30 0000 HelpFile Public +C:/Doc/Menus.DD 01CE2AAEA0 0000 HelpFile Public +C:/Doc/Messages.DD 01CECAF290 0000 HelpFile Public +C:/Doc/Mouse.DD 01CECADE50 0000 HelpFile Public +C:/Doc/MultiCore.DD 01CECE8758 0001 HelpFile Public +C:/Doc/ODE.DD 01CEC61CC0 0000 HelpFile Public +C:/Doc/Once.DD 01CE0B11A0 0000 HelpFile Public +C:/Doc/PIT.DD 01CEDBB198 0001 HelpFile Public +C:/Doc/Pags.DD 01CED3FD00 0001 HelpFile Public +C:/Doc/Profiler.DD 01CE01F080 0000 HelpFile Public +C:/Doc/Queue.DD 01CECF2490 0001 HelpFile Public +C:/Doc/Sound.DD 01CECA9CA0 0000 HelpFile Public +C:/Doc/Sprite.DD 01CE342718 0000 HelpFile Public +C:/Doc/StdOutTask.DD 01CECCB418 0000 HelpFile Public +C:/Doc/Streams.DD 01CECA93B8 0000 HelpFile Public +C:/Doc/Streams.DD 01CECA94F8 0000 HelpFile Public +C:/Doc/TextBase.DD 01CEC27818 0000 HelpFile Public +C:/Doc/TimeCycles.DD 01CECE5F78 0001 HelpFile Public +C:/Doc/TimeDate.DD 01CECA6C98 0000 HelpFile Public +C:/Doc/TimeJiffy.DD 01CECA5740 0000 HelpFile Public +C:/Doc/Transform.DD 01CEC1A320 0000 HelpFile Public +C:/Doc/Windows.DD 01CE2A6190 0000 HelpFile Public CAHCIHba 007FF92980 0006 0000001100 Class CAHCIPort 007FF92CC0 0021 0000000080 Class -CALL 01BC001D20 0069 OpCode +CALL 01CEE01D20 0069 OpCode CAOT 007FFEDA18 0017 0000000068 Class CAOTAbsAddr 007FF96D80 0020 0000000018 Class CAOTBinBlk 007FF98540 0010 0000010008 Class @@ -633,7 +633,7 @@ body {background-color:#fef1f0;} CAutoCompleteGlobals 007FF99F00 0005 0000000128 Class Public CBGR24 007FF8C950 0032 0000000004 Class Public CBGR48 007FF8C6C0 0002 0000000008 Class Public -CBW 01BC0001A0 0000 OpCode +CBW 01CEE001A0 0000 OpCode CBinFile 007FFA0FD0 0039 0000000020 Class CBlkDev 007FF8EB50 0087 0000000094 Class Public CBlkDevGlobals 007FF8E060 0005 0000000190 Class Public @@ -710,8 +710,8 @@ body {background-color:#fef1f0;} CDC 007FFA9980 01BF 0000000158 Class Public CDIR_FILENAME_LEN 38 000C 0000000008 DefineStr CDIR_SIZE (sizeof(CD 0023 0000000030 DefineStr -CDQ 01BC000040 0000 OpCode -CDQE 01BC0000F0 0000 OpCode +CDQ 01CEE00040 0000 OpCode +CDQE 01CEE000F0 0000 OpCode CDate 007FFA3460 0050 0000000008 Class Public CDate2Dos 000002A269 0003 ExportSysSym Imm CDateStruct 007FFA31D0 001D 000000000C Class Public @@ -783,11 +783,11 @@ body {background-color:#fef1f0;} CGDT 007FFA1BC0 001D 0000001080 Class CGDTEntry 007FFA1E50 0004 0000000010 Class CGodGlobals 007FE30738 0003 0000000028 Class Public -CGrGlobals 007FEC7020 0003 000000290B Class Public +CGrGlobals 007FEC6A20 0003 000000290B Class Public CGrSym 007FF86550 000A 0000000028 Class CGridGlobals 007FF8BBD0 000B 0000000050 Class Public CH 0000000105 0001 Reg -CHPXCHG8B 01BBFFFBF0 0000 OpCode +CHPXCHG8B 01CEDFFBF0 0000 OpCode CH_BACKSPACE 0x08 0014 0000000008 DefineStr CH_CTRLA 0x01 000E 0000000008 DefineStr CH_CTRLB 0x02 000E 0000000008 DefineStr @@ -853,16 +853,16 @@ body {background-color:#fef1f0;} CKeyDevEntry 007FF85A28 0011 0000000030 Class CKeyDevGlobals 007FF850E8 0005 00000000F0 Class CL 0000000101 000F Reg -CLC 01BBFFFF90 0000 OpCode -CLD 01BBFFFF38 0016 OpCode -CLFLUSH 01BBFFA040 0000 OpCode +CLC 01CEDFFF90 0000 OpCode +CLD 01CEDFFF38 0016 OpCode +CLFLUSH 01CEDFA040 0000 OpCode CLFlush 0000000064 0002 Funct Public -CLI 01BBFFFEE0 00A4 OpCode -CLTS 01BBFFFE88 0000 OpCode +CLI 01CEDFFEE0 00A4 OpCode +CLTS 01CEDFFE88 0000 OpCode CLexFile 007FF96340 001D 0000000050 Class CLexHashTableContext 007FF95E20 0013 0000000048 Class CMBRPart 007FF90AC0 0004 0000000010 Class -CMC 01BBFFFE30 0000 OpCode +CMC 01CEDFFE30 0000 OpCode CMF_DEFINED 0x02 0007 0000000008 DefineStr CMF_I16_JMP_TABLE 0x10 0006 0000000008 DefineStr CMF_I8_JMP_TABLE 0x04 0006 0000000008 DefineStr @@ -885,47 +885,47 @@ body {background-color:#fef1f0;} CMOSRegWrite 00000119EA 000A 000000001E Funct Public CMOS_DATA 0x71 0004 0000000008 DefineStr CMOS_SEL 0x70 0004 0000000008 DefineStr -CMOVA 01BC0024C0 0001 OpCode -CMOVAE 01BC0028F8 0000 OpCode -CMOVB 01BC002A60 0001 OpCode -CMOVBE 01BC0025B0 0000 OpCode -CMOVC 01BC002A00 0000 OpCode -CMOVE 01BC002790 0000 OpCode -CMOVG 01BC001E30 0001 OpCode -CMOVGE 01BC002010 0000 OpCode -CMOVL 01BC002100 0001 OpCode -CMOVLE 01BC001F20 0000 OpCode -CMOVNA 01BC002550 0000 OpCode -CMOVNAE 01BC002988 0000 OpCode -CMOVNB 01BC002898 0000 OpCode -CMOVNBE 01BC002460 0000 OpCode -CMOVNC 01BC002820 0000 OpCode -CMOVNE 01BC0026A0 0000 OpCode -CMOVNG 01BC001EC0 0000 OpCode -CMOVNGE 01BC0020A0 0000 OpCode -CMOVNL 01BC001FB0 0000 OpCode -CMOVNLE 01BC001DD0 0000 OpCode -CMOVNO 01BC002AD8 0000 OpCode -CMOVNP 01BC0021F0 0000 OpCode -CMOVNS 01BC002358 0000 OpCode -CMOVNZ 01BC002640 0000 OpCode -CMOVO 01BC002B50 0000 OpCode -CMOVP 01BC0022E0 0000 OpCode -CMOVPE 01BC002280 0000 OpCode -CMOVPO 01BC002190 0000 OpCode -CMOVS 01BC0023D0 0000 OpCode -CMOVZ 01BC002730 0000 OpCode -CMP 01BC003710 0074 OpCode +CMOVA 01CEE024C0 0001 OpCode +CMOVAE 01CEE028F8 0000 OpCode +CMOVB 01CEE02A60 0001 OpCode +CMOVBE 01CEE025B0 0000 OpCode +CMOVC 01CEE02A00 0000 OpCode +CMOVE 01CEE02790 0000 OpCode +CMOVG 01CEE01E30 0001 OpCode +CMOVGE 01CEE02010 0000 OpCode +CMOVL 01CEE02100 0001 OpCode +CMOVLE 01CEE01F20 0000 OpCode +CMOVNA 01CEE02550 0000 OpCode +CMOVNAE 01CEE02988 0000 OpCode +CMOVNB 01CEE02898 0000 OpCode +CMOVNBE 01CEE02460 0000 OpCode +CMOVNC 01CEE02820 0000 OpCode +CMOVNE 01CEE026A0 0000 OpCode +CMOVNG 01CEE01EC0 0000 OpCode +CMOVNGE 01CEE020A0 0000 OpCode +CMOVNL 01CEE01FB0 0000 OpCode +CMOVNLE 01CEE01DD0 0000 OpCode +CMOVNO 01CEE02AD8 0000 OpCode +CMOVNP 01CEE021F0 0000 OpCode +CMOVNS 01CEE02358 0000 OpCode +CMOVNZ 01CEE02640 0000 OpCode +CMOVO 01CEE02B50 0000 OpCode +CMOVP 01CEE022E0 0000 OpCode +CMOVPE 01CEE02280 0000 OpCode +CMOVPO 01CEE02190 0000 OpCode +CMOVS 01CEE023D0 0000 OpCode +CMOVZ 01CEE02730 0000 OpCode +CMP 01CEE03710 0074 OpCode CMPCrash 007FF840C0 0005 0000000028 Class CMPF_ASM_BLK 1 0007 0000000008 DefineStr CMPF_LEX_FIRST 4 0003 0000000008 DefineStr CMPF_ONE_ASM_INS 2 0008 0000000008 DefineStr CMPF_PRS_SEMICOLON 8 0008 0000000008 DefineStr -CMPSB 01BBFFFDD8 0000 OpCode -CMPSD 01BBFFFD28 0000 OpCode -CMPSQ 01BBFFFCD0 0000 OpCode -CMPSW 01BBFFFD80 0000 OpCode -CMPXCHG 01BBFFFC30 0000 OpCode +CMPSB 01CEDFFDD8 0000 OpCode +CMPSD 01CEDFFD28 0000 OpCode +CMPSQ 01CEDFFCD0 0000 OpCode +CMPSW 01CEDFFD80 0000 OpCode +CMPXCHG 01CEDFFC30 0000 OpCode CMP_TEMPLATES 007FFAB250 0003 ExportSysSym Imm CMP_TEMPLATES_DONT_POP 007FFAB3CF 0003 ExportSysSym Imm CMP_TEMPLATES_DONT_PUSH 007FFAB497 0003 ExportSysSym Imm @@ -1005,7 +1005,7 @@ body {background-color:#fef1f0;} COptReg 007FF833D0 0009 0000000010 Class COrder2D3 007FFA2F40 000A 0000000030 Class Public CPCIDev 007FF92F50 0019 0000000054 Class -CPUID 01BBFF9FA8 0008 OpCode +CPUID 01CEDF9FA8 0008 OpCode CPUId 000000B025 0006 Funct Public CPURep 007FDB5828 0001 00000004BE Funct Public CPUStructInit 000001F90A 0005 ExportSysSym Imm @@ -1021,7 +1021,7 @@ body {background-color:#fef1f0;} CPortCmdTable 007FF91CB0 0017 0000000100 Class CPrdtEntry 007FF921D0 0005 0000000010 Class CProgress 007FF838F0 0005 0000000050 Class -CQO 01BBFFFFE8 0000 OpCode +CQO 01CEDFFFE8 0000 OpCode CQueue 007FFA5140 0023 0000000010 Class Public CQueueD3I32 007FFA4C20 000C 000000001C Class Public CQueueMeshTri 007FECC0F8 0007 0000000020 Class @@ -1116,8 +1116,8 @@ body {background-color:#fef1f0;} CVBEMode 007FFA0820 000E 0000000100 Class CVBEModeShort 007FFA0590 000F 000000000A Class CViewAngles 007FF8B6B0 001D 0000000048 Class Public -CWD 01BC000098 0000 OpCode -CWDE 01BC000148 0000 OpCode +CWD 01CEE00098 0000 OpCode +CWDE 01CEE00148 0000 OpCode CWallPaperGlobals 007FDCBC28 0003 00000004A0 Class CWho 007FDD4B98 0017 0000000010 Class CWinMgrGlobals 007FF9A190 0006 000000003B Class Public @@ -1251,7 +1251,7 @@ body {background-color:#fef1f0;} D3Dot 000000A814 0002 Funct Public D3Equ 000000A924 0002 Funct Public D3I32Dist 007FEAF9A8 000F 000000005A Funct Public -D3I32DistSqr 007FEC6018 0001 0000000048 Funct Public +D3I32DistSqr 007FEC5A18 0001 0000000048 Funct Public D3I32Norm 007FEAF2A8 0003 0000000040 Funct Public D3I32NormSqr 007FEAEE78 0001 000000002E Funct Public D3Mul 000000A897 0004 Funct Public @@ -1262,12 +1262,12 @@ body {background-color:#fef1f0;} D3SubEqu 000000A96F 0006 Funct Public D3Unit 000000A9DD 0002 Funct Public D3Zero 000000A8E5 0008 Funct Public -DAA 01BBFFFBB0 0000 OpCode -DAS 01BBFFFB58 0000 OpCode +DAA 01CEDFFBB0 0000 OpCode +DAS 01CEDFFB58 0000 OpCode DBlk 007FE56EC0 0001 00000000CC Funct Public DC2Sprite 007FEB3628 0007 0000000080 Funct Public DCAlias 007FEBA598 001C 00000000AC Funct Public -DCBlotColor4 007FEC08B0 0003 Funct +DCBlotColor4 007FEC02B0 0003 Funct DCBlotColor8 007FEAF228 0003 0000000070 Funct DCClear 007FF8A428 0001 0000000022 Funct Public DCClipLine 007FEAA880 0007 0000000102 Funct @@ -1317,21 +1317,21 @@ body {background-color:#fef1f0;} DD_JIFFY_HZ 1000Hz 0002 0000000008 DefineStr DD_KERNEL 00007C00 0000 0000000010 DefineStr DD_KERNEL_END 00036BDF 0000 0000000010 DefineStr -DD_MAPPED_SPACE_END 02C49FFFFF 0000 0000000010 DefineStr +DD_MAPPED_SPACE_END 02D77FFFFF 0000 0000000010 DefineStr DD_MEM_HEAP_BASE 00110000 0000 0000000010 DefineStr DD_MEM_HEAP_LIMIT 7FFFFFFF 0000 0000000010 DefineStr DD_MEM_MIN_MEG 256Meg 0001 0000000008 DefineStr DD_MP_VECT 00097000 0000 0000000010 DefineStr DD_MP_VECT_END 00097030 0000 0000000010 DefineStr DD_OS_NAME_VERSION ZealOS V1. 01D5 0000000010 DefineStr -DD_PHYSICAL_SPACE_END 01C49FFFFF 0000 0000000010 DefineStr +DD_PHYSICAL_SPACE_END 01D77FFFFF 0000 0000000010 DefineStr DD_SYS_FIXED_AREA_BASE 00100000 0000 0000000010 DefineStr DD_SYS_FIXED_AREA_END 00101FFF 0000 0000000010 DefineStr DD_TEMPLEOS_AGE 15.0 0000 0000000008 DefineStr -DD_UNCACHED_ALIAS 01C4A00000 0000 0000000010 DefineStr +DD_UNCACHED_ALIAS 01D7800000 0000 0000000010 DefineStr DD_ZEALOS_AGE 2.1 0000 0000000008 DefineStr DD_ZEALOS_LOC 94,720 0000 0000000008 DefineStr -DEC 01BC000D78 0017 OpCode +DEC 01CEE00D78 0017 OpCode DEF2_NOT_INITIALIZED 2 0003 0000000008 DefineStr DEF2_PROCESSED 1 0009 0000000008 DefineStr DEFAULT_ADDR_LINK_BIN_SIZE 64 0007 0000000008 DefineStr @@ -1359,7 +1359,7 @@ body {background-color:#fef1f0;} DISPLAYf_SHOW 0 0030 0000000008 DefineStr DISPLAYf_SILENT 2 0008 0000000008 DefineStr DISPLAYf_WIN_ON_TOP 4 0009 0000000008 DefineStr -DIV 01BC0009C8 0003 OpCode +DIV 01CEE009C8 0003 OpCode DKGRAY 8 0033 0000000008 DefineStr DL 0000000102 002C Reg DOCEF_AUX_STR 4 002D 0000000008 DefineStr @@ -1927,7 +1927,7 @@ body {background-color:#fef1f0;} EF_CTRL_SLIDER 3 0003 0000000008 DefineStr EF_REINDENT 0 0005 0000000008 DefineStr EF_RENUM_ASM 2 0005 0000000008 DefineStr -ENTER 01BBFFFAE8 0000 OpCode +ENTER 01CEDFFAE8 0000 OpCode ERRCON 1.89e-4 0003 0000000008 DefineStr ES 0000000500 004E Reg ESI 0000000306 001E Reg @@ -2033,16 +2033,16 @@ body {background-color:#fef1f0;} ExtDefault 00000217E2 0034 0000000087 Funct Public ExtendedASCII 007FE3B7C8 0003 00000001A1 Funct F 007FDA41A8 0001 0000000025 Funct Public -F2XM1 01BBFFB320 0003 OpCode +F2XM1 01CEDFB320 0003 OpCode F64 007FFEE020 038D 0000000008 IntType F64 000000004C 0000 AsmKeyWord F64Get 007FE17028 0001 00000000F0 Funct Public F64_MAX (0x7FEFFFF 000C 0000000020 DefineStr F64_MIN (0xFFEFFFF 0006 0000000020 DefineStr F64i 007FFEE2B0 0000 0000000008 IntType -FABS 01BBFFB2C8 0005 OpCode -FADD 01BBFFAC18 0008 OpCode -FADDP 01BBFFACA0 0011 OpCode +FABS 01CEDFB2C8 0005 OpCode +FADD 01CEDFAC18 0008 OpCode +FADDP 01CEDFACA0 0011 OpCode FALSE 0 06A9 0000000008 DefineStr FAT32AllocClus 000002B746 0004 ExportSysSym Imm FAT32AllocContiguousClus 000002B9DE 0004 ExportSysSym Imm @@ -2070,49 +2070,49 @@ body {background-color:#fef1f0;} FATNameXSum 000002A9E1 0007 ExportSysSym Imm FBlkRead 000002ED76 000D 00000001F9 Funct Public FBlkWrite 000002EF76 001C 00000002EA Funct Public -FCHS 01BBFFB270 0001 OpCode -FCLEX 01BBFFA968 0001 OpCode -FCOMI 01BBFFA9A8 0000 OpCode -FCOMIP 01BBFFAA00 000C OpCode -FCOS 01BBFFB178 0004 OpCode +FCHS 01CEDFB270 0001 OpCode +FCLEX 01CEDFA968 0001 OpCode +FCOMI 01CEDFA9A8 0000 OpCode +FCOMIP 01CEDFAA00 000C OpCode +FCOS 01CEDFB178 0004 OpCode FClose 000002EB7E 0016 00000000CF Funct Public FD 007FDA3880 0001 0000000024 Funct Public -FDECSTP 01BBFFA860 0000 OpCode -FDIV 01BBFFAE30 0000 OpCode -FDIVP 01BBFFAEB8 0000 OpCode -FDIVR 01BBFFAD50 0009 OpCode -FDIVRP 01BBFFADD8 0000 OpCode +FDECSTP 01CEDFA860 0000 OpCode +FDIV 01CEDFAE30 0000 OpCode +FDIVP 01CEDFAEB8 0000 OpCode +FDIVR 01CEDFAD50 0009 OpCode +FDIVRP 01CEDFADD8 0000 OpCode FF 007FE64C28 0001 00000000CA Funct Public FFB_NEXT_BLK I64_MAX 000E 0000000008 DefineStr -FFREE 01BBFFA798 0016 OpCode +FFREE 01CEDFA798 0016 OpCode FF_BUF_DIRTY 4 0009 0000000008 DefineStr FF_CONTIGUOUS 16 0005 0000000008 DefineStr FF_NEEDS_WRITE 8 0005 0000000008 DefineStr FF_NEW_FILE 2 0006 0000000008 DefineStr FF_USE_OLD_DATETIME 32 0004 0000000008 DefineStr FF_WRITE 1 0004 0000000008 DefineStr -FILD 01BBFFB6F8 0000 OpCode +FILD 01CEDFB6F8 0000 OpCode FILEMASK_AOT \"*.CC*;*. 0003 0000000018 DefineStr FILEMASK_DD FILEMASK_S 000D 0000000018 DefineStr FILEMASK_GR \"*.GR*\" 0005 0000000008 DefineStr FILEMASK_JIT \"*.CC*;*. 000D 0000000010 DefineStr FILEMASK_SRC \"*.CC*;*. 000D 0000000020 DefineStr FILEMASK_TXT FILEMASK_D 000F 0000000018 DefineStr -FIMUL 01BBFFAF10 0000 OpCode -FINCSTP 01BBFFA808 0016 OpCode -FINIT 01BBFFA2E0 0000 OpCode -FISTP 01BBFFB6A0 0000 OpCode -FISTTP 01BBFFB648 0001 OpCode +FIMUL 01CEDFAF10 0000 OpCode +FINCSTP 01CEDFA808 0016 OpCode +FINIT 01CEDFA2E0 0000 OpCode +FISTP 01CEDFB6A0 0000 OpCode +FISTTP 01CEDFB648 0001 OpCode FISt_H2D 0x27 000C 0000000008 DefineStr -FLD 01BBFFB5D0 006C OpCode -FLD1 01BBFFA650 0010 OpCode -FLDCW 01BBFFA1C0 000F OpCode -FLDL2E 01BBFFA5A0 0001 OpCode -FLDL2T 01BBFFA5F8 0001 OpCode -FLDLG2 01BBFFA4F0 0001 OpCode -FLDLN2 01BBFFA498 0001 OpCode -FLDPI 01BBFFA548 0000 OpCode -FLDZ 01BBFFA440 0000 OpCode +FLD 01CEDFB5D0 006C OpCode +FLD1 01CEDFA650 0010 OpCode +FLDCW 01CEDFA1C0 000F OpCode +FLDL2E 01CEDFA5A0 0001 OpCode +FLDL2T 01CEDFA5F8 0001 OpCode +FLDLG2 01CEDFA4F0 0001 OpCode +FLDLN2 01CEDFA498 0001 OpCode +FLDPI 01CEDFA548 0000 OpCode +FLDZ 01CEDFA440 0000 OpCode FMBurnISO 007FF0EC28 0003 0000000067 Funct FMChangeDisk 007FF08628 0003 0000000063 Funct FMCollectUncollapsedList 007FE480B0 0003 000000006F Funct @@ -2142,33 +2142,33 @@ body {background-color:#fef1f0;} FMRebuildDocDrive 007FE47010 0007 0000000149 Funct FMRename 007FE467E8 0003 0000000164 Funct FMRightClick 007FE45DF8 0005 0000000128 Funct -FMUL 01BBFFAF78 0023 OpCode -FMULP 01BBFFB000 0002 OpCode +FMUL 01CEDFAF78 0023 OpCode +FMULP 01CEDFB000 0002 OpCode FMUnmount 007FE44B38 0003 0000000077 Funct FM_NORMAL 0 0007 0000000008 DefineStr FM_PICK_DIR 2 0005 0000000008 DefineStr FM_PICK_FILE 1 0005 0000000008 DefineStr -FNCLEX 01BBFFA910 0000 OpCode +FNCLEX 01CEDFA910 0000 OpCode FND_ABORT_FILE 4 0005 0000000008 DefineStr FND_ALL 2 0009 0000000008 DefineStr FND_ED 3 0003 0000000008 DefineStr FND_REPLACE 0 0007 0000000008 DefineStr FND_SKIP 1 0003 0000000008 DefineStr FND_SKIP_FILE 5 0005 0000000008 DefineStr -FNINIT 01BBFFA288 0002 OpCode +FNINIT 01CEDFA288 0002 OpCode FOFlatten 007FE52860 0003 000000006B Funct FONT_HEIGHT 8 00AB 0000000008 DefineStr FONT_WIDTH 8 00D1 0000000008 DefineStr FOpen 000002E8EE 0018 000000028E Funct Public -FPATAN 01BBFFB0C8 0005 OpCode -FPREM 01BBFFAD10 0001 OpCode -FPTAN 01BBFFB120 0004 OpCode +FPATAN 01CEDFB0C8 0005 OpCode +FPREM 01CEDFAD10 0001 OpCode +FPTAN 01CEDFB120 0004 OpCode FR 007FDB4668 0002 00000001F3 Funct Public -FRNDINT 01BBFFA758 0007 OpCode -FRSTOR 01BBFFB478 0000 OpCode +FRNDINT 01CEDFA758 0007 OpCode +FRSTOR 01CEDFB478 0000 OpCode FS 0000000504 001A Reg -FSAVE 01BBFFB410 0000 OpCode -FSCALE 01BBFFA700 0003 OpCode +FSAVE 01CEDFB410 0000 OpCode +FSCALE 01CEDFA700 0003 OpCode FSF_ARGPOP (1 << Ff_A 0003 0000000018 DefineStr FSF_ASM 0x02 000F 0000000008 DefineStr FSF_HASERRCODE (1 << Ff_H 0003 0000000018 DefineStr @@ -2180,16 +2180,16 @@ body {background-color:#fef1f0;} FSG_FUN_FLAGS1 (FSF_INTER 0003 0000000040 DefineStr FSG_FUN_FLAGS2 (FSG_FUN_F 0006 0000000020 DefineStr FSG_TYPE_MASK 0x7FFF 0003 0000000008 DefineStr -FSIN 01BBFFB1D0 0004 OpCode -FSQRT 01BBFFB070 0007 OpCode -FST 01BBFFB4E0 0008 OpCode -FSTCW 01BBFFA218 0008 OpCode -FSTP 01BBFFB558 0046 OpCode -FSTSW 01BBFFA8B8 000C OpCode -FSUB 01BBFFAB38 000C OpCode -FSUBP 01BBFFABC0 0004 OpCode -FSUBR 01BBFFAA58 0002 OpCode -FSUBRP 01BBFFAAE0 0004 OpCode +FSIN 01CEDFB1D0 0004 OpCode +FSQRT 01CEDFB070 0007 OpCode +FST 01CEDFB4E0 0008 OpCode +FSTCW 01CEDFA218 0008 OpCode +FSTP 01CEDFB558 0046 OpCode +FSTSW 01CEDFA8B8 000C OpCode +FSUB 01CEDFAB38 000C OpCode +FSUBP 01CEDFABC0 0004 OpCode +FSUBR 01CEDFAA58 0002 OpCode +FSUBRP 01CEDFAAE0 0004 OpCode FSetClus 000002EC4E 0008 ExportSysSym Imm FSize 000002E8CE 000A 000000001B Funct Public FSt_FAT32 2 0033 0000000008 DefineStr @@ -2202,7 +2202,7 @@ body {background-color:#fef1f0;} FSt_TYPES_NUM 8 0002 0000000008 DefineStr FSt_UNKNOWN 7 0003 0000000008 DefineStr FStf_DISABLE 15 0004 0000000008 DefineStr -FTST 01BBFFA390 0001 OpCode +FTST 01CEDFA390 0001 OpCode FUF_ALL (1 << FUf_ 0008 0000000010 DefineStr FUF_CANCEL (1 << FUf_ 0002 0000000018 DefineStr FUF_CLUS_ORDER (1 << FUf_ 0013 0000000018 DefineStr @@ -2255,14 +2255,14 @@ body {background-color:#fef1f0;} FUf_WHOLE_LABELS 20\t 0008 0000000008 DefineStr FUf_WHOLE_LABELS_AFTER 22\t 0008 0000000008 DefineStr FUf_WHOLE_LABELS_BEFORE 21\t 0008 0000000008 DefineStr -FWAIT 01BBFFC4E8 0000 OpCode -FXAM 01BBFFA338 0000 OpCode -FXCH 01BBFFA3D0 0000 OpCode -FXRSTOR 01BBFFA0F0 0001 OpCode -FXSAVE 01BBFFA158 0002 OpCode -FXTRACT 01BBFFA6A8 0000 OpCode -FYL2X 01BBFFB3D0 0004 OpCode -FYL2XP1 01BBFFB378 0000 OpCode +FWAIT 01CEDFC4E8 0000 OpCode +FXAM 01CEDFA338 0000 OpCode +FXCH 01CEDFA3D0 0000 OpCode +FXRSTOR 01CEDFA0F0 0001 OpCode +FXSAVE 01CEDFA158 0002 OpCode +FXTRACT 01CEDFA6A8 0000 OpCode +FYL2X 01CEDFB3D0 0004 OpCode +FYL2XP1 01CEDFB378 0000 OpCode FarCall32 000001ECC1 000A Funct Public Fault2 000001828E 0003 ExportSysSym Imm Fault3 000001810E 0003 ExportSysSym Imm @@ -2403,7 +2403,7 @@ body {background-color:#fef1f0;} GrEllipse3 007FE98208 000B 0000000299 Funct Public GrFillCircle 007FF7DA28 0007 000000021B Funct Public GrFillPoly3 007FE949F0 0003 00000003D4 Funct Public -GrFillSemiCircle 007FEC5428 0011 00000009BB Funct +GrFillSemiCircle 007FEC4E28 0011 00000009BB Funct GrFillTri0 007FE8F228 000D 000000187A Funct Public GrFixZoomScale 007FEAAE78 0007 00000000A9 Funct GrFloodFill 007FEA0D28 000B 000000010E Funct Public @@ -2418,7 +2418,7 @@ body {background-color:#fef1f0;} GrLine3 007FE99DA0 0041 00000002DA Funct Public GrLineFat3 007FE98828 0005 0000000652 Funct GrLinePlot 007FE9CD70 0011 0000000039 Funct -GrLinePlot0 007FEC0828 0007 0000000075 Funct +GrLinePlot0 007FEC0228 0007 0000000075 Funct GrPaletteGet 007FEBF378 0008 000000001B Funct Public GrPaletteSet 007FEBEFF0 000E 000000001B Funct Public GrPeek 007FEA1970 001B 0000000106 Funct Public @@ -2440,9 +2440,9 @@ body {background-color:#fef1f0;} GrRectB 007FE94610 0001 0000000076 Funct Public GrRegPoly 007FE9BE58 0001 0000000086 Funct Public GrRegPoly3 007FE97818 0009 00000002A5 Funct Public -GrRopEquU8NoClipping 007FEC0AD2 0005 Funct +GrRopEquU8NoClipping 007FEC04D2 0005 Funct GrScaleZoom 007FEAA998 000F 0000000171 Funct Public -GrSetUpTables 007FEC0228 0003 0000000581 Funct +GrSetUpTables 007FEC9428 0003 0000000581 Funct GrTextBox3 007FE932D0 000B 00000001D4 Funct Public GrTextDiamond3 007FE92BB0 000B 00000003B8 Funct Public GrUpdateScreen 007FED9428 0003 00000000D0 Funct @@ -2462,7 +2462,7 @@ body {background-color:#fef1f0;} HClf_LOCKED 0 001D 0000000008 DefineStr HDR_NUM 16 0007 0000000008 DefineStr HEAP_CTRL_SIGNATURE_VAL 'HcSV' 0006 0000000008 DefineStr -HLT 01BBFFFAA8 0002 OpCode +HLT 01CEDFFAA8 0002 OpCode HL_CALLER_DEPTH 5 000B 0000000008 DefineStr HL_HASH_SIZE 0x1000 0015 0000000008 DefineStr HTF_EXPORT 0x02000000 0009 0000000010 DefineStr @@ -2904,7 +2904,7 @@ body {background-color:#fef1f0;} ICf_DONT_POP_FLOAT0 24 0006 0000000008 DefineStr ICf_DONT_PUSH_FLOAT0 21 0009 0000000008 DefineStr ICf_LOCK 28 0004 0000000008 DefineStr -IDIV 01BC000940 0000 OpCode +IDIV 01CEE00940 0000 OpCode IDTET_IRQ 0x0E 0005 0000000008 DefineStr IDTET_TASK 0x05 0002 0000000008 DefineStr IDTET_TRAP 0x0F 0002 0000000008 DefineStr @@ -2943,32 +2943,32 @@ body {background-color:#fef1f0;} IET_ZEROED_CODE_HEAP 22 0007 0000000008 DefineStr IET_ZEROED_DATA_HEAP 24 0007 0000000008 DefineStr IMPORT 0000000055 0002 AsmKeyWord -IMUL 01BC000B58 0000 OpCode -IMUL2 01BC000A50 000B OpCode -IN 01BBFFF9B8 0001 OpCode -INC 01BC000E20 0037 OpCode -INS 01BBFFF940 0000 OpCode -INSB 01BBFFF900 0000 OpCode -INSD 01BBFFF850 0000 OpCode -INSW 01BBFFF8A8 0000 OpCode -INT 01BBFFF6C8 0027 OpCode -INT3 01BBFFF7A0 0000 OpCode -INTO 01BBFFF7F8 0000 OpCode +IMUL 01CEE00B58 0000 OpCode +IMUL2 01CEE00A50 000B OpCode +IN 01CEDFF9B8 0001 OpCode +INC 01CEE00E20 0037 OpCode +INS 01CEDFF940 0000 OpCode +INSB 01CEDFF900 0000 OpCode +INSD 01CEDFF850 0000 OpCode +INSW 01CEDFF8A8 0000 OpCode +INT 01CEDFF6C8 0027 OpCode +INT3 01CEDFF7A0 0000 OpCode +INTO 01CEDFF7F8 0000 OpCode INT_FAULT 000000F997 0003 ExportSysSym Imm INT_FAULT_ERR_CODE_BITMAP 000000FA1A 0003 ExportSysSym Imm INT_MP_CRASH_ADDR 000000F8ED 0003 ExportSysSym Imm INT_WAKE 000000F8F1 0003 ExportSysSym Imm INVALID_CLUS (-1) 0013 0000000008 DefineStr INVALID_PTR I64_MAX 0026 0000000008 DefineStr -INVD 01BBFFF688 0000 OpCode -INVLPG 01BBFF9FE8 0000 OpCode +INVD 01CEDFF688 0000 OpCode +INVLPG 01CEDF9FE8 0000 OpCode IOAPICARB 0x02 0002 0000000008 DefineStr IOAPICID 0x00 0002 0000000008 DefineStr IOAPICVER 0x01 0002 0000000008 DefineStr IOAPIC_DATA 0xFEC00010 0002 0000000010 DefineStr IOAPIC_REG 0xFEC00000 0002 0000000010 DefineStr IOREDTAB 0x10 0002 0000000008 DefineStr -IRET 01BBFFF630 0004 OpCode +IRET 01CEDFF630 0004 OpCode IRQKbd 000001A7D3 0003 ExportSysSym Imm IRQMouseHard 000001B113 0003 ExportSysSym Imm IRQ_TIMER 000000F90C 0003 ExportSysSym Imm @@ -3036,41 +3036,41 @@ body {background-color:#fef1f0;} IsInHeapCtrl 007FED5C60 000A 000000007E Funct Public IsLexExpression2Bin 007FFBC846 0007 0000000029 Funct Public IsMute 00000165DE 0004 0000000013 Funct Public -IsPixCovered0 007FEC0A93 0023 Funct Public +IsPixCovered0 007FEC0493 0023 Funct Public IsRaw 00000166C6 0078 0000000026 Funct Public IsSilent 000001661E 0004 000000001C Funct Public IsSingleUser 0000016716 0006 0000000013 Funct Public IsSuspended 000001CB23 0003 0000000035 Funct Public IsSysDebug 0000016666 0003 0000000013 Funct Public -JA 01BC001570 000A OpCode -JAE 01BC0019A8 000A OpCode -JB 01BC001B10 0012 OpCode -JBE 01BC001660 0000 OpCode -JC 01BC001AB0 0013 OpCode -JCXZ 01BC000F78 0001 OpCode -JE 01BC001840 000F OpCode -JECXZ 01BC000F38 0000 OpCode -JG 01BC001048 000F OpCode -JGE 01BC003240 0014 OpCode +JA 01CEE01570 000A OpCode +JAE 01CEE019A8 000A OpCode +JB 01CEE01B10 0012 OpCode +JBE 01CEE01660 0000 OpCode +JC 01CEE01AB0 0013 OpCode +JCXZ 01CEE00F78 0001 OpCode +JE 01CEE01840 000F OpCode +JECXZ 01CEE00F38 0000 OpCode +JG 01CEE01048 000F OpCode +JGE 01CEE03240 0014 OpCode JIFFY_FREQ 1000 0016 0000000008 DefineStr -JL 01BC003330 000B OpCode -JLE 01BC001138 000C OpCode -JMP 01BC001C78 004D OpCode -JNA 01BC001600 0000 OpCode -JNAE 01BC001A38 0000 OpCode -JNB 01BC001948 0000 OpCode -JNBE 01BC001510 0000 OpCode -JNC 01BC0018D0 000B OpCode -JNE 01BC001750 0019 OpCode -JNG 01BC0010D8 0000 OpCode -JNGE 01BC0032D0 0000 OpCode -JNL 01BC0011B0 0000 OpCode -JNLE 01BC000FE8 0000 OpCode -JNO 01BC001B88 0000 OpCode -JNP 01BC0012A0 0000 OpCode -JNS 01BC001408 000C OpCode -JNZ 01BC0016F0 0038 OpCode -JO 01BC001C00 0000 OpCode +JL 01CEE03330 000B OpCode +JLE 01CEE01138 000C OpCode +JMP 01CEE01C78 004D OpCode +JNA 01CEE01600 0000 OpCode +JNAE 01CEE01A38 0000 OpCode +JNB 01CEE01948 0000 OpCode +JNBE 01CEE01510 0000 OpCode +JNC 01CEE018D0 000B OpCode +JNE 01CEE01750 0019 OpCode +JNG 01CEE010D8 0000 OpCode +JNGE 01CEE032D0 0000 OpCode +JNL 01CEE011B0 0000 OpCode +JNLE 01CEE00FE8 0000 OpCode +JNO 01CEE01B88 0000 OpCode +JNP 01CEE012A0 0000 OpCode +JNS 01CEE01408 000C OpCode +JNZ 01CEE016F0 0038 OpCode +JO 01CEE01C00 0000 OpCode JOBCf_LOCKED 0 0023 0000000008 DefineStr JOBT_CALL 3 0006 0000000008 DefineStr JOBT_EXE_STR 2 0004 0000000008 DefineStr @@ -3086,12 +3086,12 @@ body {background-color:#fef1f0;} JOBf_FREE_ON_COMPLETE 7 000E 0000000008 DefineStr JOBf_HIGHEST_PRIORITY 4 0004 0000000008 DefineStr JOBf_WAKE_MASTER 0 0014 0000000008 DefineStr -JP 01BC001390 0000 OpCode -JPE 01BC001330 0000 OpCode -JPO 01BC001240 0000 OpCode -JRCXZ 01BC000EE0 0000 OpCode -JS 01BC001480 0019 OpCode -JZ 01BC0017E0 004D OpCode +JP 01CEE01390 0000 OpCode +JPE 01CEE01330 0000 OpCode +JPO 01CEE01240 0000 OpCode +JRCXZ 01CEE00EE0 0000 OpCode +JS 01CEE01480 0019 OpCode +JZ 01CEE017E0 004D OpCode JobCtrlInit 000001D9D3 0004 ExportSysSym Imm JobDel 000001D973 000F 000000001D Funct Public JobQueue 000001FC22 0006 0000000104 Funct Public @@ -3199,7 +3199,7 @@ body {background-color:#fef1f0;} KeyMapKeyPrint 007FED8CF8 000B 0000000055 Funct KeyScan 000001C073 000B 0000000093 Funct Public Kill 000001CA03 0025 00000000C8 Funct Public -LAHF 01BBFFF5D8 0000 OpCode +LAHF 01CEDFF5D8 0000 OpCode LAPICF_APIC_ENABLED 0x100 0003 0000000008 DefineStr LAPIC_APIC_ID (LAPIC_BAS 0003 0000000018 DefineStr LAPIC_APIC_VERSION (LAPIC_BAS 0002 0000000018 DefineStr @@ -3223,7 +3223,7 @@ body {background-color:#fef1f0;} LAPIC_SVR (LAPIC_BAS 0003 0000000018 DefineStr LAPIC_TASK_PRIORITY (LAPIC_BAS 0002 0000000018 DefineStr LAPIC_TMR (LAPIC_BAS 0002 0000000018 DefineStr -LAR 01BBFFF548 0000 OpCode +LAR 01CEDFF548 0000 OpCode LBEqual 000000ADF6 0036 Funct Public LBtc 000000007D 0004 Funct Public LBtr 000000007C 00DC Funct Public @@ -3231,13 +3231,13 @@ body {background-color:#fef1f0;} LDF_JUST_LOAD 2 0003 0000000008 DefineStr LDF_NO_ABSS 1 0004 0000000008 DefineStr LDF_SILENT 4 0005 0000000008 DefineStr -LEA 01BBFFF4D0 0014 OpCode -LEAVE 01BBFFF490 0009 OpCode +LEA 01CEDFF4D0 0014 OpCode +LEAVE 01CEDFF490 0009 OpCode LFBFlush 0000015DC6 0015 000000000F Funct Public LFSF_DEFINE 2 0005 0000000008 DefineStr LFSF_DOC 1 000A 0000000008 DefineStr -LGDT 01BBFFF400 0002 OpCode -LIDT 01BBFFF310 0001 OpCode +LGDT 01CEDFF400 0002 OpCode +LIDT 01CEDFF310 0001 OpCode LIST 0000000056 0000 AsmKeyWord LK_ADDR 11 0005 0000000008 DefineStr LK_BIBLE_FIND 8 000F 0000000008 DefineStr @@ -3256,27 +3256,27 @@ body {background-color:#fef1f0;} LK_PLAIN 5 0007 0000000008 DefineStr LK_PLAIN_FIND 6 0009 0000000008 DefineStr LK_PLAIN_LINE 7 000D 0000000008 DefineStr -LLDT 01BBFFF240 0000 OpCode +LLDT 01CEDFF240 0000 OpCode LMF_EXACT 2 0004 0000000008 DefineStr LMF_IGNORE_CASE 1 000E 0000000008 DefineStr -LMSW 01BBFFF158 0000 OpCode -LOCK 01BBFFF0A0 0017 OpCode -LODSB 01BBFFF048 0011 OpCode -LODSD 01BBFFEF98 0003 OpCode -LODSQ 01BBFFEF40 0002 OpCode -LODSW 01BBFFEFF0 0000 OpCode -LOOP 01BBFFEED0 0014 OpCode -LOOPE 01BBFFEE78 0000 OpCode -LOOPNE 01BBFFEDC8 0000 OpCode -LOOPNZ 01BBFFED88 0000 OpCode -LOOPZ 01BBFFEE38 0000 OpCode -LSL 01BBFFECF8 0000 OpCode +LMSW 01CEDFF158 0000 OpCode +LOCK 01CEDFF0A0 0017 OpCode +LODSB 01CEDFF048 0011 OpCode +LODSD 01CEDFEF98 0003 OpCode +LODSQ 01CEDFEF40 0002 OpCode +LODSW 01CEDFEFF0 0000 OpCode +LOOP 01CEDFEED0 0014 OpCode +LOOPE 01CEDFEE78 0000 OpCode +LOOPNE 01CEDFEDC8 0000 OpCode +LOOPNZ 01CEDFED88 0000 OpCode +LOOPZ 01CEDFEE38 0000 OpCode +LSL 01CEDFECF8 0000 OpCode LTBLUE 9 000B 0000000008 DefineStr LTCYAN 11 0005 0000000008 DefineStr LTGRAY 7 0013 0000000008 DefineStr LTGREEN 10 000F 0000000008 DefineStr LTPURPLE 13 0004 0000000008 DefineStr -LTR 01BBFFECA0 0001 OpCode +LTR 01CEDFECA0 0001 OpCode LTRED 12 0011 0000000008 DefineStr LXchgI64 000000AF18 0003 Funct Public LXchgU16 000000AF3E 0002 Funct Public @@ -3452,30 +3452,30 @@ body {background-color:#fef1f0;} MODULE_SIZE 1 * BLK_SI 000C 0000000010 DefineStr MODULE_SIZE 1 * BLK_SI 000B 0000000010 DefineStr MODULE_SIZE 2 * BLK_SI 0013 0000000010 DefineStr -MOV 01BC003DA0 0591 OpCode -MOVSB 01BBFFEC60 0000 OpCode -MOVSD 01BBFFEBB0 0002 OpCode -MOVSQ 01BBFFEB58 0000 OpCode -MOVSW 01BBFFEC08 0000 OpCode -MOVSX 01BBFFEAA8 0000 OpCode -MOVSXD 01BBFFEA50 0000 OpCode -MOVZX 01BBFFE9B8 0018 OpCode -MOV_CR0_EAX 01BBFF9DD0 0007 OpCode -MOV_CR0_RAX 01BBFF9AD0 0000 OpCode -MOV_CR2_EAX 01BBFF9D10 0000 OpCode -MOV_CR2_RAX 01BBFF9A10 0000 OpCode -MOV_CR3_EAX 01BBFF9C50 0001 OpCode -MOV_CR3_RAX 01BBFF9950 0000 OpCode -MOV_CR4_EAX 01BBFF9B90 0001 OpCode -MOV_CR4_RAX 01BBFF9890 0001 OpCode -MOV_EAX_CR0 01BBFF9D70 0004 OpCode -MOV_EAX_CR2 01BBFF9CB0 0000 OpCode -MOV_EAX_CR3 01BBFF9BF0 0000 OpCode -MOV_EAX_CR4 01BBFF9B30 0001 OpCode -MOV_RAX_CR0 01BBFF9A70 0000 OpCode -MOV_RAX_CR2 01BBFF99B0 0001 OpCode -MOV_RAX_CR3 01BBFF98F0 0000 OpCode -MOV_RAX_CR4 01BBFF9830 0001 OpCode +MOV 01CEE03DA0 0591 OpCode +MOVSB 01CEDFEC60 0000 OpCode +MOVSD 01CEDFEBB0 0002 OpCode +MOVSQ 01CEDFEB58 0000 OpCode +MOVSW 01CEDFEC08 0000 OpCode +MOVSX 01CEDFEAA8 0000 OpCode +MOVSXD 01CEDFEA50 0000 OpCode +MOVZX 01CEDFE9B8 0018 OpCode +MOV_CR0_EAX 01CEDF9DD0 0007 OpCode +MOV_CR0_RAX 01CEDF9AD0 0000 OpCode +MOV_CR2_EAX 01CEDF9D10 0000 OpCode +MOV_CR2_RAX 01CEDF9A10 0000 OpCode +MOV_CR3_EAX 01CEDF9C50 0001 OpCode +MOV_CR3_RAX 01CEDF9950 0000 OpCode +MOV_CR4_EAX 01CEDF9B90 0001 OpCode +MOV_CR4_RAX 01CEDF9890 0001 OpCode +MOV_EAX_CR0 01CEDF9D70 0004 OpCode +MOV_EAX_CR2 01CEDF9CB0 0000 OpCode +MOV_EAX_CR3 01CEDF9BF0 0000 OpCode +MOV_EAX_CR4 01CEDF9B30 0001 OpCode +MOV_RAX_CR0 01CEDF9A70 0000 OpCode +MOV_RAX_CR2 01CEDF99B0 0001 OpCode +MOV_RAX_CR3 01CEDF98F0 0000 OpCode +MOV_RAX_CR4 01CEDF9830 0001 OpCode MPAPICInit 000001FAE2 0004 ExportSysSym Imm MPCPURep 007FDE8A28 0003 0000000091 Funct MPDrawIt 007FEB5828 0003 00000002EE Funct @@ -3506,8 +3506,8 @@ body {background-color:#fef1f0;} MT_DVD 2 0006 0000000008 DefineStr MT_MESSAGE 1 0005 0000000008 DefineStr MT_NULL 0 0003 0000000008 DefineStr -MUL 01BC000BE0 0000 OpCode -MULPD 01BBFF97D8 0000 OpCode +MUL 01CEE00BE0 0000 OpCode +MULPD 01CEDF97D8 0000 OpCode MV_FILE_MAX 0x007FF000 0005 0000000010 DefineStr MacroTask 007FE01BE8 0003 00000000BD Funct MakeAll 007FDC6F08 0005 0000000042 Funct @@ -3597,7 +3597,7 @@ body {background-color:#fef1f0;} MeshP0Capture 007FE834C0 000D 0000000037 Funct MeshP0Offset 007FEE6028 0011 0000000062 Funct MeshPolygon 007FE9F1B8 0007 0000000072 Funct -MeshPrism 007FEC5FC0 0003 0000000046 Funct +MeshPrism 007FEC59C0 0003 0000000046 Funct MeshRecalcCxCy 007FE80AC8 0009 000000005E Funct MeshRevTris 007FE80E90 0003 0000000078 Funct MeshS2W 007FE7F3E8 0003 00000000C0 Funct @@ -3655,13 +3655,13 @@ body {background-color:#fef1f0;} Mute 000001658E 0004 000000004B Funct Public MyPutKey 007FD9EE28 0003 00000008B4 Funct MyPutS 007FDC6D28 0003 000000000A Funct -NEG 01BC000C68 0000 OpCode +NEG 01CEE00C68 0000 OpCode NOLIST 0000000057 0000 AsmKeyWord NONE 0 0017 0000000008 DefineStr -NOP 01BC002F08 0000 OpCode -NOP2 01BC002EB0 0000 OpCode +NOP 01CEE02F08 0000 OpCode +NOP2 01CEE02EB0 0000 OpCode NORMAL_KEY_SCAN_DECODE_TABLE 00000192AB 0005 ExportSysSym Imm -NOT 01BC000CF0 0010 OpCode +NOT 01CEE00CF0 0010 OpCode NULL 0 078B 0000000008 DefineStr Name2DirClus 00000272F9 0012 00000001BC Funct Name2ParentDirClus 00000274B9 0004 00000001D2 Funct @@ -3738,7 +3738,7 @@ body {background-color:#fef1f0;} ODEf_HAS_MASSES 0 0002 0000000008 DefineStr ODEf_PAUSED 1 0004 0000000008 DefineStr ODEf_STARTED 2 0002 0000000008 DefineStr -ODEsUpdate 007FEC9428 0003 00000004F7 Funct +ODEsUpdate 007FEC8E28 0003 00000004F7 Funct OFF 0 005F 0000000008 DefineStr OM_CB 1 0003 0000000008 DefineStr OM_CD 3 0003 0000000008 DefineStr @@ -3764,12 +3764,12 @@ body {background-color:#fef1f0;} OPTf_WARN_HEADER_MISMATCH 5 000C 0000000008 DefineStr OPTf_WARN_PAREN 3\t 0009 0000000008 DefineStr OPTf_WARN_UNUSED_VAR 2\t 0004 0000000008 DefineStr -OR 01BC003568 001D OpCode +OR 01CEE03568 001D OpCode ORG 0000000041 0000 AsmKeyWord -OUT 01BBFFE8E0 0001 OpCode -OUTSB 01BBFFE8A0 0000 OpCode -OUTSD 01BBFFE7F0 0000 OpCode -OUTSW 01BBFFE848 0000 OpCode +OUT 01CEDFE8E0 0001 OpCode +OUTSB 01CEDFE8A0 0000 OpCode +OUTSD 01CEDFE7F0 0000 OpCode +OUTSW 01CEDFE848 0000 OpCode Ona2Freq 0000016276 0008 0000000053 Funct Public Ona2Note 007FE59488 0001 000000001E Funct Public Ona2Octave 007FE590D8 0001 0000000046 Funct Public @@ -3810,7 +3810,7 @@ body {background-color:#fef1f0;} OutU32 000000006B 0005 Funct Public OutU8 0000000069 0027 Funct Public P2R 007FEDD088 0001 0000000056 Funct Public -PAUSE 01BBFF9E48 003F OpCode +PAUSE 01CEDF9E48 003F OpCode PCIBIOSClassFind 000001F169 0003 ExportSysSym Imm PCIBIOSReadU16 000001EE79 0003 ExportSysSym Imm PCIBIOSReadU32 000001EF19 0003 ExportSysSym Imm @@ -3879,12 +3879,12 @@ body {background-color:#fef1f0;} PIT_CMDF_CHANNEL2 0x80 0003 0000000008 DefineStr PIT_CMDF_OPMODE_RATE_GEN 0x04 0003 0000000008 DefineStr PIT_CMDF_OPMODE_SQUARE_WAVE 0x06 0003 0000000008 DefineStr -POP 01BC004138 0197 OpCode -POPA 01BC0040F8 0000 OpCode -POPAD 01BC0040A0 0000 OpCode -POPCNT 01BC0001E0 0000 OpCode -POPF 01BC004048 0003 OpCode -POPFD 01BC003FF0 00A1 OpCode +POP 01CEE04138 0197 OpCode +POPA 01CEE040F8 0000 OpCode +POPAD 01CEE040A0 0000 OpCode +POPCNT 01CEE001E0 0000 OpCode +POPF 01CEE04048 0003 OpCode +POPFD 01CEE03FF0 00A1 OpCode POP_C_REGS POP R9 POP 0009 0000000030 DefineStr POP_REGS POP R15 PO 0003 0000000080 DefineStr PREC_ADD 0x24 0003 0000000008 DefineStr @@ -3943,11 +3943,11 @@ body {background-color:#fef1f0;} PSHRNK (-0.25) 0003 0000000008 DefineStr PTR_STARS_NUM 4 0008 0000000008 DefineStr PURPLE 5 0009 0000000008 DefineStr -PUSH 01BC004390 01AC OpCode -PUSHA 01BC004350 0000 OpCode -PUSHAD 01BC0042F8 0000 OpCode -PUSHF 01BC0042A0 0003 OpCode -PUSHFD 01BC004248 0087 OpCode +PUSH 01CEE04390 01AC OpCode +PUSHA 01CEE04350 0000 OpCode +PUSHAD 01CEE042F8 0000 OpCode +PUSHF 01CEE042A0 0003 OpCode +PUSHFD 01CEE04248 0087 OpCode PUSH_C_REGS PUSH RAX P 0009 0000000038 DefineStr PUSH_REGS PUSH RAX P 0003 0000000090 DefineStr PUT_CHARS 000000B2B8 0002 ExportSysSym Imm @@ -3961,7 +3961,7 @@ body {background-color:#fef1f0;} PaletteSetGray 007FEBE728 0003 0000000031 Funct Public PaletteSetLight 007FEBDC70 0005 0000000031 Funct Public PaletteSetSlate 007FEBD7E8 0003 0000000031 Funct Public -PaletteSetStd 007FEC0C50 0003 0000000031 Funct Public +PaletteSetStd 007FEC0650 0003 0000000031 Funct Public Panic 000001851E 000D 0000000037 Funct Public ParenWarning 007FFAD8EB 0006 ExportSysSym Imm ParseAddOp 007FFB9A0E 0004 ExportSysSym Imm @@ -4161,17 +4161,17 @@ body {background-color:#fef1f0;} RBPSet 0000000072 0003 Funct Public RBPu8 0000000115 0000 Reg RBX 0000000403 0143 Reg -RCL 01BBFFBFC8 0000 OpCode -RCL1 01BBFFBF40 0000 OpCode -RCR 01BBFFBE38 0000 OpCode -RCR1 01BBFFBDB0 0000 OpCode +RCL 01CEDFBFC8 0000 OpCode +RCL1 01CEDFBF40 0000 OpCode +RCR 01CEDFBE38 0000 OpCode +RCR1 01CEDFBDB0 0000 OpCode RCX 0000000401 0118 Reg RCache 0000022052 0003 ExportSysSym Imm RD 007FDA34E8 0001 000000002C Funct Public RDI 0000000407 019F Reg RDIu8 0000000117 0000 Reg -RDMSR 01BBFF9EA0 0001 OpCode -RDTSC 01BBFF9EF8 0001 OpCode +RDMSR 01CEDF9EA0 0001 OpCode +RDTSC 01CEDF9EF8 0001 OpCode RDX 0000000402 0204 Reg RECALCF_ADD_CURSOR 0x200 0008 0000000008 DefineStr RECALCF_HAS_CURSOR 0x100 000E 0000000008 DefineStr @@ -4210,46 +4210,46 @@ body {background-color:#fef1f0;} REG_RSI 6 0003 0000000008 DefineStr REG_RSP 4 0077 0000000008 DefineStr REG_UNDEF I8_MIN 0004 0000000008 DefineStr -REPE_CMPSB 01BBFFE0A8 0001 OpCode -REPE_CMPSD 01BBFFDFE8 0000 OpCode -REPE_CMPSQ 01BBFFDF88 0000 OpCode -REPE_CMPSW 01BBFFE048 0000 OpCode -REPE_SCASB 01BBFFDF18 0000 OpCode -REPE_SCASD 01BBFFDE58 0000 OpCode -REPE_SCASQ 01BBFFDDF8 0000 OpCode -REPE_SCASW 01BBFFDEB8 0000 OpCode -REPNE_CMPSB 01BBFFDD88 0000 OpCode -REPNE_CMPSD 01BBFFDCC8 0000 OpCode -REPNE_CMPSQ 01BBFFDC68 0000 OpCode -REPNE_CMPSW 01BBFFDD28 0000 OpCode -REPNE_SCASB 01BBFFDBF8 0000 OpCode -REPNE_SCASD 01BBFFDB38 0000 OpCode -REPNE_SCASQ 01BBFFDAD8 0000 OpCode -REPNE_SCASW 01BBFFDB98 0000 OpCode -REP_INSB 01BBFFE788 0001 OpCode -REP_INSD 01BBFFE708 0001 OpCode -REP_INSW 01BBFFE748 0001 OpCode -REP_LODSB 01BBFFE3C8 0000 OpCode -REP_LODSD 01BBFFE308 0000 OpCode -REP_LODSQ 01BBFFE2A8 0000 OpCode -REP_LODSW 01BBFFE368 0000 OpCode -REP_MOVSB 01BBFFE698 0014 OpCode -REP_MOVSD 01BBFFE5D8 0003 OpCode -REP_MOVSQ 01BBFFE578 0000 OpCode -REP_MOVSW 01BBFFE638 0000 OpCode -REP_OUTSB 01BBFFE4F8 0001 OpCode -REP_OUTSD 01BBFFE438 0001 OpCode -REP_OUTSW 01BBFFE498 0001 OpCode -REP_STOSB 01BBFFE238 0003 OpCode -REP_STOSD 01BBFFE178 0003 OpCode -REP_STOSQ 01BBFFE118 0001 OpCode -REP_STOSW 01BBFFE1D8 0001 OpCode -RET 01BBFFDA98 002D OpCode -RET1 01BBFFDA28 0077 OpCode -RETF 01BBFFD9E8 0001 OpCode -RETF1 01BBFFD978 0000 OpCode -REX 01BBFFD938 0028 OpCode -REX2 01BBFFD8E0 0000 OpCode +REPE_CMPSB 01CEDFE0A8 0001 OpCode +REPE_CMPSD 01CEDFDFE8 0000 OpCode +REPE_CMPSQ 01CEDFDF88 0000 OpCode +REPE_CMPSW 01CEDFE048 0000 OpCode +REPE_SCASB 01CEDFDF18 0000 OpCode +REPE_SCASD 01CEDFDE58 0000 OpCode +REPE_SCASQ 01CEDFDDF8 0000 OpCode +REPE_SCASW 01CEDFDEB8 0000 OpCode +REPNE_CMPSB 01CEDFDD88 0000 OpCode +REPNE_CMPSD 01CEDFDCC8 0000 OpCode +REPNE_CMPSQ 01CEDFDC68 0000 OpCode +REPNE_CMPSW 01CEDFDD28 0000 OpCode +REPNE_SCASB 01CEDFDBF8 0000 OpCode +REPNE_SCASD 01CEDFDB38 0000 OpCode +REPNE_SCASQ 01CEDFDAD8 0000 OpCode +REPNE_SCASW 01CEDFDB98 0000 OpCode +REP_INSB 01CEDFE788 0001 OpCode +REP_INSD 01CEDFE708 0001 OpCode +REP_INSW 01CEDFE748 0001 OpCode +REP_LODSB 01CEDFE3C8 0000 OpCode +REP_LODSD 01CEDFE308 0000 OpCode +REP_LODSQ 01CEDFE2A8 0000 OpCode +REP_LODSW 01CEDFE368 0000 OpCode +REP_MOVSB 01CEDFE698 0014 OpCode +REP_MOVSD 01CEDFE5D8 0003 OpCode +REP_MOVSQ 01CEDFE578 0000 OpCode +REP_MOVSW 01CEDFE638 0000 OpCode +REP_OUTSB 01CEDFE4F8 0001 OpCode +REP_OUTSD 01CEDFE438 0001 OpCode +REP_OUTSW 01CEDFE498 0001 OpCode +REP_STOSB 01CEDFE238 0003 OpCode +REP_STOSD 01CEDFE178 0003 OpCode +REP_STOSQ 01CEDFE118 0001 OpCode +REP_STOSW 01CEDFE1D8 0001 OpCode +RET 01CEDFDA98 002D OpCode +RET1 01CEDFDA28 0077 OpCode +RETF 01CEDFD9E8 0001 OpCode +RETF1 01CEDFD978 0000 OpCode +REX 01CEDFD938 0028 OpCode +REX2 01CEDFD8E0 0000 OpCode RFLAGG_NORMAL (1 << RFLA 0005 0000000018 DefineStr RFLAGG_START 0x0000 0005 0000000008 DefineStr RFLAGf_ALIGN_CHECK 18 0002 0000000008 DefineStr @@ -4324,8 +4324,8 @@ body {background-color:#fef1f0;} RLf_SYSTEM_SERVER 18 0008 0000000008 DefineStr RLf_VESA 1 0005 0000000008 DefineStr RLf_WINMGR 14 0005 0000000008 DefineStr -ROL 01BBFFC2E8 0000 OpCode -ROL1 01BBFFC260 0000 OpCode +ROL 01CEDFC2E8 0000 OpCode +ROL1 01CEDFC260 0000 OpCode ROPBF_DITHER 0x40 0012 0000000008 DefineStr ROPBF_HALF_RANGE_COLOR 0x10 0009 0000000008 DefineStr ROPBF_PROBABILITY_DITHER 0x80 0016 0000000008 DefineStr @@ -4342,15 +4342,15 @@ body {background-color:#fef1f0;} ROP_EQU (ROPB_EQU 0009 0000000010 DefineStr ROP_MONO (ROPB_MONO 0002 0000000018 DefineStr ROP_XOR (ROPB_XOR 000E 0000000010 DefineStr -ROR 01BBFFC158 0000 OpCode -ROR1 01BBFFC0D0 0000 OpCode +ROR 01CEDFC158 0000 OpCode +ROR1 01CEDFC0D0 0000 OpCode ROUND_DRIVE_TO (63 * 255) 0015 0000000010 DefineStr RSAC_ALL 2 000B 0000000008 DefineStr RSAC_REPLACE 0 0005 0000000008 DefineStr RSAC_SKIP 1 0001 0000000008 DefineStr RSI 0000000406 0160 Reg RSIu8 0000000116 0000 Reg -RSM 01BBFFD888 0000 OpCode +RSM 01CEDFD888 0000 OpCode RSP 0000000404 0100 Reg RSPGet 0000000073 0008 Funct Public RSPSet 0000000074 0002 Funct Public @@ -4448,17 +4448,17 @@ body {background-color:#fef1f0;} S 0000017A26 0003 000000008D Funct Public S2T 007FDA9078 0001 0000000022 Funct Public SAFETY 0.9 0005 0000000008 DefineStr -SAHF 01BBFFD830 0000 OpCode -SAL 01BBFFBBB8 0000 OpCode -SAL1 01BBFFBAA8 0000 OpCode -SAR 01BBFFB7F8 0014 OpCode -SAR1 01BBFFB770 0000 OpCode +SAHF 01CEDFD830 0000 OpCode +SAL 01CEDFBBB8 0000 OpCode +SAL1 01CEDFBAA8 0000 OpCode +SAR 01CEDFB7F8 0014 OpCode +SAR1 01CEDFB770 0000 OpCode SATARep 007FE4AC28 0003 00000008B3 Funct Public -SBB 01BC0033C0 0007 OpCode -SCASB 01BBFFD7D8 0004 OpCode -SCASD 01BBFFD728 0000 OpCode -SCASQ 01BBFFD6D0 0000 OpCode -SCASW 01BBFFD780 0000 OpCode +SBB 01CEE033C0 0007 OpCode +SCASB 01CEDFD7D8 0004 OpCode +SCASD 01CEDFD728 0000 OpCode +SCASQ 01CEDFD6D0 0000 OpCode +SCASW 01CEDFD780 0000 OpCode SCF_ALT (1 << SCf_ 0031 0000000010 DefineStr SCF_CAPS (1 << SCf_ 0007 0000000010 DefineStr SCF_CTRL (1 << SCf_ 006D 0000000010 DefineStr @@ -4525,12 +4525,12 @@ body {background-color:#fef1f0;} SCf_NUM 13 0004 0000000008 DefineStr SCf_SCROLL 14 0004 0000000008 DefineStr SCf_SHIFT 9 006B 0000000008 DefineStr -SEGCS 01BBFFD678 0000 OpCode -SEGDS 01BBFFD5C8 0000 OpCode -SEGES 01BBFFD570 0000 OpCode -SEGFS 01BBFFD518 0000 OpCode -SEGGS 01BBFFD4C0 0000 OpCode -SEGSS 01BBFFD620 0000 OpCode +SEGCS 01CEDFD678 0000 OpCode +SEGDS 01CEDFD5C8 0000 OpCode +SEGES 01CEDFD570 0000 OpCode +SEGFS 01CEDFD518 0000 OpCode +SEGGS 01CEDFD4C0 0000 OpCode +SEGSS 01CEDFD620 0000 OpCode SEL_MESH_AND 2 0009 0000000008 DefineStr SEL_MESH_EQU 0 0007 0000000008 DefineStr SEL_MESH_OR 1 0003 0000000008 DefineStr @@ -4556,36 +4556,36 @@ body {background-color:#fef1f0;} SEMA_TT 16 0002 0000000008 DefineStr SEMA_UPDATE_WIN_Z_BUF 15 0008 0000000008 DefineStr SEMA_VGA 14 0002 0000000008 DefineStr -SETA 01BBFFCF68 0000 OpCode -SETAE 01BBFFD298 0000 OpCode -SETB 01BBFFD3A0 0000 OpCode -SETBE 01BBFFD018 0000 OpCode -SETC 01BBFFD360 0000 OpCode -SETE 01BBFFD178 0000 OpCode -SETG 01BBFFCA98 0000 OpCode -SETGE 01BBFFCBF8 0000 OpCode -SETL 01BBFFCCA8 0000 OpCode -SETLE 01BBFFCB48 0000 OpCode -SETNA 01BBFFCFD8 0000 OpCode -SETNAE 01BBFFD308 0000 OpCode -SETNB 01BBFFD1D0 0000 OpCode -SETNBE 01BBFFCF28 0000 OpCode -SETNC 01BBFFD258 0000 OpCode -SETNE 01BBFFD0C8 0000 OpCode -SETNG 01BBFFCB08 0000 OpCode -SETNGE 01BBFFCC68 0000 OpCode -SETNL 01BBFFCBB8 0000 OpCode -SETNLE 01BBFFCA58 0000 OpCode -SETNO 01BBFFD3F8 0000 OpCode -SETNP 01BBFFCD58 0000 OpCode -SETNS 01BBFFCE60 0000 OpCode -SETNZ 01BBFFD088 0000 OpCode -SETO 01BBFFD450 0000 OpCode -SETP 01BBFFCE08 0000 OpCode -SETPE 01BBFFCDC8 0000 OpCode -SETPO 01BBFFCD18 0000 OpCode -SETS 01BBFFCEB8 0000 OpCode -SETZ 01BBFFD138 0000 OpCode +SETA 01CEDFCF68 0000 OpCode +SETAE 01CEDFD298 0000 OpCode +SETB 01CEDFD3A0 0000 OpCode +SETBE 01CEDFD018 0000 OpCode +SETC 01CEDFD360 0000 OpCode +SETE 01CEDFD178 0000 OpCode +SETG 01CEDFCA98 0000 OpCode +SETGE 01CEDFCBF8 0000 OpCode +SETL 01CEDFCCA8 0000 OpCode +SETLE 01CEDFCB48 0000 OpCode +SETNA 01CEDFCFD8 0000 OpCode +SETNAE 01CEDFD308 0000 OpCode +SETNB 01CEDFD1D0 0000 OpCode +SETNBE 01CEDFCF28 0000 OpCode +SETNC 01CEDFD258 0000 OpCode +SETNE 01CEDFD0C8 0000 OpCode +SETNG 01CEDFCB08 0000 OpCode +SETNGE 01CEDFCC68 0000 OpCode +SETNL 01CEDFCBB8 0000 OpCode +SETNLE 01CEDFCA58 0000 OpCode +SETNO 01CEDFD3F8 0000 OpCode +SETNP 01CEDFCD58 0000 OpCode +SETNS 01CEDFCE60 0000 OpCode +SETNZ 01CEDFD088 0000 OpCode +SETO 01CEDFD450 0000 OpCode +SETP 01CEDFCE08 0000 OpCode +SETPE 01CEDFCDC8 0000 OpCode +SETPO 01CEDFCD18 0000 OpCode +SETS 01CEDFCEB8 0000 OpCode +SETZ 01CEDFD138 0000 OpCode SET_FS_BASE 000000B148 000B ExportSysSym Imm SET_GS_BASE 000000B132 0008 ExportSysSym Imm SE_NOISE 0 0005 0000000008 DefineStr @@ -4604,19 +4604,19 @@ body {background-color:#fef1f0;} SF_ARG8 0x48 0002 0000000008 DefineStr SF_RBP 0x00 0004 0000000008 DefineStr SF_RIP 0x08 0006 0000000008 DefineStr -SGDT 01BBFFF388 0000 OpCode +SGDT 01CEDFF388 0000 OpCode SGF_SHIFT_ESC_EXIT 1 0005 0000000008 DefineStr SGF_WITH_NEW_LINE 2 000A 0000000008 DefineStr SHIFT_KEY_SCAN_DECODE_TABLE 00000192FB 0007 ExportSysSym Imm -SHL 01BBFFBCA8 0029 OpCode -SHL1 01BBFFBB18 0039 OpCode -SHLD 01BBFFC9C8 0000 OpCode -SHR 01BBFFB988 0029 OpCode -SHR1 01BBFFB900 0000 OpCode -SHRD 01BBFFC950 0003 OpCode +SHL 01CEDFBCA8 0029 OpCode +SHL1 01CEDFBB18 0039 OpCode +SHLD 01CEDFC9C8 0000 OpCode +SHR 01CEDFB988 0029 OpCode +SHR1 01CEDFB900 0000 OpCode +SHRD 01CEDFC950 0003 OpCode SI 0000000206 0041 Reg -SIDT 01BBFFF298 0000 OpCode -SLDT 01BBFFF1B0 0000 OpCode +SIDT 01CEDFF298 0000 OpCode +SLDT 01CEDFF1B0 0000 OpCode SMArrow 007FE65060 0003 000000010F Funct SMBIOSEntryScan 007FDC0468 0005 0000000086 Funct SMBIOSInit 007FDBC228 0003 0000001E5B Funct @@ -4648,7 +4648,7 @@ body {background-color:#fef1f0;} SMPolyPoint 007FE61458 0003 000000024A Funct SMPolygon 007FE62618 0003 000000037F Funct SMRect 007FE63F58 0003 000000014E Funct -SMSW 01BBFFF0E0 0000 OpCode +SMSW 01CEDFF0E0 0000 OpCode SMScreenBitMap 007FE638B8 0003 0000000332 Funct SMShiftableMesh 007FE5FF20 0005 0000000396 Funct SMTaskTitleSet 007FE5FAC0 0003 00000000F1 Funct @@ -4760,15 +4760,15 @@ body {background-color:#fef1f0;} ST5 0000000605 0000 Reg ST6 0000000606 0000 Reg ST7 0000000607 0000 Reg -STC 01BBFFC910 0000 OpCode -STD 01BBFFC8B8 0000 OpCode +STC 01CEDFC910 0000 OpCode +STD 01CEDFC8B8 0000 OpCode STD_DISTRO_DVD_CONFIG \"TB\\nSca 0005 0000000030 DefineStr -STI 01BBFFC860 000C OpCode -STOSB 01BBFFC808 0001 OpCode -STOSD 01BBFFC758 0004 OpCode -STOSQ 01BBFFC700 0000 OpCode -STOSW 01BBFFC7B0 0000 OpCode -STR 01BBFFC670 0000 OpCode +STI 01CEDFC860 000C OpCode +STOSB 01CEDFC808 0001 OpCode +STOSD 01CEDFC758 0004 OpCode +STOSQ 01CEDFC700 0000 OpCode +STOSW 01CEDFC7B0 0000 OpCode +STR 01CEDFC670 0000 OpCode STR_LEN 144 007F 0000000008 DefineStr ST_ARG_TYPES NONE 38 04F7 0000000118 DefineStr ST_BIBLE_BOOKS Genesis 42 0000 0000000238 DefineStr @@ -4780,13 +4780,13 @@ body {background-color:#fef1f0;} ST_CPUID_1_ECX_FLAGS SSE3 13B 0000 00000011D8 DefineStr ST_CPUID_1_EDX_FLAGS x87 FPU 20 0000 00000001D0 DefineStr ST_DAYS_OF_WEEK Sunday 07 0006 0000000040 DefineStr -ST_DOC_CMDS TX 2B 01E2 0000000088 DefineStr +ST_DOC_CMDS TX 2B 01E0 0000000088 DefineStr ST_DOC_FLAGS T 3E 0007 00000000C0 DefineStr ST_DRIVE_TYPES NULL 08 0002 0000000038 DefineStr ST_ERR_ST \"\d\dRED\ 000A 0000000028 DefineStr ST_FALSE_TRUE False 23 0000 00000000E8 DefineStr -ST_FILE_ATTRS R 0C 02C3 0000000020 DefineStr -ST_FILE_UTIL_FLAGS r 17 0597 0000000038 DefineStr +ST_FILE_ATTRS R 0C 02C4 0000000020 DefineStr +ST_FILE_UTIL_FLAGS r 17 0599 0000000038 DefineStr ST_FSTACK_REGS ST0 08 0000 0000000028 DefineStr ST_HTT_TYPES ExportSysS 20 1810 00000000D0 DefineStr ST_INT_NAMES Divide Err 33 0000 0000000170 DefineStr @@ -4840,7 +4840,7 @@ body {background-color:#fef1f0;} ST_WARN_ST \"\d\dLTRE 001C 0000000030 DefineStr ST_XMM_REGS XMM0 0F 0000 0000000058 DefineStr SU 007FDA9408 0003 00000000BE Funct Public -SUB 01BC003080 0057 OpCode +SUB 01CEE03080 0057 OpCode SUF_REM_CTRL_CHARS 0x001 000A 0000000008 DefineStr SUF_REM_LEADING 0x002 0013 0000000008 DefineStr SUF_REM_SPACES 0x008 0004 0000000008 DefineStr @@ -4996,7 +4996,7 @@ body {background-color:#fef1f0;} SpriteElemSize 007FE8CF20 001D 0000000113 Funct SpriteExtents 007FE88720 0008 00000000FC Funct Public SpriteInterpolate 007FE83C28 0001 00000007CC Funct Public -SpriteMainEd 007FEC8028 0005 0000001391 Funct +SpriteMainEd 007FEC7A28 0005 0000001391 Funct SpriteMeshEd 007FE73A28 0005 0000001ED0 Funct SpritePolyPtPlot 007FE84428 0005 000000005A Funct SpritePtQueueNew 007FE68990 0003 0000000317 Funct @@ -5004,7 +5004,7 @@ body {background-color:#fef1f0;} SpriteQueueSelAll 007FE6C2E8 0015 0000000044 Funct SpriteQueueSelCount 007FE6C698 000B 0000000055 Funct SpriteScreenInit 007FE65940 001D 000000017B Funct -SpriteSelAll 007FEC5E68 0005 0000000046 Funct +SpriteSelAll 007FEC5868 0005 0000000046 Funct SpriteSelUnselShiftPts 007FE66E28 0003 000000067F Funct SpriteSetOrigin 007FE71970 0005 0000000220 Funct SpriteSetSettings 007FE72AC8 0019 00000001B5 Funct @@ -5120,7 +5120,7 @@ body {background-color:#fef1f0;} TASKf_PENDING_BREAK 11 0004 0000000008 DefineStr TASKf_SUSPENDED 2 0005 0000000008 DefineStr TASKf_TASK_LOCK 0 0012 0000000008 DefineStr -TEST 01BC002F48 0098 OpCode +TEST 01CEE02F48 0098 OpCode TEXT_COLS 128 0076 0000000008 DefineStr Public TEXT_ROWS 96 0047 0000000008 DefineStr Public TF_COPIED 2 0007 0000000008 DefineStr @@ -5214,13 +5214,13 @@ body {background-color:#fef1f0;} TemplateCtrlSlider 007FE15C28 0003 0000000D76 Funct TermBttnNew 007FDCA908 0003 0000000140 Funct TermRightClickLink 007FDF0028 0003 00000005B8 Funct -TextBorder 007FEC10B0 0005 0000000155 Funct Public -TextChar 007FEC26B8 0027 Funct Public -TextLenAttr 007FEC2933 0003 Funct Public -TextLenAttrStr 007FEC2864 0003 Funct Public -TextLenStr 007FEC2798 0007 Funct Public -TextPrint 007FEC1570 002B 000000007C Funct Public -TextRect 007FEC0C98 0003 00000000B0 Funct Public +TextBorder 007FEC0AB0 0005 0000000155 Funct Public +TextChar 007FEC20B8 0027 Funct Public +TextLenAttr 007FEC2333 0003 Funct Public +TextLenAttrStr 007FEC2264 0003 Funct Public +TextLenStr 007FEC2198 0007 Funct Public +TextPrint 007FEC0F70 002B 000000007C Funct Public +TextRect 007FEC0698 0003 00000000B0 Funct Public TimeCal 000001605E 0007 00000000D4 Funct TimeIns 007FDB6428 0003 0000000041 Funct TimeSet 0000011BD2 0003 00000000A8 Funct Public @@ -5287,8 +5287,8 @@ body {background-color:#fef1f0;} UserStartUp 007FDA1FB0 0004 0000000056 Funct UserTaskCont 000001D463 0006 00000000D6 Funct Public VBE_MODES_NUM 32 000B 0000000008 DefineStr -VERR 01BBFFC5F8 0000 OpCode -VERW 01BBFFC580 0000 OpCode +VERR 01CEDFC5F8 0000 OpCode +VERW 01CEDFC580 0000 OpCode VF_COPIED 2 0007 0000000008 DefineStr VF_IGNORE 4 0007 0000000008 DefineStr VF_SEL 1 002B 0000000008 DefineStr @@ -5301,8 +5301,8 @@ body {background-color:#fef1f0;} View 007FE0D528 0012 000000002D Funct Public ViewAnglesDel 007FDE7800 0003 000000004F Funct Public ViewAnglesNew 007FDE7860 0003 00000000D7 Funct Public -WAIT 01BBFFC540 0000 OpCode -WBINVD 01BBFFA0B0 0005 OpCode +WAIT 01CEDFC540 0000 OpCode +WBINVD 01CEDFA0B0 0005 OpCode WHITE 15 0058 0000000008 DefineStr WHITE32 0xFFFFFF 0003 0000000010 DefineStr WIF_FOCUS_TASK_BORDER 0x01000000 0006 0000000010 DefineStr @@ -5353,7 +5353,7 @@ body {background-color:#fef1f0;} WIf_SELF_MS_R 5 0006 0000000008 DefineStr WIf_SELF_MS_WHEEL 7 0002 0000000008 DefineStr WIf_SELF_ODE 11 0006 0000000008 DefineStr -WRMSR 01BBFF9F50 0006 OpCode +WRMSR 01CEDF9F50 0006 OpCode WSSf_SET_TO_POS 0 001B 0000000008 DefineStr WallPaper 007FDC8028 0003 00000008F2 Funct WallPaperInit 007FDCA588 0003 0000000016 Funct @@ -5389,9 +5389,9 @@ body {background-color:#fef1f0;} WinZBufUpdate 007FEB63E8 0023 00000000D3 Funct Public Words 007FDAA3B8 0001 00000000E9 Funct Public Wrap 007FEDCC98 0007 0000000085 Funct Public -XADD 01BBFFC448 0000 OpCode -XCHG 01BC002D70 000A OpCode -XLATB 01BBFFC408 0000 OpCode +XADD 01CEDFC448 0000 OpCode +XCHG 01CEE02D70 000A OpCode +XLATB 01CEDFC408 0000 OpCode XMM0 0000000800 0000 Reg XMM1 0000000801 0000 Reg XMM10 000000080A 0000 Reg @@ -5407,7 +5407,7 @@ body {background-color:#fef1f0;} XMM6 0000000806 0000 Reg XMM8 0000000808 0000 Reg XMM9 0000000809 0000 Reg -XOR 01BC002BC8 0098 OpCode +XOR 01CEE02BC8 0098 OpCode XTalk 000001E913 000D 0000000088 Funct Public XTalkStr 000001EB73 0003 0000000046 Funct Public XTalkStrWait 000001EBBB 0005 000000004E Funct Public @@ -5451,7 +5451,7 @@ body {background-color:#fef1f0;} _D3_SUB_EQU 000000A96F 0004 ExportSysSym Imm _D3_UNIT 000000A9DD 0004 ExportSysSym Imm _D3_ZERO 000000A8E5 0004 ExportSysSym Imm -_DC_BLOT_COLOR4 007FEC08B0 0003 ExportSysSym Imm +_DC_BLOT_COLOR4 007FEC02B0 0003 ExportSysSym Imm _ENDIAN_U16 000000AF67 0004 ExportSysSym Imm _ENDIAN_U32 000000AF76 0004 ExportSysSym Imm _ENDIAN_U64 000000AF84 0004 ExportSysSym Imm @@ -5463,7 +5463,7 @@ body {background-color:#fef1f0;} _FREE 000000DE10 0009 ExportSysSym Imm _FSTCW 000000ACF7 0004 ExportSysSym Imm _FSTSW 000000AD09 0004 ExportSysSym Imm -_GR_ROP_EQU_U8_NO_CLIPPING 007FEC0AD2 0003 ExportSysSym Imm +_GR_ROP_EQU_U8_NO_CLIPPING 007FEC04D2 0003 ExportSysSym Imm _HASH_ADD 000000F833 0006 ExportSysSym Imm _HASH_ADD_AFTER 000000F860 0005 ExportSysSym Imm _HASH_BUCKET_FIND 000000F81A 0005 ExportSysSym Imm @@ -5473,7 +5473,7 @@ body {background-color:#fef1f0;} _HASH_STR 000000F7C0 0005 ExportSysSym Imm _HI_CALL 007FDC1EB0 0003 ExportSysSym Imm _HI_MEMCOPY 007FDC1EC3 0003 ExportSysSym Imm -_IS_PIX_COVERED0 007FEC0A93 0003 ExportSysSym Imm +_IS_PIX_COVERED0 007FEC0493 0003 ExportSysSym Imm _LAST_FUN 007FFBE3CE 0005 ExportSysSym Imm _LBEQUAL 000000ADF6 0004 ExportSysSym Imm _LN 000000ACD6 0004 ExportSysSym Imm @@ -5537,10 +5537,10 @@ body {background-color:#fef1f0;} _TASK_CONTEXT_RESTORE 000000D0ED 0007 ExportSysSym Imm _TASK_END_NOW 000000D18D 0005 ExportSysSym Imm _TEST_EXCEPT 0000018D8E 0003 ExportSysSym Imm -_TEXT_CHAR 007FEC26B8 0003 ExportSysSym Imm -_TEXT_LEN_ATTR 007FEC2933 0003 ExportSysSym Imm -_TEXT_LEN_ATTR_STR 007FEC2864 0003 ExportSysSym Imm -_TEXT_LEN_STR 007FEC2798 0003 ExportSysSym Imm +_TEXT_CHAR 007FEC20B8 0003 ExportSysSym Imm +_TEXT_LEN_ATTR 007FEC2333 0003 ExportSysSym Imm +_TEXT_LEN_ATTR_STR 007FEC2264 0003 ExportSysSym Imm +_TEXT_LEN_STR 007FEC2198 0003 ExportSysSym Imm _TRUNC 000000AAC3 0004 ExportSysSym Imm _XCHG_I64 000000AECD 0004 ExportSysSym Imm _XCHG_U16 000000AEF1 0004 ExportSysSym Imm @@ -5631,18 +5631,18 @@ body {background-color:#fef1f0;} fp_set_std_palette 000000CC88 000F 0000000008 GlbVar fp_update_ctrls 000000CC78 0008 0000000008 GlbVar god 007FE52028 003A 0000000028 GlbVar Public -god_complex_songs 007FEC5EE0 0003 0000000009 GlbVar +god_complex_songs 007FEC58E0 0003 0000000009 GlbVar god_normal_songs 007FDD5348 0003 0000000005 GlbVar god_simple_songs 007FDDCF78 0003 0000000005 GlbVar goto 0000000011 02BE KeyWord -gr 007FEC2A28 02E3 000000290B GlbVar Public +gr 007FEC2428 02E3 000000290B GlbVar Public gr32_palette_std 007FEBEF08 0009 0000000040 GlbVar Public -gr_palette 007FEC6140 0009 0000000040 GlbVar Public +gr_palette 007FEC5B40 0009 0000000040 GlbVar Public gr_palette_dark 007FEBE640 0003 0000000040 GlbVar Public gr_palette_gray 007FEBEAC8 0003 0000000040 GlbVar Public gr_palette_light 007FEBE1B8 0003 0000000040 GlbVar Public gr_palette_slate 007FEBDB88 0003 0000000040 GlbVar Public -gr_rainbow_10 007FEC5E28 0001 000000000A GlbVar Public +gr_rainbow_10 007FEC5828 0001 000000000A GlbVar Public gr_x_offsets 007FEB5DA0 0009 0000000040 GlbVar Public gr_x_offsets2 007FEB5BF0 0001 0000000020 GlbVar Public gr_y_offsets 007FEB5CB8 0009 0000000040 GlbVar Public @@ -5709,7 +5709,7 @@ body {background-color:#fef1f0;} pf_jiffy_start 007FDB3780 0005 0000000008 GlbVar pf_prof_active 007FDACA38 0009 0000000008 GlbVar pi (0x400921F 0002 0000000020 DefineStr -polypt_map 007FEC5F80 0005 0000000009 GlbVar +polypt_map 007FEC5980 0005 0000000009 GlbVar pow10_I64 000000C2B8 0005 ExportSysSym Imm progress1 00000098F8 003E 0000000008 GlbVar Public progress1_desc 0000009918 000D 0000000030 GlbVar Public diff --git a/src/Home/Net/Drivers/Run.CC b/src/Home/Net/Drivers/Run.CC index a68df85e..331f0195 100755 --- a/src/Home/Net/Drivers/Run.CC +++ b/src/Home/Net/Drivers/Run.CC @@ -7,6 +7,10 @@ #define PCIV_E1000 0x8086 #define PCID_82545EM 0x100F + +#define PCIV_VIRTIO 0x1AF4 +//#define PCID_VIRTIO_NET 0x1000 + U0 NetDriverInclude(U8 *driver) { U8 *filename = MStrPrint(__DIR__ "/%s", driver); @@ -41,10 +45,18 @@ U0 NetDriverInit() break; } break; + + case PCIV_VIRTIO: + NetDriverInclude("VirtIONet"); + found = TRUE; + break; } if (!found) - throw('NET'); + { + ClassRep(net_driver_pci); + throw('NODRIVER'); + } } NetDriverInit; diff --git a/src/Home/Net/Drivers/VirtIONet.CC b/src/Home/Net/Drivers/VirtIONet.CC new file mode 100755 index 00000000..31541648 --- /dev/null +++ b/src/Home/Net/Drivers/VirtIONet.CC @@ -0,0 +1,317 @@ +/* + VirtIO Net driver ported from alec's Erythros. +*/ + +// +// PCI virtio I/O registers. +// + +#define VIRTIO_PCI_HOST_FEATURES 0 // Features supported by the host +#define VIRTIO_PCI_GUEST_FEATURES 4 // Features activated by the guest +#define VIRTIO_PCI_QUEUE_PFN 8 // PFN for the currently selected queue +#define VIRTIO_PCI_QUEUE_SIZE 12 // Queue size for the currently selected queue +#define VIRTIO_PCI_QUEUE_SEL 14 // Queue selector +#define VIRTIO_PCI_QUEUE_NOTIFY 16 // Queue notifier +#define VIRTIO_PCI_STATUS 18 // Device status register +#define VIRTIO_PCI_ISR 19 // Interrupt status register +#define VIRTIO_PCI_CONFIG 20 // Configuration data block + +// +// PCI virtio status register bits +// + +#define VIRTIO_CONFIG_S_ACKNOWLEDGE 1 +#define VIRTIO_CONFIG_S_DRIVER 2 +#define VIRTIO_CONFIG_S_DRIVER_OK 4 +#define VIRTIO_CONFIG_S_FAILED 0x80 + +// +// Ring descriptor flags +// + +#define VRING_DESC_F_NEXT 1 // Buffer continues via the next field +#define VRING_DESC_F_WRITE 2 // Buffer is write-only (otherwise read-only) +#define VRING_DESC_F_INDIRECT 4 // Buffer contains a list of buffer descriptors + +class @virtio_queue_buf { + U64 address; + U32 length; + U16 flags; + U16 next; +}; +class @virtio_avail { + U16 flags; + U16 index; + U16 ring[256]; + U16 int_index; +}; +class @virtio_used_item { + U32 index; + U32 length; +}; +class @virtio_used { + U16 flags; + U16 index; + @virtio_used_item ring[256]; + U16 int_index; +}; +class @virtio_queue { + @virtio_queue_buf buffers[256]; + @virtio_avail available; + U8 padding[3578]; + @virtio_used used; +}; + +class @virtio_avail_buf { + U32 index; + U64 address; + U32 length; +}; + +class @virtio_buf_info { + U8 *buffer; + U64 size; + U8 flags; + + // If the user wants to keep same buffer as passed in this struct, use "true". + // otherwise, the supplied buffer will be copied in the queues' buffer + Bool copy; +}; + +"virtio "; + +// +// PCI VirtIO Net +// + +I64 rx_buffer_ptr = 0; +I64 tx_buffer_ptr = 0; +I64 rx_buffer_count = 255; +I64 tx_buffer_count = 256; +U64 rx_buffers = MAlloc(ETHERNET_FRAME_SIZE * rx_buffer_count); +U64 tx_buffers = MAlloc(ETHERNET_FRAME_SIZE * tx_buffer_count); + +class @virtio_net { + U16 port; + U8 mac[6]; + @virtio_queue *rq; + @virtio_queue *sq; + I64 rq_size; + I64 rq_index; + I64 sq_size; + I64 sq_index; + I64 rx_packets; + I64 rx_bytes; + I64 tx_packets; + I64 tx_bytes; +}; + +class @virtio_net_header { + U8 flags; + U8 gso_type; + U16 header_length; + U16 gso_size; + U16 checksum_start; + U16 checksum_offset; +}; + +@virtio_net VirtioNet; +MemSet(&VirtioNet, 0, sizeof(@virtio_net)); + +@virtio_net_header *def_pkt_hdr = CAlloc(sizeof(@virtio_net_header)); + +static I64 @virtio_net_alloc_tx_packet(U8 **buffer_out, I64 length/*, I64 flags*/) { + // FIXME: validate length +// flags = flags; + I64 sq_idx = VirtioNet.sq->available.index % 256; + I64 sq_idx2 = sq_idx % 128; + I64 index = tx_buffer_ptr; + tx_buffer_ptr = (tx_buffer_ptr + 1) & (tx_buffer_count - 1); + *buffer_out = tx_buffers + index * ETHERNET_FRAME_SIZE; + + VirtioNet.sq->buffers[sq_idx2 * 2].address = def_pkt_hdr; + VirtioNet.sq->buffers[sq_idx2 * 2].length = sizeof(@virtio_net_header); + VirtioNet.sq->buffers[sq_idx2 * 2].flags = VRING_DESC_F_NEXT; + VirtioNet.sq->buffers[sq_idx2 * 2].next = (sq_idx2 * 2) + 1; + VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].address = *buffer_out; + VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].length = length; + VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].flags = NULL; + VirtioNet.sq->buffers[(sq_idx2 * 2) + 1].next = 0; + VirtioNet.sq->available.ring[sq_idx] = sq_idx2 * 2; + + VirtioNet.sq->available.index++; + + VirtioNet.tx_packets++; + VirtioNet.tx_bytes += length; + + return index; +} + +static I64 @virtio_net_finish_tx_packet(I64) { + OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_NOTIFY, 1); + return 0; +} + +U8 *loopback_frame = MAlloc(ETHERNET_FRAME_SIZE); +I64 loopback_length = 0; + +I64 EthernetFrameAllocate(U8 **buffer_out, U8 *src_addr, U8 *dst_addr, + U16 ethertype, I64 length/*, I64 flags*/) { + + U8 *frame; + + // APAD_XMT doesn't seem to work in VirtualBox, so we have to pad the frame + // ourselves + if (length < 46) + length = 46; + + I64 index; + + if (!MemCompare(dst_addr, &VirtioNet.mac, 6)) { + frame = loopback_frame; + loopback_length = length; + index = I64_MAX; + } else { + index = @virtio_net_alloc_tx_packet(&frame, 14 + length/*, flags*/); + if (index < 0) + return index; + } + + MemCopy(frame + 0, dst_addr, 6); + MemCopy(frame + 6, src_addr, 6); + frame[12] = (ethertype >> 8); + frame[13] = (ethertype & 0xff); + + *buffer_out = frame + 14; + return index; +} + +I64 EthernetFrameFinish(I64 index) { + if (index == I64_MAX && loopback_frame && loopback_length) { + NetQueuePush(loopback_frame, loopback_length); + loopback_length = 0; + return 0; + } + return @virtio_net_finish_tx_packet(index); +} + +U8 *EthernetMACGet() { return &VirtioNet.mac; } + +I64 @virtio_net_init() { + I64 i, j; + + // Scan for device + j = PCIClassFind(0x020000, 0); + if (j < 0) { + "\nVirtio-net device not found.\n"; + return -1; + } + VirtioNet.port = PCIReadU32(j.u8[2], j.u8[1], j.u8[0], 0x10) & 0xFFFFFFFC; + for (i = 0; i < 6; i++) { + VirtioNet.mac[i] = InU8(VirtioNet.port + VIRTIO_PCI_CONFIG + i); + } + + // Reset Device + OutU8(VirtioNet.port + VIRTIO_PCI_STATUS, 0); + + // Found Driver + OutU8(VirtioNet.port + VIRTIO_PCI_STATUS, + InU8(VirtioNet.port + VIRTIO_PCI_STATUS) | VIRTIO_CONFIG_S_ACKNOWLEDGE | + VIRTIO_CONFIG_S_DRIVER); + + // Set up receive queue + OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SEL, 0); + VirtioNet.rq_size = InU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SIZE); // 256 + VirtioNet.rq = CAllocAligned(sizeof(@virtio_queue), 4096, Fs->code_heap); + OutU32(VirtioNet.port + VIRTIO_PCI_QUEUE_PFN, VirtioNet.rq / 4096); + + // Set up send queue + OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SEL, 1); + VirtioNet.sq_size = InU16(VirtioNet.port + VIRTIO_PCI_QUEUE_SIZE); // 256 + VirtioNet.sq = CAllocAligned(sizeof(@virtio_queue), 4096, Fs->code_heap); + OutU32(VirtioNet.port + VIRTIO_PCI_QUEUE_PFN, VirtioNet.sq / 4096); + + for (i = 0; i < 128; i++) { + VirtioNet.rq->buffers[i * 2].address = CAlloc(sizeof(@virtio_net_header)); + VirtioNet.rq->buffers[i * 2].length = sizeof(@virtio_net_header); + VirtioNet.rq->buffers[i * 2].flags = VRING_DESC_F_NEXT | VRING_DESC_F_WRITE; + VirtioNet.rq->buffers[i * 2].next = (i * 2) + 1; + VirtioNet.rq->buffers[(i * 2) + 1].address = CAlloc(ETHERNET_FRAME_SIZE); + VirtioNet.rq->buffers[(i * 2) + 1].length = ETHERNET_FRAME_SIZE; + VirtioNet.rq->buffers[(i * 2) + 1].flags = VRING_DESC_F_WRITE; + VirtioNet.rq->buffers[(i * 2) + 1].next = 0; + VirtioNet.rq->available.ring[i] = i * 2; + VirtioNet.rq->available.ring[i + 128] = i * 2; + } + VirtioNet.rq->available.index = 1; + + // Init OK + OutU8(VirtioNet.port + VIRTIO_PCI_STATUS, + InU8(VirtioNet.port + VIRTIO_PCI_STATUS) | VIRTIO_CONFIG_S_DRIVER_OK); + OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_NOTIFY, 0); + "\x1b[33mVirtio-net device detected, MAC address " + "%02x:%02x:%02x:%02x:%02x:%02x\x1b[0m\n", + VirtioNet.mac[0], VirtioNet.mac[1], VirtioNet.mac[2], VirtioNet.mac[3], + VirtioNet.mac[4], VirtioNet.mac[5]; +} + +"virtio-net "; +@virtio_net_init; + +/* +U0 @virtio_net_handle_net_fifo_entry(CNetFifoEntry *e) { + CEthFrame l2_frame; + + if (EthernetFrameParse(&l2_frame, e->frame, e->length) < 0) + return; + + CL3Protocol *l3 = l3_protocols; + + while (l3) { + if (l3->ethertype == l2_frame.ethertype) { + l3->handler(&l2_frame); + break; + } + l3 = l3->next; + } +} +*/ +U0 @virtio_net_handler_task() { + I64 idx_used, idx_rec; + I64 i, j; + @virtio_used_item *item; + U8 *buffer; + I64 length; + while (1) { + idx_rec = VirtioNet.rq_index; + idx_used = VirtioNet.rq->used.index; + + if (idx_used < idx_rec) { + idx_used += 0x10000; + } + + if (idx_rec != idx_used && idx_used) { + + j = 0; + for (i = idx_rec; i < idx_used; i++) { + item = VirtioNet.rq->used.ring; + buffer = VirtioNet.rq->buffers[item[i % 256].index + 1]; + length = item[i % 256].length; + NetQueuePush(buffer, length - 10); + j++; + VirtioNet.rx_packets++; + VirtioNet.rx_bytes += length - 10; + } + VirtioNet.rq_index = idx_used % 0x10000; + VirtioNet.rq->available.index += j; + OutU16(VirtioNet.port + VIRTIO_PCI_QUEUE_NOTIFY, 0); + } + CNetQueueEntry *e = NetQueuePull; + if (e) { +// @virtio_net_handle_net_fifo_entry(e); + } + Sleep(30); + } +} + +Spawn(&@virtio_net_handler_task,, "Virtio-net"); \ No newline at end of file diff --git a/src/Home/Net/Tests/HostTest0.CC b/src/Home/Net/Tests/HostTest0.CC index e8c200c6..67c7e77d 100755 --- a/src/Home/Net/Tests/HostTest0.CC +++ b/src/Home/Net/Tests/HostTest0.CC @@ -7,6 +7,14 @@ Host("duckduckgo.com"); Host("bitchute.com"); "Host(\"github.com\");\n"; Host("github.com"); +"Host(\"soundcloud.com\");\n"; +Host("soundcloud.com"); +"Host(\"wiki.osdev.org\");\n"; +Host("wiki.osdev.org"); +"Host(\"archive.org\");\n"; +Host("archive.org"); +"Host(\"git.checksum.fail\");\n"; +Host("git.checksum.fail"); DNSRep; ARPRep; \ No newline at end of file