HelenOS sources
pio_read_8 121 kernel/arch/amd64/src/drivers/i8254.c not_ok = (uint8_t) ((pio_read_8(CLK_PORT1) >> 6) & 1);
pio_read_8 122 kernel/arch/amd64/src/drivers/i8254.c t1 = pio_read_8(CLK_PORT1);
pio_read_8 123 kernel/arch/amd64/src/drivers/i8254.c t1 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 129 kernel/arch/amd64/src/drivers/i8254.c t2 = pio_read_8(CLK_PORT1);
pio_read_8 130 kernel/arch/amd64/src/drivers/i8254.c t2 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 136 kernel/arch/amd64/src/drivers/i8254.c uint32_t o1 = pio_read_8(CLK_PORT1);
pio_read_8 137 kernel/arch/amd64/src/drivers/i8254.c o1 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 142 kernel/arch/amd64/src/drivers/i8254.c uint32_t o2 = pio_read_8(CLK_PORT1);
pio_read_8 143 kernel/arch/amd64/src/drivers/i8254.c o2 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 121 kernel/arch/ia32/src/drivers/i8254.c not_ok = (uint8_t) ((pio_read_8(CLK_PORT1) >> 6) & 1);
pio_read_8 122 kernel/arch/ia32/src/drivers/i8254.c t1 = pio_read_8(CLK_PORT1);
pio_read_8 123 kernel/arch/ia32/src/drivers/i8254.c t1 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 129 kernel/arch/ia32/src/drivers/i8254.c t2 = pio_read_8(CLK_PORT1);
pio_read_8 130 kernel/arch/ia32/src/drivers/i8254.c t2 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 136 kernel/arch/ia32/src/drivers/i8254.c uint32_t o1 = pio_read_8(CLK_PORT1);
pio_read_8 137 kernel/arch/ia32/src/drivers/i8254.c o1 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 142 kernel/arch/ia32/src/drivers/i8254.c uint32_t o2 = pio_read_8(CLK_PORT1);
pio_read_8 143 kernel/arch/ia32/src/drivers/i8254.c o2 |= pio_read_8(CLK_PORT1) << 8;
pio_read_8 53 kernel/genarch/src/drivers/dsrln/dsrlnin.c indev_push_character(instance->srlnin, pio_read_8(&dev->data));
pio_read_8 468 kernel/genarch/src/drivers/ega/ega.c uint8_t stat = pio_read_8(instance->base + EGA_DATA_REG);
pio_read_8 490 kernel/genarch/src/drivers/ega/ega.c uint8_t hi = pio_read_8(instance->base + EGA_DATA_REG);
pio_read_8 492 kernel/genarch/src/drivers/ega/ega.c uint8_t lo = pio_read_8(instance->base + EGA_DATA_REG);
pio_read_8 62 kernel/genarch/src/drivers/i8042/i8042.c if (pio_read_8(&dev->status) & i8042_BUFFER_FULL_MASK)
pio_read_8 73 kernel/genarch/src/drivers/i8042/i8042.c if (pio_read_8(&dev->status) & i8042_BUFFER_FULL_MASK) {
pio_read_8 74 kernel/genarch/src/drivers/i8042/i8042.c uint8_t data = pio_read_8(&dev->data);
pio_read_8 83 kernel/genarch/src/drivers/i8042/i8042.c if ((pio_read_8(&dev->status) & i8042_BUFFER_FULL_MASK) == 0)
pio_read_8 86 kernel/genarch/src/drivers/i8042/i8042.c (void) pio_read_8(&dev->data);
pio_read_8 94 kernel/genarch/src/drivers/i8042/i8042.c if ((pio_read_8(&dev->status) & i8042_WAIT_MASK) == 0)
pio_read_8 121 kernel/genarch/src/drivers/i8259/i8259.c x = pio_read_8(&saved_pic0->port2);
pio_read_8 126 kernel/genarch/src/drivers/i8259/i8259.c x = pio_read_8(&saved_pic1->port2);
pio_read_8 137 kernel/genarch/src/drivers/i8259/i8259.c x = pio_read_8(&saved_pic0->port2);
pio_read_8 142 kernel/genarch/src/drivers/i8259/i8259.c x = pio_read_8(&saved_pic1->port2);
pio_read_8 159 kernel/genarch/src/drivers/i8259/i8259.c uint8_t isr_lo = pio_read_8(&saved_pic0->port1);
pio_read_8 160 kernel/genarch/src/drivers/i8259/i8259.c uint8_t isr_hi = pio_read_8(&saved_pic1->port1);
pio_read_8 68 kernel/genarch/src/drivers/ns16550/ns16550.c return pio_read_8(&inst->ns16550[reg << inst->reg_shift]);
pio_read_8 54 kernel/genarch/src/drivers/pl050/pl050.c if ((status = pio_read_8(pl050->status)) & PL050_STAT_RXFULL)
pio_read_8 67 kernel/genarch/src/drivers/pl050/pl050.c while ((status = pio_read_8(pl050->status)) & PL050_STAT_RXFULL) {
pio_read_8 68 kernel/genarch/src/drivers/pl050/pl050.c data = pio_read_8(pl050->data);
pio_read_8 109 kernel/genarch/src/drivers/pl050/pl050.c pio_read_8(pl050->data);
pio_read_8 145 kernel/genarch/src/drivers/via-cuda/cuda.c ifr = pio_read_8(&dev->ifr);
pio_read_8 205 kernel/genarch/src/drivers/via-cuda/cuda.c b = pio_read_8(&dev->b);
pio_read_8 212 kernel/genarch/src/drivers/via-cuda/cuda.c pio_read_8(&dev->sr);
pio_read_8 213 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->b, pio_read_8(&dev->b) & ~TIP);
pio_read_8 227 kernel/genarch/src/drivers/via-cuda/cuda.c data = pio_read_8(&dev->sr);
pio_read_8 231 kernel/genarch/src/drivers/via-cuda/cuda.c b = pio_read_8(&dev->b);
pio_read_8 252 kernel/genarch/src/drivers/via-cuda/cuda.c b = pio_read_8(&dev->b);
pio_read_8 253 kernel/genarch/src/drivers/via-cuda/cuda.c pio_read_8(&dev->sr);
pio_read_8 278 kernel/genarch/src/drivers/via-cuda/cuda.c b = pio_read_8(&dev->b);
pio_read_8 282 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->acr, pio_read_8(&dev->acr) & ~SR_OUT);
pio_read_8 283 kernel/genarch/src/drivers/via-cuda/cuda.c pio_read_8(&dev->sr);
pio_read_8 284 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->b, pio_read_8(&dev->b) | TIP | TACK);
pio_read_8 290 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->b, pio_read_8(&dev->b) ^ TACK);
pio_read_8 308 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->b, pio_read_8(&dev->b) ^ TACK);
pio_read_8 316 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->acr, pio_read_8(&dev->acr) & ~SR_OUT);
pio_read_8 317 kernel/genarch/src/drivers/via-cuda/cuda.c pio_read_8(&dev->sr);
pio_read_8 318 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->b, pio_read_8(&dev->b) | TACK | TIP);
pio_read_8 358 kernel/genarch/src/drivers/via-cuda/cuda.c if ((pio_read_8(&dev->b) & TREQ) == 0)
pio_read_8 361 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->acr, pio_read_8(&dev->acr) | SR_OUT);
pio_read_8 363 kernel/genarch/src/drivers/via-cuda/cuda.c pio_write_8(&dev->b, pio_read_8(&dev->b) & ~TIP);
pio_read_8 721 kernel/generic/src/console/cmd.c const uint8_t val = pio_read_8(ptr);
pio_read_8 460 kernel/generic/src/ipc/irq.c pio_read_8((ioport8_t *) code->cmds[i].addr);
pio_read_8 43 uspace/drv/audio/hdaudio/regif.c return pio_read_8(r);
pio_read_8 97 uspace/drv/audio/sb16/dsp.c status = pio_read_8(&dsp->regs->dsp_read_status);
pio_read_8 103 uspace/drv/audio/sb16/dsp.c *data = pio_read_8(&dsp->regs->dsp_data_read);
pio_read_8 113 uspace/drv/audio/sb16/dsp.c status = pio_read_8(&dsp->regs->dsp_write);
pio_read_8 138 uspace/drv/audio/sb16/mixer.c const uint8_t irq = pio_read_8(®s->mixer_data);
pio_read_8 140 uspace/drv/audio/sb16/mixer.c const uint8_t dma = pio_read_8(®s->mixer_data);
pio_read_8 184 uspace/drv/audio/sb16/mixer.c *value = (pio_read_8(&mixer->regs->mixer_data) >> chan->shift) &
pio_read_8 211 uspace/drv/audio/sb16/mixer.c regv = pio_read_8(&mixer->regs->mixer_data);
pio_read_8 203 uspace/drv/audio/sb16/sb16.c const uint8_t irq_mask = pio_read_8(&sb->regs->mixer_data);
pio_read_8 363 uspace/drv/block/isa-ide/isa-ide.c return pio_read_8(((ioport8_t *)chan->cmd) + off);
pio_read_8 389 uspace/drv/block/isa-ide/isa-ide.c return pio_read_8(((ioport8_t *)chan->ctl) + off);
pio_read_8 192 uspace/drv/block/pc-floppy/pc-floppy.c pio_read_8(&fdc->regs->msr));
pio_read_8 194 uspace/drv/block/pc-floppy/pc-floppy.c pio_read_8(&fdc->regs->dir));
pio_read_8 196 uspace/drv/block/pc-floppy/pc-floppy.c pio_read_8(&fdc->regs->sra));
pio_read_8 198 uspace/drv/block/pc-floppy/pc-floppy.c pio_read_8(&fdc->regs->srb));
pio_read_8 500 uspace/drv/block/pc-floppy/pc-floppy.c status = pio_read_8(&fdc->regs->msr);
pio_read_8 512 uspace/drv/block/pc-floppy/pc-floppy.c status = pio_read_8(&fdc->regs->msr);
pio_read_8 544 uspace/drv/block/pc-floppy/pc-floppy.c status = pio_read_8(&fdc->regs->msr);
pio_read_8 570 uspace/drv/block/pc-floppy/pc-floppy.c status = pio_read_8(&fdc->regs->msr);
pio_read_8 577 uspace/drv/block/pc-floppy/pc-floppy.c *byte = pio_read_8(&fdc->regs->data);
pio_read_8 582 uspace/drv/block/pc-floppy/pc-floppy.c status = pio_read_8(&fdc->regs->msr);
pio_read_8 617 uspace/drv/block/pc-floppy/pc-floppy.c status = pio_read_8(&fdc->regs->msr);
pio_read_8 635 uspace/drv/block/pc-floppy/pc-floppy.c dor = pio_read_8(&fdc->regs->dor);
pio_read_8 640 uspace/drv/block/pc-floppy/pc-floppy.c dor = pio_read_8(&fdc->regs->dor);
pio_read_8 649 uspace/drv/block/pc-floppy/pc-floppy.c dor = pio_read_8(&fdc->regs->dor);
pio_read_8 672 uspace/drv/block/pc-floppy/pc-floppy.c dor = pio_read_8(&fdc->regs->dor);
pio_read_8 680 uspace/drv/block/pc-floppy/pc-floppy.c dor = pio_read_8(&fdc->regs->dor);
pio_read_8 516 uspace/drv/block/pci-ide/pci-ide.c return pio_read_8(((ioport8_t *)chan->cmd) + off);
pio_read_8 542 uspace/drv/block/pci-ide/pci-ide.c return pio_read_8(((ioport8_t *)chan->ctl) + off);
pio_read_8 313 uspace/drv/bus/adb/cuda_adb/cuda_adb.c uint8_t b = pio_read_8(&cuda->regs->b);
pio_read_8 332 uspace/drv/bus/adb/cuda_adb/cuda_adb.c uint8_t data = pio_read_8(&cuda->regs->sr);
pio_read_8 336 uspace/drv/bus/adb/cuda_adb/cuda_adb.c uint8_t b = pio_read_8(&cuda->regs->b);
pio_read_8 357 uspace/drv/bus/adb/cuda_adb/cuda_adb.c uint8_t b = pio_read_8(&cuda->regs->b);
pio_read_8 382 uspace/drv/bus/adb/cuda_adb/cuda_adb.c b = pio_read_8(&cuda->regs->b);
pio_read_8 386 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->acr, pio_read_8(&cuda->regs->acr) &
pio_read_8 388 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_read_8(&cuda->regs->sr);
pio_read_8 389 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->b, pio_read_8(&cuda->regs->b) |
pio_read_8 396 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->b, pio_read_8(&cuda->regs->b) ^ TACK);
pio_read_8 414 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->b, pio_read_8(&cuda->regs->b) ^ TACK);
pio_read_8 422 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->acr, pio_read_8(&cuda->regs->acr) & ~SR_OUT);
pio_read_8 423 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_read_8(&cuda->regs->sr);
pio_read_8 424 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->b, pio_read_8(&cuda->regs->b) | TACK | TIP);
pio_read_8 500 uspace/drv/bus/adb/cuda_adb/cuda_adb.c if ((pio_read_8(&cuda->regs->b) & TREQ) == 0)
pio_read_8 503 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->acr, pio_read_8(&cuda->regs->acr) | SR_OUT);
pio_read_8 505 uspace/drv/bus/adb/cuda_adb/cuda_adb.c pio_write_8(&cuda->regs->b, pio_read_8(&cuda->regs->b) & ~TIP);
pio_read_8 476 uspace/drv/bus/isa/i8237.c const uint8_t value_low = pio_read_8(dma_channel.size_reg_address);
pio_read_8 481 uspace/drv/bus/isa/i8237.c const uint8_t value_high = pio_read_8(dma_channel.size_reg_address);
pio_read_8 43 uspace/drv/bus/usb/ehci/ehci_regs.h #define EHCI_RD8(reg) pio_read_8(&(reg))
pio_read_8 117 uspace/drv/char/i8042/i8042.c while (pio_read_8(&dev->regs->status) & i8042_INPUT_FULL)
pio_read_8 271 uspace/drv/char/i8042/i8042.c while (pio_read_8(&dev->regs->status) & i8042_OUTPUT_FULL)
pio_read_8 272 uspace/drv/char/i8042/i8042.c (void) pio_read_8(&dev->regs->data);
pio_read_8 207 uspace/drv/char/ns8250/ns8250.c return (pio_read_8(®s->lsr) & NS8250_LSR_RXREADY) != 0;
pio_read_8 217 uspace/drv/char/ns8250/ns8250.c return pio_read_8(®s->data);
pio_read_8 226 uspace/drv/char/ns8250/ns8250.c return (pio_read_8(®s->lsr) & NS8250_LSR_THRE) != 0;
pio_read_8 385 uspace/drv/char/ns8250/ns8250.c olddata = pio_read_8(&ns->regs->mcr);
pio_read_8 388 uspace/drv/char/ns8250/ns8250.c if (pio_read_8(&ns->regs->msr) & NS8250_MSR_SIGNALS)
pio_read_8 392 uspace/drv/char/ns8250/ns8250.c if ((pio_read_8(&ns->regs->msr) & NS8250_MSR_SIGNALS) !=
pio_read_8 513 uspace/drv/char/ns8250/ns8250.c pio_read_8(&ns->regs->lsr);
pio_read_8 530 uspace/drv/char/ns8250/ns8250.c uint8_t val = pio_read_8(®s->lcr);
pio_read_8 540 uspace/drv/char/ns8250/ns8250.c uint8_t val = pio_read_8(®s->lcr);
pio_read_8 593 uspace/drv/char/ns8250/ns8250.c div_low = pio_read_8(®s->data);
pio_read_8 595 uspace/drv/char/ns8250/ns8250.c div_high = pio_read_8(®s->ier);
pio_read_8 615 uspace/drv/char/ns8250/ns8250.c val = pio_read_8(®s->lcr);
pio_read_8 791 uspace/drv/char/ns8250/ns8250.c uint8_t iir = pio_read_8(&ns->regs->iid);
pio_read_8 793 uspace/drv/char/ns8250/ns8250.c uint8_t lsr = pio_read_8(&ns->regs->lsr);
pio_read_8 135 uspace/drv/char/pc-lpt/pc-lpt.c r = pio_read_8(&lpt->regs->control);
pio_read_8 144 uspace/drv/char/pc-lpt/pc-lpt.c r = pio_read_8(&lpt->regs->control);
pio_read_8 215 uspace/drv/char/pc-lpt/pc-lpt.c status = pio_read_8(&lpt->regs->status);
pio_read_8 219 uspace/drv/char/pc-lpt/pc-lpt.c control = pio_read_8(&lpt->regs->control);
pio_read_8 288 uspace/drv/char/pl050/pl050.c status = pio_read_8(&pl050->regs->stat);
pio_read_8 75 uspace/drv/intctl/i8259/i8259.c val = pio_read_8(i8259->regs0 + PIC_PIC0PORT2);
pio_read_8 81 uspace/drv/intctl/i8259/i8259.c val = pio_read_8(i8259->regs1 + PIC_PIC1PORT2);
pio_read_8 173 uspace/drv/nic/ne2k/dp8390.c uint8_t val = pio_read_8(ne2k->port + NE2K_RESET);
pio_read_8 181 uspace/drv/nic/ne2k/dp8390.c if (pio_read_8(ne2k->port + DP_ISR) != 0)
pio_read_8 203 uspace/drv/nic/ne2k/dp8390.c uint8_t val = pio_read_8(ne2k->port + DP_CR);
pio_read_8 340 uspace/drv/nic/ne2k/dp8390.c pio_read_8(ne2k->port + DP_CNTR0);
pio_read_8 341 uspace/drv/nic/ne2k/dp8390.c pio_read_8(ne2k->port + DP_CNTR1);
pio_read_8 342 uspace/drv/nic/ne2k/dp8390.c pio_read_8(ne2k->port + DP_CNTR2);
pio_read_8 375 uspace/drv/nic/ne2k/dp8390.c if ((pio_read_8(ne2k->port + DP_ISR) & ISR_RST) != 0)
pio_read_8 385 uspace/drv/nic/ne2k/dp8390.c if ((pio_read_8(ne2k->port + DP_ISR) & ISR_RDC) != 0)
pio_read_8 389 uspace/drv/nic/ne2k/dp8390.c uint8_t val = pio_read_8(ne2k->port + DP_ISR);
pio_read_8 484 uspace/drv/nic/ne2k/dp8390.c uint8_t boundary = pio_read_8(ne2k->port + DP_BNRY) + 1;
pio_read_8 490 uspace/drv/nic/ne2k/dp8390.c uint8_t current = pio_read_8(ne2k->port + DP_CURR);
pio_read_8 562 uspace/drv/nic/ne2k/dp8390.c pio_read_8(ne2k->port + DP_NCR) & 15);
pio_read_8 602 uspace/drv/nic/ne2k/dp8390.c for (errors = pio_read_8(ne2k->port + DP_CNTR0); errors > 0; --errors)
pio_read_8 604 uspace/drv/nic/ne2k/dp8390.c for (errors = pio_read_8(ne2k->port + DP_CNTR1); errors > 0; --errors)
pio_read_8 606 uspace/drv/nic/ne2k/dp8390.c for (errors = pio_read_8(ne2k->port + DP_CNTR2); errors > 0; --errors)
pio_read_8 238 uspace/drv/nic/rtl8139/defs.h while((pio_read_8(base_port + CR) & CR_RST) != 0);\
pio_read_8 184 uspace/drv/nic/rtl8139/driver.c uint8_t config1 = pio_read_8(rtl8139->io_port + CONFIG1);
pio_read_8 266 uspace/drv/nic/rtl8139/driver.c uint8_t value = pio_read_8(rtl8139->io_port + reg_offset);
pio_read_8 280 uspace/drv/nic/rtl8139/driver.c uint8_t value = pio_read_8(rtl8139->io_port + reg_offset);
pio_read_8 438 uspace/drv/nic/rtl8139/driver.c while (pio_read_8(io_base + CR) & CR_RST) {
pio_read_8 509 uspace/drv/nic/rtl8139/driver.c uint8_t cr = pio_read_8(rtl8139->io_port + CR);
pio_read_8 896 uspace/drv/nic/rtl8139/driver.c uint8_t cr_value = pio_read_8(io_base + CR);
pio_read_8 1436 uspace/drv/nic/rtl8139/driver.c uint8_t msr_val = pio_read_8(rtl8139->io_port + MSR);
pio_read_8 1518 uspace/drv/nic/rtl8139/driver.c uint8_t msr = pio_read_8(rtl8139->io_port + MSR);
pio_read_8 1547 uspace/drv/nic/rtl8139/driver.c uint8_t msr = pio_read_8(rtl8139->io_port + MSR);
pio_read_8 442 uspace/drv/nic/rtl8169/driver.c uint8_t cr_value = pio_read_8(rtl8169->regs + CR);
pio_read_8 536 uspace/drv/nic/rtl8169/driver.c uint8_t phystatus = pio_read_8(rtl8169->regs + PHYSTATUS);
pio_read_8 550 uspace/drv/nic/rtl8169/driver.c uint8_t phystatus = pio_read_8(rtl8169->regs + PHYSTATUS);
pio_read_8 738 uspace/drv/nic/rtl8169/driver.c uint8_t cr = pio_read_8(rtl8169->regs + CR);
pio_read_8 768 uspace/drv/nic/rtl8169/driver.c while (pio_read_8(rtl8169->regs + CR) & CR_RST) {
pio_read_8 779 uspace/drv/nic/rtl8169/driver.c uint8_t phystatus = pio_read_8(rtl8169->regs + PHYSTATUS);
pio_read_8 1157 uspace/drv/nic/rtl8169/driver.c addr->address[i] = pio_read_8(rtl8169->regs + MAC0 + i);
pio_read_8 286 uspace/drv/nic/virtio-net/virtio-net.c nic_addr.address[i] = pio_read_8(&netcfg->mac[i]);
pio_read_8 282 uspace/drv/time/cmos-rtc/cmos-rtc.c return pio_read_8(REG_RW_PORT(rtc->port));
pio_read_8 85 uspace/lib/c/include/ddi.h extern uint8_t pio_read_8(const ioport8_t *);
pio_read_8 143 uspace/lib/c/include/ddi.h uint8_t v = pio_read_8(reg);
pio_read_8 85 uspace/lib/posix/include/libc/ddi.h extern uint8_t pio_read_8(const ioport8_t *);
pio_read_8 143 uspace/lib/posix/include/libc/ddi.h uint8_t v = pio_read_8(reg);
pio_read_8 352 uspace/lib/virtio/virtio.c status = pio_read_8(&cfg->device_status);
pio_read_8 368 uspace/lib/virtio/virtio.c uint8_t status = pio_read_8(&cfg->device_status);
pio_read_8 376 uspace/lib/virtio/virtio.c uint8_t status = pio_read_8(&cfg->device_status);
pio_read_8 162 uspace/srv/hid/output/port/ega.c uint8_t stat = pio_read_8(EGA_IO_BASE + 1);
HelenOS homepage, sources at GitHub